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