Commit graph

1461 commits

Author SHA1 Message Date
hkrish
cac86627be Correct winding number calculation when horizontal curves are involved. 2014-02-24 19:11:32 +01:00
hkrish
9e799d09eb Self-Intersections: Restore the logic issues while cleaning up 2014-02-23 16:44:07 +01:00
hkrish
49ddfafe4d Handle stationary points in #getWinding method. 2014-02-22 18:56:19 +01:00
hkrish
b4d8315484 Reject monotone curves which doesn't contribute to the winding, early. 2014-02-22 18:54:26 +01:00
Jürg Lehni
cf4d72f141 Improve data-structure for monotonic curves. 2014-02-21 10:07:27 +01:00
Jürg Lehni
4973ea9845 Minor clean up in getWinding() code. 2014-02-21 00:40:24 +01:00
Jürg Lehni
b4bc16330a Remove redundant comment. 2014-02-20 20:59:54 +01:00
Jürg Lehni
daa4c12b46 Revert bdcfb60a9a
Since it broke the last example of BooleanOperations.html
2014-02-20 20:58:39 +01:00
Jürg Lehni
5dd26f5b9f Explain about self-intersection handling in getIntersections() 2014-02-20 20:49:36 +01:00
Jürg Lehni
84e1f208fb Revert change in d730b75073
As highlighted by @hari in the comments.
2014-02-20 20:44:15 +01:00
Jürg Lehni
31498fa6b7 Capitalized all localized constants. 2014-02-20 20:43:25 +01:00
Jürg Lehni
c88dc8e2aa Minor changes. 2014-02-20 20:26:40 +01:00
Jürg Lehni
5a3ca88224 Restructure boolean code to use one big private scope again. 2014-02-20 20:24:16 +01:00
Jürg Lehni
3d2b53789c Move _getMonoCurves() definitions to PathItem.Boolean.js 2014-02-20 20:00:46 +01:00
Jürg Lehni
9c09be90f3 Fix white-space mix-up. 2014-02-20 19:52:09 +01:00
Jürg Lehni
64fa328f65 Move all winding related code to PathItem.Boolean and introduce __options.booleanOperations switch.
Fall back to __options.nativeContains if __options.booleanOperations is not included.
2014-02-20 19:50:37 +01:00
Jürg Lehni
81b3b756c9 Remove need for private scope in boolean operations code. 2014-02-20 19:35:11 +01:00
Jürg Lehni
2a4696b865 More clean-up in computeBoolean() code. 2014-02-20 19:10:46 +01:00
Jürg Lehni
ec621eef81 Cleanup computeBoolean() code. 2014-02-20 18:44:38 +01:00
Jürg Lehni
c6329e89bb Implement Curve#isHorizontal() 2014-02-20 18:44:23 +01:00
Jürg Lehni
b48321e78d Some more code and comments clean-up. 2014-02-20 18:00:56 +01:00
Jürg Lehni
bdcfb60a9a Improve handling of tMin and tMax in self-intersection code in PathItem#getIntersections() 2014-02-20 17:55:39 +01:00
Jürg Lehni
f782abd0d7 Some more clean-up in PathItem#getIntersections() 2014-02-20 17:49:19 +01:00
Jürg Lehni
5d2ff7e9ff Merge PathItem#getIntersections() and PathItem. _filterIntersections() 2014-02-20 17:03:18 +01:00
Jürg Lehni
0ce89fa47c Simplify self-intersecting code in PathItem#getIntersections() by passing on tMin, tMax, uMin & uMax to Curve#getIntersections(). 2014-02-20 17:02:32 +01:00
Jürg Lehni
4ec3daf4d1 Merge PathItem#getIntersections() and #getSelfIntersections() 2014-02-20 16:26:47 +01:00
Jürg Lehni
e11b6138bd Rename PathItem. _conditionIntersections() to _filterIntersections() and clean up code. 2014-02-20 15:38:31 +01:00
Jürg Lehni
f1765d1cbf Implement CurveLocation#equals() 2014-02-20 15:37:49 +01:00
Jürg Lehni
5e7b15c64e Remove need for sorted list of intersection curves, use variables instead. 2014-02-20 15:17:39 +01:00
Jürg Lehni
b960cbc07b Further simplifications in PathItem._tracePaths() 2014-02-20 15:17:08 +01:00
Jürg Lehni
abb2b0dec9 Simplify and merge conditions for path removal in _tracePaths() 2014-02-20 14:16:04 +01:00
Jürg Lehni
50433400f0 More clean-up and some variable renaming. 2014-02-20 14:13:43 +01:00
Jürg Lehni
de6650a6ca More simplifications in PathItem._getWinding() 2014-02-20 13:46:10 +01:00
Jürg Lehni
a2941472b5 More PathItem._tracePaths() streamlining.
Work in progress.
2014-02-20 10:16:00 +01:00
Jürg Lehni
2a58828e81 Fix issue with curve tangents in rare edge-cases.
We should fix Curve.evaluate() for these instead.
2014-02-20 03:22:38 +01:00
Jürg Lehni
b89fc84789 Start simplifying PathItem#_tracePaths() code by using improved Curve#evaluate() and relying on Path#reduce(). 2014-02-20 02:52:20 +01:00
Jürg Lehni
f790ede7a8 Use Path#reduce() to make sure there are no curves with zero length in boolean code. 2014-02-20 02:51:35 +01:00
Jürg Lehni
86e4d2a6b9 Implement Curve#remove() and Path#reduce().
Also have Item#reduce() recursively call #reduce() on reduced children.
2014-02-20 02:50:39 +01:00
Jürg Lehni
4453f68cfa Revert handling of linear segment reseting, as it broke some rare boolean tests. 2014-02-20 02:13:55 +01:00
Jürg Lehni
d730b75073 Simplify and clean-up PathItem._splitPath() code. 2014-02-20 01:56:49 +01:00
Jürg Lehni
4e5644f264 Simplify intersection sort function. 2014-02-20 00:32:15 +01:00
Jürg Lehni
56bf87ce84 Rename _getMonotoneCurves() to _getMonoCurves()
Shorter is better...
2014-02-20 00:24:09 +01:00
Jürg Lehni
36394c4c56 Simplify and clean-up PathItem._getWinding() code. 2014-02-20 00:19:44 +01:00
Jürg Lehni
6af639946b Simplify and streamline Path._getMonotoneCurves() code. 2014-02-19 23:55:56 +01:00
Jürg Lehni
e6b7e9b2eb Remove unused Curve#_getWinding() and commented out CompoundPath#_getWinding() code. 2014-02-19 23:51:21 +01:00
Jürg Lehni
cc0f088a11 Improve evaluation of tangents and normals at t == 0 and 1. 2014-02-19 23:49:34 +01:00
Jürg Lehni
1a0eead28c Various code and comment clean-ups in new bool-op code. 2014-02-19 23:18:14 +01:00
Jürg Lehni
8726a3f082 Reformat documentation comments and change wording to follow existing documentation convention. 2014-02-19 23:17:59 +01:00
Jürg Lehni
19d84a8a8d Rename Path._getWindingNumber to _getWinding (to reflect the naming of the existing Path#_getWinding). 2014-02-19 22:18:51 +01:00
Jürg Lehni
093aae0836 Merge remote-tracking branch 'origin/master' into bool-new-2 2014-02-19 14:35:52 +01:00
Jürg Lehni
ea89498e48 Remove debug logging. 2014-02-19 14:31:32 +01:00
Jürg Lehni
9de4189233 Minor simplification. 2014-02-19 14:28:35 +01:00
Jürg Lehni
74a153dd88 Some code clean-up.
More to come.
2014-02-17 20:59:38 +01:00
Jürg Lehni
73627346c0 Remove unnecessary paper namespace prefixes inside the library. 2014-02-17 20:36:41 +01:00
hkrish
92c13ae48b Resolve selfIntersections if both operands to a boolean op is the same path 2014-02-16 19:02:07 +01:00
hkrish
e88ae54a22 _tracePaths: support self-intersections 2014-02-16 18:47:11 +01:00
hkrish
a62a54d7c1 Simplify the horizontal curve case in _getWinding method 2014-02-16 18:46:31 +01:00
Jürg Lehni
ad801fa786 Use parameter tolerances in Path#slipt()
Required because CurveLocation objects as returned by Path#getLocationAt() have some imprecision in their #parameter values. Fixes #401.
2014-02-15 23:37:41 +01:00
hkrish
16ecbbafad Remove debug notes and helpers 2014-02-15 23:19:27 +01:00
hkrish
83eaf70ee4 Fix regression: getLength has been split to getLength and getPartLength in master branch 2014-02-15 00:04:05 +01:00
hkrish
87ded4dcff Merge master 2014-02-15 00:02:02 +01:00
hkrish
a798b553a2 Remove old tracePaths method 2014-02-14 22:52:32 +01:00
hkrish
cc2e1921f9 Remove checks from boolean path operations 2014-02-14 22:51:34 +01:00
hkrish
ea29e65e6b _tracePaths: Switch contours only if necessary 2014-02-14 22:50:55 +01:00
hkrish
26ef85930d _tracePaths: Calculate correct entry&exit tangents. 2014-02-11 19:18:54 +01:00
hkrish
099f2d411e _tracePaths: Optimize contour selection a bit. 2014-02-10 22:13:03 +01:00
hkrish
2121b564d0 _tracePaths: Avoid traversing to visited segments 2014-02-10 22:12:32 +01:00
hkrish
dfd1c97a4f Bug fixes in the tracePath method to work with self-Intersection resolution 2014-02-10 22:12:13 +01:00
hkrish
f8f31349d9 Modified tracePath method for supporting self-intersection resolution and offset curves 2014-02-10 22:11:43 +01:00
hkrish
ccb9f518b8 Fix monotoneCurve calculation for open paths 2014-02-10 22:11:29 +01:00
hkrish
de0cfb7e3d Refactor code common to getIntersections and getSelfIntersections.
Conflicts:
	src/path/PathItem.js
2014-02-10 22:10:55 +01:00
hkrish
74c4df9b8c Fix winding contribution case for horizontal curves 2014-01-28 18:04:09 +01:00
hkrish
acaf637f26 Keep exclude as a compound boolean operator for now. 2014-01-27 21:32:25 +01:00
hkrish
85736d4e84 Remove debug helpers 2014-01-26 05:44:55 +01:00
hkrish
aea9a5cd6c Minor Fixes 2014-01-26 05:39:51 +01:00
hkrish
758cf67f6e Move sorting and expansion of intersections to the getIntersections method 2014-01-26 05:39:00 +01:00
hkrish
c5ddbf19da Remove duplicate intersections in #getIntersections 2014-01-26 05:38:09 +01:00
hkrish
cf9aec9233 Remove addLocation helper. We have to remove duplicates once we have all the intersections. 2014-01-25 23:50:29 +01:00
hkrish
24cbf3b079 Correct winding contribution calculation for horizontal curves 2014-01-16 20:02:26 +01:00
Jürg Lehni
706fe2c77d Rearrange Base.read argument sequence.
options are used more often than length.
2014-01-05 18:31:24 +01:00
Jürg Lehni
cd6bfa0b77 Move Curve#getLength(from, to) to Curve#getPartLength(from, to).
Clears up the Curve#getLength() getter and removes the need for accessing arguments[]
2014-01-05 18:06:45 +01:00
Jürg Lehni
e3f3a9c9d2 Merge branch 'refs/heads/master' into v8-optimizations 2014-01-05 17:42:59 +01:00
Jürg Lehni
1ee5b2c126 Fix references to Bootstrap.js in comments. 2014-01-05 17:41:38 +01:00
Jürg Lehni
6cb25fafe3 Use changes in latest Straps.js to remove as many hidden parameters as possible.
Hidden parameters through arguments[] are bad news for JS optimizer engines.
2014-01-05 17:40:54 +01:00
hkrish
df7e8e43b2 More explanation and indentation fixes 2014-01-05 15:59:21 +01:00
hkrish
bcdec37b1a Do a much simpler but thorough check for winding contribution, instead of trying to be clever :) 2014-01-05 14:38:15 +01:00
Jürg Lehni
ea63d4c288 Merge branch 'refs/heads/master' into v8-optimizations
Conflicts:
	src/core/Base.js
	src/style/Color.js
