Commit graph

686 commits

Author SHA1 Message Date
Jürg Lehni
8946f44ed9 Fix curve-bounds check in getIntersections()
Closes #1197
2016-11-20 20:19:38 -05:00
Jürg Lehni
6dd7cc5b6a Fix imprecision in Numerical.findRoot()
Results can be slightly outside of the range.
Close #1149
2016-09-24 15:39:09 -04:00
Jürg Lehni
80f6dbb5e3 Implement unit test for #1091
Closes #1091
2016-09-24 14:53:36 -04:00
Jürg Lehni
287f48a0db Implement unit test for #1165
Closes #1165
2016-09-24 14:34:46 -04:00
Jürg Lehni
b37b8cc495 Improve reliability of Curve.getIntersection()
Reduce epsilon when checking against curve end points from GEOMETRIC_EPSILON to EPSILON.

Coses #1174
2016-09-24 14:28:43 -04:00
Jürg Lehni
b4f6cde203 Tests: Handle null values when comparing items. 2016-09-20 18:43:02 -04:00
Jürg Lehni
3a49ac4015 Handle paths with only one segment in #resolveCrossings()
Closes #1167
2016-09-20 18:13:47 -04:00
Jürg Lehni
6e7fe67a8d Implement unit tests for #1109. 2016-08-09 10:01:35 +02:00
Jürg Lehni
7a63afc769 Clean up Layer unit tests a bit. 2016-08-07 15:58:54 +02:00
sapics
31690cb6b6 Fix to remove named layer 2016-08-06 11:00:29 +09:00
Jürg Lehni
bcd02129a3 Implement additional unit test for #1054. 2016-07-27 20:12:29 +02:00
Jürg Lehni
14b2d76450 Boolean: Improve handling of visited segments in intersect() operations.
Closes #1123
2016-07-27 19:35:19 +02:00
Jürg Lehni
e643338422 Add options object to boolean operations and improve handling of open paths.
This closes #1036, closes #1072, closes #1089 and closes #1121
2016-07-27 17:09:52 +02:00
Jürg Lehni
3f76bd99ef Implement an efficient mechanism to prioritize key in Item#set()
Closes #1096
2016-07-25 23:17:45 +02:00
Jürg Lehni
4954f5d6ab Improve Style#equals() to correctly handle default values.
Closes #1084
2016-07-25 21:42:06 +02:00
Jürg Lehni
29768c8228 Take Color#alpha default into account in Color#equals()
Relates to #1084
2016-07-25 21:09:53 +02:00
Jürg Lehni
eab0b9db5e Correctly handle path.replaceWith(path) calls.
Closes #1118
2016-07-22 23:29:33 +02:00
Jürg Lehni
cbe41c536e Boolean: Return the full winding object from _getWinding() and use it to improve PathItem#contains() with even-odd full-rule.
Also store the full winding object on the processed segments, to have more information available in boolean operations.
2016-07-22 15:46:42 +02:00
Jürg Lehni
23f3097f84 Facilitate code minification in PathIterator. 2016-07-22 14:21:35 +02:00
Jürg Lehni
becac4c921 Use shorter zero checks for array indices and length.
Keeping === 0 for mathematical algorithms seems clearer.
2016-07-22 13:46:24 +02:00
Jürg Lehni
3d57216ffe Update test for #944 to work with new way of handling compound-paths.
But keep deactivated as it is currently failing, see #1116
2016-07-22 13:15:05 +02:00
Jürg Lehni
a0417040f8 Improve handling of sub-path orientation in CompoundPath.
Remove automatic orientation on insertion, as it caused more troubles than solved problems, in favor of the new PathItem#reorient() method, or the even-odd fill-rule.

