Commit graph

6965 commits

Author SHA1 Message Date
Jürg Lehni
1fad295600 Facilitate minification. 2017-03-07 12:34:59 +01:00
Jürg Lehni
1ca23a681a Change Log: Add Path#divideAt(location) 2017-03-07 11:45:13 +01:00
Jürg Lehni
7448aedf67 Tests: Show SVG path data when boolean results are different. 2017-03-07 11:04:11 +01:00
Jürg Lehni
2a090bc0d1 Some Change Log cleanups. 2017-03-06 23:25:27 +01:00
Jürg Lehni
11f7388611 Update change-log for upcoming release. 2017-03-06 17:50:03 +01:00
Jürg Lehni
d6c1ce2458 Make sure calls are always counted in addCurveIntersections()
recursions only need to be increased if we're not aborting.

See https://github.com/paperjs/paper.js/issues/1239#issuecomment-284265520
2017-03-06 11:32:18 +01:00
Jürg Lehni
b680ec05b9 Fix calls counting in addCurveIntersections() when dealing with straight curves.
See https://github.com/paperjs/paper.js/issues/1239#issuecomment-284340550
2017-03-06 10:13:14 +01:00
iconexperience
5359bc428e Add some unit tests for boolean unite operations 2017-03-01 14:07:17 +01:00
Jürg Lehni
b85fc988de Minor comment cleanup. 2017-03-01 12:37:08 +01:00
Jürg Lehni
47364f88a6 Merge pull request #1264 from iconexperience/addWinding-fix
Fix addWinding and improve performance slightly
2017-03-01 12:33:05 +01:00
iconexperience
9f5f3192b7 Set curve time to 1 for curves completely right or left of point for better performance. Note that we cannot set the time to 0, because this would invoke special handling for crossing at the curve's start point. 2017-03-01 09:39:44 +01:00
iconexperience
86d05624c0 Fix addWinding() for special cases 2017-03-01 09:04:46 +01:00
Jürg Lehni
32db1eb005 Boolean: Some code and comment cleanup. 2017-02-26 01:11:33 +01:00
Jürg Lehni
5c86330d6e Tests: Implement unit test for #1261. 2017-02-26 01:03:35 +01:00
Jürg Lehni
4d3ca746ab Reduce windingEpsilon to 1e-9.
this address the issue outlined in https://github.com/paperjs/paper.js/issues/1261#issuecomment-282520748
2017-02-26 00:45:22 +01:00
Jürg Lehni
7b73ec238d Remove onPath winding hack again.
See #1073
2017-02-26 00:22:49 +01:00
Jürg Lehni
86478b6873 Boolean: Improve handling of branching at crossings. 2017-02-25 18:55:11 +01:00
Jürg Lehni
919c42af27 Implement Segment#isSmooth() and use it in handling of stroke-joins. 2017-02-25 15:45:58 +01:00
Jürg Lehni
f19a50093b Simplify handling of strokeJoin / strokeCap geometries. 2017-02-22 22:22:23 +01:00
Jürg Lehni
b40efbf6db Fix Line#getSide() imprecisions when points are on the line. 2017-02-22 17:41:51 +01:00
Jürg Lehni
6a4347e75b Optimize Curve#hasLength()
Only check the handles that are actually part of the curve.

