Commit graph

3937 commits

Author SHA1 Message Date
Jürg Lehni
a3114e5c28 Do not preserve matrix transformations in empty groups when applied to inexisting content. 2014-03-01 22:48:44 +01:00
Jürg Lehni
4129231504 Rename Path. _addSquareJoin() to more suitable _addBevelJoin() 2014-02-28 18:10:58 +01:00
Jürg Lehni
bd59be8629 Fix issue with strokeBounds affecting corners with miter limit and both handles set. 2014-02-28 18:01:50 +01:00
Jürg Lehni
fe146c5ec0 Fix issues in Point#isOrthogonal() and Point#isColinear() 2014-02-28 17:57:09 +01:00
hkrish
cb810c73bd Fix self-intersection resolution on a single bezier curve 2014-02-28 16:51:28 +01:00
Jürg Lehni
c1ccdf6cb7 Take into account the view's resolution in Item#rasterize() 2014-02-26 16:20:19 +01:00
Jürg Lehni
ec0877962b Expose the view's pixel-ratio and resolution through View#pixelRatio and View#resolution 2014-02-26 16:19:48 +01:00
Jürg Lehni
ccfd51a65a Improve performance of Path constructors and handling of { insert: false } Item creation. 2014-02-26 16:15:51 +01:00
Jürg Lehni
737466d15c Fix all faulty {@true} doc statements. 2014-02-26 15:39:00 +01:00
Jürg Lehni
49801e4b8b Improve performance of Path.Line() constructor.
Passing an array is much faster than using arguments directly.
2014-02-26 14:55:43 +01:00
Jürg Lehni
bf50bd649a Fix issue in Item#rasterize() when resolution is not 72 DPI.
Closes #412.
2014-02-26 11:54:14 +01:00
Jürg Lehni
2c16bd9eb1 Convert to standard paper.js loop format. 2014-02-26 01:24:00 +01:00
patrickheeney
aa2102ecb9 Fix event handlers for paperjs/paper.js#409 2014-02-25 13:02:53 -07:00
Jürg Lehni
4c048dbc94 Rename fatline option to more explicit fatlineClipping. 2014-02-24 21:54:47 +01:00
Jürg Lehni
2fb1522c76 Minor code cleanup. 2014-02-24 21:33:35 +01:00
Jürg Lehni
f4baf690f8 Fix issue introduced in 0ce89fa47c 2014-02-24 21:30:12 +01:00
Jürg Lehni
3e49e3a5f1 Find better names for constants that represent almost 0 and almost 1. 2014-02-24 20:30:20 +01:00
Jürg Lehni
14df7b5d5a Shorten new edge case code in getWinding() a bit. 2014-02-24 20:29:44 +01:00
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
d9efb888bc Clean up Point#equals() code. 2014-02-20 15:37:38 +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
e54691214a Only preserve angle in Point#normalize() if direction doesn't change. 2014-02-20 02:51:02 +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
Jürg Lehni
2010fefcbe Include importSVG() fix for Opera browser. 2014-02-12 09:47:43 +01:00
Jürg Lehni
568bb06853 Add comments about missing #importSVG() documentation. 2014-02-12 09:39:34 +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
Matěj Grabovský
890eda9197 Fix typo in comment 2014-01-15 18:04:51 +01:00
Jürg Lehni
5a131930fb Add _dontNotify parameter to Matrix#reset() and use it in Item#applyMatrix() 2014-01-06 00:18:40 +01:00
Jürg Lehni
4a95f6e4a6 Some more optimizations for JS minifier and V8. 2014-01-05 21:07:11 +01:00
Jürg Lehni
1bf7107918 Fix issue in Point#getDirectedAngle() 2014-01-05 20:54:19 +01:00
Jürg Lehni
51eff78919 Minor PaperScript clean-ups. 2014-01-05 20:53:18 +01:00
Jürg Lehni
7291956155 Prevent unnecessary beans from being created. 2014-01-05 20:42:28 +01:00
Jürg Lehni
dd37704f2c Use the same filtering for UpdateExpression and AssignmentExpression. 2014-01-05 20:23:11 +01:00
Jürg Lehni
cd7604952c Filter out loop statements in operator overloading code, to optimize loop execution speed. 2014-01-05 20:15:57 +01:00
Jürg Lehni
6ad2105110 Replace delete in favor of setting to undefined to prevent V8 deoptimization. 2014-01-05 19:16:48 +01:00
Jürg Lehni
132f6df6c8 Prevent overriding of global variables with undefined values during development. 2014-01-05 18:57:36 +01:00
Jürg Lehni
73f857170d Remove unused arguments._read value and rename _index to __index. 2014-01-05 18:34:08 +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
b66c41e1c9 Remove need for arguments[1] in Item#transform() 2014-01-05 18:05:47 +01:00
Jürg Lehni
8d08d3c014 Remove the need for arguments[0] in bounds getters. 2014-01-05 18:01:38 +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
1d37944c89 Fix alpha support in new Color#toCSS() code. 2014-01-05 17:42:46 +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
6ed264a775 No need to clamp colors in conversions, just make sure hue stays within 360° 2014-01-05 05:10:42 +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
22e62a0527 Only expose globals if they are in use in the PaperScript code. 2014-01-04 22:22:19 +01:00
Jürg Lehni
227d511fc0 Only include the global handlers in the return statement that actually seem to be defined. 2014-01-04 22:10:16 +01:00
Jürg Lehni
4302682c1c Implement a better way of handling exceptions in PaperScript on Firefox and Chrome.
Use dynamically inserted script tag rather than compiled function since Firefox reports correct line numbers there.
2014-01-04 21:57:29 +01:00
Jürg Lehni
9dea3f3b74 Implement Color component clamping for color conversion. 2014-01-04 19:10:52 +01:00
Jürg Lehni
42bed58624 Fix scoping issues in PaperScript code. 2014-01-04 19:01:17 +01:00
Jürg Lehni
0dddd897ab Remove internal clamping of color values to facilitate proper mathematical calculations with colors.
Clamp only when producing CSS values. Closes #271.
2014-01-04 18:16:52 +01:00
Jürg Lehni
bd4f48ca1a Fix bounds check for mousemove events.
Closes #369
2014-01-04 17:33:20 +01:00
Jürg Lehni
e22fa3a664 Update copyright notice. 2014-01-04 01:47:16 +01:00
Jürg Lehni
4594b66fd6 Fix comments. 2014-01-03 19:45:00 +01:00
Jürg Lehni
de939ab939 Clean up code and comments. 2014-01-03 18:31:07 +01:00
Jürg Lehni
57f1763abe Merge branch 'refs/heads/paperscript-refactoring'
Conflicts:
	src/core/PaperScope.js
