Commit graph

484 commits

Author SHA1 Message Date
Jürg Lehni
532176ac62 Fix drawing of selected handles. 2013-03-01 18:32:55 -08:00
Jürg Lehni
c543704115 Define Project#options as a way to configure things.
For now, only options.handleSize is in use.
2013-03-01 18:28:22 -08:00
Jürg Lehni
f0593c1fb9 Fix error with #getPathData() and empty paths. 2013-03-01 17:46:55 -08:00
Jürg Lehni
3f5d0a6925 Merge constructor._name with _type and use CamelCase for Item types. 2013-03-01 17:13:22 -08:00
Jürg Lehni
b649240696 Use correct defaults for #pathData serialization. 2013-02-28 19:55:18 -08:00
Jürg Lehni
cef30f9dd1 Switch to #pathData for JSON serialization of Path and CompoundPath. 2013-02-28 19:41:13 -08:00
Jürg Lehni
78b3621cf6 Implement PathItem#pathData getter and setter for SVG style path data.
And use it fro SvgImport too.
2013-02-28 19:14:06 -08:00
Jürg Lehni
6b7c6b6c4c Implement Item#bounds.selected to control drawing of selected item bounds. 2013-02-24 15:41:31 -08:00
Jürg Lehni
119e5acbf9 Move #_setProperties() and #set() from Item to Base, rename it to #_set and use it for Tool too. 2013-02-15 18:28:49 -08:00
Jürg Lehni
24d467e292 Implement support for native dash strokes, through both setLineDash() and mozDash. 2013-02-12 15:32:21 -08:00
Jürg Lehni
489a785171 Override Item.extend() to merge the subclass' _serializeFields with the parent class' _serializeFields.
And have style fields always serialized in non-compact form for Color.
2013-02-11 17:08:23 -08:00
Jürg Lehni
b10454a83c Rename Matrix#createInverse() to #inverted() and #createShiftless() to #shiftless(). 2013-02-09 12:18:40 -08:00
Jürg Lehni
bc5826d324 Clean up code. 2013-02-08 18:46:22 -08:00
Jürg Lehni
dc35fdbd02 Move named inner functions out of nested scopes, to prepare for 'use strict;' transition. 2013-02-08 18:23:33 -08:00
Jürg Lehni
6c9c16ad3d Update copyright information comments, and year. 2013-01-28 18:03:27 -08:00
Jürg Lehni
b0deda9445 Add missing documentation for various location related functions on Curve. 2013-01-28 16:47:45 -08:00
Jürg Lehni
1a438b8b9b Change Curve#[getPoint / getTangent / getNormal](t) to #[getPoint / getTangent / getNormal](offset, isParamter).
Keep deprecated versions around for now.
2013-01-28 16:30:28 -08:00
Jürg Lehni
e75ee18de1 Restructure code a bit. 2013-01-22 14:58:34 -08:00
Jürg Lehni
a5bfa9e5d3 Remove debug logging for Segment / Curve insertion, deletion and splitting. 2013-01-22 14:54:19 -08:00
Jürg Lehni
f09bc84a12 Implement correct handling of Curves / Segments synchronization, improve CurveLocation linking to Curves through their linked Segments, and preserve Curves in Path#split() calls. 2013-01-22 14:46:49 -08:00
Jürg Lehni
4346563fe4 No need to merge Path#_serializeFields, simply keep in sync with Item#_serializeFields (excluding #children). 2013-01-20 14:01:43 -08:00
Jürg Lehni
49c8f8b6b5 A couple of improvements on Path#split(). 2013-01-20 14:01:42 -08:00
Jürg Lehni
b04eb2b98f Implement Path#split() and Curve#split(). 2012-12-31 22:28:41 +01:00
Jürg Lehni
d2b799f4db Fix various issues with Path#curves synchronization. 2012-12-31 22:21:50 +01:00
Jürg Lehni
f0038465cc Fix clearing of removed segments. 2012-12-31 21:45:30 +01:00
Jürg Lehni
a10e44d601 Minor code clean-up. 2012-12-31 21:43:43 +01:00
Jürg Lehni
5a2be6d545 No need for chainable functions on Item types. 2012-12-31 21:42:14 +01:00
Jürg Lehni
d509f86e1a Fix issue where removing segments from open paths would correct curves wrongly. 2012-12-31 21:19:55 +01:00
Jürg Lehni
5da4e89672 Return 'this' in more places to facilitate chained calls inside the library. 2012-12-31 20:07:28 +01:00
Jürg Lehni
4185b63d99 Und recent renaming of #getNearest*() methods. 2012-12-30 19:43:35 +01:00
Jürg Lehni
2abefee336 Merge Base.readValue() with Base.read() and rename Base.peekValue() to Base.peek().
When called directly on Base, read() reads values, otherwise the specific type of the subclass it is called on.
2012-12-30 16:07:20 +01:00
Jürg Lehni
1b539301ad Find a better naming convention for the various getLocation* methods (*At for offsets / parameters, *Of for points), implement the missing methods on Curve and use them in Path. 2012-12-27 21:08:03 +01:00
Jürg Lehni
3c4978eb04 Rename Curve#getParameter(point) to Curve#getParameterOf(point), to better distinguish from Curve#getParameterAt(length). 2012-12-27 20:09:21 +01:00
Jürg Lehni
68ad4bb5ba Implement PathItem#getIntersections(path) and Curve#getIntersections(curve) using divide-and-conquer approach, and new Curve.getBounds(). 2012-12-27 19:23:03 +01:00
Jürg Lehni
75596e1d03 Move a part of Path.getBounds() code into Curve._addBounds(), and use it to also define Curve.getBounds(). 2012-12-27 18:38:55 +01:00
Jürg Lehni
050ca1dcb1 Further clean up Path.getBounds() code. 2012-12-27 17:43:21 +01:00
Jürg Lehni
3a1f2eec3f Restructure Path#getBounds() code so Curve bounds calculations can be moved to Curve. 2012-12-27 15:19:42 +01:00
Jürg Lehni
2673991620 Have Path#_serializeFields inherit from Item#_serializeFields. 2012-12-27 13:04:38 +01:00
Jürg Lehni
f45c04a359 Remove overridden Path#matrix getters and setters, since we now control behavior through #applyMatrix. 2012-12-27 13:04:07 +01:00
Jürg Lehni
4f83e0eee6 Commit first version of serialization / deserialization mechanism.
It appears to work fine already for Paths and Groups.
2012-12-27 12:45:55 +01:00
Jürg Lehni
ae4e5d4be5 Rename Item#setProperties() to hidden #_setProperties() and add public Item#set() to use same functionality from outside. 2012-12-27 00:52:09 +01:00
Jürg Lehni
3ac039bd66 Implement properties object literal initialization for all Item constructors. 2012-12-25 22:12:25 +01:00
Jürg Lehni
947afe85f0 Simplify Path#initialize() code. 2012-12-25 16:59:05 +01:00
Jürg Lehni
8f093f6dd7 Remove all PORT comments, since we won't port back features to Scriptographer. 2012-12-25 16:07:48 +01:00
Jürg Lehni
b54bdadaff Rename Item#transformContent to #applyMatrix. 2012-12-24 17:39:24 +01:00
Jürg Lehni
d6fceb928f Implement Item#transformContent property, which controls wether Item#transform() directly applies transformations to contents, or simply stores them in Item#matrix. 2012-12-24 00:39:42 +01:00
Jürg Lehni
e21ea457a7 Remove Item#apply() and clean up #applyMatrix() and simplify handling. 2012-12-24 00:29:09 +01:00
Jürg Lehni
734cc1cc61 Undo commit 4445376c0204cb5a2e408c64b77a5b6fa09305ba since it clashes with magnification. 2012-12-21 16:41:57 +01:00
Jürg Lehni
e10ef4dba3 Fix comment. 2012-12-19 03:22:57 +01:00
Jürg Lehni
4de5f30f72 Improve documentation. 2012-12-18 14:19:22 +01:00
Jürg Lehni
b535d9f843 Implement new Bootstrap feature that allows hiding of getter parameters to make sure beans are produced, and use it across the library. 2012-12-15 19:51:31 +01:00
Jürg Lehni
5a316c244b Directly expose bounds methods as statics rather than using a private scope. 2012-12-15 08:27:37 -08:00
Jürg Lehni
0d2ed108e2 Refactor getBounds code so that functionality can be exposed as static methods on Path. 2012-12-15 08:19:10 -08:00
Jürg Lehni
021009abbc Shorten Path#getBounds() code by using Numerical.solveQuadratic(). 2012-12-15 07:58:20 -08:00
Jürg Lehni
9a7f72e163 Clean up getBounds code a bit, by using less local variables and more explicit variable names. 2012-12-14 21:40:25 -08:00
Jürg Lehni
2061cb0517 Fix Path#contains() for unclosed paths that have a fill color. 2012-12-14 21:39:47 -08:00
Jürg Lehni
9d8bf12028 Never return null from #getBounds. 2012-12-09 18:00:23 -08:00
Jürg Lehni
d16155f4fe Fix CompoundPath#clone() so that it does not alter the #clockwise state on its children. 2012-12-01 11:31:03 -08:00
Jürg Lehni
ace1d0f441 No need to set _clockwise since #reverse() already does so. 2012-12-01 11:10:59 -08:00
Jürg Lehni
d0cc8b6c16 Fix issue with hit-testing filled paths that are not closed. 2012-11-28 22:13:31 -08:00
Jürg Lehni
4d51173881 Keep Path#curves in sync properly when removing the last segment of an open path.
Closes #138.
2012-11-23 13:58:13 -08:00
Jürg Lehni
61b6026361 Rename CompoundPath#flatten() to #reduce(), to avoid clash with Path#flatten(). 2012-11-23 01:16:21 -08:00
Ben Firshman
8ca26f650a Fixed leaky _handle2 2012-11-20 15:53:31 +00:00
Jürg Lehni
1cb6a7fc3c Clean up Path#smooth() code a bit. 2012-11-06 20:18:59 -08:00
Jürg Lehni
f110038104 Improve clipping mask drawing, and remove some unneeded ctx.save() / ctx.restore() calls. 2012-11-06 20:14:21 -08:00
Jürg Lehni
fd8fe9c08e Rename CompoundPath#simplify() to #flatten() to avoid clashes with Path#simplify(), and add Path#flatten(), returning itself. 2012-11-06 10:16:03 -08:00
Jürg Lehni
6e0f29bf4a Rename Path#closed getter to #isClosed() instead of #getClosed(). 2012-11-05 21:06:47 -08:00
Jürg Lehni
35568c15f2 Implement transparent constant-substitution in prepro.js to shave of some extra bytes of final distribution file. 2012-11-05 18:11:44 -08:00
Jürg Lehni
1050e3314e Implement Segment#isLinear() and Path#isPolygon(). 2012-11-04 00:03:49 -07:00
Jürg Lehni
19d145f281 Introduce Item#type, returning a simple item type string identifier. 2012-11-03 23:43:18 -07:00
Jürg Lehni
07c0b6ce6a Improve Path#moveTo behavior()
Allowing it to be called multiple times before any other drawing commands.
2012-11-03 19:45:02 -07:00
Jürg Lehni
b22ff5ecca Revert a recent change in selection handling. 2012-11-02 16:27:59 -07:00
Jürg Lehni
f73717a7e7 Fix issues in Numerical.solveQuadratic(), solveCubic() and Path#contains().
Closes #71.
2012-10-22 18:21:33 -04:00
Jürg Lehni
317fcf5432 Only include strokeWidth in roughBounds if a strokeColor is actually set. 2012-10-20 16:01:53 -04:00
Jürg Lehni
f87eadecda Correct default value for clockwise in arcTo(). 2012-10-19 09:18:10 -04:00
Jürg Lehni
6441a682a8 Fix new error in quadraticCurveTo().
We don't seem to have test-cases for these yet.
2012-10-18 14:29:53 -07:00
Jürg Lehni
30374ae3b4 Implement proper index independent argument list reading of basic types.
Implemented for Point, Size, Rectangle and Color.
2012-10-18 14:24:15 -07:00
Jürg Lehni
e17e94b50b Implement Item#isEmpty() for the various types.
And use it to tell #getBounds() when to ignore items.
2012-10-10 20:11:11 -07:00
Jürg Lehni
ef59ad2875 Improve selection handling and drawing for Path item.
In a way that makes more sense when building tools.
2012-10-10 19:33:42 -07:00
Jürg Lehni
6b08d96c45 Fix issue where out handle was compared to the wrong segment point when drawing.
This should fix #106 but needs to be verified before we can close the bug.
2012-10-05 19:08:31 -07:00
Jonathan Puckey
d20fb61c7c Cleanup code. 2012-04-25 20:47:53 +02:00
Oliver Beattie
3c7563a3bf When a path is transformed, the _length cache of its Curves should be invalidated 2012-03-17 17:09:54 +00:00
Jonathan Puckey
c339ffca35 Close closed paths when drawing using Context#closePath(). Fixes #72 2012-03-01 23:25:00 +01:00
Jonathan Puckey
7093b73d31 Cleanup last merged pull request. 2012-03-01 17:06:39 +01:00
Alex Buchanan
f1a6357a05 Path.reverse() should adjust segment indices 2012-02-18 15:13:23 -08:00
Jürg Lehni
96f7d140a7 Use faster Point.create(x, y) internally. 2011-12-27 20:39:28 +01:00
Jürg Lehni
ad2abfb71f Inline drawDashes() code. 2011-12-27 20:18:02 +01:00
Jürg Lehni
28806fe977 Ue the faster Matrix#_transformPoint().
And reuse Point objects if possible.
2011-12-26 11:06:36 +01:00
Jürg Lehni
7af06502bc Fix Path#transform() to also return a reference to 'this'. 2011-12-25 16:39:08 +01:00
Jürg Lehni
783d2782c0 Fix wrong HitResult type when hitting Segment#point. 2011-12-25 16:38:43 +01:00
Jürg Lehni
1e690a68e0 Add TODO about HitResult points requiring transformations. 2011-12-25 12:39:10 +01:00
Jürg Lehni
3b0b1184a3 Implement checkSegment() without relying on #_transformCoordinates(). 2011-12-25 12:34:51 +01:00
Jürg Lehni
c30ff47930 Remove matrix argument from all hit-testing related methods.
We better inverse-transform the point and save the code!
2011-12-25 00:19:01 +01:00
Jürg Lehni
98c82856ea Override #matrix accessors in Path to do nothing.
For the same reasons as described in the previous commit.
2011-12-23 22:46:53 +01:00
Jürg Lehni
627961627e Have Path always directly apply any transformation to its Segments.
This is required so the coordinates of its bounds, length and SegmentPoints are always in the same space.
2011-12-23 22:43:27 +01:00
Jürg Lehni
97b66582f8 Rename Item#applyMatrix() to shorter #apply(). 2011-12-23 22:41:05 +01:00
Jürg Lehni
93ede28f3b Implement new selection drawing mechanism.
Using the new Item#globalMatrix.
2011-12-20 11:42:00 +01:00
Jürg Lehni
daca14efb8 Add optional matrix in Path drawing code.
Required for new selection drawing mechanism to be implemented.
2011-12-20 11:40:31 +01:00
Jürg Lehni
42087071e7 Fix #strokeBounds for square caps.
Calculate the right points at both ends of paths.
2011-12-19 23:30:02 +01:00
Jürg Lehni
1e768e6c83 Fix #strokeBounds for strokes scaled using #matrix.
Gotta do the right thing, not the same buggy thing as Illustrator.
2011-12-19 23:21:13 +01:00