Jürg Lehni
93a5e2d18c
Refine some code comments.
2015-12-30 21:55:18 +01:00
Jürg Lehni
aa316ffc8c
Avoid applying item._matrix twice in Item#intersects()
...
As suggested by @sapics.
Closes #847
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
306d8bae86
Clean up the new Item#reduce() code a bit.
2015-12-30 21:55:18 +01:00
Jürg Lehni
fec67617e1
Merge pull request #846 from iconexperience/reduce-fix
...
Make sure reduced item has no parent if original item had no parent.
Fix for #835
2015-12-30 21:55:18 +01:00
Jürg Lehni
b987590c71
Define documentation for excludeMatrix parameter.
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
48c0988546
Implement support for SVG fill-rule attribute.
...
Relates to #858
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
Jürg Lehni
401877c6dc
Fix the correct bubbling of doubleclick events.
...
Fixes #834 .
2015-12-30 21:55:17 +01:00
Jürg Lehni
e3a27da7b2
Fix alt key combos on Chrome.
...
Relates to #860
2015-12-30 21:55:17 +01:00
Jürg Lehni
0badb3b3f4
A bunch of code clean-ups.
2015-12-30 21:55:16 +01:00
Jürg Lehni
248364aebc
Fix @param description.
2015-12-30 21:55:16 +01:00
Jürg Lehni
4ee3a76a74
Improve handling of special characters and control sequences.
2015-12-30 21:55:16 +01:00
Jürg Lehni
0346552bc6
Minor simplification.
2015-12-30 21:55:16 +01:00
Jürg Lehni
52edd72efb
Refactor Key handling
...
- Rely on event.key / event.keyIdnetifier instead of event.keyCode
- Handle command key better on Chrome across all platforms (fixes #860 )
- Improve documentation
2015-12-30 21:55:16 +01:00
iconexperience
b19bc5aaf4
Smaller improvements in addCurveIntersections()
2015-12-30 21:55:16 +01:00
sapics
81a4d142f0
Fix shape.strokeBounds with strokeScaling is false
2015-12-30 21:52:34 +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
sapics
0050984d83
Remove unnecessary calculation
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
1e72447a7d
Minor comment change.
2015-11-12 10:12:46 +01:00
Jürg Lehni
8149fa830b
Only rasterize an item's content if the resulting raster is not empty.
...
closes #828
2015-11-12 10:11: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
6c0faaf010
Use Base.pick() instead of null check.
2015-10-27 23:43:14 +01:00
Jürg Lehni
60c64ab25c
Merge pull request #814 from johan/precision-0
...
Handle exportSVG({ precision: 0 }) correctly
2015-10-27 23:41:55 +01:00
Jürg Lehni
8eb0dcc87d
Fix various JS linting problems.
2015-10-27 23:35:30 +01:00
Johan Sundström
1b129feebf
Handle exportSVG({ precision: 0 }) correctly
2015-10-27 15:33:09 -07:00
Jürg Lehni
ac7c272401
Clean up link references about kappa.
2015-10-26 21:43:38 +01:00
Jürg Lehni
a1e4b9fa3c
Release version v0.9.25
2015-10-25 11:24:42 +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
Jürg Lehni
648985fcd2
Fix yet another issue with Path#curves and Path#_add()
...
Including a unit test to prevent regression.
2015-10-24 18:11:30 +02:00
Jürg Lehni
19e3136892
Address small issue in Path#getLocationAt() when paths are empty.
2015-10-24 17:46:20 +02:00
Jürg Lehni
fcd4fe824c
Pass Item.NO_INSERT to internally created paths and do not rely on insertAbove() to always return a result.
...
If `this` itself is not in the DOM, insertAbove() will fail.
2015-10-24 17:45:22 +02:00
Jürg Lehni
1fc17766fb
Address remaining issue with curves being wrongly linked up after adding new segments.
2015-10-24 17:43:22 +02:00
Jürg Lehni
ae2bed9cf0
Fix issue of faulty curves list after inserting segments at the end of open paths.
2015-10-24 17:00:37 +02:00
Jürg Lehni
39731808b8
Switch from imprecise trigonometric method to Curve.getParameterOf()
...
And from !hasHandles() to isStraight(), as we can now handle all straight curves.
2015-10-24 12:23:25 +02:00
Jürg Lehni
780b999220
Fix typo.
2015-10-24 11:55:59 +02:00
Jürg Lehni
b9a0f5f659
Further simplify code.
2015-10-24 11:29:15 +02:00
Jürg Lehni
4678697638
Some refactoring and added comments to @sapics code in Curve.getNearestParameter()
2015-10-24 11:14:08 +02:00
sapics
89a45a6682
Use cubic equation solution for faster calculation
2015-10-24 14:54:57 +09:00
sapics
294904eac7
Faster curve.getNearestParameter when curve has no handles
2015-10-24 11:39:50 +09:00
Jürg Lehni
c8cc653004
Merge Path#_getOffset() with CurveLocation#getOffset()
2015-10-23 19:57:25 +02:00
sapics
502558a321
Fix variable leaks
2015-10-23 09:45:39 +09:00
Jürg Lehni
5be9e1dde5
Remove unused variable.
2015-10-22 15:30:29 +02:00
Jürg Lehni
813ea48932
Remove unused local reference.
2015-10-22 14:46:17 +02:00
Jürg Lehni
85f7134fe6
Reduce curve-time epsilon, and improve comments about other epsilon values.
2015-10-22 10:34:49 +02:00
Jürg Lehni
bafb6794a6
Introduce separate epsilon for fat-line clipping code, and reduce curve-time epsilon.
2015-10-21 23:44:24 +02:00
Jürg Lehni
e9c3e72f60
Simplify handling of winding overlap-adjustment in isValid()
2015-10-21 15:02:53 +02:00
Jürg Lehni
a79212b920
Make handling of points on infinite lines in Line.getSide() more clear.
2015-10-21 10:00:11 +02:00
Jürg Lehni
a9710cf7c0
Fix Line.getSide() call.
2015-10-21 09:35:55 +02:00
Jürg Lehni
0cb792de93
Reverse sign of Line.getSignedDistance()
...
Closes #789
2015-10-21 09:35:40 +02:00
Jürg Lehni
7c37a4a4d2
Revert "No need for special length handling in propagateWinding()"
...
This reverts commit 8c702ce5b4
.
2015-10-21 09:35:17 +02:00
Jürg Lehni
f8595e93c6
Improve some comments.
2015-10-21 02:45:57 +02:00
Jürg Lehni
169f18617c
Address more pending TODOs.
2015-10-21 02:40:12 +02:00
Jürg Lehni
7a95625a13
Remove debug code and TODO from CurveLocation#isCrossing()
2015-10-21 02:36:43 +02:00
Jürg Lehni
8c702ce5b4
No need for special length handling in propagateWinding()
2015-10-21 02:32:56 +02:00
Jürg Lehni
3daa7f78b4
Some comment clean-ups.
2015-10-21 02:24:54 +02:00
Jürg Lehni
341fe1ab4e
Remove all boolean debugging and streamline code.
2015-10-21 02:16:17 +02:00
Jürg Lehni
2cf637d13b
Merge remote-tracking branch 'origin/boolean-fix' into develop
2015-10-21 01:44:15 +02:00
Jürg Lehni
43cf20096a
Implement Curve.getNearestParameter()
2015-10-21 01:43:14 +02:00
Jürg Lehni
8c3d9df06c
Further fine-tune the various EPSILON values based on edge-case tests.
2015-10-21 01:42:26 +02:00
Jürg Lehni
5d6b761d3a
Introduce separate WINDING_EPSILON and improve GEOMETRIC_EPSILON.
...
New values are based on a lot of testing.
2015-10-21 01:16:52 +02:00
Jürg Lehni
eb62530958
Improve CurveLocation#equals().
2015-10-21 01:15:46 +02:00
Jürg Lehni
1f476c2107
Improve CurveLocation#isTouching() to better handle straight lines.
2015-10-21 01:10:24 +02:00
Jürg Lehni
1073340eeb
Do not use GEOMETRIC_EPSILON in Curve.getParameterAt()
...
This caused issues in some rare edge-cases.
2015-10-21 01:09:03 +02:00
Jürg Lehni
d543658c43
Remove old version of Curve#getParameterOf()
2015-10-21 00:17:05 +02:00
Jürg Lehni
140fba56cc
Fix Line#isCollinear() and #isOrthogonal()
2015-10-20 23:37:37 +02:00
Jürg Lehni
bcd6520e66
Merge handling of self-intersection crossings with normal crossings.
...
Shorter code and no additional glitches.
2015-10-20 23:03:40 +02:00
Jürg Lehni
08122131dc
Use isOverlap() instead of _overlap everywhere.
2015-10-20 23:02:50 +02:00
Jürg Lehni
6ccd78e8af
Go back to simpler code to handle visited segments.
...
It appears that the imprecisions addressed in 6cdead0e8c
have since disappeared.
2015-10-20 23:02:19 +02:00
Jürg Lehni
7422e0710f
Some changes to boolean debug logging.
2015-10-20 22:04:30 +02:00
Jürg Lehni
3aa7507ce1
Avoid issues with imprecision in CurveLocation#getCurve() / trySegment()
2015-10-20 22:04:04 +02:00
Jürg Lehni
447feea1da
Improve Curve#getParameterOf() to first check curve points with zero epsilon.
2015-10-20 22:03:45 +02:00
Jürg Lehni
60109e897a
Use 'preserve' to protect #getPoint() against overriding.
2015-10-20 19:22:33 +02:00
Jürg Lehni
3ae0ca6c94
Remove dependency on curve-time comparisons when comparing locations.
...
Locations on consecutive short curves (< 1e-7) where unable to merge due to diff > 1.
Relates to #805
2015-10-20 17:53:40 +02:00
Jürg Lehni
7cea3488c0
Remove dependency on curve-time parameter when figuring out which locations to merge.
2015-10-20 17:17:31 +02:00
Jürg Lehni
5dac7e9d29
Reduce maximum recursion again in addCurveIntersections()
...
32 has lead to many deadlocks.
2015-10-20 16:35:30 +02:00
Jürg Lehni
da43953828
For curves with only one segment, pick the smaller diff between the two locations.
...
Addresses point 1. in https://github.com/paperjs/paper.js/issues/805#issuecomment-147770300
2015-10-20 16:34:40 +02:00
Jürg Lehni
93e9e54ae5
Make sure we cannot find two intersections between two lines.
...
Adresses point 2. in https://github.com/paperjs/paper.js/issues/805#issuecomment-148503018
2015-10-20 15:34:09 +02:00
Jürg Lehni
f2cce4c84d
Rename variable to be less ambiguous.
2015-10-20 15:21:03 +02:00
Jürg Lehni
63303a59f4
Change PathItem#getIntersections() so that the simply circularity checks in addLocations() work.
...
This should address the concerns outlined in https://github.com/paperjs/paper.js/issues/805#issuecomment-147850806
2015-10-20 15:18:09 +02:00
Jürg Lehni
e0c31e4a50
Make static getIntersections() methods 'private'.
2015-10-20 10:02:33 +02:00
Jürg Lehni
f1debf401b
Streamline overlap handling code.
2015-10-20 10:02:00 +02:00
Jürg Lehni
eb2f7e293a
Streamline mouse event handling between View and Item.
...
Consolidating code and making View#onMouseDown/Up/Move/... events work.
2015-10-17 18:13:00 +02:00
sapics
8dfb5191fa
Fix curve evaluate function to finite
2015-10-17 14:38:27 +09:00
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