Jürg Lehni
9bcf369e6a
Ony split potentially self-intersecting curves if there are actual canditates.
2015-09-30 13:44:51 -05:00
Jürg Lehni
45040abc53
More clean-ups for #773
...
- Use local variables instead of array lookups for values used repeatetly, and merge with pre-existing variables.
- Add some more comments and reference to long explaining post in issue.
2015-09-30 13:40:01 -05:00
Jürg Lehni
1231153553
Start cleaning up code from #773
...
- Use Line object isntead of static methods
- Do not rely on Math.sign() as it's not supported on all browsers
- Wrap lines at 80 char width.
2015-09-30 13:07:55 -05:00
Jürg Lehni
2a7d1c5728
Improve CurveLocation#equals()
...
Relates to #784 , described in https://github.com/paperjs/paper.js/issues/784#issuecomment-143161586
2015-09-30 12:47:02 -05:00
Jürg Lehni
4e9bac1ca5
Fix code brokean in commit a869add90d
2015-09-30 12:39:59 -05:00
Jürg Lehni
07874034e9
Merge pull request #793 from iconexperience/Fix-for-#773
...
Fix for #773
2015-09-30 11:51:37 -05:00
Jan
ec70fa1806
Fix for #773
...
Indroduced more reliable method for finding self intersection on curves.
2015-09-30 12:19:09 +02:00
Jürg Lehni
a869add90d
Rename variables in Line.intersect()
2015-09-26 12:09:44 -05:00
Jürg Lehni
317b809fee
Only calculate non-parametric bezier curve if values are actually used.
2015-09-26 11:46:54 -05:00
Jürg Lehni
ea3cc63e2e
Reformat code a bit.
2015-09-26 07:41:03 -04:00
Jan
3fa810a557
Bugfix for #791 and performance improvement
...
Prevent infinite loop for degenerate curve. Additionally only calculate sy if necessary and save one call to `Curve.solveCubic`
2015-09-26 07:36:12 -04:00
Jürg Lehni
fd927cbe22
Properly solve issues with self-intersecting special case.
...
(e.g. shapes resembling the infinity sign)
2015-09-24 12:49:39 -04:00
Jürg Lehni
fc0b5a8858
Give the intersection that brings us back to the beginning alwasy the priority.
2015-09-24 07:47:39 -04:00
Jürg Lehni
c79166a46f
Mark last segment as visited when done.
2015-09-23 14:31:12 -04:00
Jürg Lehni
cf5bf38c3b
Minor simplification.
2015-09-23 13:33:35 -04:00
Jürg Lehni
515d4ff93d
Make Line.isCollinear() / Point#isCollinear() more reliable.
2015-09-23 13:26:29 -04:00
Jürg Lehni
cc7e60e51a
Revert db1ecdddd5
and fix issue properly this time.
...
Hopefully?
2015-09-23 12:44:00 -04:00
Jürg Lehni
20f950ac65
Implement #isFirst() / #isLast() tests on Segment and Curve.
2015-09-23 12:26:44 -04:00
Jürg Lehni
db1ecdddd5
Fix filtering of locations at ends of curves in addCurveLineIntersections()
...
Only occured when the line / curve had to be flipped.
2015-09-21 16:56:08 -04:00
Jürg Lehni
6a29f200e3
Always use getIntersection(), even on the first segment.
...
Now that it works well.
2015-09-21 12:44:53 -04:00
Jürg Lehni
51c34444db
Some more debugging code clean-up.
2015-09-21 12:18:57 -04:00
Jürg Lehni
84bcc537e1
Simplify addCurveLineIntersections() and exclude end points.
2015-09-21 12:13:53 -04:00
Jürg Lehni
0f61ce896a
Some code clean-up.
2015-09-21 10:54:33 -04:00
Jürg Lehni
ce95043e99
Lower geometric epsilon.
...
Differences slightly above 1e-8 where observed.
2015-09-21 10:54:17 -04:00
Jürg Lehni
812ac63e60
Compare points instead of curve time paramters for better precision and reliability.
2015-09-21 10:53:53 -04:00
Jürg Lehni
e36319b71a
Give PathItem#getIntersections() a way to filter found intersections right away.
...
And use it in #getCrossings()
2015-09-21 10:41:59 -04:00
Jürg Lehni
f6f42fe09b
Improve handling of overlap ambiguity in getIntersection()
...
Two passes are needed, first strict, then non-strict, to prevent 'better' next candiates over 'worse' ones.
2015-09-21 09:44:17 -04:00
Jürg Lehni
19a17b2918
Prevent infinite loops through circular references of multiple intersections.
2015-09-21 09:43:19 -04:00
Jürg Lehni
40570b3e59
Furher improve boolean debug logging and drawing.
2015-09-21 09:42:47 -04:00
Jürg Lehni
1ad95c9020
Improve CurveLocation.add() to always merge duplicates.
...
We nee to check neighbors of the found location too.
2015-09-21 07:06:41 -04:00
Jürg Lehni
f47af12b0d
Shorten code statement.
2015-09-20 23:22:41 +02:00
Jürg Lehni
1302df0cb8
Fix variable leackage.
2015-09-20 23:22:31 +02:00
Jürg Lehni
b68be09c87
Fix all accidental non-breaking spaces.
2015-09-20 22:39:28 +02:00
Jürg Lehni
530b8b7bc8
Handle adjusted overlap winding contribution and operator calls through new isValid() function.
2015-09-20 15:50:26 +02:00
Jürg Lehni
738cc4c214
Yet another improvement in multiple interseections boolean code.
...
This appears to be the one. The only remaining failing cases seem to be linked to getting the same intersection twice now!
Relates to #787
2015-09-20 15:29:54 +02:00
Jürg Lehni
946157f1b1
Add note about usage of _originalWinding.
2015-09-20 14:19:14 +02:00
Jürg Lehni
20ed1e007c
More fixes in handling of multiple intersection locations.
2015-09-20 14:17:23 +02:00
Jürg Lehni
5db9703aff
No more need to check for crossings since every intersection is now either an overlap or a crossing.
2015-09-20 14:16:47 +02:00
Jürg Lehni
53862233e5
Improve debug logging of new multiple intersections code.
2015-09-19 22:47:57 +02:00
Jürg Lehni
4df65c1809
Various improvements to code that handles multiple intersections in same location.
...
Relates to #787
2015-09-19 19:07:44 +02:00
Jürg Lehni
1d6f552212
Prevent endless loop through circular references.
2015-09-19 13:42:48 +02:00
Jürg Lehni
2c8634793c
First attempt at implementing handling of multiple intersections in the same location.
...
Relates to #787 , works pretty well already for many situations.
2015-09-19 13:21:29 +02:00
Jürg Lehni
081de1d12a
'exclude' operation needs overlap handling too.
2015-09-18 22:29:29 +02:00
Jürg Lehni
a95ba12bc3
isCrossing() needs parameter checks on both curves.
2015-09-18 22:26:09 +02:00
Jürg Lehni
b5af47a7b1
Implement a better approach to calculate Path#clockwise...
...
...merging code with Path#area.
Closes #788
2015-09-18 21:41:54 +02:00
Jürg Lehni
8cf562c57b
Revert "Remove special handling of winding contribution on overlaps"
...
This reverts commit c6a38589e9
.
The special handling seems to be still necessary in some edge cases, e.g. in BooleanOperations.html
2015-09-18 21:10:58 +02:00
Jürg Lehni
10eafccd1a
Implement 0.75 * handle scaling in curve bounds checks.
2015-09-18 21:09:57 +02:00
Jürg Lehni
17dc5eb51a
Allow gettings of unstyled bounds on curves without paths.
2015-09-18 20:15:18 +02:00
Jürg Lehni
c6a38589e9
Remove special handling of winding contribution on overlaps
...
Looks like the new code handles this correclty now!
2015-09-18 18:06:15 +02:00
Jürg Lehni
23443dc8f4
Clean up boolean code.
2015-09-18 17:51:57 +02:00
Jürg Lehni
66b01973f0
Simplify exclusion handling for new boolean code.
2015-09-18 17:51:43 +02:00
Jürg Lehni
87687d816b
Implement PathItem#resolveCrossings() based on the new #getCrossings() method.
2015-09-18 17:51:03 +02:00
Jürg Lehni
c70f8cb3cc
Simplify overlap calculations by keeping the original winding value.
2015-09-18 17:46:46 +02:00
Jürg Lehni
59a23fdd3f
Improve debug logging.
2015-09-18 17:33:42 +02:00
Jürg Lehni
73a9989261
Fix CurveLocation#isCrossing() for locations in the middle of curves.
2015-09-18 17:32:19 +02:00
Jürg Lehni
ae93652b56
Clean up getIntersection() methods.
...
Now that they filter the results on the fly.
2015-09-18 17:31:23 +02:00
Jürg Lehni
85311cfb29
Improve Path#getArea() and #isClockwise()
2015-09-18 17:27:29 +02:00
Jürg Lehni
17356637ac
Clean up new CurveLocation code.
2015-09-17 10:18:45 +02:00
Jürg Lehni
9c812335e5
Curve._filterIntersections() is now without a job.
2015-09-17 09:39:22 +02:00
Jürg Lehni
1508b8fc75
Improve debug logging.
2015-09-17 01:15:41 +02:00
Jürg Lehni
2750c34090
Improve the way intersections are sorted and merged.
...
Use a binary search to determine insertion index and compare with neighbours to eliminate doubles.
2015-09-17 01:03:13 +02:00
Jürg Lehni
30f1441c26
Various boolean code clean-ups.
2015-09-16 18:34:35 +02:00
Jürg Lehni
d0332f843f
Renamed Curve#reverse() and Segment#reverse() to #reversed()
...
Since they don't modify the object. Also introduce new Segment#reverse(), which does.
2015-09-16 18:16:48 +02:00
Jürg Lehni
857e27e3a8
Fix accidental variable leackage.
2015-09-16 18:15:26 +02:00
Jürg Lehni
7061bc0e0a
Simplify CurveLocation.sort() code
...
Relates to #787
2015-09-16 10:52:51 +02:00
Jürg Lehni
0980ad3fe9
Fix remaining issues with curve location sorting.
...
Relates to #787
2015-09-16 10:44:41 +02:00
Jürg Lehni
f8bd7a2005
Improve debug logging and drawing.
...
And add more descriptive comments to tracePath().
2015-09-16 09:52:41 +02:00
Jürg Lehni
197aa4b4cf
No need to wrap angles as they're always -PI < a < PI.
2015-09-16 02:56:24 +02:00
Jürg Lehni
2026e5571e
Some code cleanup and comments in isCrossing().
2015-09-16 02:54:25 +02:00
Jürg Lehni
e548391276
Use the zero-epsilon when checking beginnings and ends of curves for overlaps.
...
Relates to #786 and #777
2015-09-16 02:33:56 +02:00
Jürg Lehni
1e5c1bafaf
Increase geometric epsilon to better match collinear lines.
...
Needs more testing, but seems to perform well.
Relates to #786
2015-09-16 02:31:37 +02:00
Jürg Lehni
8f9549dd12
Fix non-breaking spaces.
2015-09-16 02:29:17 +02:00
Jürg Lehni
ad276ba46a
More improvements in tracePaths()
...
- Use new isCrossing() check
- Correctly switch crossings in exclusion
2015-09-15 19:39:35 +02:00
Jürg Lehni
60a725b527
Implement correct CurveLocation#isCrossing() check.
...
And improve curve caching. Still needs work.
2015-09-15 19:38:28 +02:00
Jürg Lehni
3ce7d88347
Second attempt at simplifying boolean code.
...
This time without endless loops.
2015-09-15 16:31:05 +02:00
Jürg Lehni
089738478c
Bring back boolean exclusion handling to reverted code.
2015-09-15 15:03:12 +02:00
Jürg Lehni
7b3f8598f4
Make sure all results of boolean operations are styled and inserted in the sample way.
2015-09-15 14:11:27 +02:00
Jürg Lehni
e4b4037721
Revert "Improve handling of exclude() operations."
...
This reverts commit e85586d0fe
.
2015-09-15 13:01:52 +02:00
Jürg Lehni
5e327f7a48
Revert "Substantial simplifications in boolean code."
...
This reverts commit a665175a89
.
2015-09-14 15:23:46 +02:00
Jürg Lehni
7aef20ae6b
Compare intersection points instead of curve time when deciding to merge.
...
Use same precision indepenent of curve length.
2015-09-14 15:18:44 +02:00
Jürg Lehni
fec479167c
Improve debug logging and drawing.
2015-09-14 15:16:52 +02:00
Jürg Lehni
a665175a89
Substantial simplifications in boolean code.
...
These were probably made possible thanks to increased precision elsewhere in the lib.
2015-09-14 01:20:03 +02:00
Jürg Lehni
e85586d0fe
Improve handling of exclude() operations.
...
Determine wether to switch to other intersection or not based on tangents.
Closes #781 again.
2015-09-14 00:51:46 +02:00
Jürg Lehni
b532c9cce2
Handle boolean exclusion as a special case.
...
Switching each time an intersection is encountered.
Closes #781
2015-09-13 22:12:04 +02:00
Jürg Lehni
fbb0f3f37d
Remove left-over debugging code.
2015-09-13 21:50:35 +02:00
Jürg Lehni
b231e9b2a8
Accept CompoundPath items as children of CompoundPath items.
...
Just add their children and remove the parent.
Closes #541
2015-09-13 16:06:24 +02:00
Jürg Lehni
e2d2c836e5
Some boolean code clean-up.
2015-09-13 14:19:56 +02:00
Jürg Lehni
ea2ff5ec28
Increase precision in Curve.getParameterOf()
...
Usually only requires 0-1 more iteration.
2015-09-13 13:45:20 +02:00
Jürg Lehni
f029d5f9da
Write docs for the new EPSILON values.
2015-09-13 13:41:53 +02:00
Jürg Lehni
d84a84c67f
Change the way winding contributions are propagated
...
The new approach preserves segment sequence.
Relates to #777
2015-09-13 13:06:01 +02:00
Jürg Lehni
19c9a0e722
Use the correct points on curve2 when checking intersections at beginnings and ends.
2015-09-13 11:52:17 +02:00
Jürg Lehni
d62caf6faa
Introduce CURVETIME_EPSILON, to be used when handling curve time parameters.
...
Relates to #777
2015-09-12 22:55:58 +02:00
Jürg Lehni
4f04dae20f
Use the correct GEOMETRIC_EPSILON when matching beginnings and ends of curve in Curve.getParameterOf()
...
Relates to #777
2015-09-12 22:26:16 +02:00
Jürg Lehni
8047f90ccf
Switch to using GEOMETRIC_EPSILON in getWinding() code.
2015-09-12 22:20:31 +02:00
Jürg Lehni
ef45a5f62c
Clean up tMin / tMax uses.
2015-09-12 22:14:04 +02:00
Jürg Lehni
a0730756c1
Use correct term for curve parameter renormalization.
2015-09-12 22:13:18 +02:00
Jürg Lehni
085cdd74a2
Use GEOMETRIC_EPSILON when comparing curve start / end points.
...
Relates to #777
2015-09-12 21:56:53 +02:00
Jürg Lehni
2fb203ddd1
Adjust notes since we now support boolean operations on self-intersecting Paths items
2015-09-12 11:58:17 +02:00
Jürg Lehni
3da921a0b0
Improve CompoundPath#reduce() to properly reduce suppaths.
...
Relates to #779
2015-09-12 11:43:41 +02:00
Jürg Lehni
fb5f8c0115
Introduce GEOMETRIC_EPSILON, for isOrthogonal(), isCollinear() and overlap checks.
...
Relates to #777
2015-09-12 10:35:47 +02:00
Jürg Lehni
cdd0cee623
Activate resolving of self-intersections in boolean code.
...
Relates to #779
2015-09-12 10:24:19 +02:00
Jürg Lehni
35f3ac87bf
Change checks for startConnected / endConnected to support compound-paths.
...
Closes #778
2015-09-12 10:12:17 +02:00
Jürg Lehni
86f404123e
Minor code tweaks.
2015-09-11 12:07:27 +02:00
Jürg Lehni
c69ea345da
Correctly handle self-intersections when deciding to switch segments.
...
Closes #765
2015-09-10 05:21:47 +02:00
Jürg Lehni
4770cfe2f8
Minor intersection refactoring clean up.
2015-09-10 05:18:56 +02:00
Jürg Lehni
04452730dd
Simplify CurveLocation data structures.
...
Directly creating and linking intersections simplifies things a lot.
2015-09-09 17:17:49 +02:00
Jürg Lehni
78e0bae6aa
Activate code that handles self-intersection directly now.
...
Relates to #765 , #761
2015-09-09 08:24:02 +02:00
Jürg Lehni
abf70378fe
Some more code fixes.
...
One was breaking unit tests.
2015-09-09 08:15:43 +02:00
Jürg Lehni
155442e706
Increase readability of convex-hull check in self-intersection code.
2015-09-09 08:12:03 +02:00
Jürg Lehni
70f8f1912f
Some code clean-up.
2015-09-09 08:06:59 +02:00
Jürg Lehni
332b09c534
More curve interesection optimizations.
...
Only evaluate points if locations are actually added.
2015-09-09 07:46:48 +02:00
Jürg Lehni
dae8bb630b
Avoid checking curves if completely out of control bounds.
...
This leads to a huge speed increase! Relates to #765
2015-09-09 07:34:28 +02:00
Jürg Lehni
1c1e19614e
Avoid matching connected start- and end points when self-intersecting curves.
...
Partial fix for #765 .
2015-09-09 07:28:08 +02:00
Jürg Lehni
3f53aa78ce
Do not access curve objects for geometry since they might be subdivided.
...
Partial fix for #765
2015-09-09 07:26:39 +02:00
Jürg Lehni
b96036fb03
Fix strange curve check.
...
Something went wrong in prior refactoring here. Also, no need to check curve beginnings and ends again, just handles.
2015-09-09 06:25:37 +02:00
Jürg Lehni
98d7703b5c
Finish implementing Curve#isStraight and #isLinear()
...
Closes #652
2015-09-06 18:02:15 +02:00
Jürg Lehni
31d9e1cd6e
Implement Curve#isLinear() to check for parametrical linearity.
...
Along with some unit tests for it.
2015-09-06 17:56:12 +02:00
Jürg Lehni
9d12a0a82c
Rename Curve#isLinear() to #isStraight()
...
Relates to #652
2015-09-06 17:35:27 +02:00
Jürg Lehni
9dab662a1f
Clean-up various Segment and Curve tests.
...
Moving functionality back to Path#toShape() since it was too specific, and missleading as part of the exposed Segment API.
2015-09-06 17:27:33 +02:00
Jürg Lehni
71a7cc37e6
Many documentation clean-ups.
2015-09-06 17:20:01 +02:00
Jürg Lehni
b52d343527
Use same notation for all injection scopes.
2015-09-06 16:48:23 +02:00
Jürg Lehni
cf813faa75
Remove all mention of points and square points as units.
...
And some other doc clean-ups.
2015-09-06 16:37:10 +02:00
Jürg Lehni
dd1f5ba3d1
Remove Path#isLinear() and use Path#getArea() instaed in boolean code.
2015-09-06 16:35:15 +02:00
Jürg Lehni
3d89cd71bd
Some clean-up work on documentation.
2015-09-06 15:54:11 +02:00
Jürg Lehni
fa9eb8be99
Merge remote-tracking branch 'origin/develop' into boolean-fix
...
; Conflicts:
; src/path/PathItem.Boolean.js
2015-09-06 15:36:40 +02:00
Jürg Lehni
cf4e5c2983
Fix typo.
2015-09-06 15:30:38 +02:00
Jürg Lehni
824b0c7e7e
Remove legacy Color constructors.
2015-09-06 15:28:46 +02:00
Jürg Lehni
66717868cd
Address failing #isLinear() tests.
2015-09-06 14:10:15 +02:00
Jürg Lehni
f91373efd8
Simplify Point#project()
2015-09-06 14:01:04 +02:00
Jürg Lehni
d7fb5cd512
Do not reduce linear curves with handles defined.
2015-09-06 13:21:08 +02:00
Jürg Lehni
26e35322a4
Some reworking of code and comments.
2015-09-06 13:20:57 +02:00
Jürg Lehni
8b67d8a1dc
Remove #isStraight() in favor of #hasHandles() and implement #clearHandles()
...
Relates to #652
2015-09-06 12:47:35 +02:00
Jürg Lehni
3fa385ac7c
Fix typo in previous commit.
2015-09-05 09:56:37 +02:00
Jürg Lehni
af355dc82c
Fix false positives in Curve#isLinear() and Segment#isLinear().
2015-09-03 09:01:07 +02:00
Jürg Lehni
041c31a88a
Prevent variable leackage.
2015-09-02 15:54:14 +02:00
Jürg Lehni
b9a07ca538
Address code comments by @iconexperience in #762 .
2015-08-31 22:01:18 +02:00
Jürg Lehni
215bbe2e8e
Fix issue in Numerical.solveCubic() / solveQuadratic()
...
We need to include EPSILON tolerance in the comparison with bounds values.
2015-08-30 22:57:33 +02:00
Jürg Lehni
20222be5c6
Minor clean-up in fat-line code.
2015-08-30 19:59:13 +02:00
Jürg Lehni
0651eee0c2
No more need for special handling of 'subtract' overlaps.
...
This is now taken care of in the code that handles overlaps itself, and the additional code was causing additional issues.
2015-08-30 19:58:32 +02:00
Jürg Lehni
4379e0b0f0
Improve boolean debug code.
2015-08-30 19:56:17 +02:00
Jürg Lehni
31771aa01d
Insert results of boolean operations above whichever of the two paths appear further up in the stack.
2015-08-30 14:47:46 +02:00
Jürg Lehni
b4755ea699
Deactivate debug logging code.
2015-08-30 14:38:18 +02:00
Jürg Lehni
bd61390f9d
improve break-off condition in curve interesection code.
...
To prevent arbitrary incorrect solutions occuring when tDiff is very close to zero.
Closes #762 .
2015-08-30 14:37:21 +02:00
Jürg Lehni
27aae8b261
Add support for values array and toString object format to Curve constructor.
2015-08-30 14:14:52 +02:00
Jürg Lehni
8f13fa54fc
Remove debugger statement.
2015-08-30 13:52:13 +02:00
Jürg Lehni
0cbce044aa
Define Curve#_serialize()
2015-08-28 16:18:28 +02:00
Jürg Lehni
e07d8f55ea
Add debug logging for intersections again.
2015-08-28 16:18:14 +02:00
Jürg Lehni
0e26b53053
Improve CurveLocation.sort() to handle more edge cases.
...
Relates to #648
2015-08-28 16:17:54 +02:00
Jürg Lehni
4ccb53ac68
Remove note about overlapping paths not working.
...
: D
2015-08-26 18:03:22 +02:00
Jürg Lehni
3ad897c943
Remove all boolean debug code.
...
Keeping it on the boolean-fix branch for now.
2015-08-26 17:47:18 +02:00
Jürg Lehni
da0d01ee09
More work on main boolean code.
...
Start addressing self-intersecting paths, and remove resulting open paths for now.
2015-08-26 17:36:20 +02:00
Jürg Lehni
d656c96191
Adjust #isCollinear() tolerance.
2015-08-26 17:09:40 +02:00
Jürg Lehni
86fd33c7d5
User correct tolerance in CurveLocation sorting.
2015-08-26 17:06:02 +02:00
Jürg Lehni
a099377ac6
Remove debug logging for CurveLocation.
2015-08-26 16:58:52 +02:00
Jürg Lehni
d85b4f0c80
Fix issues with wrong sorting of CurveLocation in Curve.filterIntersections()
2015-08-26 16:56:28 +02:00
Jürg Lehni
815991d556
Some minor adjustments and fixes.
2015-08-26 11:43:39 +02:00
Jürg Lehni
2c4dcb96c2
Streamline addOverlap() code a bit.
2015-08-26 11:26:55 +02:00
Jürg Lehni
69a2fcff46
Pass on correct matrix in CompoundPath#getPathData().
2015-08-26 04:28:30 +02:00
Jürg Lehni
fd1f2e56f8
Optimize Item#intersects() by only checking to see if there are at least one intersection.
2015-08-25 11:45:28 +02:00
Jürg Lehni
7ca8ce3cbb
Actually use selfOp argument for self operations.
...
Appears to be working fine.
2015-08-24 21:02:42 +02:00
Jürg Lehni
e242634011
Minor code clean-up.
2015-08-24 12:59:10 +02:00
Jürg Lehni
3946bcb04e
Remove unnecessary segments between two collinear curves in Path#reduce()
2015-08-24 12:49:33 +02:00
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
157a60dee6
Fix spelling mistake.
2015-08-22 23:22:01 +02:00
Jürg Lehni
2eaaabf07c
Merge pull request #759 from sapics/minor-fix-matrix
...
Minor fix to Matrix.js
2015-08-22 23:21:23 +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
142ee6fd8a
Shorten code a bit.
2015-08-21 17:42:33 +02:00
Jürg Lehni
af24af8916
Merge pull request #730 from sapics/raster.toDataURL
...
add param to raster.todataurl
2015-08-21 17:41:32 +02:00
Jürg Lehni
7d82491cce
Release version v0.9.24
2015-08-21 16:59:35 +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
caf6321caf
Always include Http object.
2015-08-21 16:38:27 +02:00
Jürg Lehni
ec0e4fcd15
Remove unused build options.
2015-08-21 16:38:17 +02:00
Jürg Lehni
bae7fa435f
Some minor clean-ups for #593 .
2015-08-21 15:53:37 +02:00
Jürg Lehni
8f9e0f58fa
Merge pull request #593 from megawac/helpers
...
Helpers
2015-08-21 15:53:06 +02:00
Jürg Lehni
5f50372b02
More optimizations and clean up in Base.equals()
2015-08-21 15:42:19 +02:00
Jürg Lehni
4f17aa376d
Merge pull request #594 from megawac/equals
...
Refactor and optimize base equals
2015-08-21 15:36:51 +02:00
Jürg Lehni
13b5e6ce22
Help JS minification.
2015-08-21 15:15:06 +02:00
Jürg Lehni
4cdc572824
Merge pull request #729 from sapics/item-matrix
...
setMatrix of item makes more useful
2015-08-21 15:11:49 +02:00
Jürg Lehni
27b7063fc4
To avoid possible duplicate browser requests for PaperScript files, support the data-src attribute as well as src.
...
Closes #749 .
2015-08-21 15:11:01 +02:00
Jürg Lehni
eb3628063c
Handle missing keyup events for keys pressed while Command key is down on Mac.
...
Closes #630 .
2015-08-21 13:56:44 +02:00
sapics
687eca9677
fix
2015-08-21 15:35:30 +09:00
Jürg Lehni
3dd0f1fc1b
Introduce new option in SVGExport to not embed images.
...
Closes #696
2015-08-20 19:34:38 +02:00
Jürg Lehni
650bf5d616
Implement CORS support on Raster.
...
Closes #754
2015-08-20 19:14:33 +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
eb8c5b4a3e
Handle em and pt font sizes correctly on Firefox.
...
Closes #734
2015-08-19 12:57:22 +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
2366e03265
Implement getItems(function() {}).
...
As requested in #751 .
2015-08-19 01:04:47 +02:00
Jürg Lehni
39ea409684
Fix issue with param.overlapping in #getItems()
...
Consider items fully contained inside the rectangle as overlapping as well.
Closes #751 .
2015-08-19 00:55:44 +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