Commit graph

4971 commits

Author SHA1 Message Date
Jürg Lehni
d33fff31b8 Always access "global" constructors on window object now. 2016-01-26 20:33:19 +01:00
Jürg Lehni
77be5616b6 Include paper-core.js in load.js mechanism, and improve root folder guessing again. 2016-01-26 20:26:32 +01:00
Jürg Lehni
6a099003b2 Improve some comments about new file structure. 2016-01-26 20:14:49 +01:00
Jürg Lehni
e1a51f858a More work on unified version for browsers and node.
Relates to #739
2016-01-26 20:02:23 +01:00
Jürg Lehni
8b994ab640 Use paper.js indentation standard. 2016-01-26 17:02:08 +01:00
Jürg Lehni
87e6c0f2c3 Merge pull request #927 from sapics/minor-minifier
Simplify calculation in PathFitter
2016-01-26 17:00:02 +01:00
Jürg Lehni
a38834b81d Further refined code from 095cd47c1c 2016-01-26 16:59:27 +01:00
Jürg Lehni
15797903cf Update to jsdom v7.2.2 with https://github.com/tmpvar/jsdom/pull/1366 back-portedd. 2016-01-26 16:51:40 +01:00
Jürg Lehni
7781ecb76a Some minor cleanups. 2016-01-26 16:29:13 +01:00
Jürg Lehni
46f415ca81 More work on source-map support for node.js
Relates to #656
2016-01-26 12:38:58 +01:00
Jürg Lehni
c479ec9272 Start with transition to unified version.
Relates to #739
2016-01-26 11:41:49 +01:00
sapics
e8137ccedb Simplify calculation in PathFitter 2016-01-26 19:34:27 +09:00
sapics
095cd47c1c Minifier matrix._transformCoordinates function 2016-01-26 12:07:34 +09:00
Jürg Lehni
1ae95999d5 Fix CompoundPath#insertChildren() when passing children lists from otheer items. 2016-01-24 17:59:39 +01:00
Jürg Lehni
fb9bdb4b39 Fetch all dev-dependencies NPM instead of Bower. 2016-01-23 19:01:38 +01:00
Jürg Lehni
145135b4f5 Give tracePaths() the capability to deal with open paths.
Relates to #912
2016-01-23 11:40:22 +01:00
Jürg Lehni
36e31eb250 Implement better handling of Raster#source and Raster#toDataURL() on Node.js
Closes #914
2016-01-22 17:05:50 +01:00
sapics
ecc36ec3cc Remove unused variable in group._draw 2016-01-20 14:35:28 +09:00
Jürg Lehni
e4b03a7915 More code cleanup and simplifications in Matrix.
Relates to #915
2016-01-19 10:14:20 +01:00
sapics
627a63cc5b Fix matrix invert calculation 2016-01-19 16:08:39 +09:00
Jürg Lehni
6a0222ff21 Minor cleanup. 2016-01-18 11:03:30 +01:00
Jürg Lehni
8f0a2f37a0 Merge pull request #911 from sapics/hit-stroke
Add stroke hit-test option for shape items
2016-01-18 10:57:42 +01:00
Jürg Lehni
5cb4ab732b Improve code explanation in load.js 2016-01-18 10:21:28 +01:00
Jürg Lehni
503fe11e41 Fix build issues on Travis and improve version handling in Gulp.js and Prepro.js
This reverts commit eaceb1bfc3.
2016-01-18 09:56:02 +01:00
sapics
9c4296eda0 Add stroke hit-test option for shape items 2016-01-18 10:04:53 +09:00
Jürg Lehni
eaceb1bfc3 Some more work on gulp
Change the way versions are handled, and append the branch name if we're not publishing from master.
2016-01-18 01:18:57 +01:00
Jürg Lehni
4351ca310f Fix hit-testing on Shape items and #strokeScaling.
Closes #697.
2016-01-18 00:41:48 +01:00
Jürg Lehni
1ac8e46d55 Various fixes on handling of #strokeScaling and #strokeBounds calculations. 2016-01-17 23:57:56 +01:00
Jürg Lehni
ea7216d9fb Improve _getStrokeMatrix() fix to correctly handle nested matrices. 2016-01-17 23:39:28 +01:00
Jürg Lehni
fd72ad0937 Correctly handle #strokeScaling in Path item hit-tests.
Hit-testing of Shape items with #strokeScaling still needs fixing too.
Relates to #697.
2016-01-17 21:46:35 +01:00
Jürg Lehni
43a6c57cd6 Correctly handle #strokeScaling when calculating Path and Shape bounds.
Relates to #697
2016-01-17 20:27:25 +01:00
Jürg Lehni
40551fcacf Make Matrix#orNullIfIdentity() private too, and fix error introduced by previous commit. 2016-01-17 19:34:54 +01:00
Jürg Lehni
d292e08ed2 Various renaming and introduction of additional methods in Matrix
- Rename Matrix#concatenate() to #append() and #preConcatenate() to #prepend().
- Over #invert() as alternative to #inverted(), directly modifying the matrix.
- Make Matrix#_shiftless() and internal function.
- Introduce versions that return copies instead, named #appended(). (previously #chain()) and #prepended().
- Rename internal Path#_getPenPadding() to #_getStrokePadding().
2016-01-17 19:30:47 +01:00
Jürg Lehni
2ed9fae105 Fix issue with PaperScript compilation if no url is specified.
Also change a few related things:
- Move url in PaperScript#execute() into options object
- Document PaperScope#execute()