2014-01-03 12:34:07 +01:00
Jürg Lehni
541ac6acce Shorten code a bit. 2014-01-02 21:47:20 +01:00
Jürg Lehni
ad34bbf7aa Bail out of Item#transform() immediately if there is nothing to do. 2014-01-02 21:47:00 +01:00
Jürg Lehni
c197f531a4 Implement options.asString for Item#exportJSON() 2013-12-30 23:34:19 +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
6654dca6bf Improve precision of Numerical.findRoot() 2013-12-30 14:18:33 +01:00
Jürg Lehni
f97056e4b7 Change the way PaperScripts are executed in Node.js
Requiring a PaperScript returns an initialize method which receives the Canvas argument.
2013-12-29 16:36:23 +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
Jürg Lehni
976b24b34c Execute PaperScript using new Function() rather than eval() and with() {}
This results in some impressive speeding improvements, as modern JS engines are finally able to optimize the resulting code.
2013-12-29 15:32:23 +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
5f466bbc7e Move documentation for PaperScope#tools to the right place. 2013-12-28 22:48:50 +01:00
Jürg Lehni
10aa8d7b4a Fix accidental documentation leakage into global scope. 2013-12-28 22:34:00 +01:00
Jürg Lehni
8143144e87 Remove trailing comma. 2013-12-28 21:21:26 +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
8711fcf500 Remove hidden unused squared argument in Point#getLength() 2013-12-28 20:58:16 +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
a6b3a3a2ec Share code that handles bounds in roots between solveQuadratic() and solveCubic() 2013-12-17 15:38:22 +01:00
Jürg Lehni
76ea7ef066 Inline EPSILON and TOLERANCE for better performance in Numerical. 2013-12-17 15:27:55 +01:00
Jürg Lehni
6b4917f4a8 Clean up code a bit. 2013-12-17 15:23:07 +01:00
Jürg Lehni
e2b06b8e54 Filter out insert property in Item#set() 2013-12-16 22:03:33 +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
Jürg Lehni
a51f8d4ee8 Rename Item#anchor -> Item#pivot 2013-12-13 20:50:58 +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
d60e99c608 Minor documentation fixes. 2013-12-13 16:21:57 +01:00
Jürg Lehni
5482f2e5f7 Define the default value for Color#alpha. 2013-12-13 15:50:08 +01:00
Jürg Lehni
d176acfc53 Include point property in stroke hit-results. 2013-12-11 17:10:32 +01:00
Jürg Lehni
25d8b1f0d2 Clean up code and comments in various places. 2013-12-11 17:10:09 +01:00
Jürg Lehni
3ff4a6d801 Use Point.read() for center parameter in Item#rotate 2013-12-11 17:09:03 +01:00
Jürg Lehni
da427e969b Make hit-tests work again with projects that don't have a view.
Fixes broken tests.
2013-12-11 17:08:36 +01:00
Jürg Lehni
97f7204eab Write documentation for Item#anchor. 2013-12-11 16:23:30 +01:00
Jürg Lehni
42788a5bf7 Keep support for Item#registration for now as well, since there are some scripts on the mailing list that use it. 2013-12-11 15:08:56 +01:00
Jürg Lehni
78a2685324 Rename Item#registration to Item#anchor 2013-12-11 14:59:51 +01:00
Jürg Lehni
f003cc05d7 Only start dragging if none of the mosedown events have stopped propagation. 2013-12-11 02:15:17 +01:00
Jürg Lehni
45f9fcd830 Fix item-level mousedrag events again. 2013-12-11 00:10:03 +01:00
Jürg Lehni
e2b48ebf33 Allow layers to select children again, since it breaks examples otherwise. 2013-12-10 23:55:41 +01:00
Jürg Lehni
cf2c1ca04b Fix documentation issues in TextItem. 2013-12-10 23:03:10 +01:00
Jürg Lehni
9501fd1924 Make hit-test tolerance dependent of view#matrix 2013-12-10 22:53:03 +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
3d868ae400 Fix issue with cached internal bounds and #transformContent == true. 2013-12-10 12:51:49 +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
Jürg Lehni
48b7b740ad Allow the creation of internally used items with no ids. 2013-12-10 11:07:14 +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
642111a7a2 Fix error in #getGlobalMatrix() 2013-12-09 19:33:50 +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
7278ee4374 Make JSON serialization work for Shapes. 2013-12-09 17:27:41 +01:00
Jürg Lehni
407a7fcde7 Support Size and Point arguments in Rectangle#expand() 2013-12-09 16:21:37 +01:00
Jürg Lehni
1e9fc61644 Fix issues with deserializing selection states. 2013-12-09 15:18:43 +01:00
Jürg Lehni
007b780763 Make font properties disappear in JSON. 2013-12-09 15:15:10 +01:00
Jürg Lehni
94d5a09b7b Do not inherit selection behavior from Group in Layer. 2013-12-09 15:10:09 +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
Jürg Lehni
5197dd81c5 Fix #fontWeight examples and documentation. 2013-12-09 10:17:10 +01:00
Jürg Lehni
81fe98d1bb Make cachedBounds mechanism work for Symbols. 2013-12-09 09:05:29 +01:00
Jürg Lehni
f8f60ec603 Fix slow-down in bounds caching. 2013-12-09 08:58:37 +01:00
Jürg Lehni
2cd3de8188 Improve versioning of _globalMatrix 2013-12-09 07:51:28 +01:00
Jürg Lehni
663836ae41 Correctly handle mousemove events when switching between canvases or leaving the document.
Closes #250.
2013-12-08 23:57:46 +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
238f577e6f Clean up _getCachedBounds() code. 2013-12-08 22:06:32 +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
Jürg Lehni
3cd141170a Implement Style#fontFamily and #fontWeight as a replacement for #font.
Closes #60.
2013-12-08 21:12:51 +01:00
Jürg Lehni
24ce35cc6e Make sure items removed from DOM remove all their events and reinstall them again when reinserted.
Closes #254.
2013-12-08 20:40:30 +01:00
Jürg Lehni
97fcd6ff38 Implement Item#getGlobalMatrix(), #globalToLocal() and #localToGlobal()
Closes #270.
2013-12-08 20:04:10 +01:00
Jürg Lehni
696b5f29b9 Implement View#pause() and View#play() to start and stop animation. 2013-12-08 19:35:20 +01:00
Jürg Lehni
6e5d8939d5 Rename View#draw() -> View#update() and remove checkRedraw argument.
We always check for changes, since change propagation should work reliably.
2013-12-08 19:15:58 +01:00
hkrish
6c5e18ae45 New clip convex-hull routine 2013-12-08 19:09:59 +01:00
Jürg Lehni
c75d48cf98 Fix comments. 2013-12-08 18:45:11 +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
61f2f5c978 Put constructors into separate ctor variables when handling dontLink parameters before creating objects.
This hopefully solves the mysterious issue #360 on Chrome.
2013-12-07 20:03:23 +01:00
Jürg Lehni
acc0e80d78 Implement registration point for all items.
Allowing any item to use another point than the center as its anchor point for item.position.
2013-12-07 19:46:12 +01:00
Jürg Lehni
7800e5f84e Clean up strange constructor notation that causes linting issue. 2013-12-07 19:45:10 +01:00
Jürg Lehni
2401b38b03 Fix issue with group.position not updating when content changes. 2013-12-07 19:17:59 +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
758c9b6146 Improve caching of decomposed transformation values. 2013-12-07 12:47:16 +01:00
Jürg Lehni
9ca92165ee Expose rotation and scaling transformations through Item#rotation and Item#scaling properties, by moving the setters from Matrix to Item. 2013-12-07 12:16:11 +01:00
Jürg Lehni
3ea5c2d728 Improve documentation of Matrix properties. 2013-12-07 12:14:20 +01:00
Jürg Lehni
3d94ff6968 Only decompose matrix if there are bounds to be reused. 2013-12-07 05:50:08 +01:00
Jürg Lehni
43e0ac5124 Add missing break statement. 2013-12-07 05:27:23 +01:00
Jürg Lehni
f62e4d43ba Implement Matrix#skew() calls for SVG skewX / skewY correctly. 2013-12-07 05:26:12 +01:00
Jürg Lehni
e12ab846bd Fix decomposed transformation sequence. 2013-12-07 05:23:39 +01:00
Jürg Lehni
4b5b62cfef Use new Matrix#skew() in SVGImport. 2013-12-07 05:22:14 +01:00
Jürg Lehni
1ba77f9d40 Implement Item#skew() and clean up Item transformation functions documentation. 2013-12-07 05:21:27 +01:00
Jürg Lehni
cb3cc84dae Implement Matrix#skew() 2013-12-07 05:20:55 +01:00
Jürg Lehni
268ecad00b Clean up Matrix documentation. 2013-12-07 05:20:38 +01:00
Jürg Lehni
2d307f0e7c Only preserve bounds if there is no shearing in the transformation.
Closes #358.
2013-12-07 05:19:49 +01:00
Jürg Lehni
3263b91708 Start implementing mouse events on view.
Work in progress...
2013-12-06 22:26:48 +01:00
Jürg Lehni
0bf863d1fa Remove ill-named Matrix properties and replace with standardized a, c, b, d, tx, ty. 2013-12-06 22:26:21 +01:00
Jürg Lehni
2cfa329fa6 Completely rework event handling on view and tools.
Fixes multiple issues on iOS:
- mousedown events were sometimes fired twice.,
- the presence of mousedown handlers broke scrolling.
Closes #266.
2013-12-06 21:49:44 +01:00
Jürg Lehni
0797202b22 Fix and improve Color documentation. 2013-12-06 20:18:47 +01:00
Jürg Lehni
fb493959d0 Fix faulty Color documentation. 2013-12-06 19:50:51 +01: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
41fa3b24e7 Only allow the installation of one onEventType handler at a time.
For more, use #attach() / #detach()
2013-12-06 14:04:03 +01:00
Jürg Lehni
7e9989c6b9 Improve comment about globalMatrix.isInvertible() check. 2013-12-06 13:41:57 +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
1e57031811 Do not set insert: false for the root of the imported JSON. 2013-12-06 03:16:06 +01:00
Jürg Lehni
ee7fd8cdbe Use double underscores to avoid clashes between math operators and 'private' methods.
Path already defines a #_add() method...
2013-12-05 21:11:12 +01:00
Jürg Lehni
6d5e4329c1 Remove legacy browser code since we're not supporting IE8 and below. 2013-12-04 21:04:46 +01:00
Jürg Lehni
550749d057 Avoid issues with _matrix being undefined when items are created and added in a certain sequence.
Closes #279.
2013-12-03 23:14:34 +01:00
Jürg Lehni
fc02c58ddb Implement asynchronously loading Rasters from disk and remote locations for Node.js
Closes #328.
2013-12-03 23:07:54 +01:00
Jürg Lehni
c423fcda39 Only handle and fire mousemove events when the user's either dragging or moving the mouse within the view.
Fixes #352.
2013-12-03 22:25:04 +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
88a4c64172 No need for generics in Base. 2013-12-02 14:42:27 +01:00
Jürg Lehni
b5b75dfce4 Clean-up Numerical code. 2013-12-01 23:54:52 +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
Jürg Lehni
09bc8805a2 Fix #353 properly this time. 2013-11-30 22:11:12 +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
dcad9d44ed Copy over parent style in Item#reduce().
Only really needed for CompoundPath...
2013-11-30 14:02:54 +01:00
Jürg Lehni
fe1035da41 Fire key-up events for all currently pressed keys.
Closes #353.
2013-11-29 23:44:27 +01:00