Commit graph

4910 commits

Author SHA1 Message Date
Jürg Lehni
085cdd74a2 Use GEOMETRIC_EPSILON when comparing curve start / end points.
Relates to #777
2015-09-12 21:56:53 +02:00
Jürg Lehni
2fb203ddd1 Adjust notes since we now support boolean operations on self-intersecting Paths items 2015-09-12 11:58:17 +02:00
Jürg Lehni
3da921a0b0 Improve CompoundPath#reduce() to properly reduce suppaths.
Relates to #779
2015-09-12 11:43:41 +02:00
Jürg Lehni
fb5f8c0115 Introduce GEOMETRIC_EPSILON, for isOrthogonal(), isCollinear() and overlap checks.
Relates to #777
2015-09-12 10:35:47 +02:00
Jürg Lehni
cdd0cee623 Activate resolving of self-intersections in boolean code.
Relates to #779
2015-09-12 10:24:19 +02:00
Jürg Lehni
35f3ac87bf Change checks for startConnected / endConnected to support compound-paths.
Closes #778
2015-09-12 10:12:17 +02:00
Jürg Lehni
86f404123e Minor code tweaks. 2015-09-11 12:07:27 +02:00
Jürg Lehni
c69ea345da Correctly handle self-intersections when deciding to switch segments.
Closes #765
2015-09-10 05:21:47 +02:00
Jürg Lehni
4770cfe2f8 Minor intersection refactoring clean up. 2015-09-10 05:18:56 +02:00
Jürg Lehni
04452730dd Simplify CurveLocation data structures.
Directly creating and linking intersections simplifies things a lot.
2015-09-09 17:17:49 +02:00
Jürg Lehni
78e0bae6aa Activate code that handles self-intersection directly now.
Relates to #765, #761
2015-09-09 08:24:02 +02:00
Jürg Lehni
abf70378fe Some more code fixes.
One was breaking unit tests.
2015-09-09 08:15:43 +02:00
Jürg Lehni
155442e706 Increase readability of convex-hull check in self-intersection code. 2015-09-09 08:12:03 +02:00
Jürg Lehni
70f8f1912f Some code clean-up. 2015-09-09 08:06:59 +02:00
Jürg Lehni
332b09c534 More curve interesection optimizations.
Only evaluate points if locations are actually added.
2015-09-09 07:46:48 +02:00
Jürg Lehni
dae8bb630b Avoid checking curves if completely out of control bounds.
This leads to a huge speed increase! Relates to #765
2015-09-09 07:34:28 +02:00
Jürg Lehni
1c1e19614e Avoid matching connected start- and end points when self-intersecting curves.
Partial fix for #765.
2015-09-09 07:28:08 +02:00
Jürg Lehni
3f53aa78ce Do not access curve objects for geometry since they might be subdivided.
Partial fix for #765
2015-09-09 07:26:39 +02:00
Jürg Lehni
b96036fb03 Fix strange curve check.
Something went wrong in prior refactoring here. Also, no need to check curve beginnings and ends again, just handles.
2015-09-09 06:25:37 +02:00
Jürg Lehni
98d7703b5c Finish implementing Curve#isStraight and #isLinear()
Closes #652
2015-09-06 18:02:15 +02:00
Jürg Lehni
31d9e1cd6e Implement Curve#isLinear() to check for parametrical linearity.
Along with some unit tests for it.
2015-09-06 17:56:12 +02:00
Jürg Lehni
9d12a0a82c Rename Curve#isLinear() to #isStraight()
Relates to #652
2015-09-06 17:35:27 +02:00
Jürg Lehni
9dab662a1f Clean-up various Segment and Curve tests.
Moving functionality back to Path#toShape() since it was too specific, and missleading as part of the exposed Segment API.
2015-09-06 17:27:33 +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
dd1f5ba3d1 Remove Path#isLinear() and use Path#getArea() instaed in boolean code. 2015-09-06 16:35:15 +02:00
Jürg Lehni
3d89cd71bd Some clean-up work on documentation. 2015-09-06 15:54:11 +02:00
Jürg Lehni
fa9eb8be99 Merge remote-tracking branch 'origin/develop' into boolean-fix
; Conflicts:
;	src/path/PathItem.Boolean.js
2015-09-06 15:36:40 +02:00
Jürg Lehni
cf4e5c2983 Fix typo. 2015-09-06 15:30:38 +02:00
Jürg Lehni
824b0c7e7e Remove legacy Color constructors. 2015-09-06 15:28:46 +02:00
Jürg Lehni
66717868cd Address failing #isLinear() tests. 2015-09-06 14:10:15 +02:00
Jürg Lehni
f91373efd8 Simplify Point#project() 2015-09-06 14:01:04 +02:00
Jürg Lehni
d7fb5cd512 Do not reduce linear curves with handles defined. 2015-09-06 13:21:08 +02:00
Jürg Lehni
26e35322a4 Some reworking of code and comments. 2015-09-06 13:20:57 +02:00
Jürg Lehni
8b67d8a1dc Remove #isStraight() in favor of #hasHandles() and implement #clearHandles()
Relates to #652
2015-09-06 12:47:35 +02:00
Jürg Lehni
3fa385ac7c Fix typo in previous commit. 2015-09-05 09:56:37 +02:00
Jürg Lehni
af355dc82c Fix false positives in Curve#isLinear() and Segment#isLinear(). 2015-09-03 09:01:07 +02:00
Jürg Lehni
041c31a88a Prevent variable leackage. 2015-09-02 15:54:14 +02:00
Jürg Lehni
b9a07ca538 Address code comments by @iconexperience in #762. 2015-08-31 22:01:18 +02:00
Jürg Lehni
215bbe2e8e Fix issue in Numerical.solveCubic() / solveQuadratic()
We need to include EPSILON tolerance in the comparison with bounds values.
2015-08-30 22:57:33 +02:00
Jürg Lehni
20222be5c6 Minor clean-up in fat-line code. 2015-08-30 19:59:13 +02:00
Jürg Lehni
0651eee0c2 No more need for special handling of 'subtract' overlaps.
This is now taken care of in the code that handles overlaps itself, and the additional code was causing additional issues.
2015-08-30 19:58:32 +02:00
Jürg Lehni
4379e0b0f0 Improve boolean debug code. 2015-08-30 19:56:17 +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
b4755ea699 Deactivate debug logging code. 2015-08-30 14:38:18 +02:00
Jürg Lehni
bd61390f9d improve break-off condition in curve interesection code.
To prevent arbitrary incorrect solutions occuring when tDiff is very close to zero.
Closes #762.
2015-08-30 14:37:21 +02:00
Jürg Lehni
27aae8b261 Add support for values array and toString object format to Curve constructor. 2015-08-30 14:14:52 +02:00
Jürg Lehni
8f13fa54fc Remove debugger statement. 2015-08-30 13:52:13 +02:00
Jürg Lehni
0cbce044aa Define Curve#_serialize() 2015-08-28 16:18:28 +02:00
Jürg Lehni
e07d8f55ea Add debug logging for intersections again. 2015-08-28 16:18:14 +02:00
Jürg Lehni
0e26b53053 Improve CurveLocation.sort() to handle more edge cases.
Relates to #648
2015-08-28 16:17:54 +02:00
Jürg Lehni
4ccb53ac68 Remove note about overlapping paths not working.
: D
2015-08-26 18:03:22 +02:00
Jürg Lehni
3ad897c943 Remove all boolean debug code.
Keeping it on the boolean-fix branch for now.
2015-08-26 17:47:18 +02:00
Jürg Lehni
da0d01ee09 More work on main boolean code.
Start addressing self-intersecting paths, and remove resulting open paths for now.
2015-08-26 17:36:20 +02:00
Jürg Lehni
d656c96191 Adjust #isCollinear() tolerance. 2015-08-26 17:09:40 +02:00
Jürg Lehni
86fd33c7d5 User correct tolerance in CurveLocation sorting. 2015-08-26 17:06:02 +02:00
Jürg Lehni
a099377ac6 Remove debug logging for CurveLocation. 2015-08-26 16:58:52 +02:00
Jürg Lehni
d85b4f0c80 Fix issues with wrong sorting of CurveLocation in Curve.filterIntersections() 2015-08-26 16:56:28 +02:00
Jürg Lehni
815991d556 Some minor adjustments and fixes. 2015-08-26 11:43:39 +02:00
Jürg Lehni
2c4dcb96c2 Streamline addOverlap() code a bit. 2015-08-26 11:26:55 +02:00
Jürg Lehni
69a2fcff46 Pass on correct matrix in CompoundPath#getPathData(). 2015-08-26 04:28:30 +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
7ca8ce3cbb Actually use selfOp argument for self operations.
Appears to be working fine.
2015-08-24 21:02:42 +02:00
Jürg Lehni
e242634011 Minor code clean-up. 2015-08-24 12:59:10 +02:00
Jürg Lehni
3946bcb04e Remove unnecessary segments between two collinear curves in Path#reduce() 2015-08-24 12:49:33 +02:00
Jürg Lehni
4be48cec16 A lot more work to correctly support overlapping edge cases in boolean operations: intersect(), exclude(), subtract() 2015-08-24 12:30:14 +02:00
Jürg Lehni
75f669d839 Implement proper method to determine which segment to choose when encountering overlaps. 2015-08-24 04:36:49 +02:00
Jürg Lehni
15bcf2a7aa More work on supporting overlaps in boolean operations other than unite(). 2015-08-23 22:42:57 +02:00
Jürg Lehni
68832e0690 Revert "Switch to using 0, 1 instead of tMin, tMax for tangents."
This reverts commit edfabcbbd8.

; Conflicts:
;	src/path/PathItem.Boolean.js
2015-08-23 21:48:16 +02:00
Jürg Lehni
92ec09f451 Some debug code fixes and improvements. 2015-08-23 21:34:41 +02:00
Jürg Lehni
85d21c84b8 Start implementing support for touching and overlapping shapes in boolean operations.
Relates to #449, #450, #648, #719
2015-08-23 21:19:19 +02:00
Jürg Lehni
edfabcbbd8 Switch to using 0, 1 instead of tMin, tMax for tangents.
getTangentAt() can handle that since a while now.
2015-08-23 09:43:28 +02:00
Jürg Lehni
157a60dee6 Fix spelling mistake. 2015-08-22 23:22:01 +02:00
Jürg Lehni
2eaaabf07c Merge pull request #759 from sapics/minor-fix-matrix
Minor fix to Matrix.js
2015-08-22 23:21:23 +02:00
Jürg Lehni
9bd399b5b8 Introduce Curve#isStraight() and use it in splitPath() and divide() to keep the result of splitting straight curves straight.
Do not use Curve#isLinear(), as that would include curves with collinear handles, and we don't want to set these straight.
2015-08-22 22:06:42 +02:00
Jürg Lehni
bddff95fe3 Remove workarounds in splitPath() thanks to improved precision of Numerical.solveCubic(). 2015-08-22 14:24:31 +02:00
Jürg Lehni
142ee6fd8a Shorten code a bit. 2015-08-21 17:42:33 +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
7d82491cce Release version v0.9.24 2015-08-21 16:59:35 +02:00
Jürg Lehni
716d21e369 Always use fat-line clipping since fallback doesn't behave the same way. 2015-08-21 16:39:41 +02:00
Jürg Lehni
caf6321caf Always include Http object. 2015-08-21 16:38:27 +02:00
Jürg Lehni
ec0e4fcd15 Remove unused build options. 2015-08-21 16:38:17 +02:00
Jürg Lehni
bae7fa435f Some minor clean-ups for #593. 2015-08-21 15:53:37 +02:00
Jürg Lehni
8f9e0f58fa Merge pull request #593 from megawac/helpers
Helpers
2015-08-21 15:53:06 +02:00
Jürg Lehni
5f50372b02 More optimizations and clean up in Base.equals() 2015-08-21 15:42:19 +02:00
Jürg Lehni
4f17aa376d Merge pull request #594 from megawac/equals
Refactor and optimize base equals
2015-08-21 15:36:51 +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
27b7063fc4 To avoid possible duplicate browser requests for PaperScript files, support the data-src attribute as well as src.
Closes #749.
2015-08-21 15:11:01 +02:00
Jürg Lehni
eb3628063c Handle missing keyup events for keys pressed while Command key is down on Mac.
Closes #630.
2015-08-21 13:56:44 +02:00
sapics
687eca9677 fix 2015-08-21 15:35:30 +09: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
0436b2749a Fix some comments. 2015-08-19 17:28:41 +02:00
Jürg Lehni
84b202fd79 Expose and reuse Curve evaluation method names. 2015-08-19 17:26:52 +02:00
Jürg Lehni
9fe93d1434 Move Curve evaluate() method to private scope. 2015-08-19 17:19:42 +02:00
Jürg Lehni
da82116501 Rework handling of weighted and normalized curve tangents and normals.
Relates to #563
2015-08-19 17:15:41 +02:00
Jürg Lehni
eb8c5b4a3e Handle em and pt font sizes correctly on Firefox.
Closes #734
2015-08-19 12:57:22 +02:00
Jürg Lehni
59eec1f27b Implement Curve#isLinear(), #isCollinear() & co without depending on the segments being part of a path. 2015-08-19 11:43:37 +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
e476672748 Use better epsilon values in Numerical.solveQuadratic() and solveCubic()
To finally satisfy both #541 and #708.