Closes #902
2016-01-17 17:32:23 +01:00
Jürg Lehni
c8bc179928 Big refactoring of the build process, now entierly Gulp based. 2016-01-17 04:32:28 +01:00
Jürg Lehni
36cb88de4d Write documentation for Project#addLayer() and #insertLayer()
Closes #903
2016-01-16 16:51:47 +01:00
Jürg Lehni
7783ebeed1 Explain reasons for /* jshint */ statements.
And consistently name Prepro.js
2016-01-16 15:37:02 +01:00
Jürg Lehni
00d2002b6f Follow convention for multi-line if-statements.
Relates to #907
2016-01-16 15:13:45 +01:00
Jürg Lehni
3a3d46692b Give view proper Matrix transformation functions, just like on Item.
Relates to #832
2016-01-16 15:10:28 +01:00
Jürg Lehni
b3e81af9b6 Merge pull request #907 from iconexperience/getMonoCurves-performance-improvement
Improve performance of _getMonoCurves() by filtering more curves
2016-01-16 15:09:16 +01:00
iconexperience
5de9558533 Add performance improvement of _getMonoCurves() by filtering curves that have end points and control points sorted in y direction. 2016-01-16 15:05:49 +01:00
Jürg Lehni
7fa013092e Define View#matrix, giving access to more fine-grained control over the view transformation.
Relates to #832
2016-01-16 14:25:11 +01:00
Jürg Lehni
2669d06642 Merge Item#_remove() and Layer#_remove().
And add Project#_changed(), so it can be called through #_getOwner().
2016-01-16 14:21:05 +01:00
Jürg Lehni
1e7faaa95f Replace Project#addChild(), #insertChild() with #addLayer() and #insertLayer()
Also replace #_addToProject() with new #_insertItem() helper, and streamline all #_insertSibling() related methods.

Relates to #903
2016-01-16 13:56:01 +01:00
Jürg Lehni
f60c984746 Update JSDoc. 2016-01-16 00:14:41 +01:00
Jürg Lehni
7f51ceaa34 Throw exception if segments or curves of wrong paths are passed to smooth() 2016-01-16 00:07:29 +01:00
Jürg Lehni
1bc2d2fffe Fix bug with mouse events in scripts without tools. 2016-01-15 23:45:58 +01:00
Jürg Lehni
884a0c54ad Update JSDoc, and some minor documentation changes. 2016-01-15 23:42:20 +01:00
Jürg Lehni
16e42c68fd Various minor documentation fixes (mainly capitalization). 2016-01-15 23:22:08 +01:00
Jürg Lehni
1e97b405ba Finish documenting #smooth(). 2016-01-15 20:14:56 +01:00
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