Commit graph

3705 commits

Author SHA1 Message Date
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