Commit graph

1878 commits

Author SHA1 Message Date
Jürg Lehni
55cf0bc1c7 Improve and simplify handling of start segments.
Removing findStartSegment() and merging functionality into findBestIntersection() leads to simpler code and solves some remaining issue, e.g. https://github.com/paperjs/paper.js/issues/784#issuecomment-153282113
2016-01-03 01:08:11 +01:00
Jürg Lehni
9404c5a0e3 Restructure code from #883 a bit
- Use === instead of == for strict numeric comparisons
- Merge the two return statements to one
- Address some imprecisions in previously added comments
2016-01-02 23:39:13 +01:00
iconexperience
ebaccf6e2d Add break condition for exactly collinear curves to prevent a very time consuming clipping process that cannot have a result. 2016-01-02 19:08:42 +01:00
Jürg Lehni
3234975e46 Include comment about methods produced on the fly.
For easier searching.
2015-12-31 18:32:56 +01:00
Jürg Lehni
fa15b083b0 Go back to matching curve beginnings / ends with GEOMETRIC_EPSILON.
This is possible because we're handling the special line case separately before already.
2015-12-31 14:23:16 +01:00
Jürg Lehni
f8791f2be5 Perform bounding box checkes with GEOMETRIC_EPSILON
Closes #878
2015-12-31 10:21:38 +01:00
Jürg Lehni
df24de0fdf Optimize fat-line clipping code a bit further.
We don't need to calculate v1Clip and tDiff if oldTDiff > 0.5 && tDiff > 0.5.
2015-12-30 23:19:58 +01:00
Jürg Lehni
f19bdf9834 Remove unrequired testContains parameter. 2015-12-30 21:55:22 +01:00
Jürg Lehni
92904e95c2 Address proposal by @iconexperience in #869 and shorten code.
Closes #877
2015-12-30 21:55:22 +01:00
Jürg Lehni
943c4bba91 Improve horizontal check for sampling points in propagateWinding()
Relates to #875, needs more testing.
2015-12-30 21:55:21 +01:00
Jürg Lehni
62a23662fa Unify handling of insert parameters. 2015-12-30 21:55:21 +01:00
Jürg Lehni
44f98ee094 Replace all mention of DOM in the documentation with scene graph. 2015-12-30 21:55:21 +01:00
Jürg Lehni
c0a2e0ec63 Support insert parameter again in #toShape() / #toPath() 2015-12-30 21:55:21 +01:00
Jürg Lehni
060ab5e7f9 Only mark overlap segments as visited during #intersect(). 2015-12-30 21:55:21 +01:00
Jürg Lehni
f4f46fa985 Implement optimization suggested by @iconexperience in #869 2015-12-30 21:55:20 +01:00
Jürg Lehni
0e427c16a2 Fix some white-spaces in comments and HTML. 2015-12-30 21:55:20 +01:00
Jürg Lehni
bf65866b58 Port over boolean #intersect() fix from c6b1a8067f5045e94294735a21aa2fa222fbb2a1
Relates to #870
2015-12-30 21:55:20 +01:00
Jürg Lehni
fa9698aaaa Revert back to always call #setClockwise() in #resolveCrossings()
This solves some regressions, e.g. https://github.com/paperjs/paper.js/issues/869#issuecomment-167586249
2015-12-30 21:55:20 +01:00
Jürg Lehni
4d13f0e1e0 Simple optimization in PathItem#contains()
Perform a handle bounds check before calculating winding, as described by @iconexperience in #869
2015-12-30 21:55:20 +01:00
Jürg Lehni
5c976420f8 Further improve #resolveCrossings() based on discussion with @iconexperience.
Closes #869
2015-12-30 21:55:20 +01:00
Jürg Lehni
d6a8538674 Fix overlap handling for boolean intersection.
Closes #870
2015-12-30 21:55:20 +01:00
Jürg Lehni
b5a38ae5ec Fix orientation handling in new #resolveCrossings().
Closes #869
2015-12-30 21:55:20 +01:00
Jürg Lehni
ecad1c6a0d More code clean-ups and simplifications for #852 2015-12-30 21:55:20 +01:00
Jürg Lehni
973491f962 Some code-clean up for #852
Mainly to make it fit into the 80 char line lenght.
2015-12-30 21:55:20 +01:00
Jürg Lehni
d67796f655 Some more documentation work. 2015-12-30 21:55:19 +01:00
Jürg Lehni
32cf1ba69e Partly revert "Treat overlaps as crossings as well."
This partly reverts commit deafacdad0 and closes #868
2015-12-30 21:55:19 +01:00
Jürg Lehni
a7a07fb6d5 Update JSDoc and do some documentation spring-cleaning.
- Convert from {@code ...} to shorter `...`
- Reformat some documentation comment blocks
- Update copyright notices
2015-12-30 21:55:19 +01:00
Jürg Lehni
7d25096de6 Fix new failing #isCrossing() test-case. 2015-12-30 21:55:19 +01:00
Jürg Lehni
a20b0469d6 Correctly keep track of all straight curves that need their handles cleared at the end.
Closes #838
2015-12-30 21:55:19 +01:00
Jürg Lehni
08d75a48ff Fix issue again with param.overlapping in #getItems()
This time, properly!
Closes #751
2015-12-30 21:55:18 +01:00
Jürg Lehni
93a5e2d18c Refine some code comments. 2015-12-30 21:55:18 +01:00
Jürg Lehni
7592895445 Big overhaul of CurveLocation#isCrossing()
Improved to better handle touching curves and edge cases involving straight curves.

