window_paint 0.6.1 window_paint: ^0.6.1 copied to clipboard
WindowPaint lets you pan, zoom and paint over any other widget. It uses the new InteractiveViewer together with a CustomPainter, giving you the bare minimum to get you started.
[0.6.1] - June 23, 2021 #
- Handle missing non-required properties in
DrawObject.fromJSON
by providing sensible defaults.
[0.6.0] - June 18, 2021 #
- Added
WindowPaint.onAdd
andWindowPaint.onChange
which are triggered by interacting with the UI. Programmatic changes do not trigger these; meaning that any change by usingWindowPaintController
will have to be handled by the caller.
[0.5.0] - June 17, 2021 #
- Changed
SelectOutlineMixin.selectOutline
togetSelectOutline(Size size)
to correctly display the select outline.
[0.4.0] - June 17, 2021 #
- All coordinates are now normalized to the given screen size; making sharing and collaboration easier.
- Added
DrawObject.clone()
which returns a deep clone of the object; making diff'ing easier.
[0.3.0] - June 15, 2021 #
DrawRectangle
andDrawRectangleCross
serializesendpoint
asendpoint.x
andendpoint.y
instead ofendpointX
andendpointY
.
[0.2.0] - June 15, 2021 #
DrawObject
now exposes IDs, making them identifiable, which is meant to simplify collaboration efforts.- Removed the
nullsafety
version postfix. - Updated the SDK constraint to
>=2.12.0 <3.0.0
.
[0.1.0-nullsafety.12] - June 14, 2021 #
DrawObject.toJSON()
andDrawObject.fromJSON()
now take (de)normalization arguments to be able to (de)normalize points to make sharing across different devices easier.
[0.1.0-nullsafety.11] - June 11, 2021 #
DragHandleMixin
keeps track of valid state to make it easier for the caller to use with multiple mixins of this kind (select, drag, finalize).
[0.1.0-nullsafety.10] - June 11, 2021 #
- Update
_paintedSelected
inpaintSelectOutline()
so thatshouldRepaintSelectOutline()
behaves correctly.
[0.1.0-nullsafety.9] - June 11, 2021 #
- Re-index the selected object when calling
WindowPaintController.removeObject()
andWindowPaintController.removeObjectsWhere()
.
[0.1.0-nullsafety.8] - May 11, 2021 #
- Compute hitbox of
DrawRectangle
correctly so it works for all orientations and not just when drawing from top-left -> bottom-right.
[0.1.0-nullsafety.7] - Feb 01, 2021 #
- Simplify the selection logic, while also allowing for more natural transitioning between selection, non-selection and inter-object selection.
- Generalize drag handle logic with DragHandleMixin.
- Generalize select outline painting with SelectOutlineMixin.
[0.1.0-nullsafety.6] - Jan 29, 2021 #
- Fix a bug where
Line.contains()
always returnstrue
whenstart == end
. - Encapsulate
InteractiveViewer
in aClipRect
to prevent overflow when zooming and painting. - Paint each
DrawObject
in their ownCustomPaint
. - Use
Map<dynamic, dynamic>
instead ofMap<String, dynamic>
in restoration, due to casting issues. - Restore
DrawRectangle.endpoint
during restoration. - Call
WindowPaintController.notifyListeners()
when interaction ends to fully restore the last object that was interacted with. - Improve documentation and README.
[0.1.0-nullsafety.5] - Jan 28, 2021 #
- Make hitbox extents configurable.
- Move objects into
WindowPaintController
. - Move object selection into
WindowPaintController
. - Update the selected object's color when setting
WindowPaintController.color
. - Support serialization and restoration of
DrawObject
throughRestorableWindowPaintController
. - Merge
WindowPaintCanvas
intoWindowPaint
. - Update example project.
[0.1.0-nullsafety.4] - Jan 25, 2021 #
- Expose
TransformationController
onWindowPaintCanvas
/WindowPaint
.
[0.1.0-nullsafety.3] - Jan 21, 2021 #
InteractiveViewer
'sminScale
andmaxScale
are now configurable.- Scale objects, outlines, hitboxes, and path-simplification tolerance relative to the zoom-level.
DrawRectangle._paintOutline
parameterSizesize
corrected toSize size
.
[0.1.0-nullsafety.2] - Jan 13, 2021 #
- Added a button for toggling hitboxes in the
example
app. - The framework now supports selecting objects. It's the adapter's responsibility to perform hit-testing, (de)selecting, rendering outlines and resize handles, and moving the objects. This gives the greatest flexibility and gives a tool the opportunity to include only the features it needs.
- The reference
DrawObject
andDrawObjectAdapter
implementations demonstrate both simple (AABB) and complex (OBB) hit-testing techniques. - The
Line
class has been added to make it easier to work with lines of a given width. Itscontains
method makes it easy to perform OBB hit-testing. - Added a dependency on vector_math: ^2.1.0-nullsafety.5
- Lots of other small changes to the API.
[0.1.0-nullsafety.1] - Jan 12, 2021 #
- Replaced the
example
's picture with a solid color. - Added explanation of the package's name in the README.
- Added
DrawTextAdapter
andDrawText
to theexample
project. DrawObjectAdapter.start
returnsFutureOr<DrawObject?>?
to support async operations, i.e. showing a dialog for text input.DrawObjectAdapter.start
accepts aBuildContext
and the current transformationMatrix4
.
[0.1.0-nullsafety.0] - Jan 12, 2021 #
- Solves an issue with how
InteractiveViewer.onInteractionUpdate
on the beta channel behaves. This change is both backward and forward compatible. - Added static analysis with the pedantic 1.9.0 ruleset.
- Migrated to sound null-safety.
- Controllers now use the
ValueNotifier
pattern fromTextEditingController
instead of the mixin way ofAnimationController
. - Controllers now also have
Restorable
equivalents, i.e. howTextEditingController
hasRestorableTextEditingController
. CustomRadio
has been moved to theexample
project.- The
example
project'sWindowPaintControl
now has a more clear icon for the "rectangle with cross" paint mode. - Files are organized in a more consumer-friendly fashion, with a
lib/src
folder and alib/window_paint.dart
file which exports all the necessary library files.
[0.0.1] - Jan 11, 2021 #
- Initial release.