Jürg Lehni
4be48cec16
A lot more work to correctly support overlapping edge cases in boolean operations: intersect(), exclude(), subtract()
2015-08-24 12:30:14 +02:00
Jürg Lehni
75f669d839
Implement proper method to determine which segment to choose when encountering overlaps.
2015-08-24 04:36:49 +02:00
Jürg Lehni
15bcf2a7aa
More work on supporting overlaps in boolean operations other than unite().
2015-08-23 22:42:57 +02:00
Jürg Lehni
68832e0690
Revert "Switch to using 0, 1 instead of tMin, tMax for tangents."
...
This reverts commit edfabcbbd8
.
; Conflicts:
; src/path/PathItem.Boolean.js
2015-08-23 21:48:16 +02:00
Jürg Lehni
92ec09f451
Some debug code fixes and improvements.
2015-08-23 21:34:41 +02:00
Jürg Lehni
85d21c84b8
Start implementing support for touching and overlapping shapes in boolean operations.
...
Relates to #449 , #450 , #648 , #719
2015-08-23 21:19:19 +02:00
Jürg Lehni
edfabcbbd8
Switch to using 0, 1 instead of tMin, tMax for tangents.
...
getTangentAt() can handle that since a while now.
2015-08-23 09:43:28 +02:00
Jürg Lehni
9bd399b5b8
Introduce Curve#isStraight() and use it in splitPath() and divide() to keep the result of splitting straight curves straight.
...
Do not use Curve#isLinear(), as that would include curves with collinear handles, and we don't want to set these straight.
2015-08-22 22:06:42 +02:00
Jürg Lehni
bddff95fe3
Remove workarounds in splitPath() thanks to improved precision of Numerical.solveCubic().
2015-08-22 14:24:31 +02:00
Jürg Lehni
716d21e369
Always use fat-line clipping since fallback doesn't behave the same way.
2015-08-21 16:39:41 +02:00
Jürg Lehni
0436b2749a
Fix some comments.
2015-08-19 17:28:41 +02:00
Jürg Lehni
84b202fd79
Expose and reuse Curve evaluation method names.
2015-08-19 17:26:52 +02:00
Jürg Lehni
9fe93d1434
Move Curve evaluate() method to private scope.
2015-08-19 17:19:42 +02:00
Jürg Lehni
da82116501
Rework handling of weighted and normalized curve tangents and normals.
...
Relates to #563
2015-08-19 17:15:41 +02:00
Jürg Lehni
59eec1f27b
Implement Curve#isLinear(), #isCollinear() & co without depending on the segments being part of a path.
2015-08-19 11:43:37 +02:00
Jürg Lehni
e476672748
Use better epsilon values in Numerical.solveQuadratic() and solveCubic()
...
To finally satisfy both #541 and #708 .
With this change in place, https://github.com/paperjs/boolean-test is also finally back to run with 0 errors. Woop!
2015-08-18 23:47:28 +02:00
Jürg Lehni
08bdfe585b
Fix issue in getWinding() where rays were counted twice.
...
Closes #736 .
2015-08-18 22:36:10 +02:00
Jürg Lehni
4ee68e5782
Various changes to #isCollinear(), #isOrthogonal(), #isArc()
...
- Rename #isArc() - > #isOrthogonalArc()
- Implement versions for Curve
- Write proper documentation
2015-08-17 14:33:48 +02:00
Jürg Lehni
f8314f927e
Various changes on #isLinear(), #hasHandles() & co
...
Relates to #652
- Implement #hasHandles() on Path, Segment and Curve
- Remove Path#isPolygon()
- Define #isLinear() consistently across Path, Segment and Curve.
- Introduce new Segment#isStraight()
2015-08-17 14:31:23 +02:00
Jürg Lehni
10fb616665
Fixed leaked globals.
...
Detected using QUnit's "Check for Globals" feature!
2015-07-27 12:36:45 +02:00
Jürg Lehni
19bcd19b49
Implement path versioning for segment changes.
...
And use it to keep CurveLocation objects up to date. Closes #682
2015-06-16 19:36:22 +02:00
Jürg Lehni
c1485e7068
Use < instead of <= when comparing against TOLERANCE
2015-06-16 19:33:21 +02:00
Jürg Lehni
26cdbb6805
Fix typo: #isColinear() -> #isCollinear()
...
Keeping misspelled version around for a while.
2015-06-16 18:39:52 +02:00
Jürg Lehni
dbac9c06de
Bring back private UIDs for Color.
...
SVG Export for multiple gradients was broken.
2015-06-16 18:12:40 +02:00
Jürg Lehni
b541088c6f
A whole lot of documentation clean-up.
2015-06-16 17:50:37 +02:00
Jürg Lehni
7a6ee5d5f4
Do not implicitly close paths in SVG compound paths.
...
Closes #705
2015-06-16 14:49:54 +02:00
Jürg Lehni
2cf6cd7a14
Correctly clone all attributes in Shape#toPath() and Path#toShape()
...
Also write documentation for both methods.
Closes #622 .
2015-06-16 14:30:40 +02:00
Jürg Lehni
e3f04478d9
Clean up Curve.getParameterOf() code.
2015-06-16 12:29:27 +02:00
Jürg Lehni
6ec34fbb60
Replace Lenna with Marilyn.
2015-05-31 10:50:04 +02:00
Jürg Lehni
27bb8a356f
Implement unique ids, and fix issue with Base.deserialize()
...
Gradient and Symbol were overriding each other in the dictionary, and dictionary entries could not contain references to other dictionary entries.
Closes #690
2015-05-11 19:39:39 +02:00
Jürg Lehni
7749641e66
Handle out-of-bounds offsets/parameters correctly.
...
Closes #660
2015-04-04 17:05:39 +02:00
Jürg Lehni
563a26f112
Clean up PathFitter fix a bit.
2015-04-04 15:54:34 +02:00
Jürg Lehni
66fbb9ee2a
Merge branch 'fix-simplify-bug' of https://github.com/calamitas/paper.js into fix-simplify-bug
2015-04-04 15:35:37 +02:00
Jürg Lehni
993a9df178
Simplify fix for #626 a bit.
...
Closes #626 .
2015-02-28 19:20:48 +01:00
Jürg Lehni
8a625e0acd
Merge pull request #627 from iam-TJ/issue_626
...
Issue 626: Don't try to iterate a null array
2015-02-28 19:18:50 +01:00
Jürg Lehni
15813107c0
Remove unused variables.
2015-02-26 13:44:09 +01:00
Peter Vanbroekhoven
d5c25dbc52
Change PathFitter to constrain newly found control points.
...
See https://github.com/paperjs/paper.js/issues/414 .
2015-02-22 20:05:06 +01:00
TJ
d3af8483a8
Don't try to iterate a null array
...
Signed-off-by: TJ <hacker@iam.tj>
2015-01-26 21:21:46 +00:00
Jürg Lehni
22be259167
Deal with edge cases in Curve.solveCubic() where small cubics are very close to lines.
...
Also reduce Numerical.EPSILON again, as required by some rare edge cases.
Relates to #541 .
2015-01-10 22:05:42 +01:00
Jürg Lehni
efaae89dfc
No need to add 0.
2015-01-05 21:47:15 +01:00
BrownBear2
4d36a2d6f4
fixed svg path parsing for arcs with more than one definition
2015-01-05 21:32:21 +01:00
Jürg Lehni
1c758a415a
Switch to new and improved Line.getSignedDistance() in fat-line clipping code as well.
2015-01-05 16:20:33 +01:00
Jürg Lehni
1803cd216a
Handle empty paths in Path#join()
...
Closes #516
2015-01-05 00:42:00 +01:00
Jürg Lehni
6562f861ab
More code clean-up.
2015-01-05 00:13:30 +01:00
Jürg Lehni
9977b6ab68
Some code clean-up.
2015-01-05 00:09:34 +01:00
Jürg Lehni
72bd150a34
Fix the rest of the failing tests that 6c6ad76c94
had caused.
...
Also closes #610 .
2015-01-04 23:59:25 +01:00
Jürg Lehni
5f3df1f5a1
Fix some failing tests with PathItem#contains(), introduced by commit 6c6ad76c94
2015-01-04 23:28:39 +01:00
Jürg Lehni
5d875f2d83
Clean up code formatting.
2015-01-04 22:37:27 +01:00
Jürg Lehni
8928eaffd0
Merge branch 'refs/heads/master' into boolean-operations
2015-01-04 22:00:55 +01:00
Jürg Lehni
7e80e19e32
Insert results of boolean operations above the first path.
2015-01-04 21:59:31 +01:00