window_paint 0.4.0
window_paint: ^0.4.0 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.4.0 June 16, 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 #
DrawRectangleandDrawRectangleCrossserializesendpointasendpoint.xandendpoint.yinstead ofendpointXandendpointY.
0.2.0 June 15, 2021 #
DrawObjectnow exposes IDs, making them identifiable, which is meant to simplify collaboration efforts.- Removed the
nullsafetyversion 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 #
DragHandleMixinkeeps 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
_paintedSelectedinpaintSelectOutline()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
DrawRectanglecorrectly 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 returnstruewhenstart == end. - Encapsulate
InteractiveViewerin aClipRectto prevent overflow when zooming and painting. - Paint each
DrawObjectin their ownCustomPaint. - Use
Map<dynamic, dynamic>instead ofMap<String, dynamic>in restoration, due to casting issues. - Restore
DrawRectangle.endpointduring 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
DrawObjectthroughRestorableWindowPaintController. - Merge
WindowPaintCanvasintoWindowPaint. - Update example project.
0.1.0-nullsafety.4 Jan 25, 2021 #
- Expose
TransformationControlleronWindowPaintCanvas/WindowPaint.
0.1.0-nullsafety.3 Jan 21, 2021 #
InteractiveViewer'sminScaleandmaxScaleare now configurable.- Scale objects, outlines, hitboxes, and path-simplification tolerance relative to the zoom-level.
DrawRectangle._paintOutlineparameterSizesizecorrected toSize size.
0.1.0-nullsafety.2 Jan 13, 2021 #
- Added a button for toggling hitboxes in the
exampleapp. - 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
DrawObjectandDrawObjectAdapterimplementations demonstrate both simple (AABB) and complex (OBB) hit-testing techniques. - The
Lineclass has been added to make it easier to work with lines of a given width. Itscontainsmethod 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
DrawTextAdapterandDrawTextto theexampleproject. DrawObjectAdapter.startreturnsFutureOr<DrawObject?>?to support async operations, i.e. showing a dialog for text input.DrawObjectAdapter.startaccepts aBuildContextand the current transformationMatrix4.
0.1.0-nullsafety.0 Jan 12, 2021 #
- Solves an issue with how
InteractiveViewer.onInteractionUpdateon 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
ValueNotifierpattern fromTextEditingControllerinstead of the mixin way ofAnimationController. - Controllers now also have
Restorableequivalents, i.e. howTextEditingControllerhasRestorableTextEditingController. CustomRadiohas been moved to theexampleproject.- The
exampleproject'sWindowPaintControlnow has a more clear icon for the "rectangle with cross" paint mode. - Files are organized in a more consumer-friendly fashion, with a
lib/srcfolder and alib/window_paint.dartfile which exports all the necessary library files.
0.0.1 Jan 11, 2021 #
- Initial release.