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
36cb88de4d
Write documentation for Project#addLayer() and #insertLayer()
...
Closes #903
2016-01-16 16:51:47 +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
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
16e42c68fd
Various minor documentation fixes (mainly capitalization).
2016-01-15 23:22:08 +01:00
Jürg Lehni
96c50abce2
Prevent exception when selecting not inserted segments.
2016-01-15 17:32:01 +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
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
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
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
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
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
e8390a76d8
Define Path#toShape() and Shape#toPath() as aliases to #clone().
2016-01-09 12:08:47 +01: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
93ba42259b
Fix the way multiple children with the same name are handled.
2016-01-08 16:42:41 +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
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
2539527864
Fix minification warnings.
2016-01-06 15:25:37 +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
5a16d0cd01
Implement proper handling of self-touching paths in resolveCrossings().
...
Closes #874 , #887
2016-01-06 10:53:50 +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
0e427c16a2
Fix some white-spaces in comments and HTML.
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
f34afbc19a
Clean up code from #856 a bit.
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
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
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
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
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
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
0badb3b3f4
A bunch of code clean-ups.
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
sapics
9c1c00c11e
Minor minification
2015-12-30 21:52:34 +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
8eb0dcc87d
Fix various JS linting problems.
2015-10-27 23:35:30 +01:00
sapics
502558a321
Fix variable leaks
2015-10-23 09:45:39 +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
e36319b71a
Give PathItem#getIntersections() a way to filter found intersections right away.
...
And use it in #getCrossings()
2015-09-21 10:41:59 -04:00
Jürg Lehni
ae93652b56
Clean up getIntersection() methods.
...
Now that they filter the results on the fly.
2015-09-18 17:31:23 +02:00
Jürg Lehni
71a7cc37e6
Many documentation clean-ups.
2015-09-06 17:20:01 +02:00
Jürg Lehni
b52d343527
Use same notation for all injection scopes.
2015-09-06 16:48:23 +02:00
Jürg Lehni
cf813faa75
Remove all mention of points and square points as units.
...
And some other doc clean-ups.
2015-09-06 16:37:10 +02:00
Jürg Lehni
31771aa01d
Insert results of boolean operations above whichever of the two paths appear further up in the stack.
2015-08-30 14:47:46 +02:00
Jürg Lehni
fd1f2e56f8
Optimize Item#intersects() by only checking to see if there are at least one intersection.
2015-08-25 11:45:28 +02:00
Jürg Lehni
af24af8916
Merge pull request #730 from sapics/raster.toDataURL
...
add param to raster.todataurl
2015-08-21 17:41:32 +02:00
Jürg Lehni
13b5e6ce22
Help JS minification.
2015-08-21 15:15:06 +02:00
Jürg Lehni
4cdc572824
Merge pull request #729 from sapics/item-matrix
...
setMatrix of item makes more useful
2015-08-21 15:11:49 +02:00
Jürg Lehni
3dd0f1fc1b
Introduce new option in SVGExport to not embed images.
...
Closes #696
2015-08-20 19:34:38 +02:00
Jürg Lehni
650bf5d616
Implement CORS support on Raster.
...
Closes #754
2015-08-20 19:14:33 +02:00
Jürg Lehni
2366e03265
Implement getItems(function() {}).
...
As requested in #751 .
2015-08-19 01:04:47 +02:00
Jürg Lehni
39ea409684
Fix issue with param.overlapping in #getItems()
...
Consider items fully contained inside the rectangle as overlapping as well.
Closes #751 .
2015-08-19 00:55:44 +02:00
Jürg Lehni
98edddc5ac
Include _pivot in cloning.
...
Closes #747
2015-08-17 14:47:56 +02:00
Jürg Lehni
65f085cc98
Have option.matchShapes control conversion to SVG polygon elements as well.
...
Closes #753
2015-08-17 14:18:22 +02:00
Jürg Lehni
ffb3ea8d15
Fix wrong URL in documentation.
2015-07-27 12:15:01 +02:00
Jürg Lehni
59b7da0ed5
Fall back to pixelRatio 1 when none is defined.
...
Required in Item#rasterize() for non-native blend modes. This broke phantomjs tests.
2015-07-27 09:56:37 +02:00
Jürg Lehni
cce42bc6f2
Filter out project
key in object literal constructor.
...
It was causing issues when running test suites in phantomjs.
2015-07-26 14:01:00 +02:00
sapics
d99b2be49a
add param to raster.todataurl
2015-07-14 10:17:20 +09:00
sapics
da2caa999e
item.setMatrix useful
2015-07-11 18:31:03 +09:00
sapics
d7a4dd2780
rect -> rectangle
2015-07-03 10:00:57 +09:00
Jürg Lehni
708e8d7834
Include documentation about importSVG() onLoad callbacks.
...
See #715 .
2015-06-23 09:40:11 +02:00
Jürg Lehni
4fde7ab37d
Add applyMatrix option to importSVG()
2015-06-16 17:52:34 +02:00
Jürg Lehni
b541088c6f
A whole lot of documentation clean-up.
2015-06-16 17:50:37 +02:00
Jürg Lehni
2cf6cd7a14
Correctly clone all attributes in Shape#toPath() and Path#toShape()
...
Also write documentation for both methods.
Closes #622 .
2015-06-16 14:30:40 +02:00
Jürg Lehni
ba12eec7f5
Some documentation clean-up.
...
- Prefer @return over @returns
- Place @see at the end, before @example
2015-06-16 14:08:34 +02:00
Jürg Lehni
c7281ee619
Properly handle bounds caching when items are empty first.
...
Closes #676 .
2015-06-15 19:04:15 +02:00
Jürg Lehni
6ec34fbb60
Replace Lenna with Marilyn.
2015-05-31 10:50:04 +02:00
Jürg Lehni
27bb8a356f
Implement unique ids, and fix issue with Base.deserialize()
...
Gradient and Symbol were overriding each other in the dictionary, and dictionary entries could not contain references to other dictionary entries.
Closes #690
2015-05-11 19:39:39 +02:00
Jürg Lehni
8e7829db5e
Remove obsolete comment about hitTest options merge
2015-04-12 15:07:26 +02:00
Jürg Lehni
48bc34b21f
Filter out deserialized dictionary in Base.deserialize()
...
Closes #637
2015-02-28 19:03:03 +01:00
Jürg Lehni
3b47d7ee89
Only draw Raster items when they're fully loaded.
...
Closes #645 .
2015-02-28 18:30:23 +01:00
Jürg Lehni
7c2492ac2a
Docs: Improve Item#applyMatrix.
2015-02-26 13:38:29 +01:00
Jürg Lehni
3c31c0e482
Have SVGImport respect the current PaperScope's applyMatrix setting.
2015-01-02 14:19:17 +01:00
Jürg Lehni
66c67fbe94
Improve insertion handling for Item and Layer so insertAbove() / insertBelow() works for Layers too.
...
Closes #603
2014-12-29 23:16:13 +01:00
Jürg Lehni
16105067bf
Correctly handle Item#insertChild(null)
2014-12-28 18:29:20 +01:00
Jürg Lehni
a307bc4d14
Implement recursively
parameter in Matrix#apply(), so matrices can be backed in recursively in children too.
2014-12-28 18:29:04 +01:00
Jürg Lehni
80e64ad0a9
Implement setters for Raster#width and #height, and properly handle these values being set in constructors, along with #size.
...
Closes #557 .
2014-12-28 18:27:32 +01:00
Jürg Lehni
c48f4d772e
Expose #className on all classes that define #_class
...
Closes #576
2014-11-30 11:13:51 -08:00