With this change in place, https://github.com/paperjs/boolean-test is also finally back to run with 0 errors. Woop!
2015-08-18 23:47:28 +02:00
Jürg Lehni
08bdfe585b Fix issue in getWinding() where rays were counted twice.
Closes #736.
2015-08-18 22:36:10 +02:00
Jürg Lehni
98edddc5ac Include _pivot in cloning.
Closes #747
2015-08-17 14:47:56 +02:00
Jürg Lehni
4ee68e5782 Various changes to #isCollinear(), #isOrthogonal(), #isArc()
- Rename #isArc() - > #isOrthogonalArc()
- Implement versions for Curve
- Write proper documentation
2015-08-17 14:33:48 +02:00
Jürg Lehni
f8314f927e Various changes on #isLinear(), #hasHandles() & co
Relates to #652

- Implement #hasHandles() on Path, Segment and Curve
- Remove Path#isPolygon()
- Define #isLinear() consistently across Path, Segment and Curve.
- Introduce new Segment#isStraight()
2015-08-17 14:31:23 +02:00
Jürg Lehni
97ca1f6ff8 Fix negation in previous commit. 2015-08-17 14:19:31 +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
Oleg Elifantiev
70766c47d5 Fixed typo in word 'async' 2015-08-05 11:46:54 +03:00
Jürg Lehni
10fb616665 Fixed leaked globals.
Detected using QUnit's "Check for Globals" feature!
2015-07-27 12:36:45 +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
b0255d9fc2 Bump version to v0.9.23 2015-06-23 17:03:39 +02:00
Jürg Lehni
4e2fba660d Merge pull request #717 from sapics/code-minifier
code minifier
2015-06-23 11:54:36 +02:00
Jürg Lehni
708e8d7834 Include documentation about importSVG() onLoad callbacks.
See #715.
2015-06-23 09:40:11 +02:00
sapics
e15b23f8af code minifier 2015-06-23 13:09:48 +09:00
Jürg Lehni
19bcd19b49 Implement path versioning for segment changes.
And use it to keep CurveLocation objects up to date. Closes #682
2015-06-16 19:36:22 +02:00
Jürg Lehni
c1485e7068 Use < instead of <= when comparing against TOLERANCE 2015-06-16 19:33:21 +02:00
Jürg Lehni
26cdbb6805 Fix typo: #isColinear() -> #isCollinear()
Keeping misspelled version around for a while.
2015-06-16 18:39:52 +02:00
Jürg Lehni
5812a70e08 Use EPSILON instead of TOLERANCE in Point#isColinear() and #isOrthogonal() (reverted from commit 5f0e545ba7) 2015-06-16 18:25:50 +02:00
Jürg Lehni
dbac9c06de Bring back private UIDs for Color.
SVG Export for multiple gradients was broken.
2015-06-16 18:12:40 +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
ecfa09e676 Handle SVG attributes in correct sequence.
Closes #694.
2015-06-16 15:54:29 +02:00
Jürg Lehni
7a6ee5d5f4 Do not implicitly close paths in SVG compound paths.
Closes #705
2015-06-16 14:49:54 +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
ce41447793 Prevent invalid invinite solutions in Numerical.solveQuadratic()
Closes #708
2015-06-16 12:30:25 +02:00
Jürg Lehni
e3f04478d9 Clean up Curve.getParameterOf() code. 2015-06-16 12:29:27 +02:00
Jürg Lehni
575436bafe Improve handling of SVG defs located in odd places.
Relates to #702
2015-06-16 12:21:19 +02:00
Jürg Lehni
917139bb3f Merge pull request #702 from jardakotesovec/Import-svg-defs-first
SVG Import defs first
2015-06-16 11:49:58 +02:00
Jürg Lehni
b26c6221f1 Fix PaperScript increment operator in rare special case.
Closes #691.
2015-06-15 23:43:03 +02:00
Jürg Lehni
572a51d2a7 Protect Emitter#emit() against handler list changes.
Closes #706.
2015-06-15 20:03:13 +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
Jarda Kotesovec
b6e48ad8d8 SVG Import defs first 2015-06-12 15:20:18 +02:00
Jürg Lehni
6ec34fbb60 Replace Lenna with Marilyn. 2015-05-31 10:50:04 +02:00
Jürg Lehni
6b428f5a37 Assume that Emiter#_evenTypes is not always defined.
Resolves https://github.com/paperjs/paper.js/pull/674#discussion_r30042363
2015-05-13 20:21:22 +02:00
Jürg Lehni
75c6db6986 Merge pull request #674 from rumman23/670-custom-events
custom events
2015-05-13 18:14:08 +02:00
Jürg Lehni
dd20df42da Allow the clearing of Color#highlight by setting to null.
Closes #688
2015-05-11 23:24:13 +02:00
Jürg Lehni
111d5c8f66 Merge pull request #681 from hackalyze/load-scripts-synchronously
Fix paperscript source from being executed out-of-order
2015-05-11 19:57:47 +02:00
Jan
ade1a1fda3 Change clone() function to fix issue #687
As described in issue #687, clone() ignored the 'radial' property. Added the property to the constructor in the clone() function to get the expected behaviour.
2015-05-11 19:43:15 +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
783d1622b9 Remove faulty character. 2015-05-11 19:15:52 +02:00
Chris Pawlukowsky
2ede4f0a6b It was possible for loadAll to execute paperscript source in a different order from the order the script tags appear in the HTML. This is due to the script source being retrieved asynchronously in loadScript in the call to Http.request. This fix retrieves paperscript source synchronously unless the HTML5 async attribute is included on the script element. 2015-04-18 10:23:44 -04:00
Jürg Lehni
8174405924 Include force parameter in View#update()
Closes #675.
2015-04-12 15:23:24 +02:00
Jürg Lehni
8e7829db5e Remove obsolete comment about hitTest options merge 2015-04-12 15:07:26 +02:00
rumman
8b24a33b17 unregistered events enabled in emitter 2015-04-07 22:33:48 +02:00
Jürg Lehni
7749641e66 Handle out-of-bounds offsets/parameters correctly.
Closes #660
2015-04-04 17:05:39 +02:00
Jürg Lehni
563a26f112 Clean up PathFitter fix a bit. 2015-04-04 15:54:34 +02:00
Jürg Lehni
66fbb9ee2a Merge branch 'fix-simplify-bug' of https://github.com/calamitas/paper.js into fix-simplify-bug 2015-04-04 15:35:37 +02:00
Jürg Lehni
143e71d8f9 Bump version to v0.9.22 2015-02-28 19:22:45 +01:00
Jürg Lehni
993a9df178 Simplify fix for #626 a bit.
Closes #626.
2015-02-28 19:20:48 +01:00
Jürg Lehni
8a625e0acd Merge pull request #627 from iam-TJ/issue_626
Issue 626: Don't try to iterate a null array
2015-02-28 19:18:50 +01:00
Jürg Lehni
5625563ed7 Merge pull request #643 from alexburner/patch-1
Fixing PlacedSymbol overflow
2015-02-28 19:08:05 +01: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
2002c4a3af Merge pull request #639 from iconexperience/master
Fix for #638 SVG export creates 'data-paper-data="null"' attribute if item._data is null
2015-02-28 18:33:53 +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
23ec75f5d2 Read CanvasView size correctly from arguments array. 2015-02-27 18:00:36 +01:00
Russell Vea
c0c8079913 Update to use jsdom v4 (document.defaultView vs. document.parentWindow). 2015-02-26 16:56:26 -10:00
Jürg Lehni
15813107c0 Remove unused variables. 2015-02-26 13:44:09 +01:00
Jürg Lehni
7c2492ac2a Docs: Improve Item#applyMatrix. 2015-02-26 13:38:29 +01:00
Alex Burner
9e95b8788a Fixing PlacedSymbol overflow
Initial value for `overflow` of svg elements is `visible`, but for elements that establish new viewports the value is overridden to `hidden`. A hidden overflow causes clipping of thick strokes, and may have additional consequences (I'm here because I was having trouble with my strokes).

As detailed in this issue: https://github.com/paperjs/paper.js/issues/642
2015-02-24 22:15:04 -08:00
Jonathan Puckey
3b70fcd603 Fix mistake in PaperScript reference - thanks to paperjs/paperjs.github.io/pull/5 2015-02-24 18:35:28 +01:00
Peter Vanbroekhoven
d5c25dbc52 Change PathFitter to constrain newly found control points.
See https://github.com/paperjs/paper.js/issues/414 .
2015-02-22 20:05:06 +01:00
Jan
1d8c662c98 Update SVGExport.js
Check for `'null'` before setting custom paper data attribute, because `JSON.stringify()` returns `"null"` (as a String object) if the argument is null.
2015-02-13 12:10:47 +01:00
Jan
c5ced798e8 Update SVGExport.js 2015-02-13 11:59:05 +01:00
TJ
d3af8483a8
Don't try to iterate a null array
Signed-off-by: TJ <hacker@iam.tj>
2015-01-26 21:21:46 +00:00
Jonathan Puckey
809c41b1cf Merge pull request #591 from ponychicken/detectAtomShell
Browser detection: Add Atom shell
2015-01-21 14:57:15 +01:00
Jürg Lehni
55e2f6610a Rename nRoots to count. 2015-01-10 22:06:11 +01:00
Jürg Lehni
22be259167 Deal with edge cases in Curve.solveCubic() where small cubics are very close to lines.
Also reduce Numerical.EPSILON again, as required by some rare edge cases.

Relates to #541.
2015-01-10 22:05:42 +01:00
Jürg Lehni
665d154c95 Simplify control-flow in Numerical.solveCubic() a bit. 2015-01-10 17:57:37 +01:00
Jürg Lehni
814512f562 No need to check solutions for bounds again. 2015-01-05 22:01:56 +01:00
Jürg Lehni
efaae89dfc No need to add 0. 2015-01-05 21:47:15 +01:00
BrownBear2
4d36a2d6f4 fixed svg path parsing for arcs with more than one definition 2015-01-05 21:32:21 +01:00
Jürg Lehni
1c758a415a Switch to new and improved Line.getSignedDistance() in fat-line clipping code as well. 2015-01-05 16:20:33 +01:00
Jürg Lehni
920469426e Remove the harmony version of Number.isFinite() in favor of the generally available global isFinite() for now. 2015-01-05 16:17:11 +01:00
Jan
60ddc68e56 Improve Line.getSignedDistance()
Improved code is shorter, faster, and should product results with higher precision.
2015-01-05 15:16:45 +01:00
Jürg Lehni
1803cd216a Handle empty paths in Path#join()
Closes #516
2015-01-05 00:42:00 +01:00
Jürg Lehni
6562f861ab More code clean-up. 2015-01-05 00:13:30 +01:00
Jürg Lehni
9977b6ab68 Some code clean-up. 2015-01-05 00:09:34 +01:00
Jürg Lehni
72bd150a34 Fix the rest of the failing tests that 6c6ad76c94 had caused.
Also closes #610.
2015-01-04 23:59:25 +01:00
Jürg Lehni
5f3df1f5a1 Fix some failing tests with PathItem#contains(), introduced by commit 6c6ad76c94 2015-01-04 23:28:39 +01:00
Jürg Lehni
5d875f2d83 Clean up code formatting. 2015-01-04 22:37:27 +01:00
Jürg Lehni
8928eaffd0 Merge branch 'refs/heads/master' into boolean-operations 2015-01-04 22:00:55 +01:00
Jürg Lehni
7e80e19e32 Insert results of boolean operations above the first path. 2015-01-04 21:59:31 +01:00
Jürg Lehni
d522e4aec2 Merge remote-tracking branch 'origin/master' into boolean-operations
Conflicts:
	src/path/PathItem.Boolean.js
2015-01-04 21:29:50 +01:00
Jürg Lehni
9f0a774fd0 Fix newly introduced error in clean-up. 2015-01-04 18:07:02 +01:00
Jürg Lehni
1239eb55ec Minor clean up in Curve.filterIntersections(). 2015-01-04 17:47:41 +01:00
Jürg Lehni
77193e1465 Clean-up new splitPath() code. 2015-01-04 17:37:15 +01:00
hkrish
718af4527f Boolean: handle linear segments correctly.
Earlier implementation was unfinished and did not reset some handles to
linear, this caused the winding to be miscalculated.

Conflicts:
	src/path/PathItem.Boolean.js
2015-01-04 17:30:19 +01:00
Jürg Lehni
afc14b9634 Reduce Numerical.TOLERANCE to 1e-6, and use the same value across the boolean code.
Yields very good results now, across all tests.
2015-01-04 15:54:50 +01:00
Jürg Lehni
3564dafa93 Do not keep iterating if the curve was reduced to a point. 2015-01-04 13:23:59 +01:00
Jürg Lehni
d33d65fcc2 Revert change in recursion threshold as the new code reaches the desired precision earlier. 2015-01-04 13:21:12 +01:00
Jürg Lehni
cca6606f72 Reduce the amount of path reversing required.
We don't need paths at clockwise / counter-clockwise orientation. We simply need them oriented the same way, or the opposite way.
2015-01-04 01:51:27 +01:00
Jürg Lehni
390ef324f2 Find a better implementation for exclude() boolean operations, requiring only one pass instead of two. 2015-01-04 01:50:24 +01:00
Jürg Lehni
f0f98daf69 Apply @hkrish's fix in 3781aedb22 to Line.getSignedDistance as well.
Relates to #554
2015-01-04 00:53:56 +01:00
hkrish
3781aedb22 Small but critical fix on getSignedDistance method
when the line is perfectly vertical, return the difference between x values depending on the side. The earlier "l1y" is a silly mistake.
2015-01-03 23:41:47 +01:00
Jürg Lehni
5c184e381b Merge remote-tracking branch 'origin/master' into boolean-operations
Conflicts:
	src/path/PathItem.Boolean.js
2015-01-03 21:09:31 +01:00
Jürg Lehni
4371e92191 Reduce EPSILON to 1e-13.
Reducing further to 1e-14 starts producing new issues in boolean operations code.
2015-01-03 21:03:13 +01:00
Jürg Lehni
b6a4815d03 Remove Curve#isHorizontal() as its implementation and precision is specific to boolean operations. 2015-01-03 21:02:12 +01:00
Jürg Lehni
46d7717812 Use standard values for tMin / tMax when calling getTangentAt() tracePaths() 2015-01-03 20:59:20 +01:00
Jürg Lehni
6bb6002d1a No need to double tolerances here. 2015-01-03 20:35:51 +01:00
Jürg Lehni
68c53534d6 Use the same precision in PathItem#getIntersections() when handling curve time parameters as in the rest of the library.
TOLERANCE instead of EPSILON.
2015-01-03 20:25:57 +01:00
Jürg Lehni
3e67f72393 Some code clean-up. 2015-01-03 20:25:12 +01:00
Jürg Lehni
51ec3325e3 Remove the need to store winding samples in array and sort.
Calculating the average winding value instead yields the same results.
2015-01-03 11:25:10 +01:00
Jürg Lehni
26f209c835 Implement better strategy for handling edge cases in winding samples. 2015-01-03 11:24:27 +01:00
Jürg Lehni
a854c55914 Split off code from Path.Clockwise() into Curve.getEdgeSum() 2015-01-03 01:46:22 +01:00
Jürg Lehni
80e1a54171 Dirty temporary fix for new median winding code that struggles with circles. 2015-01-03 01:17:48 +01:00
Jürg Lehni
5da0ae5c3c Better handle of edge values in Path#split().
Closes #515 & #538
2015-01-03 01:07:51 +01:00
Jürg Lehni
98686ef888 Fix endless recursion in CompoundPath#reduce() 2015-01-03 00:51:06 +01:00
Jürg Lehni
5e654ca64e Reducing an empty CompoundPath should replace it with an empty Path. 2015-01-03 00:46:45 +01:00
Jürg Lehni
e195db2567 Handle empty paths in Path#reorient()
Closes #548
2015-01-03 00:46:24 +01:00
Jürg Lehni
001561decb Remove the dependency of Math.random() from boolean operation code.
Closes #473
2015-01-03 00:32:06 +01:00
Jürg Lehni
bb2fece225 Restructure code that determines median winding contribution. 2015-01-03 00:26:13 +01:00
Jürg Lehni
5f0e545ba7 Use EPSILON instead of TOLERANCE in Point#isColinear() and #isOrthogonal() 2015-01-02 23:48:34 +01:00
Jürg Lehni
538eac6dc7 Use smaller tolerances in winding code, to address edge cases.
Closes #559
2015-01-02 23:47:26 +01:00
Jürg Lehni
6359738618 Do not offset bounds in cubic solver by MACHINE_EPSILON, as this is how comparisons are performed with values offset by tolerances elsewhere in the library.
Doing it differently here produced various errors in fat-line clipping and boolean code.
2015-01-02 23:14:19 +01:00
Jürg Lehni
70e34ef705 Merge remote-tracking branch 'origin/master' into boolean-operations
Conflicts:
	src/path/Curve.js
	src/util/Numerical.js
2015-01-02 22:41:38 +01:00
Jürg Lehni
f0fdb804ec Reduce value of EPSILON to the lowest amount that does not cause issues in boolean-test. 2015-01-02 22:37:36 +01:00
Jürg Lehni
477527f8ec Implement more intuitive version of clipConvexHull(), outlined in #570 by @iconexperience
Code further shortened using a sub-routine.
2015-01-02 22:36:04 +01:00
Jürg Lehni
232739fae9 Add comments to fat-line clipping code linking to issues #568 and #571. 2015-01-02 22:34:09 +01:00
Jürg Lehni
a2208f218c Merge branch 'refs/heads/master' into boolean-operations
Conflicts:
	src/util/Numerical.js
2015-01-02 21:46:28 +01:00
Jürg Lehni
cdfd21ddd3 Switch to using new cubic solver by @hkrish 2015-01-02 21:44:29 +01:00
Jürg Lehni
51739e6e27 Merge remote-tracking branch 'origin/master' into solve-cubic
Conflicts:
	src/path/PathItem.Boolean.js
2015-01-02 21:26:04 +01:00
Jürg Lehni
8ad067ec6c Use tolerance when comparing curve locations by parameter. 2015-01-02 21:20:28 +01:00
Jürg Lehni
4ed9ef54f2 Fix bug in Curve.filterIntersections() and clean up code a bit. 2015-01-02 21:19:18 +01:00
Jürg Lehni
b2261fd512 Introduce Curve.filterIntersections() and use it both in PathItems#getIntersections() and Curve#getIntersections() 2015-01-02 21:00:05 +01:00
Jürg Lehni
3302a7dff5 Increase recursion threshold to 4 when checking for fatline convergence. 2015-01-02 20:49:09 +01:00
Jürg Lehni
fbd026ea0d Bring back code removed by @hkrish in commit 5fb75593c2
Relates to issue #570, still required to figure out why it is still needed.
2015-01-02 20:02:45 +01:00
Jürg Lehni
74844d8a2b Use hullEpsilon in all comparisons of curve time values in fat-line clipping code.
Addresses first half of issue #568
2015-01-02 17:33:04 +01:00
Jürg Lehni
41c0584f35 Merge remote-tracking branch 'origin/master' into solve-cubic 2015-01-02 16:37:50 +01:00
Jürg Lehni
e3e3d13fa5 Add comment regarding issue #565 2015-01-02 16:33:15 +01:00
Jürg Lehni
b75def3f3a Implement optimal values in fat line clipping code for maximum recursion and curve time difference, as determined by @iconexperience.
Closes #565
2015-01-02 16:29:12 +01:00
Jürg Lehni
91865be8a3 Merge remote-tracking branch 'origin/master' into solve-cubic
Conflicts:
	src/basic/Line.js
	src/path/Curve.js
	src/path/PathItem.Boolean.js
	src/util/Numerical.js
2015-01-02 16:21:18 +01:00
Jürg Lehni
45c86a3035 Switch to suggested new implementation of Line.getSignedDistance() by @iconexperience
Closes #554
2015-01-02 16:17:19 +01:00
Jürg Lehni
878be7962e Merge branch 'refs/heads/master' into solve-cubic
Conflicts:
	src/path/Curve.js
	src/path/PathItem.Boolean.js
	src/util/Numerical.js
2015-01-02 15:33:23 +01:00
Jürg Lehni
95a8539045 Fix size issue on non-resizable HiDPI canvases.
Reverting back to original behavior in #586.
2015-01-02 14:38:06 +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
a07dc98046 Clean up and simplify code from pull request #580 and fix CSS in examples accordingly. 2014-12-30 00:16:51 +01:00
Jürg Lehni
dfda6cf7b5 Merge branch 'true-resize-canvas' of https://github.com/georeith/paper.js into georeith-true-resize-canvas 2014-12-29 23:56:57 +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
83dd2034c3 Fix issue where cloned TextItems get always inserted into the scene graph.
Closes #606
2014-12-28 19:43:38 +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
1de750bc77 Check for Path#closed in Path#equals() 2014-12-28 18:10:14 +01:00
Jürg Lehni
7bc6da5401 Do not create entries in Style#_values for default values. 2014-12-28 18:03:41 +01:00
Jürg Lehni
fb890b2c8a Implement Symbol#equals() 2014-12-28 18:03:19 +01:00
Jürg Lehni
9adbc3774a Implement unit test comparators for many more types, and start refactoring compareItems() helper. 2014-12-28 16:41:23 +01:00
Jürg Lehni
28538d8a43 Clean up code from #597 a bit. 2014-12-26 06:42:46 +01:00
Jürg Lehni
71e2af9d70 Merge pull request #597 from byte-foundry/simplify_closed
fix #572 Handle closed path in PathFitter
2014-12-26 06:30:56 +01:00
Jürg Lehni
b816337e18 Remove legay.js since we're about to hit 2015.
Closes #592
2014-12-26 06:21:56 +01:00
Jürg Lehni
4d6f5c259c Remove non-breaking space.
Closes #602.
2014-12-17 20:07:14 -08:00
louisremi
a9bf0b097e Handle closed path in PathFitter 2014-12-15 14:56:25 +01:00
Graeme
4d641fe5ff Examples to resolve #526 2014-12-14 13:07:43 -05:00
Graeme
5060a18263 Reuse the Tool mousedrag handlign logic for mousemove 2014-12-13 14:52:14 -05:00
Graeme
4837df715f Use keys loop in serialize 2014-12-13 12:05:42 -05:00
Graeme
65df4d079e Refactor and optimize base equals 2014-12-13 11:59:37 -05:00
Graeme
c6208db025 Refactor Base._set 2014-12-13 11:47:03 -05:00
Leo Koppelkamm
f1348931bb Browser detection: Add Atom shell
As it a an unsual mix of both node and browser environment at the same time
2014-12-12 20:53:12 +01:00
George Reith
6f1c3145bf Fixes #580 where resizable views were only taking into account their offset from the top left of the viewport. 2014-12-04 13:01:02 +00:00
Jürg Lehni
f193acf31b Fix transformation sequence to correctly handle combined rotate and scale commands.
Closes #583
2014-12-02 22:31:20 -08:00
Jürg Lehni
318209e9e9 Replace compareNumbers() with equals() and improve numerical tolerance handling in test helpers. 2014-11-30 11:27:14 -08:00
Jürg Lehni
c48f4d772e Expose #className on all classes that define #_class
Closes #576
2014-11-30 11:13:51 -08:00
Jürg Lehni
ed31476dea Bump version to v0.9.21 2014-11-22 19:23:35 -08:00
Jürg Lehni
7f6bb63683 Correctly handle white-space before first matrix value when handling transform SVG attribute.
Closes #531.
2014-11-22 09:01:01 -08:00
Jürg Lehni
912f7ad629 Allow injection of additional undefined fields through object literal constructors and #set(). 2014-11-18 15:24:40 -08:00
Jürg Lehni
d5471c480f Always return emitter from #on() 2014-11-18 15:05:14 -08:00
Jürg Lehni
19a9976939 Return emitter in #on(), #off(), #once(), so calls can be chained. 2014-11-18 14:56:55 -08:00
Jürg Lehni
0fb7e49248 Return a LinkedPoint from Item#scaling.
Closes #544,
2014-11-09 07:46:45 -08:00
Jürg Lehni
892c1a28bd Some code clean-up. 2014-11-08 17:26:43 -08:00
Jürg Lehni
4ab6446e16 Handle horizontal lines properly in Line.getSignedDistance()
Closes #546.
2014-11-08 17:26:13 -08:00
Jürg Lehni
ebdc63fbfa Use correct formula in Curve#getTangentAt() for end-points when there is no handle.
Closes #553.
2014-11-08 17:16:22 -08:00
Jürg Lehni
bfd3a91df0 Simplify Emitter.inject() a bit, as we only need to handle _events in the first injection scope. 2014-10-21 23:52:53 +02:00
Jürg Lehni
a39eea64e9 Improve docs sequence a bit. 2014-10-20 23:55:24 +02:00
Jürg Lehni
6e9ff38c15 Fix spelling mistakes in docs. 2014-10-20 23:45:33 +02:00
Jürg Lehni
e7707cd354 Implement match.inside and match.overlapping in #getItems(match).
Closes #275
2014-10-20 23:35:47 +02:00
Jürg Lehni
99ef521af4 Switch from inline @option tags to real doc tags. 2014-10-20 23:33:28 +02:00
Jürg Lehni
c25548031b Clean up documentation for Project#getItems() / Item#getItems(). 2014-10-20 22:44:15 +02:00
Jürg Lehni
82b988327d Update docs to use the newly introduced {@option} tag to docuemnt option-style objects. 2014-10-20 22:41:45 +02:00
Jürg Lehni
782bde238c Find a more general implementation for Item#intersects(item). 2014-10-20 18:00:07 +02:00
Jürg Lehni
5ddbc5b07f Implement Item#intersects(item) 2014-10-20 17:00:18 +02:00
Jürg Lehni
b3c7be67fc Support optional hidden matrix argument in #getIntersections()
...in order to provide an alternative matrix for the passed path to check against.
2014-10-20 16:53:49 +02:00
Jürg Lehni
4eb06f0849 Implement Item#isInside(rect). 2014-10-20 16:51:28 +02:00
Jürg Lehni
ad50e9f604 Change the way the optional matrix argument is handled in bounds getters.
Before it was treated as the paren't matrix and the child's was concatenated to it, but it's more logical and useful to just use it as the full replacement matrix instead.
2014-10-20 16:50:33 +02:00
Jürg Lehni
62e5f3b3ac Improve / streamline Matrix documentation a bit. 2014-10-20 16:47:41 +02:00
Jürg Lehni
616e848376 Implement handling of empty and editable in #getItems(), and simplify code a bit. 2014-10-18 14:32:21 +02:00
Jürg Lehni
e7fd751765 Fix docs issues with Item#matches() 2014-10-18 13:40:36 +02:00
Jürg Lehni
3be1e481e9 Preserve line-breaks when replacing mathematical operators, to not mess with debugging. 2014-10-15 15:30:56 +02:00
Jürg Lehni
be82af9b47 Implement Item#matches(name, compare), along with Item#matches(match). 2014-10-15 15:09:44 +02:00
Jürg Lehni
77f6e68846 Remove documentation for deprecated #attach() methods. 2014-10-15 13:01:59 +02:00
Jürg Lehni
0894e625b0 Fix documentation issues with Path#get*At()
Closes #537.
2014-10-15 13:00:50 +02:00
Jürg Lehni
e5714584ff Fix return type of #getCurvatureAt() methods.
Closes #535 properly this time.
2014-10-15 12:02:21 +02:00
Jürg Lehni
b71e2c69d6 Fix documentation of Curve#getCurvatureAt(), as well as Path#getCurvatureAt() & co.
Closes #535
2014-10-14 13:52:57 +02:00
Jürg Lehni
862867ecd2 Bump Acorn version. 2014-10-09 00:17:16 +02:00
Jürg Lehni
3b2a82047e Clean up event related comments, to reflect recent renaming. 2014-10-08 18:33:17 +02:00
Jürg Lehni
68585276a0 Rename ui folder to event. 2014-10-08 18:32:55 +02:00
Jürg Lehni
f4a36b7cd4 Remove all Palette and Component related code, as it is separated into its own project.
https://github.com/lehni/palette.js
2014-10-08 17:43:03 +02:00
Jürg Lehni
f29f3c8b11 Some code clean-up. 2014-10-08 16:36:22 +02:00
Jürg Lehni
8983953ccc Do not export internal Http module. 2014-10-08 15:58:11 +02:00
Jürg Lehni
3c8331a94e No longer export DomElement and DomEvent.
These are undocumented and meant to be private. They may change a lot still.
2014-10-08 15:55:12 +02:00
Jürg Lehni
a457228846 Fix formatting issues. 2014-10-08 15:52:41 +02:00
Jürg Lehni
c7c49d4091 Time to go with the flow and use the on()/off()/emit() pattern for events. 2014-10-08 14:57:56 +02:00
Jürg Lehni
3dc5c94e25 Rename Callback mix-in to Emitter. 2014-10-08 14:13:08 +02:00
Jürg Lehni
d2c2b0a7fd Implement ruler component, and only use palettejs-input id for actual inputs that can have labels. 2014-10-08 00:24:27 +02:00
Jürg Lehni
2217bc2c29 Only expose observed component value in values object if it was already defined there initially.
It seems like too much magic to expose values defined on components there too.
2014-10-08 00:23:52 +02:00
Jürg Lehni
d4c509b4d4 Allow finding of palettes by their ids. 2014-10-07 23:42:40 +02:00
Jürg Lehni
369fcfc7cf Add disabled class to components that have enabled = false. 2014-10-07 23:42:03 +02:00
Jürg Lehni
a92b8eb591 Correctly name boolean getters. 2014-10-07 23:41:26 +02:00
Jürg Lehni
c405c78d41 Implement #element getters to get the native DOM element on Palette and Component. 2014-10-05 12:35:33 +02:00
Jürg Lehni
90d088e708 Switch to object literal constructor for Palette and support props.parent, to set a palette's parent in the DOM. 2014-10-05 12:33:40 +02:00
Jürg Lehni
689e150bb7 Use <span> for text components so they can have a suffix as well. 2014-10-05 12:18:18 +02:00
Jürg Lehni
ca730cd76e Rename _input to _element since it can be other things than <input>, and simplify <button> handling. 2014-10-05 11:17:53 +02:00
Jürg Lehni
8344ea9639 Switch from <input type="button"> to <button> for button components, and allow #text as an alias to #value for better semantics. 2014-10-05 11:14:02 +02:00
Jürg Lehni
6e4c2ebc64 Use an injection loop to produce all methods that simply forward from Palette to root Component. 2014-10-05 00:23:16 +02:00
Jürg Lehni
5456f1a595 Clean up DOM code a bit. 2014-10-05 00:19:47 +02:00
Jürg Lehni
9fec267dd4 Implement table captions through Palette#title / Component#title. 2014-10-05 00:11:29 +02:00
Jürg Lehni
b9af3af6f4 Bring back change event to Palette. 2014-10-04 19:51:10 +02:00
Jürg Lehni
6b9a40d987 Improve documentation of components code. 2014-10-04 19:46:44 +02:00
Jürg Lehni
5f7fd42bcb Add comment about layout components. 2014-10-04 19:39:17 +02:00
Jürg Lehni
ddc7675c13 Improve Component layout class name handling. 2014-10-04 19:35:26 +02:00
Jürg Lehni
22d79948a0 Rename horizontal to columns 2014-10-04 19:02:56 +02:00
Jürg Lehni
73529f0170 Merge Pane functionality into Component.
Work in progress.
2014-10-04 18:58:11 +02:00
Jürg Lehni
e46a1d24da Move View classes to their own folder.
That's not really UI.
2014-10-04 16:51:58 +02:00
Jürg Lehni
5b71dabba2 Rename 'pane' Component to 'column'. 2014-10-02 20:02:04 +02:00
Jürg Lehni
aa73083d4f Make sure nested components are available through the components hierarchy. 2014-10-02 19:41:39 +02:00
Jürg Lehni
4ef4a293ea Expose child components. 2014-10-02 19:20:03 +02:00
Jürg Lehni
fe019f926e Fix Component#setSuffix() 2014-10-02 18:59:26 +02:00
Jürg Lehni
88bc14f597 Clean up Pane code a bit. 2014-10-02 18:45:51 +02:00
Jürg Lehni
8907662524 Use this._set() instead of Base.set(), since it filters for existing properties. 2014-10-02 18:35:03 +02:00
Jürg Lehni
fd6741ce5a Implement Component type 'pane' and merge more functionality with 'row'. 2014-10-02 18:16:38 +02:00
Jürg Lehni
99d46b4478 Restructure Component constructor to facilitate upcoming 'pane' Component type. 2014-10-02 17:09:40 +02:00
Jürg Lehni
85fbc94f41 Move Palette related functionality form Pane to Palette constructor. 2014-10-02 17:09:08 +02:00
Jürg Lehni
e1fba03b34 Make Component#enabled work for row type. 2014-10-02 17:02:26 +02:00
Jürg Lehni
f4c4522c18 Remove references to this in DomElement os we can call method references directly, and always check el for null. 2014-10-02 17:00:40 +02:00
Jürg Lehni
7194d4bcf0 Fix palette labels and improve CSS id / class structure. 2014-10-02 16:30:27 +02:00
Jürg Lehni
54de02149b Implement 'row' type component, for multiple components per row in palettes. 2014-10-02 16:05:56 +02:00
Jürg Lehni
09a4defb73 Separate Palette into Pane and Palette to prepare for nested UIs. 2014-10-02 09:45:19 +02:00
Jürg Lehni
47c225a782 Fix typo.
As reported by https://github.com/paperjs/paperjs.org/pull/7
2014-10-02 01:03:39 +02:00
Jürg Lehni
139adc72de Implement object literal constructor for Palette. 2014-09-30 08:20:44 +02:00
Jürg Lehni
d6481bcb5b Implement Component#enabled and Palette#enabled 2014-09-30 08:20:18 +02:00
Jürg Lehni
021ba59c54 Implement Component#visible. 2014-09-30 08:16:26 +02:00
Jürg Lehni
c7970e367d Always set Component#value at the end of all other values.
Closes #365.
2014-09-29 17:15:33 +02:00
Jürg Lehni
24a80dca27 Remove debug logging. 2014-09-29 16:12:50 +02:00
Jürg Lehni
3cb84842ff Remove forced colon in label, so we can add it optionally through CSS instead. 2014-09-29 15:46:29 +02:00
Jürg Lehni
214ac10d57 Add support for Component#suffix, to define a linked label that should appear after the input element. 2014-09-29 15:46:04 +02:00
Jürg Lehni
c2cb3e3342 Improve Palette and Component code.
- Only create label elements when they are set for the first time.
- Give created elements clear class and id names.
2014-09-29 15:41:14 +02:00
Jürg Lehni
e541b10e89 Move user-agent code to PaperScope and expose through PaperScope#browser. 2014-09-29 13:07:02 +02:00
Jürg Lehni
6a11532322 Clean up and simplify code a bit further. 2014-09-28 11:49:46 +02:00
Jürg Lehni
7462fe0b70 Fix Curve.getParameterAt() for negative values of offset, and implement unit test.
Closes #524.
2014-09-28 11:44:38 +02:00
Jürg Lehni
df190b6a47 Rearrange Project code for better doc sequence. 2014-09-27 22:53:37 +02:00
Jürg Lehni
2c9e15b070 Clean up comments. 2014-09-27 22:53:00 +02:00
Jürg Lehni
c87ce4de4c Implement Item#replaceWith(item)
Closes #454
2014-09-27 22:52:37 +02:00
Jürg Lehni
91539e6bc5 Commit changes forgotten in 6450430b68 2014-09-27 22:51:22 +02:00
Jürg Lehni
6450430b68 Implement new strategy regarding Project#activeLayer:
- By default, no layer is created for any project.
- Project#activeLayer is a getter for the hidden #_activeLayer property. When it is called and no layer exists, one is created on the fly.
- Creating any other items creates a layer if none exists (was already the case).
2014-09-27 22:31:49 +02:00
Jürg Lehni
2dce6c4efa Some code clean-up in Segment#_changed() 2014-09-27 22:09:25 +02:00
Jürg Lehni
cc8b23894c Some clean up related to hidden _uncached parameter. 2014-09-27 22:03:54 +02:00
Jürg Lehni
b8530935a7 Streamline CurveLocation#getTangent/Normal/Curvature getter definitions to align with definitions in Curve, Path and PathIterator. 2014-09-27 22:03:20 +02:00
Jürg Lehni
8b4f59962e Allow better code compression by removing repeated variable access on this. 2014-09-27 22:00:46 +02:00
Jürg Lehni
dd99db8d2d Allow 'false' as well as 'off' for hidpi attribute, since that's what's in use for other attributes as well. 2014-09-26 18:03:37 +02:00
Jürg Lehni
762113230a Implement Item#parentToLocal() and #localToParent()
As outlined in #530
2014-09-25 17:53:08 +02:00
Jürg Lehni
3389687c42 Do not check typeof module.exports === 'object', since it will be the Base constructor function after straps.js is included.
Closes #461
2014-09-25 16:46:34 +02:00
Jürg Lehni
5046a6a64c Fix naming of PathIterator#get*At functions. 2014-09-24 12:32:07 +02:00
Jürg Lehni
4adab91a18 Remove unused argument. 2014-09-23 17:51:29 +02:00
Jürg Lehni
48e9447c47 Avoid error when SVG path data does not contain any 'm' commands.
Fixes #529
2014-09-22 17:44:15 +02:00
Jürg Lehni
ee27fe820f Check for valid parameter range in Curve#getLocationAt() and delegate to it in #getLocationOf() 2014-09-20 11:09:09 +02:00
Jürg Lehni
c94fb3038f Use valid parameter range [0,1] in calls to Curve.solveCubic(). 2014-09-20 11:08:20 +02:00
Jürg Lehni
c2465b60fa Transform the correct amount of points in Curve.getValues() when a matrix is provided. 2014-09-20 11:06:25 +02:00
Jürg Lehni
e5995527e8 Support Point argument reading for Style#shadowOffset. 2014-09-19 18:43:00 +02:00
Jürg Lehni
52dd24097f Define PathIterator#getPoint(), #getTangent(), #getNormal() and #getCurvature(). 2014-09-11 16:06:00 +02:00
Jürg Lehni
67d30f0042 Actually use maxRecursion and tolerance arguments in PathIterator, and increase precision in #flatten() a bit. 2014-09-11 15:20:04 +02:00
Jürg Lehni
73765e6654 Produce Path#getPointAt(), #getTangentAt(), #getNormalAt() & #getCurvature() in a loop, just like for Curve. 2014-09-10 11:21:06 +02:00
Jürg Lehni
50c5c6736c Rename PathFlattener to PathIterator and include the class in exports. 2014-09-10 02:20:00 +02:00
Jürg Lehni
1db4fb4064 Refactor PathFlattener code and add maxRecursion and tolerance arguments to constructor. 2014-09-09 18:32:41 +02:00
Jürg Lehni
7d69ef1864 Fix documentation of bean properties that are not read-only.
@bean can only be used when the property is read-only or both getters and setters are present in the scope.
2014-08-26 10:01:30 +02:00
Jürg Lehni
73751040b7 Bump version to v0.9.20 2014-08-25 14:48:05 +02:00
Jürg Lehni
99b06b061c Correctly match variables to be exposed at the beginning of PaperScripts. 2014-08-25 14:21:13 +02:00
Jürg Lehni
8574c1ebf6 Return the created scope from PaperScript.load() 2014-08-25 13:21:58 +02:00
Jürg Lehni
a564480522 Forgotten in previous commit. 2014-08-25 12:53:13 +02:00
Jürg Lehni
797a393c9a Remove various double white-spaces. 2014-08-25 12:49:14 +02:00
Jürg Lehni
bcc8761f8c Improve PaperScript#load() documentation. 2014-08-25 12:42:44 +02:00
Jürg Lehni
72f16eb1c3 Handle data-paper-ignore like any other Paper attribute, allowing the ignore="true" short-form as well. 2014-08-25 12:34:08 +02:00
Jürg Lehni
93dfd2a15a Remove debugger statement. 2014-08-25 12:24:30 +02:00
Jürg Lehni
c03e9961d2 Allow PaperScript.load(script) to only load specific scripts, and define / improve documentation. 2014-08-25 12:21:27 +02:00
Jürg Lehni
992366246d Ignore hash when comparing PaperScript URLs. 2014-08-25 12:20:58 +02:00
Jürg Lehni
4b19f99183 Improve user agent matching code in PaperScript.
Fixes #511.
2014-08-20 18:54:00 +02:00
Jürg Lehni
6b4f728a72 Bring back support for paper.setup('id') again, and document it properly.
Closes #510.
2014-08-20 16:53:31 +02:00
Jürg Lehni
db1ccd1d1e Restructure includes. 2014-08-20 16:44:36 +02:00
Jürg Lehni
6faf61e6ef Fix incompatibility with jsdom 1.0.0-pre.1
Closes #513
2014-08-20 15:06:13 +02:00
Jürg Lehni
9da6325f49 Fix wrong __options comments. 2014-08-16 19:27:25 +02:00
Jürg Lehni
48cb05a181 Replace tabs with 4 white-spaces. 2014-08-16 19:24:54 +02:00
Jürg Lehni
687199e95d Fix some whitespaces. 2014-08-16 19:18:36 +02:00
Jürg Lehni
a2b7f9fc11 Remove __options.stats and load Stats library automatically only when in dev mode on the browser. 2014-08-16 19:11:16 +02:00
Jürg Lehni
21c9f97450 Update version handling and comments in options.js 2014-08-16 18:49:35 +02:00
Jürg Lehni
bcd3fe2493 Bump version to v0.9.19 2014-08-16 18:31:53 +02:00
Jürg Lehni
5aa4a8300e Move 'data-paper-scope' attribute handling out of PaperScope into browser related code in PaperScript.
Closes #508
2014-08-16 18:24:45 +02:00
Jürg Lehni
288b8553e7 Support PaperScript code with only one line and no breaks. 2014-08-16 18:22:43 +02:00
Jürg Lehni
15d79bbefb Introduce isRoot argument in SVGExport code as well, to make sure that top-most node holds all the style information.
Relates to #509
2014-08-16 17:32:24 +02:00
Jürg Lehni
4e9fc558ac Prevent double-application of styles when importing #document SVG nodes.
Closes #509.
2014-08-16 17:31:42 +02:00
Jürg Lehni
53b00b40e1 Move isRoot parameter last in SVGImport code. 2014-08-16 17:27:14 +02:00
Jürg Lehni
ce4e6053ec Try un-prefixed name before various prefixes, to prevent console warnings. 2014-08-15 18:00:32 +02:00
Jürg Lehni
3ac9a4f369 Use local parent short-cut variable. 2014-08-15 15:38:28 +02:00
Jürg Lehni
4d4a39c752 Implement Curve#getOffsetOf(point) / Path#getOffsetOf(point)
Closes #463.
2014-07-31 19:01:37 +02:00
Jürg Lehni
da22161d28 Correctly clear Curve length cache when segments change.
Closes #497
2014-07-31 17:00:52 +02:00
Jürg Lehni
c90a7c9f38 Only use the unmerged setting for #strokeScaling, as otherwise it'll be used on layers and groups already.
Closes #500
2014-07-29 23:39:51 +02:00
Jürg Lehni
06366fb0ed Support prefixed UpdateExpressions and fix a bug in suffixed UpdateExpression when assigning to plain variables.
Related #492
2014-07-26 12:40:00 +02:00
Jürg Lehni
54f0197eba Correctly handle UpdateExpressions (a++, a--) that are directly following AssignmentExpressions.
Closes #492
2014-07-26 12:29:05 +02:00
Jürg Lehni
6e6df750f0 Use names less likely to be used in code for Operator Overloading handlers. 2014-07-26 12:28:00 +02:00
Jürg Lehni
12254f5fe8 Fix two documentation errors in Raster.
Closes #495
2014-07-26 12:07:36 +02:00
Jürg Lehni
d96368a941 No need to convert strings to elements in View.create anymore, since PaperScript handles this already. 2014-07-26 12:07:14 +02:00
Jürg Lehni
0198f4c45f Reuse PaperScope objects when associating multiple scripts with the same canvas.
Closes #504.
2014-07-26 12:03:34 +02:00
Jürg Lehni
e0ec2bf2c3 Throw more meaningful error when CanvasView cannot be created from inexistent element. 2014-07-26 11:41:21 +02:00
Jürg Lehni
56704b9206 Fix a bug in Item#_removeNamed() for items without parents.
Closes #490.
2014-07-25 21:08:14 +02:00
Jürg Lehni
04a0c995bc Keep Math.acos() argument between -1 and 1.
Closes #482.
2014-07-25 21:01:58 +02:00
Jürg Lehni
4fab100e71 Improve CommonJS support a bit. 2014-07-25 20:10:20 +02:00
Jürg Lehni
652dbe1e86 Use loop to produce CurveLocation getters, and add CurveLocation#curvature. 2014-07-25 20:05:44 +02:00
Jürg Lehni
d3d9e4bada Improve some injection blocks. 2014-07-25 20:05:26 +02:00
Jürg Lehni
3c14a5ad05 Merge pull request #462 from jbielick/master
add commonJS export in browser environment export
2014-07-25 20:04:08 +02:00
Jürg Lehni
dc375d4c76 Correctly match the use of the unary operator $_ in PaperScript.
Closes #502
2014-07-23 12:17:55 +02:00
Jürg Lehni
3093a8ec43 Introduce matrix.chain(mx) as a shortcut to Matrix.clone().concatenate(mx)
Simplifies quite a few lines of code.
2014-07-08 15:43:17 +02:00
Jürg Lehni
66360bf58a Fix minor documentation bug. 2014-07-08 15:43:17 +02:00
hkrish
ccbf4579fd Don't remove the only intersection.
The previous code wrongly compared an intersection with itself while checking for duplicates.
2014-06-21 10:31:07 +02:00
hkrish
6c6ad76c94 Handle overlapping intercepts in getIntersection,
In a more robust way. Restricting ranges in parameter is not a nice way
to handle endpoint intersections.
2014-05-17 13:43:46 +02:00
Jürg Lehni
5384a63238 Improve Item. _clearBoundsCache() fix. 2014-05-15 21:33:30 +02:00
Jürg Lehni
a7f57315a6 Fix Item._clearBoundsCache() recursion, correctly this time. 2014-05-15 21:30:06 +02:00
Jürg Lehni
a1c1fc8ed8 Fix an issue in _clearBoundsCache where circular recursion could happen in certain circumstances. 2014-05-15 21:24:09 +02:00
Jürg Lehni
f39b7603de Remove pixelRatio handling from CanvasProvider and move it to Item#draw() 2014-05-15 17:14:37 +02:00
Jürg Lehni
af5e1609dd Fix an issue where CompoundPath wouldn't draw correctly if children had styles that forced non-direct compositing. 2014-05-15 17:09:58 +02:00
Jürg Lehni
98f2e08775 Fix SVG export when view is zoomed. 2014-05-15 16:26:19 +02:00
Jürg Lehni
c0a911d3c7 Rename Raster#ppi to#resolution, and deprecate #ppi. 2014-05-15 15:36:24 +02:00
Jürg Lehni
9d7ec13724 Update prepro.js to version that can evaluate whole expressions, and fix a newly introduced issue with it. 2014-05-14 15:14:03 +02:00
Jürg Lehni
f38d3ee674 Handle view size and transformation correctly when exporting SVG.
Closes #277.
2014-05-14 13:29:20 +02:00
hkrish
e5e2a8d7d4 Revert "Correct boolean condition in getWinding."
This reverts commit fcc2e93daf.
2014-05-13 20:41:48 +02:00
hkrish
fcc2e93daf Correct boolean condition in getWinding.
Also clarify the condition using braces
2014-05-13 20:14:53 +02:00
Jürg Lehni
aac98f2b25 Some code clean-up. 2014-05-13 13:54:31 +02:00
Jürg Lehni
a4f922cf26 Fix newly introduced error in SVG export. 2014-05-13 13:52:20 +02:00
Jürg Lehni
6896535663 Bring back accidentally removed ctx.beginPath(); 2014-05-13 13:51:09 +02:00
Jürg Lehni
846c806034 Implement non-scaling strokes through Style#strokeScaling.
Closes #418.
2014-05-13 13:38:51 +02:00
Jürg Lehni
68db4f9b59 Forgotten in previous commit. 2014-05-13 13:23:37 +02:00
Jürg Lehni
4464950301 Correctly take Item#matrix into account in #getPathData(). 2014-05-13 13:21:59 +02:00
Jürg Lehni
94bc6427c2 Export SVG transforms for path items correctly.
Needed when Item#applyMatrix = false
2014-05-13 12:53:58 +02:00
Jürg Lehni
f56efd6471 Fix exceptions in ProxyContext when drawing bitmaps. 2014-05-13 12:33:39 +02:00
Jürg Lehni
e1ed7f3294 Prevent drawing selected compound path children twice. 2014-05-12 18:57:09 +02:00
Jürg Lehni
ea8518c3a5 Use the correct change notification when reversing paths. 2014-05-12 16:44:48 +02:00
Jürg Lehni
8560a71312 Remove srcOffset and dstOffset parameters from Matrix#_transformCoordinates(). 2014-05-08 13:54:05 +01:00
Jürg Lehni
c64f177583 Simplify linearHandles code changes a bit. 2014-05-08 10:48:22 +01:00
Jürg Lehni
6aaeb81869 Simplify Item#_isUpdate() code a bit. 2014-05-07 17:27:53 +01:00
Jürg Lehni
bb6e1e686f Improve some comments. 2014-05-07 17:22:25 +01:00
Jürg Lehni
2412942d04 Fix SVG export for Item#visible, and import display attributes correctly.
Closes #471.
2014-05-07 16:59:57 +01:00
Jürg Lehni
56389a3929 Make sure _updateVersion also works for items and children of items with opacity == 0.
Closes #469.
2014-05-07 16:57:39 +01:00
Jürg Lehni
41c0d8f759 Implement onImport / onExport callbacks for SVG Import / export.
... and illustrate its functionality by importing Inkscape's transform-center attributes to pivots and exporting them again.
2014-05-05 20:48:30 +02:00
Jürg Lehni
312e670b22 Update Item#_updateVersion in Item#draw() before bailing out when items are invisible.
Closes #469.
2014-05-05 20:13:36 +02:00
Jürg Lehni
74d14ecf0c Fix PaperScript support on Node.js
Closes #470.
2014-05-05 20:10:29 +02:00
hkrish
4cc2deb3f8 Remove the debug code in curve#solveCubic
The cubic and quadratic solver has been tested with > 2 million
equations as of now. We need more rigorous tests however.
2014-05-05 18:48:30 +02:00
hkrish
1c9d1de380 Boolean: handle linear segments correctly.
Earlier implementation was unfinished and did not reset some handles to
linear, this caused the winding to be miscalculated.
2014-05-05 18:46:39 +02:00
hkrish
10c5b389c7 Pre-condition the coefficients in quadratic solver
We need well conditioned quadratics to guarantee numerical accuracy.
2014-05-05 18:44:15 +02:00
hkrish
6662209e15 Update the Machine Epsilon parameter.
Used in numerical routines.
2014-05-05 18:40:56 +02:00
Jürg Lehni
87e72744ea Fix PaperScript.parse() for use with load.js 2014-04-30 17:08:43 +02:00
Jürg Lehni
735150d165 Minor adjustments in new source map code.
Handle empty code properly.
2014-04-30 17:04:58 +02:00
Jürg Lehni
2d702d0247 Directly expose Acorn parser through PaperScript.parse(), and replace options.inline with options.source. 2014-04-30 16:40:11 +02:00
Jürg Lehni
c36712758b Expose Acorn through PaperScript object. 2014-04-30 16:27:43 +02:00
Jürg Lehni
43f319e762 Remove support for Esprima as Acorn.js does everything we need. 2014-04-30 16:26:04 +02:00
Jürg Lehni
e96ec6a2f1 Remove breakpoint support again in PaperScript as this code is better placed in sketch. 2014-04-30 16:25:38 +02:00
Jürg Lehni
5e6d0377f4 Support adding breakpoints to PaperScript. 2014-04-30 13:37:07 +02:00
Jürg Lehni
9e45d7f5eb Automatically detect PaperScript code inlined on page. 2014-04-30 12:32:08 +02:00
Jürg Lehni
af9b3cd5c6 Simplify source-map support since all browser appear to require the shifting of inlined code. 2014-04-30 11:47:15 +02:00
Jürg Lehni
43bc9f14da Add more comments and clean up code a bit. 2014-04-30 11:39:05 +02:00
Jürg Lehni
d91aac52b4 Check in initial support for source-maps in PaperScript.
Probably needs more testing and work.
2014-04-30 11:34:02 +02:00
Jürg Lehni
8317aacc1b Split Item#hitTest() into separate private function that does need to do arguments reading, for improved performance also when iterating over children. 2014-04-29 20:06:48 +02:00
Jürg Lehni
fce31599a5 Use _dontMerge for #getSelectedColor() on both item and layer, and have style getters on item pass on _dontMerge to the style object. 2014-04-29 19:40:46 +02:00
Jürg Lehni
bd07305435 Move selection drawing code to separate function and fix slowdowns in determining of selection color.
Closes #466 & #464.
2014-04-29 18:52:33 +02:00
Jürg Lehni
0168e41be0 Add old cubic solver code for comparison, and use console.log() in Curve.solveCubic() to log values with different results. 2014-04-29 00:11:13 +02:00
Jonathan Puckey
04e90ec3f4 Improve PathItem#getIntersections(path, sorted) docs. 2014-04-28 18:58:19 +02:00
Jonathan Puckey
1d905f5c58 Path: add docs for Style Tests group and move Path#isInserted() to Hierarchy Tests group. 2014-04-28 18:41:40 +02:00
Jonathan Puckey
8c32dda435 Make View#projectToView(point) and View#viewToProject(point) show up in the docs. 2014-04-28 18:29:16 +02:00
Jonathan Puckey
ba98c91509 Fix SVGElement parameter type in docs. 2014-04-28 18:23:14 +02:00
Jonathan Puckey
efb5bf5cf5 Improve Project#isEmpty() docs. 2014-04-28 18:20:22 +02:00
Jonathan Puckey
ff5630ac07 Project#clear() docs. 2014-04-28 18:19:56 +02:00
Jonathan Puckey
2b712959f2 Path: Improve docs of the 'Positions on Paths and Curves' group. 2014-04-28 18:12:44 +02:00
Jürg Lehni
ab8ef47d68 Switch to new cubic solver code by @hkrish. 2014-04-28 16:44:46 +02:00
Jürg Lehni
a9618b50f8 Small fix in Segment#linear. 2014-04-28 16:43:11 +02:00
Jürg Lehni
ad4f74a872 Fix bugs when dynamically loading paper.js source code in Node. 2014-04-28 16:42:06 +02:00
Jürg Lehni
e851090c81 Fix bug in item object literal constructor when providing parent as property after other values that depend on hierarchy being defined already. 2014-04-28 15:12:55 +02:00
Jürg Lehni
364c31b0f6 Remove TODOs for already implemented functions. 2014-04-28 14:25:15 +02:00
Jürg Lehni
42945825e8 Fix all argument assignment TODOs. 2014-04-28 14:22:50 +02:00
Jonathan Puckey
af84a52af8 Move around Item#isInserted() code so it shows up in the Tests group section in the docs. 2014-04-27 23:59:01 +02:00
Jonathan Puckey
12d7756892 Add more matching docs. 2014-04-27 23:40:43 +02:00
Jonathan Puckey
f0db48a77f More work on Project#getItems(match) docs. 2014-04-27 23:08:42 +02:00
Josh
572f3e06ff add commonJS export in browser environment export 2014-04-27 12:53:14 -04:00
Jürg Lehni
320caa56d1 Add support for line dash to ProxyContext. 2014-04-27 17:36:31 +02:00
Jürg Lehni
c5b317600a Support comparing colors with string values in Color#equals(). 2014-04-27 11:16:22 +02:00
Jonathan Puckey
46ef242e46 Documentation for Project#getItems(match) 2014-04-25 17:00:48 +02:00
Jürg Lehni
19630d6229 Fix spelling mistakes. 2014-04-24 19:34:49 +02:00
Jürg Lehni
28e759a28a fix spelling mistakes. 2014-04-21 10:30:38 +02:00
Jürg Lehni
28871534c2 Always use tolerance 0 in mouse event hit-tests.
Mouse events should imitate native events, so they can also be partly replaced by them on some backends (e.g. SVG).
2014-04-21 10:30:38 +02:00
Jürg Lehni
9ccba17fbe Clean up white-space, comments and jshint errors. 2014-04-14 18:29:26 +02:00
Jürg Lehni
d0d4b29856 Fix bugs in bounds caching algorithm. 2014-04-13 18:31:01 +02:00
Jürg Lehni
6af797bbad Optimize handling of property object in Item constructor.
Only check for values if it is a plain object, and avoid inserting into DOM twice if parent is specified.
2014-04-13 18:12:19 +02:00
Jürg Lehni
ee729622e0 Correctly handle Raster#setImage(null) 2014-04-13 18:11:34 +02:00
Jürg Lehni
ea81df6572 Fix spelling mistakes. 2014-04-13 17:03:44 +02:00
Jürg Lehni
db2bdf84af Allow the JS optimizer to better do its thing by creating local references to repeatedly used class variables. 2014-04-13 16:44:49 +02:00
Jürg Lehni
dafdd0ae28 Avoid double-insertion of root layer when importing JSON directly into it. 2014-04-13 16:44:00 +02:00
Jürg Lehni
397c81e060 Switch from options.type to options.class in Item#hitTest(), to reflect recent change in Item#getItems(). 2014-04-13 16:43:20 +02:00
Jürg Lehni
a931a2530c Implement options.curvesoption for hit-testing curves regardless of stroke settings. 2014-04-11 14:57:58 +02:00
Jürg Lehni
d12607dd44 Use a Base object for PaperScope#settings and update straps.js to version that offers Base#set(). 2014-04-11 13:32:06 +02:00
Jürg Lehni
1f7cb30fa5 Correctly transform Item#pivot when #matrix is applied to an item's contents.
Closes #452 and defines unit tests to cover this bug.
2014-04-11 13:18:27 +02:00
Jürg Lehni
86277f0578 Reversing path direction needs to trigger a GEOMETRY change. 2014-04-10 22:37:11 +02:00
Jürg Lehni
8ab4df1979 Fix a bug where the selection of compound path children doe not get drawn when the ctx.currentPath optimisation is in use. 2014-04-10 22:28:21 +02:00
Jürg Lehni
eea4e533a4 Support type: Class filters in hit-testing code too. 2014-04-10 22:27:03 +02:00
Jürg Lehni
61c2b11938 Serialize #applyMatrix before #matrix, because in deserialization its setting will affect how #matrix is read.
Closes #451.
2014-04-09 11:57:25 +02:00
Jürg Lehni
60f6eca6c4 Do not keep the view's matrix baked into _globalMatrix, since we might allow multiple views soon. 2014-04-07 17:35:17 +02:00
Jürg Lehni
66b1087d33 Have boolean operation result inherit styles from the left-hand item in the operation.
Closes #445.
2014-04-07 12:18:04 +02:00
Jürg Lehni
64aaabbc2e Export PaperScope reference into PaperScript as well, so the global paperalways points to the current scope. 2014-04-07 11:53:32 +02:00
Jürg Lehni
2111e76804 Bump version to v0.9.18 2014-04-07 11:26:37 +02:00
Jürg Lehni
495e10e408 Exclude empty Item#data objects in SVG export.
Closes #363.
2014-04-07 11:24:38 +02:00
Jürg Lehni
f953331edb Implement correct selection drawing for CompoundPath.
Closes #402.
2014-04-07 11:22:25 +02:00
Jürg Lehni
b8f1cfea9f Support linked gradients.
Closes #441.
2014-04-07 01:18:17 +02:00
Jürg Lehni
46ac9052c8 Some more JSON package file reformatting. 2014-04-07 00:35:08 +02:00
Jürg Lehni
1d0c6e09ba Move version store to options.js and update the various JSON package files from there. 2014-04-06 14:47:45 +02:00
Jürg Lehni
f002c633a7 Remove trailing white spaces and ensure newlines at the end. 2014-04-06 13:48:03 +02:00
Jürg Lehni
fe064e9cc3 Switch from dist/paper.js to dist/paper-full.js and explain the different versions in the README.
Closes #422.
2014-04-06 13:44:19 +02:00
Jürg Lehni
95bcdac57c Capture command + key combinations in key handling.
Closes #379.
2014-04-06 13:02:52 +02:00
Jürg Lehni
09d0f5f389 Correctly handle paths with only one segment in hit-testing code.
Closes #430.
2014-04-04 12:08:20 +02:00
Jürg Lehni
dfacc16788 Fix regular expression in Style#getFontStyle() 2014-04-03 17:19:07 +02:00
Jürg Lehni
c0d11ea98e Fix hit-testing of PlacedSymbols.
Closes #428
2014-04-03 09:21:12 +02:00
Jürg Lehni
ee7c604ec0 Remove unused matrix parameter in PlacedSymbol#_hitTest() 2014-04-03 09:19:36 +02:00
Jürg Lehni
748256abb9 Fix broken documentation for Item. 2014-04-02 21:04:39 +02:00
Jürg Lehni
59da291d54 Remove tabs in examples in favor of 4 spaces.
To remove all these annoying JSHint complaints.
2014-04-02 21:03:35 +02:00
Jürg Lehni
fa9786b344 Switch to new simpler convention for control of beans creation in straps.js 2014-04-02 20:53:18 +02:00
Jürg Lehni
4d52867b4a Fix spelling mistakes and white-spaces. 2014-04-02 20:52:13 +02:00
Jürg Lehni
4108e9487b Add optional joining behavior to PathItem#closePath() again and use it in #setPathData(). 2014-03-31 19:33:38 +02:00
Jürg Lehni
0dca10d192 Take view#matrix into account when calculating and handling global matrices.
But make sure Item#globalMatrix returns a transformation without View#matrix factored in. Closes #440.
2014-03-31 19:28:00 +02:00
Jürg Lehni
17fb1fb862 Some Straps.js related code changes. 2014-03-31 19:27:04 +02:00
Jürg Lehni
7c447c8c5a Move segment merging logic from Path#closePath() to Path#join()
Closes #435
2014-03-31 18:14:58 +02:00
Jürg Lehni
e0120b8f58 Fix spelling mistakes. 2014-03-31 18:13:54 +02:00
Jürg Lehni
92331a62c3 transformations will always be defined at this point of the code. 2014-03-31 18:13:36 +02:00
Jürg Lehni
eb29e72195 Support reading default canvas size.
Closes #438.
2014-03-31 17:59:53 +02:00
Jürg Lehni
a81063a994 Replace all unsupported Curve#getLength(from, to) calls with #getPartLength(from, to) 2014-03-30 14:17:02 +02:00
Jürg Lehni
c464f9ce1b Make sure Segment#getLocation() always determines the right value for CurveLocation#parameter
Half the solution for #437.
2014-03-30 14:16:03 +02:00
Jürg Lehni
4ca43ef2c3 Some documentation fixes. 2014-03-29 10:21:57 +01:00
Jonathan Puckey
400bc69159 Remove unnecessary commas.
Found using jscritic.com.
2014-03-28 14:02:39 +01:00
Jonathan Puckey
01dbfe705c Fix accidental leaking of variables to the global scope.
Found using jscritic.com
2014-03-28 13:46:51 +01:00
Jürg Lehni
8c45786759 Fix a regression in Style#fontSize.
Closes #432.
2014-03-26 16:58:43 +01:00
Jürg Lehni
e453b90ad2 Remove unused variable. 2014-03-20 17:26:22 +01:00
Jürg Lehni
7233c82084 Fix wrong call of _clearBoundsCache() on child.
Closes #426.
2014-03-20 17:20:26 +01:00
Jürg Lehni
aeeba4d58d Implement ChangeFlag.INSERTION notification to know when an item was inserted in a new parent inside the DOM. 2014-03-18 15:28:29 +01:00
Jürg Lehni
946e0d5b2c Fix spelling mistakes. 2014-03-18 15:25:25 +01:00
Jürg Lehni
e998083156 Rename Shape#shape to Shape#type. 2014-03-18 12:47:54 +01:00
Jürg Lehni
3dae48acf4 Bring back accidentally removed support for pixelRatio in CanvasProvider. 2014-03-18 12:42:28 +01:00
Jürg Lehni
09d90a21bc Support legacy #type filtering again in #getItems(), and offer an alternative through instanceof checks with #class and #constructor property. 2014-03-18 12:39:55 +01:00
Jürg Lehni
d28bac0734 Support Firefox 3.6 still, with surprising little effort.
Why, I don't really know :)
2014-03-18 12:38:29 +01:00
Jürg Lehni
62f7b0d73e Simplify and merge Item#getItems() code with Project#getItems() 2014-03-18 11:47:50 +01:00
Jürg Lehni
833d71f7ea Remove Item#type and replace it with Item#className, the non-hyphenated version of #type. 2014-03-18 11:42:38 +01:00
Jürg Lehni
f115072e8c Rename HIERARCHY change-flag to more precise CHILDREN. 2014-03-17 18:59:10 +01:00
Jürg Lehni
1df20c3794 Fix comments in Symbol#_changed() 2014-03-17 18:58:44 +01:00
Jürg Lehni
0aa73d90c5 Change the way context dependent font sizes are handled by delegating handling to view.
Closes #425
2014-03-17 16:41:57 +01:00
Jürg Lehni
2b4ecfa669 Remove unused pixelRatio code from CanvasProvider. 2014-03-17 16:41:11 +01:00
Jürg Lehni
f3524ed0e2 Only draw selection if global matrix was calculated for the item. 2014-03-17 15:17:39 +01:00
Jürg Lehni
2a3f0646f0 Fix exception in _getMonoCurves() when path is empty.
Closes #427.
2014-03-17 14:58:40 +01:00
Jürg Lehni
438de7013a Correctly handle groups as clipping masks.
Closes #370.
2014-03-17 14:51:47 +01:00
Jürg Lehni
0fe52a7d39 Implement an optimization in _changed() notifications where not all curves need to updated if only segments change that already have told their curves about the change. 2014-03-17 14:35:33 +01:00
Jürg Lehni
72ba453ba2 Define Path#reorient() and simplify preparePath() 2014-03-17 10:04:09 +01:00
Jürg Lehni
e04946e250 Simplify CompoundPath#reorient() code. 2014-03-17 10:03:49 +01:00
Jürg Lehni
7372c14f0c Expose reorientPath() functionality as Path#getInteriorPoint() and CompoundPath#reorient() 2014-03-17 09:48:00 +01:00
Jürg Lehni
6d47824a69 Merge remote-tracking branch 'origin/master' into bool-cleanup
Conflicts:
	src/path/PathItem.Boolean.js
2014-03-16 22:48:08 +01:00
Jürg Lehni
2a08a88461 Avoid calling #moveTo() twice in SVG 'zm' path data sequence. 2014-03-16 22:44:46 +01:00
hkrish
b193cf0fe8 More precise handling of islands and holes in reorient path 2014-03-15 16:15:55 +01:00
Jürg Lehni
db1d87b843 Fix GradientStop.readAll() call that was omitted in the recent function signature change. 2014-03-14 15:43:16 +01:00
hkrish
b1fca8d3dc Merge branch 'master' into bool-cleanup
* master: (36 commits)
  Avoid dividing with zero while splitting curves
  Implement propper support for pointer events and MSPointer events.
  Clean up white-space.
  WinGums: Some more code clean-up.
  WineGum example: Untangle the offset calculation code a bit.
  WineGum example: Some more style changes.
  Some more simplifications and style changes.
  Convert to cleaner OOP style.
  Precalculate side points again for better performance.
  Optimise WineGums example.
  Change title of WineGums example.
  Optimise WineGums example.
  Add WineGums example by kynd.info.
  Fix newly introduced issue in CompoundPath#moveTo() / #lineTo()
  Optimize and fix code that draws selections and handles.
  Minor clean-up in the way Base.exports are handled.
  Better handle Path#moveTo() / #closePath() edge cases in SVG data.
  Fix SVG issues with reflected control points in the commands 'SsTt'
  Prevent accidental transformation of selection bounds in TextItem.
  Fix importPoly() on Node.js
  ...
2014-03-13 19:32:51 +01:00
Jürg Lehni
c84c019990 Add TODO and DOC for new #arcTo(to, radius, rotation, clockwise, large) 2014-03-13 17:46:31 +01:00
Jürg Lehni
42558fa057 Changes to new #arcTo(): Rename sweep -> clockwise and change argument sequence, as clockwise is more often used than large. 2014-03-13 16:35:56 +01:00
Jürg Lehni
6c7c4d0798 Close previous paths if followed by a new M command. 2014-03-13 03:28:46 +01:00
Jürg Lehni
c63f9516b3 Remove Project#options.
The deprecated getter now redirects to PaperScope#settings.
2014-03-13 01:23:55 +01:00
Jürg Lehni
d622d648c1 Merge branch 'refs/heads/master' into apply-matrix 2014-03-13 01:19:52 +01:00
Jürg Lehni
4e20a5594e Fix failing test. 2014-03-13 01:15:36 +01:00
Jürg Lehni
d58f24157e Merge branch 'refs/heads/master' into apply-matrix 2014-03-13 01:05:09 +01:00
Jürg Lehni
10c28a301e Fix compare statements. 2014-03-13 01:04:31 +01:00
Jürg Lehni
0bca1656ac Avoid CompoundPath#reduce() in SVG path import by improving regular expression that identifies the need for CompoundPath. 2014-03-13 01:01:26 +01:00
Jürg Lehni
3c257dcae0 Merge branch 'refs/heads/master' into apply-matrix 2014-03-13 00:54:05 +01:00
Jürg Lehni
e80991658b Fix issue with relative commands after Z.
Closes #413.
2014-03-13 00:52:24 +01:00
Jürg Lehni
afcabea1a7 Fix issue with Z in the middle of SVG path data, not followed by a M command.
Closes #413.
2014-03-12 23:24:09 +01:00
Jürg Lehni
86c5894822 No need to use parseFloat() in color parsing, a + does enough. 2014-03-12 23:06:13 +01:00
Jürg Lehni
326ecfca0e Rename angle parameter to rotation. 2014-03-12 23:05:54 +01:00
Jürg Lehni
56335ae5f5 Implement SVG-style #arcTo() version.
This should fix the arc related part of issue #413.
2014-03-12 23:00:47 +01:00
Jürg Lehni
7ace275da8 Implement Segment#transform() 2014-03-12 22:58:12 +01:00
Jürg Lehni
847060e146 Improve handling of _changed() events in Segment. 2014-03-12 22:58:00 +01:00
Jürg Lehni
dc76ef144e Remove accidentally committed console.log() 2014-03-12 21:34:52 +01:00
Jürg Lehni
6a58679593 Stick to 80 char line length. 2014-03-12 15:40:22 +01:00
Jürg Lehni
0ea5416a54 Deactivate dragstart events on view too. 2014-03-12 15:39:08 +01:00
hkrish
066d47dbf7 Avoid dividing with zero while splitting curves 2014-03-12 13:34:43 +01:00
Jürg Lehni
9c552b1739 Implement propper support for pointer events and MSPointer events.
Closes #406 and #336.
2014-03-12 13:22:41 +01:00
Jürg Lehni
550044e476 Merge branch 'refs/heads/master' into apply-matrix 2014-03-04 09:55:20 +01:00
Jürg Lehni
b08cc68ffe Fix newly introduced issue in CompoundPath#moveTo() / #lineTo() 2014-03-04 09:48:41 +01:00
Jürg Lehni
73ef269f0f Bake in matrix changes if owner has #applyMatrix set. 2014-03-04 09:36:00 +01:00
Jürg Lehni
d594b4264d Define settings.applyMatrix and inherit at Item creation time. 2014-03-04 09:30:04 +01:00
Jürg Lehni
7dbf6ceaff Move Project#options to PaperScope#settings and define reasonable defaults. 2014-03-04 09:29:28 +01:00
Jürg Lehni
5b49fdf3ff Merge branch 'refs/heads/master' into apply-matrix 2014-03-04 09:27:55 +01:00
Jürg Lehni
763fd5b6a3 Optimize and fix code that draws selections and handles. 2014-03-04 09:26:55 +01:00
Jürg Lehni
dad17ba28e Minor clean-up in the way Base.exports are handled. 2014-03-03 22:53:00 +01:00
Jürg Lehni
30b11e5968 Better handle Path#moveTo() / #closePath() edge cases in SVG data.
Relates to issue #413
2014-03-03 17:27:47 +01:00
Jürg Lehni
2f5a9bb70d Fix SVG issues with reflected control points in the commands 'SsTt'
Relates to issue #413
2014-03-03 08:57:33 +01:00
Jürg Lehni
7911d8b42a Change code sequence in tracePaths() to only calculate tangents and winding values if they are required. 2014-03-02 21:39:54 +01:00
Jürg Lehni
21bd4628f2 Merge branch 'refs/heads/bool-cleanup' 2014-03-02 21:19:47 +01:00
Jürg Lehni
d7be443119 Simplify path filtering code in tracePaths() a bit, and improve documentation. 2014-03-02 21:19:31 +01:00
Jürg Lehni
36e3cbddf2 Remove inheritance of Item#applyMatrix setting again.
Implementation cannot be solved well, since hierarchy is not known at creation time of item.
2014-03-02 21:00:08 +01:00
Jürg Lehni
80a725d08a Rename Item#transformContent to the more correct Item#applyMatrix 2014-03-02 16:04:17 +01:00
Jürg Lehni
fb1420eee0 Internalize Item#applyMatrix() code in #transform() and add short-cut method to it in Matrix#apply() 2014-03-02 15:50:45 +01:00
Jürg Lehni
6fdb9f60bd Merge branch 'refs/heads/master' into apply-matrix 2014-03-02 01:27:50 +01:00
Jürg Lehni
2f61d11a3b Prevent accidental transformation of selection bounds in TextItem.
Closes #386.
2014-03-02 01:07:36 +01:00
Jürg Lehni
7bf9cc88e4 Merge pull request #387 from mgrabovsky/master
Fix typo in comment
2014-03-02 01:05:21 +01:00
Jürg Lehni
ac2161c6d9 Fix importPoly() on Node.js
Closes #390
2014-03-02 01:02:33 +01:00
Jürg Lehni
0ba58431e5 Merge branch 'refs/heads/master' into apply-matrix 2014-03-01 23:41:24 +01:00
Jürg Lehni
7dd3bfa2ec Fix issue in recent Path.Line constructor optimization.
Line paths should not be closed.
2014-03-01 23:40:38 +01:00
Jürg Lehni
4ba17127aa Make sure that #transformContent can only be set to true on items that actually support it. 2014-03-01 23:24:33 +01:00
Jürg Lehni
1a836a168f Merge branch 'refs/heads/master' into apply-matrix
Conflicts:
	src/item/Item.js
2014-03-01 22:55:54 +01:00
Jürg Lehni
a8578326ea Inherit #transformContent setting from parent, if not explicitely defined. 2014-03-01 22:52:00 +01:00
Jürg Lehni
dad7821ee9 Include Item#transformContent in serialization and cloning. 2014-03-01 22:51:01 +01:00
Jürg Lehni
7cf4591a1e Define Item#style before calling #addChild() in #initialize(), to avoid issues with layers. 2014-03-01 22:49:46 +01:00
Jürg Lehni
a3114e5c28 Do not preserve matrix transformations in empty groups when applied to inexisting content. 2014-03-01 22:48:44 +01:00
Jürg Lehni
4129231504 Rename Path. _addSquareJoin() to more suitable _addBevelJoin() 2014-02-28 18:10:58 +01:00
Jürg Lehni
bd59be8629 Fix issue with strokeBounds affecting corners with miter limit and both handles set. 2014-02-28 18:01:50 +01:00
Jürg Lehni
fe146c5ec0 Fix issues in Point#isOrthogonal() and Point#isColinear() 2014-02-28 17:57:09 +01:00
hkrish
cb810c73bd Fix self-intersection resolution on a single bezier curve 2014-02-28 16:51:28 +01:00
Jürg Lehni
c1ccdf6cb7 Take into account the view's resolution in Item#rasterize() 2014-02-26 16:20:19 +01:00
Jürg Lehni
ec0877962b Expose the view's pixel-ratio and resolution through View#pixelRatio and View#resolution 2014-02-26 16:19:48 +01:00
Jürg Lehni
ccfd51a65a Improve performance of Path constructors and handling of { insert: false } Item creation. 2014-02-26 16:15:51 +01:00
Jürg Lehni
737466d15c Fix all faulty {@true} doc statements. 2014-02-26 15:39:00 +01:00
Jürg Lehni
49801e4b8b Improve performance of Path.Line() constructor.
Passing an array is much faster than using arguments directly.
2014-02-26 14:55:43 +01:00
Jürg Lehni
bf50bd649a Fix issue in Item#rasterize() when resolution is not 72 DPI.
Closes #412.
2014-02-26 11:54:14 +01:00
Jürg Lehni
2c16bd9eb1 Convert to standard paper.js loop format. 2014-02-26 01:24:00 +01:00
patrickheeney
aa2102ecb9 Fix event handlers for paperjs/paper.js#409 2014-02-25 13:02:53 -07:00
Jürg Lehni
4c048dbc94 Rename fatline option to more explicit fatlineClipping. 2014-02-24 21:54:47 +01:00
Jürg Lehni
2fb1522c76 Minor code cleanup. 2014-02-24 21:33:35 +01:00
Jürg Lehni
f4baf690f8 Fix issue introduced in 0ce89fa47c 2014-02-24 21:30:12 +01:00
Jürg Lehni
3e49e3a5f1 Find better names for constants that represent almost 0 and almost 1. 2014-02-24 20:30:20 +01:00
Jürg Lehni
14df7b5d5a Shorten new edge case code in getWinding() a bit. 2014-02-24 20:29:44 +01:00
hkrish
cac86627be Correct winding number calculation when horizontal curves are involved. 2014-02-24 19:11:32 +01:00
hkrish
9e799d09eb Self-Intersections: Restore the logic issues while cleaning up 2014-02-23 16:44:07 +01:00
hkrish
49ddfafe4d Handle stationary points in #getWinding method. 2014-02-22 18:56:19 +01:00
hkrish
b4d8315484 Reject monotone curves which doesn't contribute to the winding, early. 2014-02-22 18:54:26 +01:00
Jürg Lehni
cf4d72f141 Improve data-structure for monotonic curves. 2014-02-21 10:07:27 +01:00
Jürg Lehni
4973ea9845 Minor clean up in getWinding() code. 2014-02-21 00:40:24 +01:00
Jürg Lehni
b4bc16330a Remove redundant comment. 2014-02-20 20:59:54 +01:00
Jürg Lehni
daa4c12b46 Revert bdcfb60a9a
Since it broke the last example of BooleanOperations.html
2014-02-20 20:58:39 +01:00
Jürg Lehni
5dd26f5b9f Explain about self-intersection handling in getIntersections() 2014-02-20 20:49:36 +01:00