From c8614fe0b7a61d6d2ef86674a48b3ed064266037 Mon Sep 17 00:00:00 2001 From: Matt DeFano Date: Thu, 1 Feb 2018 20:04:33 -0600 Subject: [PATCH] Feature/reactivex (#11) * Initial conversion to ReactiveX * Flood-fill performance improvements * Buffer depth bug fixes * Minor API changes * Readme improvements * Javadoc updates --- README.md | 78 ++--- javadoc/allclasses-frame.html | 10 +- javadoc/allclasses-noframe.html | 10 +- javadoc/com/defano/jmonet/Test.html | 273 ++++++++++++++++++ .../defano/jmonet/algo/BoundaryFunction.html | 251 ++++++++++++++++ .../jmonet/algo/ColorReductionQuantizer.html | 12 +- .../com/defano/jmonet/algo/FillFunction.html | 27 +- javadoc/com/defano/jmonet/algo/FloodFill.html | 36 ++- .../defano/jmonet/algo/FloydSteinberg.html | 8 +- .../jmonet/algo/GrayscaleQuantizer.html | 8 +- .../jmonet/algo/MonochromaticQuantizer.html | 8 +- .../com/defano/jmonet/algo/Projection.html | 8 +- .../jmonet/algo/QuantizationFunction.html | 8 +- javadoc/com/defano/jmonet/algo/Transform.html | 8 +- .../algo/class-use/BoundaryFunction.html | 208 +++++++++++++ .../class-use/ColorReductionQuantizer.html | 8 +- .../jmonet/algo/class-use/FillFunction.html | 52 +++- .../jmonet/algo/class-use/FloodFill.html | 8 +- .../jmonet/algo/class-use/FloydSteinberg.html | 8 +- .../algo/class-use/GrayscaleQuantizer.html | 8 +- .../class-use/MonochromaticQuantizer.html | 8 +- .../jmonet/algo/class-use/Projection.html | 8 +- .../algo/class-use/QuantizationFunction.html | 8 +- .../jmonet/algo/class-use/Transform.html | 8 +- .../com/defano/jmonet/algo/package-frame.html | 7 +- .../defano/jmonet/algo/package-summary.html | 14 +- .../com/defano/jmonet/algo/package-tree.html | 9 +- .../com/defano/jmonet/algo/package-use.html | 37 ++- .../jmonet/canvas/AbstractPaintCanvas.html | 48 +-- .../com/defano/jmonet/canvas/ChangeSet.html | 29 +- .../jmonet/canvas/JFXPaintCanvasNode.html | 8 +- .../defano/jmonet/canvas/JMonetCanvas.html | 113 ++++++-- .../com/defano/jmonet/canvas/PaintCanvas.html | 40 +-- .../canvas/class-use/AbstractPaintCanvas.html | 8 +- .../jmonet/canvas/class-use/ChangeSet.html | 8 +- .../canvas/class-use/JFXPaintCanvasNode.html | 8 +- .../jmonet/canvas/class-use/JMonetCanvas.html | 8 +- .../jmonet/canvas/class-use/PaintCanvas.html | 61 +++- .../observable/CanvasCommitObserver.html | 8 +- .../canvas/observable/ChangeSetObserver.html | 8 +- .../canvas/observable/ObservableSurface.html | 8 +- .../SurfaceInteractionObserver.html | 22 +- .../class-use/CanvasCommitObserver.html | 8 +- .../class-use/ChangeSetObserver.html | 8 +- .../class-use/ObservableSurface.html | 8 +- .../class-use/SurfaceInteractionObserver.html | 8 +- .../canvas/observable/package-frame.html | 6 +- .../canvas/observable/package-summary.html | 8 +- .../canvas/observable/package-tree.html | 8 +- .../jmonet/canvas/observable/package-use.html | 8 +- .../defano/jmonet/canvas/package-frame.html | 6 +- .../defano/jmonet/canvas/package-summary.html | 8 +- .../defano/jmonet/canvas/package-tree.html | 8 +- .../com/defano/jmonet/canvas/package-use.html | 39 ++- .../surface/AbstractScrollableSurface.html | 8 +- .../canvas/surface/CompositeSurface.html | 8 +- .../canvas/surface/PaintableSurface.html | 8 +- .../surface/ScalableLayeredPainting.html | 8 +- .../jmonet/canvas/surface/Scrollable.html | 8 +- .../class-use/AbstractScrollableSurface.html | 8 +- .../surface/class-use/CompositeSurface.html | 8 +- .../surface/class-use/PaintableSurface.html | 8 +- .../class-use/ScalableLayeredPainting.html | 8 +- .../canvas/surface/class-use/Scrollable.html | 8 +- .../jmonet/canvas/surface/package-frame.html | 6 +- .../canvas/surface/package-summary.html | 8 +- .../jmonet/canvas/surface/package-tree.html | 8 +- .../jmonet/canvas/surface/package-use.html | 8 +- javadoc/com/defano/jmonet/class-use/Test.html | 126 ++++++++ .../CanvasClipboardActionListener.html | 8 +- .../jmonet/clipboard/CanvasFocusDelegate.html | 8 +- .../clipboard/CanvasTransferDelegate.html | 8 +- .../clipboard/CanvasTransferHandler.html | 8 +- .../CanvasClipboardActionListener.html | 8 +- .../class-use/CanvasFocusDelegate.html | 8 +- .../class-use/CanvasTransferDelegate.html | 8 +- .../class-use/CanvasTransferHandler.html | 8 +- .../jmonet/clipboard/package-frame.html | 6 +- .../jmonet/clipboard/package-summary.html | 8 +- .../defano/jmonet/clipboard/package-tree.html | 8 +- .../defano/jmonet/clipboard/package-use.html | 8 +- .../jmonet/model/FlexQuadrilateral.html | 16 +- .../jmonet/model/ImmutableProvider.html | 8 +- .../defano/jmonet/model/PaintToolType.html | 16 +- javadoc/com/defano/jmonet/model/Provider.html | 8 +- .../jmonet/model/ProviderTransform.html | 8 +- .../model/class-use/FlexQuadrilateral.html | 8 +- .../model/class-use/ImmutableProvider.html | 15 +- .../jmonet/model/class-use/PaintToolType.html | 8 +- .../jmonet/model/class-use/Provider.html | 98 +------ .../model/class-use/ProviderTransform.html | 8 +- .../defano/jmonet/model/package-frame.html | 12 +- .../defano/jmonet/model/package-summary.html | 43 +-- .../com/defano/jmonet/model/package-tree.html | 21 +- .../com/defano/jmonet/model/package-use.html | 87 +----- javadoc/com/defano/jmonet/package-frame.html | 21 ++ .../com/defano/jmonet/package-summary.html | 144 +++++++++ javadoc/com/defano/jmonet/package-tree.html | 139 +++++++++ javadoc/com/defano/jmonet/package-use.html | 126 ++++++++ .../com/defano/jmonet/tools/AirbrushTool.html | 22 +- .../com/defano/jmonet/tools/ArrowTool.html | 10 +- .../com/defano/jmonet/tools/CurveTool.html | 10 +- .../com/defano/jmonet/tools/EraserTool.html | 22 +- javadoc/com/defano/jmonet/tools/FillTool.html | 76 ++++- .../jmonet/tools/FreeformShapeTool.html | 28 +- .../com/defano/jmonet/tools/LassoTool.html | 12 +- javadoc/com/defano/jmonet/tools/LineTool.html | 10 +- .../defano/jmonet/tools/MagnifierTool.html | 25 +- javadoc/com/defano/jmonet/tools/OvalTool.html | 12 +- .../defano/jmonet/tools/PaintbrushTool.html | 22 +- .../com/defano/jmonet/tools/PencilTool.html | 22 +- .../defano/jmonet/tools/PerspectiveTool.html | 12 +- .../com/defano/jmonet/tools/PolygonTool.html | 10 +- .../defano/jmonet/tools/ProjectionTool.html | 12 +- .../defano/jmonet/tools/RectangleTool.html | 12 +- .../com/defano/jmonet/tools/RotateTool.html | 16 +- .../jmonet/tools/RoundRectangleTool.html | 12 +- .../defano/jmonet/tools/RubberSheetTool.html | 12 +- .../com/defano/jmonet/tools/ScaleTool.html | 12 +- .../defano/jmonet/tools/SelectionTool.html | 12 +- .../com/defano/jmonet/tools/ShapeTool.html | 12 +- .../com/defano/jmonet/tools/SlantTool.html | 12 +- javadoc/com/defano/jmonet/tools/TextTool.html | 59 ++-- .../jmonet/tools/base/AbstractBoundsTool.html | 38 +-- .../jmonet/tools/base/AbstractLineTool.html | 18 +- .../jmonet/tools/base/AbstractPathTool.html | 36 +-- .../tools/base/AbstractPolylineTool.html | 14 +- .../tools/base/AbstractSelectionTool.html | 47 ++- .../tools/base/AbstractTransformTool.html | 18 +- .../jmonet/tools/base/MutableSelection.html | 8 +- .../defano/jmonet/tools/base/PaintTool.html | 159 +++++----- .../tools/base/TransformableSelection.html | 8 +- .../base/class-use/AbstractBoundsTool.html | 8 +- .../base/class-use/AbstractLineTool.html | 8 +- .../base/class-use/AbstractPathTool.html | 8 +- .../base/class-use/AbstractPolylineTool.html | 8 +- .../base/class-use/AbstractSelectionTool.html | 8 +- .../base/class-use/AbstractTransformTool.html | 8 +- .../base/class-use/MutableSelection.html | 8 +- .../tools/base/class-use/PaintTool.html | 8 +- .../class-use/TransformableSelection.html | 8 +- .../jmonet/tools/base/package-frame.html | 6 +- .../jmonet/tools/base/package-summary.html | 8 +- .../jmonet/tools/base/package-tree.html | 8 +- .../defano/jmonet/tools/base/package-use.html | 8 +- .../jmonet/tools/brushes/BasicBrush.html | 8 +- .../tools/brushes/class-use/BasicBrush.html | 8 +- .../jmonet/tools/brushes/package-frame.html | 6 +- .../jmonet/tools/brushes/package-summary.html | 8 +- .../jmonet/tools/brushes/package-tree.html | 8 +- .../jmonet/tools/brushes/package-use.html | 8 +- .../tools/builder/PaintToolBuilder.html | 58 ++-- .../builder/class-use/PaintToolBuilder.html | 22 +- .../jmonet/tools/builder/package-frame.html | 6 +- .../jmonet/tools/builder/package-summary.html | 8 +- .../jmonet/tools/builder/package-tree.html | 8 +- .../jmonet/tools/builder/package-use.html | 8 +- .../jmonet/tools/class-use/AirbrushTool.html | 8 +- .../jmonet/tools/class-use/ArrowTool.html | 8 +- .../jmonet/tools/class-use/CurveTool.html | 8 +- .../jmonet/tools/class-use/EraserTool.html | 8 +- .../jmonet/tools/class-use/FillTool.html | 8 +- .../tools/class-use/FreeformShapeTool.html | 8 +- .../jmonet/tools/class-use/LassoTool.html | 8 +- .../jmonet/tools/class-use/LineTool.html | 8 +- .../jmonet/tools/class-use/MagnifierTool.html | 8 +- .../jmonet/tools/class-use/OvalTool.html | 8 +- .../tools/class-use/PaintbrushTool.html | 8 +- .../jmonet/tools/class-use/PencilTool.html | 8 +- .../tools/class-use/PerspectiveTool.html | 8 +- .../jmonet/tools/class-use/PolygonTool.html | 8 +- .../tools/class-use/ProjectionTool.html | 8 +- .../jmonet/tools/class-use/RectangleTool.html | 8 +- .../jmonet/tools/class-use/RotateTool.html | 8 +- .../tools/class-use/RoundRectangleTool.html | 8 +- .../tools/class-use/RubberSheetTool.html | 8 +- .../jmonet/tools/class-use/ScaleTool.html | 8 +- .../jmonet/tools/class-use/SelectionTool.html | 8 +- .../jmonet/tools/class-use/ShapeTool.html | 8 +- .../jmonet/tools/class-use/SlantTool.html | 8 +- .../jmonet/tools/class-use/TextTool.html | 8 +- .../defano/jmonet/tools/package-frame.html | 6 +- .../defano/jmonet/tools/package-summary.html | 8 +- .../com/defano/jmonet/tools/package-tree.html | 10 +- .../com/defano/jmonet/tools/package-use.html | 8 +- .../defano/jmonet/tools/util/Geometry.html | 8 +- .../jmonet/tools/util/MarchingAnts.html | 8 +- .../tools/util/MarchingAntsObserver.html | 8 +- .../jmonet/tools/util/class-use/Geometry.html | 8 +- .../tools/util/class-use/MarchingAnts.html | 8 +- .../util/class-use/MarchingAntsObserver.html | 8 +- .../jmonet/tools/util/package-frame.html | 6 +- .../jmonet/tools/util/package-summary.html | 8 +- .../jmonet/tools/util/package-tree.html | 8 +- .../defano/jmonet/tools/util/package-use.html | 8 +- javadoc/constant-values.html | 8 +- javadoc/deprecated-list.html | 8 +- javadoc/help-doc.html | 8 +- javadoc/index-all.html | 196 +++++++------ javadoc/index.html | 4 +- javadoc/overview-frame.html | 6 +- javadoc/overview-summary.html | 10 +- javadoc/overview-tree.html | 21 +- javadoc/serialized-form.html | 26 +- pom.xml | 9 +- .../defano/jmonet/algo/BoundaryFunction.java | 29 ++ .../com/defano/jmonet/algo/FillFunction.java | 11 +- .../com/defano/jmonet/algo/FloodFill.java | 32 +- .../jmonet/canvas/AbstractPaintCanvas.java | 37 +-- .../com/defano/jmonet/canvas/ChangeSet.java | 17 ++ .../defano/jmonet/canvas/JMonetCanvas.java | 89 +++++- .../com/defano/jmonet/canvas/PaintCanvas.java | 15 +- .../SurfaceInteractionObserver.java | 14 +- .../canvas/surface/PaintableSurface.java | 20 +- .../jmonet/model/FlexQuadrilateral.java | 4 +- .../jmonet/model/ImmutableProvider.java | 73 ----- .../com/defano/jmonet/model/Provider.java | 52 ---- .../jmonet/model/ProviderTransform.java | 10 - .../com/defano/jmonet/tools/AirbrushTool.java | 6 +- .../com/defano/jmonet/tools/EraserTool.java | 4 +- .../com/defano/jmonet/tools/FillTool.java | 108 +++++-- .../jmonet/tools/FreeformShapeTool.java | 10 +- .../defano/jmonet/tools/MagnifierTool.java | 2 +- .../com/defano/jmonet/tools/OvalTool.java | 2 +- .../defano/jmonet/tools/PaintbrushTool.java | 6 +- .../com/defano/jmonet/tools/PencilTool.java | 4 +- .../com/defano/jmonet/tools/PolygonTool.java | 2 +- .../defano/jmonet/tools/RectangleTool.java | 2 +- .../com/defano/jmonet/tools/TextTool.java | 48 +-- .../jmonet/tools/base/AbstractBoundsTool.java | 24 +- .../jmonet/tools/base/AbstractPathTool.java | 20 +- .../tools/base/AbstractPolylineTool.java | 4 +- .../tools/base/AbstractSelectionTool.java | 27 +- .../defano/jmonet/tools/base/PaintTool.java | 111 ++++--- .../tools/builder/PaintToolBuilder.java | 76 ++--- 235 files changed, 3403 insertions(+), 1874 deletions(-) create mode 100644 javadoc/com/defano/jmonet/Test.html create mode 100644 javadoc/com/defano/jmonet/algo/BoundaryFunction.html create mode 100644 javadoc/com/defano/jmonet/algo/class-use/BoundaryFunction.html create mode 100644 javadoc/com/defano/jmonet/class-use/Test.html create mode 100644 javadoc/com/defano/jmonet/package-frame.html create mode 100644 javadoc/com/defano/jmonet/package-summary.html create mode 100644 javadoc/com/defano/jmonet/package-tree.html create mode 100644 javadoc/com/defano/jmonet/package-use.html create mode 100644 src/main/java/com/defano/jmonet/algo/BoundaryFunction.java delete mode 100644 src/main/java/com/defano/jmonet/model/ImmutableProvider.java delete mode 100644 src/main/java/com/defano/jmonet/model/Provider.java delete mode 100644 src/main/java/com/defano/jmonet/model/ProviderTransform.java diff --git a/README.md b/README.md index ec741910..a7cd0fe5 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,12 @@ An easy-to-use toolkit for incorporating paint tools similar to [MacPaint](https ## Features -* Offers a standard suite of paint tools with common modifier-key constraints (e.g., hold shift to snap lines to nearest 15-degree angle). -* Painting canvas supports undo and redo operations on all paint tool changes, plus cut, copy and paste integration with the system clipboard. -* Includes a variety of image transform tools like scale, rotate, shear, perspective and projection, plus the ability to adjust color depth, transparency and brightness. +* Standard suite of paint tools providing common modifier-key constraints (e.g., hold shift to snap lines to nearest 15-degree angle). +* Canvas supports undo and redo operations on all paint tool changes, plus cut, copy and paste integration with the system clipboard. +* Includes a variety of image transform tools like scale, rotate, shear, perspective and projection, plus the ability to adjust color depth, transparency and brightness. * Painted images are zoomable via the Magnifier tool (displayed within a scrollable pane), and tools can be snapped to a grid. -* Lightweight toolkit integrates easily into Swing and JavaFX applications. -* All operations are backed by a standard Java `BufferedImage`; easy to import existing images and save changes. +* Lightweight toolkit integrates easily into Swing and JavaFX applications and utilizes [ReactiveX](https://github.com/ReactiveX/RxJava) for observables. +* All operations are backed by a standard Java `BufferedImage` making it easy to import and export graphics. ## Paint Tools @@ -44,7 +44,7 @@ Icon | Tool | Description ![Slant](icons/slant.png) | Slant | Define a selection, then use the drag handles to apply an affine shear transform to the selected graphic. ![Scale](icons/scale.png) | Scale | Define a selection, then expand or shrink the selected image by dragging a handle. Hold shift to maintain selection's original aspect ratio. ![Projection](icons/distort.png) | Projection | Define a selection, then use the drag handles to project the image onto the geometry of an arbitrary quadrilateral. -![perspective](icons/perspective.png) | Perspective | Define a selection, then use the drag handles to warp the image onto an isosceles trapezoid, providing the effect of the left or right side of the image appearing nearer or farther from the viewer. +![Perspective](icons/perspective.png) | Perspective | Define a selection, then use the drag handles to warp the image onto an isosceles trapezoid, providing the effect of the left or right side of the image appearing nearer or farther from the viewer. ![Rubber Sheet](icons/distort.png) | Rubber Sheet | Similar to the projection transform, but utilizes a "rubber sheet" algorithm that preserves relative position over linearity. #### Static transforms @@ -76,7 +76,7 @@ JMonet is published to Maven Central; include the library in your Maven project' com.defano.jmonet jmonet - 0.1.0 + 0.2.0 ``` @@ -88,7 +88,7 @@ repositories { } dependencies { - compile 'com.defano.jmonet:jmonet:0.1.0' + compile 'com.defano.jmonet:jmonet:0.2.0' } ``` @@ -156,6 +156,41 @@ activeTool.deactivate(); There's no technical limitation that prevents multiple tools from being active on the same canvas at the same time, but that's not usually desired behavior in a paint program. +### Migrating from older versions + +JMonet versions 0.2.0 and later utilize [ReactiveX](https://github.com/ReactiveX/RxJava) for observables instead of the `Provider` classes that were present in earlier versions. Here's what you need to do to upgrade: + +1. **Change API signatures:** JMonet APIs ending with `Provider` now end with `Observable`. For example, `JMonetCanvas#getGridSpacingProvider()` is now `JMonetCanvas#getGridSpacingObservable()`. +3. **Use `BehvaiorSubject` in lieu of `Provider`:** RxJava's `BehaviorSubject` is roughly equivalent to JMonet's former `Provider` class: + +To create an observable property (that is, one that a paint tool or canvas will respond to dynamically): +``` +BehaviorSubject lineStrokeSubject = BehaviorSubject<>.createDefault(new BasicStroke(1)); +``` + +To make the paint tool observe changes to it: +``` +PaintToolBuilder.create(PaintToolType.LINE) + .withStrokePaintObservable(lineStrokeSubject) + ... + .build(); +``` + +To change an `BehaviorSubject` that's providing an attribute to a tool or canvas: +``` +lineStrokeSubject.onNext(new BasicStroke(2)) +``` + +To listen to changes of a provided attribute: +``` +lineStrokeSubject.subscribe(stroke -> System.out.println("Change: " + stroke.getLineWidth())); +``` + +To derive an observable attribute for another attribute: +``` +Observable isSinglePxStroke = lineStrokeSubject.map(stroke -> stroke.getLineWidth() == 1); +``` + ## Implement cut, copy and paste JMonet makes it easy to integrate cut, copy and paste functions into your app that utilize the operating system's clipboard so that you can copy and paste graphics from within your own application or between other applications on your system. @@ -238,33 +273,6 @@ The code below provides an implementation that cuts, copies and pastes the activ ``` -## Tool and canvas attribute providers - -When building your paint application, you'll likely need to observe and/or make changes to various canvas and tool attributes from several locations in your codebase (i.e., change and observe the paint color from the menu, palette, picker dialogs, etc). - -To simplify this, attributes are wrapped in a `Provider` class. A Provider is an extension to Java's `Observable` with a bit of syntactical sugar to support one-liner lambda expressions and to derive observable attributes from other attributes. - -For example, create a provider of paint and inject it into the tool (you might keep this provider around globally to be shared across all tools whose paint you want to change): - -``` -Provider paintProvider = new Provider(Color.BLACK); -activeTool.setFillPaintProvider(paintProvider); -``` - -Now, you can observe changes to the tool's paint: - -``` -strokePaintProvider.addObserver((o, newValue) -> System.out.println("Got new paint: " + newValue)); -``` - -More importantly, you can derive new Providers that listen for changes to an existing Provider and transform them into a different type. This is useful, for example, for checkmarking menu items or highlighting palette tools based on a selection. - -``` -ImmutableProvider isBlackColorSelected = ImmutableProvider.derivedFrom(strokePaintProvider, p -> p == Color.BLACK); -``` - -An `ImmutableProvider` is one whose underlying value cannot be changed. In this example, it wouldn't make sense to mutate `isBlackSelected` directly; its value follows the color provided by `strokePaintProvider`. - ## Frequently asked questions #### I don't get it. Doesn't Java's `Graphics` already let me draw stuff? diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html index 31796bf2..0702ba78 100644 --- a/javadoc/allclasses-frame.html +++ b/javadoc/allclasses-frame.html @@ -2,10 +2,10 @@ - + -All Classes (JMonet 0.1.0 API) - +All Classes (JMonet 0.2.0 API) + @@ -24,6 +24,7 @@

All Classes

  • AirbrushTool
  • ArrowTool
  • BasicBrush
  • +
  • BoundaryFunction
  • CanvasClipboardActionListener
  • CanvasCommitObserver
  • CanvasFocusDelegate
  • @@ -43,7 +44,6 @@

    All Classes

  • FreeformShapeTool
  • Geometry
  • GrayscaleQuantizer
  • -
  • ImmutableProvider
  • JFXPaintCanvasNode
  • JMonetCanvas
  • LassoTool
  • @@ -66,8 +66,6 @@

    All Classes

  • PolygonTool
  • Projection
  • ProjectionTool
  • -
  • Provider
  • -
  • ProviderTransform
  • QuantizationFunction
  • RectangleTool
  • RotateTool
  • diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html index a860fc85..ca725de4 100644 --- a/javadoc/allclasses-noframe.html +++ b/javadoc/allclasses-noframe.html @@ -2,10 +2,10 @@ - + -All Classes (JMonet 0.1.0 API) - +All Classes (JMonet 0.2.0 API) + @@ -24,6 +24,7 @@

    All Classes

  • AirbrushTool
  • ArrowTool
  • BasicBrush
  • +
  • BoundaryFunction
  • CanvasClipboardActionListener
  • CanvasCommitObserver
  • CanvasFocusDelegate
  • @@ -43,7 +44,6 @@

    All Classes

  • FreeformShapeTool
  • Geometry
  • GrayscaleQuantizer
  • -
  • ImmutableProvider
  • JFXPaintCanvasNode
  • JMonetCanvas
  • LassoTool
  • @@ -66,8 +66,6 @@

    All Classes

  • PolygonTool
  • Projection
  • ProjectionTool
  • -
  • Provider
  • -
  • ProviderTransform
  • QuantizationFunction
  • RectangleTool
  • RotateTool
  • diff --git a/javadoc/com/defano/jmonet/Test.html b/javadoc/com/defano/jmonet/Test.html new file mode 100644 index 00000000..307148b9 --- /dev/null +++ b/javadoc/com/defano/jmonet/Test.html @@ -0,0 +1,273 @@ + + + + + + +Test (JMonet 0.1.1 API) + + + + + + + + + + + + +
    +
    com.defano.jmonet
    +

    Class Test

    +
    +
    + +
    +
      +
    • +
      +
      +
      public class Test
      +extends Object
      +
    • +
    +
    +
    + +
    +
    +
      +
    • + +
        +
      • + + +

        Constructor Detail

        + + + +
          +
        • +

          Test

          +
          public Test()
          +
        • +
        +
      • +
      + +
        +
      • + + +

        Method Detail

        + + + +
          +
        • +

          main

          +
          public static void main(String[] args)
          +
        • +
        +
      • +
      +
    • +
    +
    +
    + + + + + +

    Copyright © 2018. All rights reserved.

    + + diff --git a/javadoc/com/defano/jmonet/algo/BoundaryFunction.html b/javadoc/com/defano/jmonet/algo/BoundaryFunction.html new file mode 100644 index 00000000..0f401185 --- /dev/null +++ b/javadoc/com/defano/jmonet/algo/BoundaryFunction.html @@ -0,0 +1,251 @@ + + + + + + +BoundaryFunction (JMonet 0.2.0 API) + + + + + + + + + + + + +
    +
    com.defano.jmonet.algo
    +

    Interface BoundaryFunction

    +
    +
    +
    +
      +
    • +
      +
      +
      public interface BoundaryFunction
      +
    • +
    +
    +
    + +
    +
    +
      +
    • + +
        +
      • + + +

        Method Detail

        + + + +
          +
        • +

          shouldFillPixel

          +
          boolean shouldFillPixel(BufferedImage canvas,
          +                        BufferedImage scratch,
          +                        Point point)
          +
          Determines if a given pixel on the canvas should be flood-filled. This method will be invoked repeatedly until + the flood fill algorithm has filled all available pixels, thus, this method should execute quickly. + + When flood-filling an image, all pixels adjacent to the selected pixel will attempt to be recursively "filled" + with paint. This method will be invoked with each point to determine when the flood fill has reached a pixel or + image boundary that should not be filled. + + NOTE: This method may be called more than once with the same point. To prevent an infinite loop, this method + must return 'false' for any point that previously returned true (i.e., any flood-filled pixel must constitute a + boundary).
          +
          +
          Parameters:
          +
          canvas - The existing canvas image to be filled (that is, the user's image prior to any fill-related + changes).
          +
          scratch - The scratch buffer containing just the flood-fill changes (does not contain any of the user's + image committed to the canvas). Note the bounds of this image are equal to that of the canvas + image.
          +
          point - The point in the image to boundary check
          +
          Returns:
          +
          True if the given point in the image should be filled, false otherwise (i.e., the pixel represents a + boundary)
          +
          +
        • +
        +
      • +
      +
    • +
    +
    +
    + + + + + +

    Copyright © 2018. All rights reserved.

    + + diff --git a/javadoc/com/defano/jmonet/algo/ColorReductionQuantizer.html b/javadoc/com/defano/jmonet/algo/ColorReductionQuantizer.html index a589d768..756ff06c 100644 --- a/javadoc/com/defano/jmonet/algo/ColorReductionQuantizer.html +++ b/javadoc/com/defano/jmonet/algo/ColorReductionQuantizer.html @@ -2,10 +2,10 @@ - + -ColorReductionQuantizer (JMonet 0.1.0 API) - +ColorReductionQuantizer (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ + + + + + + + + +
    +

    Uses of Interface
    com.defano.jmonet.algo.BoundaryFunction

    +
    +
    + +
    + + + + +

    Copyright © 2018. All rights reserved.

    + + diff --git a/javadoc/com/defano/jmonet/algo/class-use/ColorReductionQuantizer.html b/javadoc/com/defano/jmonet/algo/class-use/ColorReductionQuantizer.html index d9ceac7b..95e99041 100644 --- a/javadoc/com/defano/jmonet/algo/class-use/ColorReductionQuantizer.html +++ b/javadoc/com/defano/jmonet/algo/class-use/ColorReductionQuantizer.html @@ -2,10 +2,10 @@ - + -Uses of Class com.defano.jmonet.algo.ColorReductionQuantizer (JMonet 0.1.0 API) - +Uses of Class com.defano.jmonet.algo.ColorReductionQuantizer (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -14,6 +14,7 @@

    Interfaces

    diff --git a/javadoc/com/defano/jmonet/algo/package-summary.html b/javadoc/com/defano/jmonet/algo/package-summary.html index 20c15842..16052f27 100644 --- a/javadoc/com/defano/jmonet/algo/package-summary.html +++ b/javadoc/com/defano/jmonet/algo/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.algo (JMonet 0.1.0 API) - +com.defano.jmonet.algo (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,13 +13,13 @@ @@ -13,7 +13,7 @@ @@ -13,13 +13,13 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/canvas/observable/package-summary.html b/javadoc/com/defano/jmonet/canvas/observable/package-summary.html index 96148b4e..121b4adf 100644 --- a/javadoc/com/defano/jmonet/canvas/observable/package-summary.html +++ b/javadoc/com/defano/jmonet/canvas/observable/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.canvas.observable (JMonet 0.1.0 API) - +com.defano.jmonet.canvas.observable (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/canvas/package-summary.html b/javadoc/com/defano/jmonet/canvas/package-summary.html index 90f4d4d7..c2b2e153 100644 --- a/javadoc/com/defano/jmonet/canvas/package-summary.html +++ b/javadoc/com/defano/jmonet/canvas/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.canvas (JMonet 0.1.0 API) - +com.defano.jmonet.canvas (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/canvas/surface/package-summary.html b/javadoc/com/defano/jmonet/canvas/surface/package-summary.html index 47d1afa4..eb65efd2 100644 --- a/javadoc/com/defano/jmonet/canvas/surface/package-summary.html +++ b/javadoc/com/defano/jmonet/canvas/surface/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.canvas.surface (JMonet 0.1.0 API) - +com.defano.jmonet.canvas.surface (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ + + + + + + + + +
    +

    Uses of Class
    com.defano.jmonet.Test

    +
    +
    No usage of com.defano.jmonet.Test
    + + + + +

    Copyright © 2018. All rights reserved.

    + + diff --git a/javadoc/com/defano/jmonet/clipboard/CanvasClipboardActionListener.html b/javadoc/com/defano/jmonet/clipboard/CanvasClipboardActionListener.html index 86bd29aa..ff9b2100 100644 --- a/javadoc/com/defano/jmonet/clipboard/CanvasClipboardActionListener.html +++ b/javadoc/com/defano/jmonet/clipboard/CanvasClipboardActionListener.html @@ -2,10 +2,10 @@ - + -CanvasClipboardActionListener (JMonet 0.1.0 API) - +CanvasClipboardActionListener (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/clipboard/package-summary.html b/javadoc/com/defano/jmonet/clipboard/package-summary.html index 2dddffd6..bd165623 100644 --- a/javadoc/com/defano/jmonet/clipboard/package-summary.html +++ b/javadoc/com/defano/jmonet/clipboard/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.clipboard (JMonet 0.1.0 API) - +com.defano.jmonet.clipboard (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@

    com.defano.jmonet.model

    -

    Interfaces

    -

    Classes

    Enums

      diff --git a/javadoc/com/defano/jmonet/model/package-summary.html b/javadoc/com/defano/jmonet/model/package-summary.html index e431591c..86deac48 100644 --- a/javadoc/com/defano/jmonet/model/package-summary.html +++ b/javadoc/com/defano/jmonet/model/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.model (JMonet 0.1.0 API) - +com.defano.jmonet.model (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ + + +

      com.defano.jmonet

      +
      +

      Classes

      + +
      + + diff --git a/javadoc/com/defano/jmonet/package-summary.html b/javadoc/com/defano/jmonet/package-summary.html new file mode 100644 index 00000000..f75dba76 --- /dev/null +++ b/javadoc/com/defano/jmonet/package-summary.html @@ -0,0 +1,144 @@ + + + + + + +com.defano.jmonet (JMonet 0.1.1 API) + + + + + + + + + + + +
      +

      Package com.defano.jmonet

      +
      +
      +
        +
      • + + + + + + + + + + + + +
        Class Summary 
        ClassDescription
        Test 
        +
      • +
      +
      + + + + +

      Copyright © 2018. All rights reserved.

      + + diff --git a/javadoc/com/defano/jmonet/package-tree.html b/javadoc/com/defano/jmonet/package-tree.html new file mode 100644 index 00000000..f44f7a16 --- /dev/null +++ b/javadoc/com/defano/jmonet/package-tree.html @@ -0,0 +1,139 @@ + + + + + + +com.defano.jmonet Class Hierarchy (JMonet 0.1.1 API) + + + + + + + + + + + +
      +

      Hierarchy For Package com.defano.jmonet

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      +
        +
      • java.lang.Object +
          +
        • com.defano.jmonet.Test
        • +
        +
      • +
      +
      + + + + +

      Copyright © 2018. All rights reserved.

      + + diff --git a/javadoc/com/defano/jmonet/package-use.html b/javadoc/com/defano/jmonet/package-use.html new file mode 100644 index 00000000..dafa1424 --- /dev/null +++ b/javadoc/com/defano/jmonet/package-use.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Package com.defano.jmonet (JMonet 0.1.1 API) + + + + + + + + + + + +
      +

      Uses of Package
      com.defano.jmonet

      +
      +
      No usage of com.defano.jmonet
      + + + + +

      Copyright © 2018. All rights reserved.

      + + diff --git a/javadoc/com/defano/jmonet/tools/AirbrushTool.html b/javadoc/com/defano/jmonet/tools/AirbrushTool.html index 5cf22bfe..0d9bb139 100644 --- a/javadoc/com/defano/jmonet/tools/AirbrushTool.html +++ b/javadoc/com/defano/jmonet/tools/AirbrushTool.html @@ -2,10 +2,10 @@ - + -AirbrushTool (JMonet 0.1.0 API) - +AirbrushTool (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,13 +13,13 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/tools/base/package-summary.html b/javadoc/com/defano/jmonet/tools/base/package-summary.html index f4e5e166..336c3917 100644 --- a/javadoc/com/defano/jmonet/tools/base/package-summary.html +++ b/javadoc/com/defano/jmonet/tools/base/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.tools.base (JMonet 0.1.0 API) - +com.defano.jmonet.tools.base (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/tools/brushes/package-summary.html b/javadoc/com/defano/jmonet/tools/brushes/package-summary.html index 303d66c7..b738090b 100644 --- a/javadoc/com/defano/jmonet/tools/brushes/package-summary.html +++ b/javadoc/com/defano/jmonet/tools/brushes/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.tools.brushes (JMonet 0.1.0 API) - +com.defano.jmonet.tools.brushes (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/tools/builder/package-summary.html b/javadoc/com/defano/jmonet/tools/builder/package-summary.html index 761a3a3a..08c4fb9b 100644 --- a/javadoc/com/defano/jmonet/tools/builder/package-summary.html +++ b/javadoc/com/defano/jmonet/tools/builder/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.tools.builder (JMonet 0.1.0 API) - +com.defano.jmonet.tools.builder (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/tools/package-summary.html b/javadoc/com/defano/jmonet/tools/package-summary.html index dd8aee42..1704cbfc 100644 --- a/javadoc/com/defano/jmonet/tools/package-summary.html +++ b/javadoc/com/defano/jmonet/tools/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.tools (JMonet 0.1.0 API) - +com.defano.jmonet.tools (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/com/defano/jmonet/tools/util/package-summary.html b/javadoc/com/defano/jmonet/tools/util/package-summary.html index eecfc63a..3b50272d 100644 --- a/javadoc/com/defano/jmonet/tools/util/package-summary.html +++ b/javadoc/com/defano/jmonet/tools/util/package-summary.html @@ -2,10 +2,10 @@ - + -com.defano.jmonet.tools.util (JMonet 0.1.0 API) - +com.defano.jmonet.tools.util (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html index 03b05ec4..c68bb222 100644 --- a/javadoc/overview-summary.html +++ b/javadoc/overview-summary.html @@ -2,10 +2,10 @@ - + -Overview (JMonet 0.1.0 API) - +Overview (JMonet 0.2.0 API) + @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@