2014-01-05 05:01:13 +01:00
Jürg Lehni
e22fa3a664 Update copyright notice. 2014-01-04 01:47:16 +01:00
Jürg Lehni
6a11547942 Fix issue in Curve.getLength() for linear curves with sub-ranges.
Closes #376.
2013-12-30 14:20:05 +01:00
Jürg Lehni
35890383d8 Merge branch 'refs/heads/paperscript-refactoring' into v8-optimizations 2013-12-29 15:54:54 +01:00
Jürg Lehni
8395541298 Clean up docs and fix spelling mistakes. 2013-12-29 15:44:26 +01:00
hkrish
f2168b48cb new Boolean operator functions 2013-12-29 13:40:22 +01:00
hkrish
3b85d3d990 Remove TestOnCurve method 2013-12-29 13:38:33 +01:00
hkrish
9831720c9c New computeBooleean method 2013-12-29 13:38:04 +01:00
hkrish
7af091ca5b Dont alter the winding direction for paths within compoundPaths if they are not completely contained 2013-12-29 13:36:43 +01:00
hkrish
d02e0dcecf Remove old SplitPath method 2013-12-29 13:32:12 +01:00
hkrish
3f6562d5b3 Method for tracing a set of connected segments and producing paths; used in boolean ops and path offsetting methods. 2013-12-29 13:29:54 +01:00
hkrish
7c75dcee97 New Split path method 2013-12-29 13:25:48 +01:00
hkrish
1be669396e First cut at a new winding number calculation algorithm 2013-12-29 13:21:08 +01:00
hkrish
a88d7f5eae Rudimentary self-intersection calculation 2013-12-29 13:06:25 +01:00
hkrish
1bacbc32e9 Link previous & next curves while returning monotone curves 2013-12-29 13:03:39 +01:00
hkrish
0b4da28c1e Optimize handling of horizontal curves in Curve#_getWinding 2013-12-29 12:38:59 +01:00
Jürg Lehni
c0ed227cbc Add sorted argument to PathItem#getIntersections() 2013-12-28 21:06:35 +01:00
Jürg Lehni
58bd3aa444 Sorting CurveLocation by path index produces the correct sequence in compound paths too. 2013-12-28 21:01:44 +01:00
Jürg Lehni
38d67d843d Move Path#getStyle() to better location and simplify code. 2013-12-28 20:56:44 +01:00
Jürg Lehni
451ff4fd03 Docs: Add group title to boolean path operations. 2013-12-28 20:56:30 +01:00
hkrish
a8a4a6fd03 Return horizontal curves as well, with monotonic curves 2013-12-26 18:03:23 +01:00
hkrish
4562b104f2 Winding number calculation for a given point 2013-12-25 20:46:13 +01:00
hkrish
39c52f326e New _getWinding method in Curve. This method return the winding contribution of this curve w.r.t. the resulting PathItem 2013-12-25 20:41:19 +01:00
hkrish
0134596f66 _getMonotoneCurves method which returns and caches curves that are monotonic in Y direction 2013-12-25 20:38:48 +01:00
hkrish
b4c7bcae5e Indent with Tabs like rest of paperjs code. 2013-12-25 20:33:51 +01:00
hkrish
70070c14d2 Avoid creating proxy array objects 2013-12-24 19:00:33 +01:00
hkrish
f23303e371 Merge branch 'master' into bool-new
* master:
  Share code that handles bounds in roots between solveQuadratic() and solveCubic()
  Inline EPSILON and TOLERANCE for better performance in Numerical.
  Clean up code a bit.
  Filter out insert property in Item#set()
  Typo Paelette -> Palette
  Rename Item#anchor -> Item#pivot
  Minor documentation fixes.
