Jürg Lehni
80320431fe
Fix smoothing of ranges with negative indices.
2016-01-15 18:20:52 +01:00
Jürg Lehni
56e0048186
Add documentation for PathItem#smooth() and Segment#smooth()
...
Closes #338
2016-01-15 18:14:22 +01:00
Jürg Lehni
96c50abce2
Prevent exception when selecting not inserted segments.
2016-01-15 17:32:01 +01:00
Jürg Lehni
31297c359a
Update JSDoc.
...
Now with proper Markdown support!
2016-01-15 17:21:49 +01:00
Jürg Lehni
6262863d9f
Use correct segment index boundaries in Path#smooth().
2016-01-15 16:35:48 +01:00
Jürg Lehni
34dc0e1589
Fix geometric and catmull-rom smooth on closed paths.
2016-01-15 12:10:43 +01:00
Jürg Lehni
aba6f03230
Further simplify continuous smooth code, and add support for original method, now called asymmetric.
...
For backward compatibility, we default to asymmetric for now, but will switch to continuous when hitting v1.0.0.
Relates to #338
2016-01-15 11:24:47 +01:00
Jürg Lehni
5440f96a77
Shorten new continuous smooth code.
2016-01-15 10:37:04 +01:00
Jürg Lehni
978aaf9f3b
Introduce Item flag to selectively activate on stroke-scaling on classes that support it.
...
Closes #721
2016-01-15 09:56:10 +01:00
Jürg Lehni
1563f69ce9
Layers should not be turning up in hit-tests.
...
Closes #608
2016-01-14 19:33:48 +01:00
Jürg Lehni
cd366982d6
Some minor improvements in handling of selectedItems.
2016-01-14 19:19:39 +01:00
Jürg Lehni
d9c9b3d1a2
Fix exceptions when a top-level layer is selected.
...
Getting the parent layer on a top-level layer returns null.
2016-01-14 19:19:14 +01:00
Jürg Lehni
c5ec9ae0b9
Prevent calling constructor methods on existing items again when using importJSON().
...
Resetting _children to new array would mess up up the code that keeps track of insertion and updateVersions.
Closes #785
2016-01-14 19:12:00 +01:00
Jürg Lehni
495cf9f7ce
Remove unused parameter.
2016-01-14 17:44:00 +01:00
Jürg Lehni
cf924512c0
Further streamline and improve tool mouse-event handling.
2016-01-14 14:16:20 +01:00
Jürg Lehni
e2723f0312
Make sure we really don't call preventDefault() if there's only a mousemove handler.
2016-01-14 12:42:33 +01:00
Jürg Lehni
5f44d814f5
Improve handling of previously focused view.
...
Make sure we switch back to the original one if there are multiple neighboring views.
2016-01-14 11:47:18 +01:00
Jürg Lehni
cee3959bfa
Improve handling of temporary view focus switch in mousemove.
...
Closes #841
2016-01-14 11:43:17 +01:00
Jürg Lehni
edcb2a3868
Handle mouseover events on unfocused views again.
2016-01-14 11:34:48 +01:00
Jürg Lehni
b8a1fbcd67
Implement new convention when to call event.preventDefault()
after mouse-events:
...
- If any of the handlers were called, except for mousemove events which need to call `event.preventDefault()` explicitly, or `return false;`.
- If this is a mousedown event, and the view or tools respond to mouseup.
2016-01-14 11:19:54 +01:00
Jürg Lehni
1a6bf972d5
A lot of fine-tuning and fixing to better handle touch scrolling.
...
Relates to #686
2016-01-14 10:59:14 +01:00
Jürg Lehni
d5f2ff479d
Further overhaul and streamline handling of view and tool mouse-events.
2016-01-14 02:08:33 +01:00
Jürg Lehni
0743f1b7b8
Various optimizations around Project#view.
2016-01-14 01:44:05 +01:00
Jürg Lehni
00a7588a3a
Allow any mouse handler to return true in order to enforce browser default.
...
Relates to #686
2016-01-13 19:04:03 +01:00
Jürg Lehni
0780a87429
Remove unnecessary overrides of selectstart dragstart on view.
...
And simplify DomEvent.add() / remove(), as we don't need support for multiple types in one entry anymore.
2016-01-13 18:04:54 +01:00
Jürg Lehni
8b0340e6df
Have View#_handleEvent() also return true if event is handled.
...
And use it to call preventDefault() if either tool or view handle events.
2016-01-13 17:53:39 +01:00
Jürg Lehni
6d768f559a
A whole lot of code clean-up in tool-event handling.
2016-01-13 17:27:45 +01:00
Jürg Lehni
35aabcc2b2
Move Tool#_updateEvent() to #_handleEvent() as private function.
2016-01-13 17:15:39 +01:00
Jürg Lehni
be0f6e373f
Move Tool#_fireEvent() to #_handleEvent() as private function.
2016-01-13 16:48:34 +01:00
Jürg Lehni
799beabf69
Fix a regression in tool event handling.
...
If a tool has no mousedrag event, fall back on mousemove again.
2016-01-13 16:37:49 +01:00
Jürg Lehni
d7a88d0ef3
Fix endless loop in mousemove evnts caused by changes from #595 .
2016-01-13 16:24:22 +01:00
Jürg Lehni
c23d87f5cf
Merge remote-tracking branch 'megawac/event-emitting' into megawac-event-emitting
2016-01-13 16:08:33 +01:00
Jürg Lehni
c058e5f664
Fix broken #delta property in mouse-events.
2016-01-13 15:43:48 +01:00
Jürg Lehni
dbc5bd175a
Write documentation for View#projectToView(), #viewToProject() and #getEventPoint()
2016-01-13 15:31:09 +01:00
Jürg Lehni
5add1bd725
Implement View#getEventPoint(event)
...
Relates to #633
2016-01-13 15:26:26 +01:00
Jürg Lehni
2be397c741
Some minor mouse-event related clean-up.
2016-01-13 14:57:04 +01:00
Jürg Lehni
e0d2d0d1b6
Implement simplification proposed by @iconexperiene.
...
See https://github.com/paperjs/paper.js/issues/899#issuecomment-171220859
2016-01-13 10:21:51 +01:00
Jürg Lehni
d1072d0a88
Remove touchAction:none as we're already calling preventDefault() in selectstart, dragstart
...
Closes #686 .
2016-01-13 10:10:35 +01:00
Jürg Lehni
e477eb8788
Reduce code-size a bit thanks to the use of epslion.
...
See https://github.com/paperjs/paper.js/issues/878#issuecomment-168153188
2016-01-13 09:11:54 +01:00
Jürg Lehni
016362daee
Bring back accidentally removed named constructor.
2016-01-13 02:13:30 +01:00
Jürg Lehni
db2beba831
Large refactoring of mouse-handling code on View and CanvasView.
...
Added support for:
- Better event bubbling
- mouseenter / mouseleave events on view
- Better handling of mousedrag / mousemove events on item and view
- Support for #removeOn() call in item / view handlers
Closes #845
2016-01-13 02:11:29 +01:00
Jürg Lehni
3857be62c4
Increase the fat-line clipping recursion threshold to 26.
...
As suggested by @iconexperience. Closes #899
2016-01-12 11:59:54 +01:00
Jürg Lehni
0c3406894b
In fat-line clipping, increase tDiff threshold back to the recommended 0.8.
...
As proposed by @iconexperiene in #899 . Also remove the unnecessary oldTDiff parameter.
2016-01-12 11:57:10 +01:00
Jürg Lehni
406d26e884
Unify the way item parents and projects as parents of top-level layers are handled as owners.
...
This automatically adds support for named children on project.layers, closing #491 .
2016-01-12 00:54:04 +01:00
Jürg Lehni
20f90bbee2
Merge branch 'new-smooth' into develop
2016-01-11 20:26:41 +01:00
Jürg Lehni
4c92c0739e
Correctly handle negative smooth() indices on open paths.
2016-01-11 20:21:27 +01:00
Jürg Lehni
4830562e4f
Tweak documentation added to Point / Size #min() / #max() a bit.
2016-01-10 18:13:11 +01:00
Jürg Lehni
7b29bb177d
Merge remote-tracking branch 'megawac/526-reduce' into megawac-526-reduce
2016-01-10 18:06:11 +01:00
Jürg Lehni
c5eaaff073
Remove ctx.currentPath caching optimization.
...
Unfortunately all browser have moved away from this again, in favour of Path2D.
2016-01-10 11:51:56 +01:00
Jürg Lehni
4eafe808fa
Rename getEndDistanceSquared() to getSquaredLineLength()
2016-01-10 11:50:47 +01:00
Jürg Lehni
e8390a76d8
Define Path#toShape() and Shape#toPath() as aliases to #clone().
2016-01-09 12:08:47 +01:00
Jürg Lehni
8639051081
More work and clean-up on JSHint compliance.
2016-01-09 12:05:42 +01:00
sapics
8077f228e9
Fix errors in jshint
2016-01-09 12:03:42 +09:00
Jürg Lehni
f2ae7840cf
A lot of work on documentation.
...
- @values lists
- Improve event documentation
- Compound path
- etc.
2016-01-08 20:45:54 +01:00
Jürg Lehni
64f997a3bc
More work on JSHint compliance.
2016-01-08 20:32:52 +01:00
Jürg Lehni
3280b5700c
Get things up to speed again with JSHint.
2016-01-08 18:16:29 +01:00
Jürg Lehni
b680301ce8
Fix issue where locations reference the wrong path after splitting.
2016-01-08 16:52:56 +01:00
Jürg Lehni
93ba42259b
Fix the way multiple children with the same name are handled.
2016-01-08 16:42:41 +01:00
Jürg Lehni
74c1f54bb3
Fix one new failing boolean issue.
2016-01-08 15:33:05 +01:00
Jürg Lehni
66ff8d3a51
Fix multiple issues with boolean operations on open paths.
2016-01-08 15:17:58 +01:00
Jürg Lehni
dd332e966c
Remove unused variable.
...
Apparently the code that required it was accidentally deleted earlier. Turns out it wasn't needed anymore anyway :)
2016-01-08 11:42:48 +01:00
Jürg Lehni
cb3d4341fd
paper.browser can still be null when the first key events fire.
2016-01-08 11:42:12 +01:00
Jürg Lehni
79508ff78b
Various comments adjustments.
2016-01-08 11:14:25 +01:00
Jürg Lehni
abafc886cd
Clean up propagateWinding() a bit.
2016-01-08 10:54:11 +01:00
Jürg Lehni
34a173ee18
Merge pull request #893 from sapics/atan2
...
Replace atan to atan2 for avoiding NaN
2016-01-08 10:28:44 +01:00
Jürg Lehni
b95136f673
Add additional @author tags to boolean code.
2016-01-08 10:27:22 +01:00
Jürg Lehni
a5304443a5
Condensate if / else statements into terniary chain.
...
And apply the same style to all multi-line if-statements.
2016-01-08 10:22:11 +01:00
Jürg Lehni
d186c2d356
Reformat code of #895 a bit.
...
- Respect 80 chars line-width
- Indent comments with current indentation level
- Use punctuation in comments
2016-01-08 10:05:47 +01:00
iconexperience
07b89c7f18
Further simplify and explain winding calculation in getWinding()
2016-01-08 08:58:32 +01:00
sapics
5f876adc1c
Replace atan to atan2 for avoiding NaN
2016-01-08 12:24:53 +09:00
Jürg Lehni
3c66c013d1
Implement correct behavior for intersection, subtraction and intersection of fully overlapping paths.
2016-01-08 01:25:35 +01:00
Jürg Lehni
ba6c1201fe
Improve a couple of comments.
2016-01-08 01:09:15 +01:00
Jürg Lehni
eba9601601
Implement and brush up @iconexperience's new version of getWinding()
...
Along with optimizations and simplifications to _getMonoCurves()
Closes #890
2016-01-08 00:08:38 +01:00
Jürg Lehni
6136bd8143
Fix issue with SVG serialization in newer versions of JSDOM.
...
And define some meaningful ranges for problematic Node.js modules.
Closes #821
2016-01-07 23:08:01 +01:00
Jürg Lehni
56869baaad
Only transform canvas if matrix is not the identity.
2016-01-07 22:07:26 +01:00
Jürg Lehni
7969e4647c
Use shadowBlur instead of shadowColor to clear shadows after fills.
2016-01-07 22:06:10 +01:00
Jürg Lehni
d1e4807c6a
Allow the use of Formater without additional processing of numbers.
...
precision >= 16 will output numbers as is.
2016-01-07 18:51:30 +01:00
Jürg Lehni
36a98706b3
Use epsilons when deciding for horizontal winding and dealing with horizontal mono-curves.
...
Relates to #890#issuecomment-169672571, fixing the 2nd case of the 2nd example.
2016-01-07 15:58:51 +01:00
Jürg Lehni
bc8fb92b9d
Rename some variables to be more clear about their role.
2016-01-07 15:55:24 +01:00
Jürg Lehni
5e01774c91
Further simplify checks of crossing vs touching in getWinding()
...
Relates to #890
2016-01-07 13:09:47 +01:00
Jürg Lehni
231dba83b2
No need to filter intersections if there were no overlaps.
2016-01-07 12:15:11 +01:00
Jürg Lehni
86b9d04c43
Rename from, to parameters to start, end in methods where the end is exclusive.
...
Relates to #338
2016-01-07 11:29:36 +01:00
Jürg Lehni
af797df5ba
Remove includeOverlaps parameter from getCrossings()
...
And write better comments about how overlaps should be dealt with ideally.
2016-01-07 11:18:46 +01:00
Jürg Lehni
2fc7684efb
Optimize new getWinding() code a bit.
...
By storing additional information along the first curve of a monoCurve loop.
2016-01-07 11:02:51 +01:00
Jürg Lehni
1078e1f8a9
Implement winding fix suggested by @iconexperience.
...
Along with a unit test for the issue.
Closes #890
2016-01-07 10:02:43 +01:00
Jürg Lehni
e5a62cb919
Fix new failing tests in @iconexperience's test suite.
...
Relates to comments on 5a16d0cd01
2016-01-07 09:50:07 +01:00
Jürg Lehni
7ad6dc2d5f
Add support for Curve objects in smooth() ranges.
2016-01-06 22:37:51 +01:00
Jürg Lehni
5f11345fc9
Implement from / to options for 'continuous' smooth().
2016-01-06 22:31:02 +01:00
Jürg Lehni
71c7405d6b
Some work on documentation structure for #smooth().
2016-01-06 17:16:04 +01:00
Jürg Lehni
bf4eb47fae
Start implementing new smooth() functions that merge all approaches.
...
Work in progress, needs more work on range handling for 'continous', and docs.
2016-01-06 16:11:19 +01:00
Jürg Lehni
2539527864
Fix minification warnings.
2016-01-06 15:25:37 +01:00
Jürg Lehni
8cec4f972d
Handle tiny handles correctly In Curve's evaluate()
...
If the curve handles are almost zero, reset the control points to the anchors.
Closes #838
2016-01-06 15:03:35 +01:00
Jürg Lehni
b9c76f44e8
Convert "Note: " comments to "NOTE: " and do some cleanup.
2016-01-06 14:23:19 +01:00
Jürg Lehni
7152942719
Replace links to issues with short references.
2016-01-06 14:13:02 +01:00
Jürg Lehni
156dd661ed
Detect and handle fully overlapping paths in boolean operations.
...
Closes #885
2016-01-06 11:54:23 +01:00
Jürg Lehni
feec904288
Fix white-space.
2016-01-06 11:14:38 +01:00
Jürg Lehni
df580425f4
Remove sameDir parameter from isCollinear() agian.
...
It's not in use anywhere now.
2016-01-06 11:08:17 +01:00
Jürg Lehni
5a16d0cd01
Implement proper handling of self-touching paths in resolveCrossings().
...
Closes #874 , #887
2016-01-06 10:53:50 +01:00
Jürg Lehni
d89995a781
Fix winding calculation in rare edge case.
...
Closes #889
2016-01-06 00:34:23 +01:00
Jürg Lehni
17d000266f
Deactivate use of sameDir in Path#reduce() for now.
2016-01-06 00:27:11 +01:00
Jürg Lehni
cb6afda083
Add sameDir parameter it #isCollinear() functions and use it in Path#reduce().
2016-01-05 14:51:55 +01:00
Jürg Lehni
0a7bb06d93
Implement suggestions by @iconexperience in #887
2016-01-05 12:43:38 +01:00
Jürg Lehni
928ad48937
Rename start/endConnected to excludeStart/End.
2016-01-05 12:14:21 +01:00
Jürg Lehni
a7fc04a9b1
Improve comments in new getOverlaps() code.
2016-01-05 12:11:56 +01:00
Jürg Lehni
0d172a74f4
Start handling self-overlapping paths in getOverlaps()
...
Relates to #874 and #887
2016-01-05 12:04:40 +01:00
Jürg Lehni
d71acb4002
Further simplify boolean operator handling.
2016-01-05 11:10:59 +01:00
Jürg Lehni
1132de0415
Clean up boolean code comments a bit.
2016-01-05 11:06:06 +01:00
Jürg Lehni
4a10fe33d3
Refactor and improve handling of boolean operators.
...
Also detect a case where all encountered segments are part of overlaps, and add parameter startInOverlaps that handles this situation.
Closes #870
2016-01-05 10:30:33 +01:00
Jürg Lehni
bcf000788e
Reduce GEOMETRIC_EPSILON again.
...
Reverting daaf625ebd
2016-01-04 12:53:30 +01:00
Jürg Lehni
34d4115061
Do not modify children array directly
...
Use Item#remove() to remove children, to make sure indices are kept in sync.
2016-01-04 11:12:56 +01:00
Jürg Lehni
1543d056a7
Add more boolean unit tests from known edge cases.
2016-01-04 11:01:42 +01:00
Jürg Lehni
9127b13a01
Use GEOMETRIC_EPSILON tolerance when filtering out short curves.
...
Aligning with tolerances in the rest of the library.
2016-01-04 10:38:51 +01:00
Jürg Lehni
daaf625ebd
Double GEOMETRIC_EPSILON to cover the last found edge case.
...
See https://github.com/paperjs/paper.js/issues/784#issuecomment-168614053
2016-01-04 10:02:58 +01:00
Jürg Lehni
88634d4d3d
The paper.browser object might not be initialized yet.
2016-01-03 01:23:17 +01:00
Jürg Lehni
26761f17a1
Some minor clean-ups for 55cf0bc1c7
.
2016-01-03 01:13:03 +01:00
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
957d303a0d
Make sure the key identifier is always lowercase.
...
Relates to #881
2016-01-02 13:58:05 +01:00
Jürg Lehni
afffdfdddd
Clean up comments a little.
2016-01-02 13:20:36 +01:00
Jürg Lehni
df09e14d53
Address keyIdentifier weirdness in Chrome on Ubuntu.
...
Closes #881
2016-01-02 13:17:24 +01:00
Jürg Lehni
ce1f04d76c
Remove reliance on downKey, since it may differ between keydown and keypress events.
...
Relates to #881 , but unfortunately does not fix it.
2016-01-02 13:02:20 +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
sapics
3f50aadf3b
Fix comment of rectangle.expand
2015-12-31 13:04:00 +09: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
511fc12dd4
Implement more special key lookups in new Key handling code.
...
Relates to #876 .
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
a1fcaabed6
Implement item comparison through rasterization and resemble.js diffing, directly integrated into QUnit.
...
And start using it for boolean operation unit tests.
2015-12-30 21:55:21 +01:00
Jürg Lehni
2596b81616
Add optional insert
parameter to #rasterize()
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
85f08825d7
Implement support for CSS blend-modes in SVGExport.
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
f34afbc19a
Clean up code from #856 a bit.
2015-12-30 21:55:19 +01:00
Jürg Lehni
d67796f655
Some more documentation work.
2015-12-30 21:55:19 +01:00
Jürg Lehni
8967193bb9
Improve SVG definition id parsing.
...
Closes #666
2015-12-30 21:55:19 +01:00
Jürg Lehni
cc1e58e243
Improve Chrome fix to handle wrong coordinates in both directions.
...
Closes #800 .
2015-12-30 21:55:19 +01:00
Jürg Lehni
21f4141e4f
Fix werid mouse event issue on Chrome / Windows.
...
Closes #800
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
b724a59901
Handle non-reversible matrix in Item#hitTest()
...
Closes #617
2015-12-30 21:55:18 +01:00
Jürg Lehni
f2f34c3b75
Some minor fixes in new #getItems() code.
2015-12-30 21:55:18 +01:00
Jürg Lehni
f2a44a5832
Remove Base#class again as it's causing issues in lookup tables.
2015-12-30 21:55:18 +01:00
Jürg Lehni
de532aac2f
Implement control over recursive iteration in #getItems()
...
Closes #853 .
2015-12-30 21:55:18 +01:00
Jürg Lehni
f95d6ab310
Fix bug in Item#getItems(function() {})
...
Closes #751
2015-12-30 21:55:18 +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
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