Closes #865
2015-12-30 21:55:18 +01:00
Jürg Lehni
83b53cb9e0 Fix a few edge cases in cloning and copying of attributes. 2015-12-30 21:55:17 +01:00
Jürg Lehni
2fea40f86f Introduce new Item#copyAttributes() & #copyContent(), and revamp #clone() handling. 2015-12-30 21:55:17 +01:00
Jürg Lehni
463f50a0c1 Adjust comment by @iconexperience.
As outlined here: https://github.com/paperjs/paper.js/issues/854#issuecomment-167334294
2015-12-30 21:55:17 +01:00
Jürg Lehni
386632b0be Implement new version of #reorient() and merge with #resolveCrossings()
As proposed by @iconexperience in #854
2015-12-30 21:55:17 +01:00
Jürg Lehni
a5f05c90f5 Rename #windingRule to #fillRule.
...keeping deprecated aliases on Style and Item around for now.

Closes #858
2015-12-30 21:55:17 +01:00
Jürg Lehni
086485dc95 Minor code clean-up. 2015-12-30 21:55:17 +01:00
iconexperience
b19bc5aaf4 Smaller improvements in addCurveIntersections() 2015-12-30 21:55:16 +01:00
iconexperience
0e3ac9d7f4 Handle cases when point y is equal to y of horizontal curve in path 2015-12-30 21:52:34 +01:00
sapics
9c1c00c11e Minor minification 2015-12-30 21:52:34 +01:00
iconexperience
c0a5739254 Change addCurveIntersections() to handle cases when tDiff == 0 2015-12-19 10:48:31 +01:00
Jürg Lehni
deafacdad0 Treat overlaps as crossings as well.
This solves https://github.com/paperjs/paper.js/issues/784#issuecomment-153085486 , simplifies code quite a bit, and does not cause any new issues.
2015-11-04 01:19:20 +01:00
Jürg Lehni
f32a1def6e Only complain about open paths in boolean ops when they are long enough. 2015-11-02 18:21:19 +01:00
Jürg Lehni
9a772678a8 Clean up #816 a bit.
Closes #815 also.
2015-10-28 22:17:44 +01:00
Tomas Junnonen
09d4de6a1b Issue 815: Cannot add segment to Path after removing last segment
Fixed an issue where after removing the last segment of a path,
new segments cannot be re-added.

Added new Path Curve test cases to test the difference between
a path with one and no segments (zero curves in both cases), which
catches the bug.
2015-10-28 12:15:07 -04:00
Jürg Lehni
8eb0dcc87d Fix various JS linting problems. 2015-10-27 23:35:30 +01:00
Jürg Lehni
238801e485 Improve docs for boolean operations. 2015-10-25 09:41:43 +01:00
Jürg Lehni
e9d54a05f0 Minor change in the way #reorient() is called. 2015-10-24 23:13:13 +02:00
Jürg Lehni
c61cb804cb Implement boolean operations intersect() and subtract() for open path with closed paths.
Closes #757
2015-10-24 22:41:51 +02:00