Commit graph

6060 commits

Author SHA1 Message Date
Jürg Lehni
3314668a0c Streamline mouse event handling between View and Item.
Consolidating code and making View#onMouseDown/Up/Move/... events work.
2015-10-14 16:25:36 +02:00
Jürg Lehni
9762d2c9e6 Revert "Simplify circular neighbor checks."
This reverts commit 2bb3df3314.
2015-10-13 09:35:13 +02:00
Jürg Lehni
b5c59c881c Revert "One more simplification."
This reverts commit 0ce825f8c9.
2015-10-13 09:35:08 +02:00
Jürg Lehni
0ce825f8c9 One more simplification. 2015-10-13 08:34:48 +02:00
Jürg Lehni
2bb3df3314 Simplify circular neighbor checks.
Relates to #805.
2015-10-13 08:32:05 +02:00
Jürg Lehni
9de6aa97f2 Third attempt at correctly handling paths as circular lists.
Relates to #805.
2015-10-13 07:59:19 +02:00
Jürg Lehni
f6f6a58fe6 Improve handling of paths as circular lists. 2015-10-13 07:27:25 +02:00
Jürg Lehni
2e552853fd Handle paths as circular lists in CurveLocation.insert() as well.
Relates to #805
2015-10-13 07:23:15 +02:00
Jürg Lehni
0553201de8 Add forgotten semi-colon. 2015-10-13 00:11:24 +02:00
Jürg Lehni
3d33bbdfa3 Clean-up CurveLocation#equals() 2015-10-13 00:10:21 +02:00
Jürg Lehni
f77579079e Improve CurveTime#equals() to handle locations that wrap around beginnings / ends of paths.
See https://github.com/paperjs/paper.js/issues/805#issuecomment-147470240 for details.
2015-10-13 00:06:34 +02:00
Jürg Lehni
760da612f6 Merge pull request #804 from iconexperience/Small-refactoring-in-getConvexHull()
Small refactoring in getConvexHull()
2015-10-12 09:04:17 +02:00
iconexperience
f8edf5d8a7 Small refactoring in getConvexHull()
Make calculations of distances more concise.
2015-10-12 08:42:36 +02:00
Jürg Lehni
588ddbe011 Add comments to Curve#getParameterOf() 2015-10-11 17:09:04 +02:00
Jürg Lehni
bbc0029252 Go back to simple overlap handling.
It appears to produce less glitches.
2015-10-11 17:05:23 +02:00
Jürg Lehni
4500e520ea Minor code clean-up. 2015-10-11 17:00:23 +02:00
Jürg Lehni
c9f5c02ee4 Decrease GEOMETRIC_EPSILON
This appears to be better aligned with the new Curve#getParameterOf() behavior.
2015-10-11 17:00:01 +02:00
Jürg Lehni
c1d0bd21b8 Improve Curve#getParameterOf() to better handle very small curves.
See #799
2015-10-11 16:59:03 +02:00
Jürg Lehni
61db3d9d01 Improve handling of boolean debug options. 2015-10-11 16:57:43 +02:00
Jürg Lehni
6cdead0e8c Add fallback strategy when ending up in a dead-end in tracePaths().
This simple fix appears to be able to catch quite a few glitches with very small curves.
2015-10-11 16:56:41 +02:00
Jürg Lehni
247e80f569 Update to latest prepro.js with proper support for strings and scientific numbers. 2015-10-11 15:50:25 +02:00
Jürg Lehni
841381f520 Reactivate new overlap handling.
It appears to work better with the new Curve.getParameterOf()
2015-10-11 10:17:03 +02:00
Jürg Lehni
d20cdf5b73 There can only be one self-intersection per curve. 2015-10-11 09:48:55 +02:00
Jürg Lehni
8a122e19d8 Split self-intersection handling into separate method.
Increasing readability of both methods.
2015-10-11 09:26:04 +02:00
Jürg Lehni
7aed221801 Some refactoring in static methods of CurveLocation. 2015-10-11 09:18:50 +02:00
Jürg Lehni
99909953a8 Use colors to distinguish faulty boolean paths. 2015-10-09 11:07:43 +02:00
Jürg Lehni
688f580b95 Switch to new Curve.getParameterOf()
Simpler code, but improved precision means more glitches to analyze.
2015-10-09 10:34:46 +02:00
Jürg Lehni
48bb0a1be4 Address old TODO in getWinding() 2015-10-09 10:33:43 +02:00
Jürg Lehni
0839dbe1f5 New overlap handling is producing new glitches.
Turn it off for now, until further analysis has been done.
2015-10-09 10:27:25 +02:00
Jürg Lehni
b2127a83ad Revert "Do not start with segments with multiple intersections."
This reverts commit 5129fb0050.
2015-10-09 10:22:54 +02:00
Jürg Lehni
514e6651e6 Revert "Avoid all intersections as starting points for boolean paths."
This reverts commit 9590578339.
2015-10-09 10:19:05 +02:00
Jürg Lehni
c45ae4b51a Revert "Never starting in intersections allows for further code simplifications."
This reverts commit 892154e8f8.
2015-10-09 10:18:45 +02:00
Jürg Lehni
892154e8f8 Never starting in intersections allows for further code simplifications. 2015-10-09 00:03:34 +02:00
Jürg Lehni
9590578339 Avoid all intersections as starting points for boolean paths. 2015-10-08 23:56:18 +02:00
Jürg Lehni
939a9fe034 Improve overlap handling by actually storing overlap curves on intersections objects.
And properly comparing against them in tracePaths().
2015-10-08 23:54:00 +02:00
Jürg Lehni
5129fb0050 Do not start with segments with multiple intersections.
Simplifies the required checks at the end, and generally reduces number edge cases.
2015-10-08 23:38:41 +02:00
Jürg Lehni
c9eba83cc7 Improve detection of start segments.
Segments with multiple intersections need to be checked thoroughly to avoid errors.
2015-10-08 23:13:37 +02:00
Jürg Lehni
e92a71e8c7 Switch to improved version of Line. getSignedDistance()
Based on the error analysis by @iconexperience outlined in #799
2015-10-08 22:56:05 +02:00
Jürg Lehni
5c70f47b6f Fix colors in reportWindings code. 2015-10-07 23:37:09 +02:00
Jürg Lehni
15d797ac55 Improve linkIntersections() to prevent endless recursions in linked intersections. 2015-10-07 17:20:08 +02:00
Jürg Lehni
3e9d7593cf Some smaller tweaks in tracePaths() 2015-10-07 10:58:29 +02:00
Jürg Lehni
4fac3ee6fc Rename getIntersection() -> getBestIntersection() 2015-10-07 10:57:43 +02:00
Jürg Lehni
bfa0459c52 Go back to using Group for divide() results.
As they may contain multiple CompoundPaths.
2015-10-07 10:57:09 +02:00
Jürg Lehni
1103c7036f Remove unnecessary isValid() check on segments without intersections.
It was only causing issues without solving anything.
2015-10-07 02:02:27 +02:00
Jürg Lehni
8c56a1a110 Include _visited checks in isValid() calls.
This magically reduces the remaining glitches in @iconexperience's test-suite to half.

Relates to #784.
2015-10-06 22:23:43 +02:00
Jürg Lehni
896b068266 Switch from recursion to a simple loop in getIntersection() 2015-10-06 21:30:51 +02:00
Jürg Lehni
8e4bef217a Change Curve.getParameterOf() to accept a point instead of x, y arguments. 2015-10-06 21:24:58 +02:00
Jürg Lehni
525e35518d No need to default to 0 anymore.
See 1b343d5347 (commitcomment-13622714)
2015-10-06 21:16:49 +02:00
Jürg Lehni
bc736f439f Have Numerical.CURVETIME_EPSILON / 10 evaluated at preprocess time. 2015-10-06 21:14:43 +02:00
Jürg Lehni
7f4d8d54f0 Reduce epsilon in addCurveIntersections()
1/10 of CURVETIME_EPSILON appears to produce good results. It's probably wise to keep it linked.
2015-10-06 21:14:04 +02:00