Closes #1260
2017-02-22 17:29:23 +01:00
Jürg Lehni
919615f168 Remove CurveLocation#getOffsetTo() again. 2017-02-22 17:05:23 +01:00
Jürg Lehni
e3828d810b When aborting fat-line clipping, attempt an approximation with line intersections. 2017-02-22 13:58:27 +01:00
Jürg Lehni
ba2b18c7dc Small improvement in Path#arcTo() to reduce segment account in edge cases. 2017-02-22 13:57:51 +01:00
Jürg Lehni
d204175d39 Improve and optimize fat-line clipping algorithm.
By checking if subdivided curves are straight and falling back on line-line / line-curve approach if they are.
2017-02-21 23:09:30 +01:00
Jürg Lehni
caac1c18e3 Implement CurveLocation#getOffsetTo(location) 2017-02-21 22:19:38 +01:00
Jürg Lehni
ee48e6cd03 Implement caching for CurveLocation#curveOffset. 2017-02-21 22:19:17 +01:00
Jürg Lehni
f089c3c620 Improve handling of new segments in CurveLocation#divide() and #split() 2017-02-21 22:16:55 +01:00
Jürg Lehni
f16b91e0fe Tests: Implement unit test for #1233 2017-02-21 22:10:08 +01:00
Jürg Lehni
ed57b82b19 Boolean: Improve handling of multiple crossings on the same curve. 2017-02-21 22:05:38 +01:00
Jürg Lehni
357ff0dd43 Reduce epsilon in fat-line clipping to 1e-12 and adjust unit tests.
These results make much more sense and the algorithm finds less false positives while still behaving reliably in all edge cases.
2017-02-16 14:05:05 +01:00
Jürg Lehni
2343ed5ca9 Remove checks for begin- and end-points in getCurveIntersections()
See #1239
2017-02-16 14:00:18 +01:00
Jürg Lehni
4f9d23da81 Use consistent boundary policy when dealing with curve-time. 2017-02-16 13:41:53 +01:00
Jürg Lehni
e3c6245979 Docs: Improve description of option.class value in #hitTest()
See #632
2017-02-15 16:11:33 +01:00
Jürg Lehni
1ff4bc9665 More cleanup in curve intersection code. 2017-02-12 15:52:56 +01:00
Jürg Lehni
2ead16ca89 Rename Curve.getCurvesIntersections() to Curve. getIntersections() 2017-02-12 15:47:01 +01:00
Jürg Lehni
bd98e067c3 Docs: Some cleanup in Curve. 2017-02-12 15:42:12 +01:00
Jürg Lehni
df7323da32 Improve handling of excludeStart / excludeEnd in curve intersections. 2017-02-12 15:27:59 +01:00
Jürg Lehni
45f5bf84e8 Enforce creation of Curve#values getter despite hidden parameter. 2017-02-12 12:15:59 +01:00
Jürg Lehni
286765f4b0 Further optimizations in getOverlaps() 2017-02-11 21:32:11 +01:00
Jürg Lehni
23202d0c80 Some code optimizations and cleanup. 2017-02-11 21:25:42 +01:00
Jürg Lehni
1b50355585 Improve getCurveIntersections() for use with neighboring curves.
As needed by bezier offsetting code.
2017-02-11 21:19:47 +01:00
Jürg Lehni
5736ebaa19 Merge pull request #1253 from iconexperience/LineGetDistance
Add Line.getDistance() and use it in Curve.getOverlaps()
2017-02-11 21:18:31 +01:00
iconexperience
af7b22a708 Add Line.getDistance() and use it in Curve.getOverlaps() 2017-02-07 16:15:41 +01:00
Jürg Lehni
13f4773985 Fix documentation of Project#hitTestAll()
Relates to #536
2017-02-06 18:36:00 +01:00
Jürg Lehni
b23c272d69 Minor code cleanup. 2017-02-06 16:46:22 +01:00
Jürg Lehni
4588a90952 Expose Curve.getCurvesIntersections()
To be used in offsetting code to check for self-intersections.
2017-02-06 16:37:05 +01:00
Jürg Lehni
fafbd9ad36 Expose Curve. getCurveLineIntersections() for curve offsetting. 2017-02-05 21:59:56 +01:00
Jürg Lehni
8c3c771891 Streamline handling of abscissa and ordinate flipping. 2017-02-05 21:59:29 +01:00
Jürg Lehni
1f768c69d2 Move private getPeaks() to Curve.getPeaks()
It will be of use in the offsetting code as well.
2017-02-05 14:20:43 +01:00