2013-12-24 00:02:15 +01:00
hkrish
3b013c0720 Add an optional ignoreLinear parameter to Curve#divide, so that new segments on linear curves will keep their correct bezier handles. 2013-12-23 23:38:12 +01:00
hkrish
20b6d699db Consistently return curve parameter on Line intersections as well, so that sorting intersections wouldn't fail. 2013-12-23 23:34:26 +01:00
hkrish
20fbdcffda Subdivide only if tDiff on both curves have failed to converge more than 80% 2013-12-23 23:27:23 +01:00
Jürg Lehni
81651a7379 Prevent V8 "assignment to parameter in arguments object" deoptimizations.
Some getter-like functions still need fixing, but this might require a fix in Straps.js first.
2013-12-17 23:28:55 +01:00
Jürg Lehni
3dbad9c477 Replace delete in favor of setting to undefined to prevent V8 deoptimization. 2013-12-17 23:27:48 +01:00
Jürg Lehni
99d7b5cfdb Merge branch 'refs/heads/fatline' 2013-12-17 22:07:34 +01:00
Jürg Lehni
6b4917f4a8 Clean up code a bit. 2013-12-17 15:23:07 +01:00
Jürg Lehni
45ed406aa3 Remove unnecessary exports. 2013-12-16 21:58:32 +01:00
Jürg Lehni
94b27e933a Some more variable renaming. 2013-12-16 21:56:41 +01:00
Jürg Lehni
e9d2c6cfd4 Further simplify code a bit. 2013-12-16 21:45:06 +01:00
Jürg Lehni
d984a2cd87 Use correct value for tolerance in non-fatline code again. 2013-12-16 21:41:46 +01:00
Jürg Lehni
a59a42376a Clean up coding style a bit. 2013-12-16 21:40:40 +01:00
hkrish
5fe092672e Fatline clipping: fix c-hull corner case. 2013-12-14 00:31:42 +01:00
hkrish
a0013da7f8 Merge branch 'master' into fatline
* master: (71 commits)
  Define the default value for Color#alpha.
  Some minor changes in Satie example.
  Include point property in stroke hit-results.
  Clean up code and comments in various places.
  Use Point.read() for center parameter in Item#rotate
  Make hit-tests work again with projects that don't have a view.
  Write documentation for Item#anchor.
  Keep support for Item#registration for now as well, since there are some scripts on the mailing list that use it.
  Rename Item#registration to Item#anchor
  No need to run Radial Rainbows in HiDPI mode.
  Include Satie Sound Analysis Example.
  Only start dragging if none of the mosedown events have stopped propagation.
  Fix item-level mousedrag events again.
  Allow layers to select children again, since it breaks examples otherwise.
  Fix documentation issues in TextItem.
  Make hit-test tolerance dependent of view#matrix
  Implement options.selected for hit-testing segments and handles.
  Fix typo in new segment / handle hit-testing code.
  Use same stroke tolerance approach for hit-testing joins and caps as well.
  Do not factor in view matrix into Item#globalMatrix.
  ...