Closes #590, #1029
2016-07-21 15:21:45 +02:00
Jürg Lehni
16e53cc1ad Minor reformatting and changes.
no need for paper namespace in unit test code
2016-07-20 17:58:47 +02:00
Jürg Lehni
58991a569e Merge pull request #1115 from iconexperience/addCurveIntersections-patch
Improve fat line clipping to fix #1088
2016-07-20 17:56:04 +02:00
Jan
381e92501a Add test for #1088 2016-07-20 16:33:13 +02:00
Jürg Lehni
a683486ff5 Some code cleanup for previous commits, and shorten boolean tests a bit. 2016-07-20 16:32:21 +02:00
Jürg Lehni
f988445dad Boolean: Implement optimization for operands without crossings.
Closes #1113
2016-07-20 16:15:10 +02:00
Jan
46d0bf2d7d Add tests from W3C SVG Test Suite 2016-07-20 15:29:19 +02:00
Jürg Lehni
c338e9a6ec Tests: Add another SVG path data test. 2016-07-20 15:10:23 +02:00
Jürg Lehni
0b672cfb62 Merge branch 'new-winding' into develop 2016-07-19 14:27:45 +02:00
Jürg Lehni
e539633852 Implement new and shorter segments array notation.
Supporting:

- Closing paths by including `true` as the last entry
- Nested segment arrays that can be passed to PathItem.create() and the CompoundPath constructor to create all sub-paths
2016-07-19 13:08:21 +02:00
Jürg Lehni
13a68cec46 Fix failing unit test, and some code cleanup. 2016-07-19 10:24:37 +02:00
Jürg Lehni
288c3d4012 Fix issue in setPathData(), horizontal or vertical lineto and relative moveto commands.
Relates to #1101
2016-07-19 10:09:55 +02:00
Jürg Lehni
32d8c969fb Clean up handling of #_set(), #set() and #initialize()
Convention:

- #_set() is for actually setting properties, e.g. on Point, Size, so that derived classes can reuse other parts (e.g. SegmentPoint)
- #set() is a shortcut to #initialize() on all basic types, to offer the same amount of flexibility when setting values.
2016-07-18 20:11:01 +02:00
Jürg Lehni
2e054ecf47 Deactivate unit test for #944 edge case for now… 2016-07-18 16:13:33 +02:00
Jürg Lehni
e7c53b904c Implement unit test for #973. 2016-07-18 14:11:34 +02:00
Jürg Lehni
a1666a9b82 Implement additional unit tests for path#getInteriorPoint() 2016-07-17 23:10:47 +02:00
Jürg Lehni
ac97b9d9d7 Implement unit test for #1075 2016-07-17 21:16:52 +02:00
Jürg Lehni
38e5fc1488 Tests: Reference GitHub issues where they're knonw in PathItem#contains() tests. 2016-07-14 09:32:29 +02:00
Jürg Lehni
8a45c5dff9 Fix Node.js unit-tests, and add CHANGELOG entry for #1103 2016-07-12 19:27:35 +02:00
Jürg Lehni
89c60b1a05 Loosely couple Node.js code to canvas module.
Treat absence of canvas module like a web worker context.
Relates to #1103
2016-07-12 19:11:09 +02:00
Jürg Lehni
02658c9e74 Clean-up code from PR #1087
Closes #1085
2016-07-09 01:01:19 +02:00
Jürg Lehni
1914e64e4b Fix boolean tests to compare with improved results.
Disovered thanks to @sapics' improved solveCubic() in #1087
2016-07-08 23:05:50 +02:00
Jürg Lehni
45ffc6fb88 Improve Segment constructor to correctly handle undefined values.
Closes #1095
2016-07-03 13:30:56 +02:00
Jürg Lehni
0cb9c50e8f Implement unit test for #1054
Closes #1054
2016-06-13 14:54:13 +02:00
Jürg Lehni
ea5a635edf Implement unit tests for #964
Closes #964.
2016-06-13 14:51:38 +02:00
Jürg Lehni
742401a0e1 Fix Item#insertChildren() error when passing null for some children.
Relates to #1036
2016-06-13 14:16:25 +02:00
Jürg Lehni
4966f6250f Implement better calculation of tangential angles in CurveLocation#isCrossing()
Relates to #1074
2016-06-12 18:53:14 +02:00
Jürg Lehni
5854c25dd5 Implement Curve#getOffsetAtTime() 2016-06-12 18:32:05 +02:00
Jürg Lehni
b0d0e41ddc Allow negative offsets in all Curve#get*At() methods.
To search from the end of the curve instead of the beginning.
2016-06-12 18:21:37 +02:00