The upcoming beta for the Freehand Drawing Library now has a single constant-width stroke and three drawing engines. The basic stroke is architected to work with any drawing engine (IDrawingEngine instance). The StrokeDataVO contains both the fully qualified class name of the IDrawingEngine instance and an engineParams Object to pass arbitrary parameters to any drawing engine.
The three drawing engines are
1 – SmoothedStroke: Constant-width equivalent of the algorithm used in the variable-width Freehand stroke. This algorithm allows cusps or sharp angles in the stroke.
2 – ConstantSmoothing: Same engine as #1 except that smoothing is constant. Cusps are not possible.
3 – Lagged: This is an experimental engine that implements lagged smoothing over a small number of prior mouse moves. The entire stroke is redrawn from scratch after every move. This produces a variety of interesting strokes that move in a serpentine fashion while the stroke is drawn. I think this one would be fun for a kid’s doodling application.
A screen shot of the lagged drawing engine is shown below.
With the current FDL architecture, all three engines can be interchanged with the same basic, constant-width stroke. And, each drawing engine can be used with any of the three available line decorators (solid, dashed, dotted).
One stroke, nine different drawings 🙂
I have a few minor details to clean up and then a new beta (0.95) will be released.