2013-12-13 20:04:43 +01:00
hkrish
5fb75593c2 Remove enpoint fix from curve-line intersections, since it's already handled 2013-12-13 20:01:58 +01:00
Jürg Lehni
d176acfc53 Include point property in stroke hit-results. 2013-12-11 17:10:32 +01:00
hkrish
ef66b6dbe6 Fatline clipping: fix convergence check to be more strict 2013-12-10 20:45:25 +01:00
Jürg Lehni
68bce5b062 Implement options.selected for hit-testing segments and handles. 2013-12-10 19:34:25 +01:00
Jürg Lehni
52891830e4 Fix typo in new segment / handle hit-testing code. 2013-12-10 18:59:04 +01:00
Jürg Lehni
9177bac125 Use same stroke tolerance approach for hit-testing joins and caps as well. 2013-12-10 14:23:05 +01:00
Jürg Lehni
7c28c7e9e3 Do not factor in view matrix into Item#globalMatrix.
Instead concatenate it when drawing selections.
2013-12-10 13:18:21 +01:00
Jürg Lehni
48c8946f9e Implement correct hit-testing tolerance using transformed 2D stroke padding rather than unscaled numerical tolerance.
But we still need to factor in the View zoom as well...
2013-12-10 12:52:42 +01:00
Jürg Lehni
d65ede7df8 Correctly take strokePadding and transformation matrices into account in roughBounds, through new Path._getPenPadding() 2013-12-10 11:43:05 +01:00
hkrish
ac41f0d3c1 Fatline clipping: fix issue where one of the curves has been converged completely and other hasn't. 2013-12-09 23:27:26 +01:00
hkrish
0598afd77b Fatline clipping: remove old #curveIntersection method 2013-12-09 19:36:14 +01:00
Jürg Lehni
b7943239eb Implement cached getInternalRoughBounds as well. 2013-12-09 19:33:34 +01:00
hkrish
2fa5e3d417 Remove debug helpers 2013-12-09 19:31:58 +01:00
hkrish
82ab532885 Fatline clipping: clipConvexHull method handles only the clipping part 2013-12-09 19:31:04 +01:00
hkrish
35acebb91d Fatline clipping: remove old fatline code. This is handled by the CurveIntersections method now 2013-12-09 19:30:03 +01:00
hkrish
6041b2b09d Fatline clipping: new #CurveIntersections method 2013-12-09 19:28:56 +01:00
Jürg Lehni
1e9fc61644 Fix issues with deserializing selection states. 2013-12-09 15:18:43 +01:00
Jürg Lehni
44e913201d Switch back to instanceof checks.
As people are started to subclass Paper.js classes...
2013-12-09 15:04:44 +01:00
Jürg Lehni
e238d23194 Implement caching of internal, untransformed bounds. 2013-12-09 10:53:19 +01:00
hkrish
b471b90229 Fatline clipping: Iterate to find intersections 2013-12-08 23:29:38 +01:00
hkrish
68b9adac95 Modify old clipFatline code to a much cleaner version 2013-12-08 23:15:18 +01:00
hkrish
45e35aad83 New CurveCurveINtersections code; doing the fatline clip inplace. 2013-12-08 23:14:13 +01:00
Jürg Lehni
17e4078e3b Fix a newly introduced bug in drawSegments() 2013-12-08 22:16:27 +01:00
Jürg Lehni
064d632d65 More matrix related clean-ups. 2013-12-08 22:12:36 +01:00
Jürg Lehni
8cec512cc2 Take matrices into account in PathItem#getIntersections() 2013-12-08 22:00:40 +01:00
Jürg Lehni
516b9d040f Apply matrices before calculating boolean path operations. 2013-12-08 21:39:56 +01:00
hkrish
6c5e18ae45 New clip convex-hull routine 2013-12-08 19:09:59 +01:00
Jürg Lehni
fc4e88c039 Change the way segments, points and handles are selected and deselected.
There is no interdependency anymore, except for selecting a segment selects the point and both handles, and selecting a curve selects both points and handles.

Closes #355
2013-12-08 18:06:31 +01:00
Jürg Lehni
afe00add32 Implement option.type filtering in #hitTest() functions. 2013-12-08 16:32:42 +01:00
Jürg Lehni
2884894d0f Implement hit-testing tolerance for fill tests.
Closes #278.
2013-12-08 12:15:10 +01:00
hkrish
834c8d17a9 Declutter getConvexHull code. 2013-12-08 00:18:47 +01:00
hkrish
baa189bb19 getConvexHull returns upper and lower part of the c-hull seperately 2013-12-08 00:11:13 +01:00
Jürg Lehni
054356c78d Fix drawing of closed path with only one segment. 2013-12-07 16:16:04 +01:00
Jürg Lehni
f166b08257 Simplify addCap() function. 2013-12-07 16:11:02 +01:00
Jürg Lehni
eb1f62b908 Improve strokeBounds fix for paths with only one segment. 2013-12-07 16:07:51 +01:00
msand
e431154e0e Fix indent. 2013-12-07 16:09:50 +02:00
msand
73b1b9843a Wrote failing test for strokeBounds on paths with a single segment and strokeColor. Implemented fix for failing test. 2013-12-07 15:59:45 +02:00
Jürg Lehni
a50adb1020 Implement constructors for Path and CompoundPath that can handle SVG-style path-data. 2013-12-06 18:09:44 +01:00
Jürg Lehni
92590b160c Implement Canvas Path caching again using Context#currentPath. 2013-12-06 12:49:46 +01:00
Jürg Lehni
5f24bf8da5 Implement Rectangle#getArea() and use it in reorientPath() 2013-12-03 21:54:36 +01:00
Jürg Lehni
4926e2c8da Fix Array#sort() call in reorientPath(path) for IE.
IE expects integer values in the compare function, not boolean. Closes #350 again.
2013-12-03 21:49:49 +01:00
Jürg Lehni
448d8d9b99 Clean-up bool-fix code. 2013-12-01 23:48:59 +01:00
Jürg Lehni
971268cd72 Merge remote-tracking branch 'origin/master' into bool-fix 2013-12-01 23:28:29 +01:00
Jürg Lehni
6b448ad320 Fix more edge cases in #contains().
This should fix issue #346 for good.
2013-12-01 23:13:11 +01:00
hkrish
b625ec5b6d Merge branch 'master' into bool-fix
* master: (127 commits)
  Fix edge cases in Curve._getWinding()
  Copy over parent style in Item#reduce().
  Fire key-up events for all currently pressed keys.
  Improve and streamline key-handling logic.
  Use renamed __options object in build script too.
  Correctly apply matrices to Raster items in #importSVG()
  Support passing DOM element IDs in calls to #importSVG()
  Update to latest Prepro.js and switch from global options object to __options, to avoid name clashes.
  Make directly setting view.onFrame work again.
  Update to latest Straps.js and remove unnecessary isArray argument in Base.each()
  Add missing DOCS comments.
  Fix issue where exceptions in onFrame handlers block future animations.
  Fix issue with JSON import.
  Add Node JSONtoPDF example.
  Implement Item#data cloning.
  Remove unnecessary Color#clone() since it's doing the same as Base#clone() now.
  Remove Base.merge() and use a new Straps.js feature instead.
  Improve build script to include dist file in paperjs.org website.
  Bump version to v0.9.14
  Fix setting #radius on Shape.Circle.
  ...
2013-11-30 14:50:18 +01:00
Jürg Lehni
dfc0886a8b Fix edge cases in Curve._getWinding()
Use same rules for lines as for curves, exclude end points of lines. Closes #346.
2013-11-30 14:21:47 +01:00
Jürg Lehni
93d10983ee Update to latest Prepro.js and switch from global options object to __options, to avoid name clashes. 2013-11-29 20:26:38 +01:00
Jürg Lehni
1149399690 Add missing DOCS comments. 2013-11-29 18:50:04 +01:00
Jürg Lehni
593e0d8d7f Remove Base.merge() and use a new Straps.js feature instead.
A more clever Base() constructor that allows merging.
2013-11-28 22:20:00 +01:00
Jürg Lehni
5beb0f17ed Fix hit-testing on paths with a matrix that is not the identity. 2013-11-26 23:13:11 +01:00
Jürg Lehni
8e44049f42 Clean up smooth() code. 2013-11-26 17:32:52 +01:00
Jürg Lehni
d079e179ac Fix Path#arcBy(to, boolean) 2013-11-25 01:04:51 +01:00
hkrish
274f1a4b55 Sort sub-paths before 'reorienting' during boolean calculations 2013-11-24 13:32:01 +01:00
hkrish
492e78df7d Handle intersection special case, when two curves' start and end points overlap 2013-11-11 21:20:32 +01:00
Jürg Lehni
1049214126 Remove ctx.currentPath caching again, since it has the current affine transformation factored in and is thus useless to us. 2013-11-06 12:53:10 +01:00
Jürg Lehni
5630b7e415 Implement caching of drawn Canvas Path objects for better performance.
Already supported on recent Chrome and Safari.
2013-11-04 11:46:20 +01:00
Jürg Lehni
1301aea47d Fix issues with importing Ghostscript Tiger. 2013-11-03 12:52:00 +01:00
Jürg Lehni
4f32cc2eea No need for RegExp group in match statement. 2013-11-02 13:25:03 +01:00
Jürg Lehni
7b1f118aed Use same command sequence as in switch statement. 2013-11-02 09:45:11 +01:00
Jürg Lehni
97a29e6ada Improve SVG path data parser. 2013-11-02 09:30:40 +01:00
Jürg Lehni
29c00584be Fix SVG parsing issues with multiple concatenated coordinate values
e.g. "1.5.5", is to be read as "1.5" and ".5"
2013-11-01 17:56:16 +01:00
Jürg Lehni
132f54d362 Define Item#clear() as an alias for Item#removeChildren(), or Path#removeSegments() for paths. 2013-11-01 17:52:27 +01:00
Jürg Lehni
0ded3ae0ba Implement PathItem#cubicCurveBy() and #quadraticCurveBy()
Closes #284.
2013-10-30 01:43:55 +01:00
Jürg Lehni
eecf68b7c3 Clear ctx.shadowColor after ctx.fill() to avoid application to both fill and stroke.
Closes #314.
2013-10-30 00:00:04 +01:00
Jürg Lehni
4e34a27da4 Some more work on comments. 2013-10-29 21:20:19 +01:00
Jürg Lehni
fd96447ac1 Share ellipse reading code between Shape.Ellipse and Path.Ellipse. 2013-10-29 21:15:28 +01:00
Jürg Lehni
f8d960d834 option.tolerance should always be defined in _hitTest() 2013-10-29 21:00:17 +01:00
Jürg Lehni
c43752dc3e Use #hasFill() and #hasStroke() more broadly and avoid drawing strokes when strokeWidth is set to 0. 2013-10-29 20:05:39 +01:00
Jürg Lehni
9d60662a28 Check for the occurrence of 'radius' rather than 'center' when deciding to read a center / radius pair for ellipses. 2013-10-29 18:53:55 +01:00
Jürg Lehni
c3aed5277d Use center and radius in all ellipse code, rather than bounding rect.
Simplifies things.
2013-10-29 18:10:30 +01:00
Jürg Lehni
fc9cad009f Implement CompoundPath#_getWindings() and move #_contains() code for both Path and CompoundPath to PathItem. 2013-10-29 17:57:25 +01:00
Jürg Lehni
d649b1bb21 Define insert argument for Path#toShape() and Shape#toPath() 2013-10-29 16:45:50 +01:00
Jürg Lehni
dc3bd30ee3 Rename some variables and clean up code a bit more. 2013-10-29 16:19:39 +01:00