Commit graph

6604 commits

Author SHA1 Message Date
Jürg Lehni
e179b08156 Implement Item#clone(options) with support for options.deep
Closes #941
2016-02-09 16:01:06 +01:00
Jürg Lehni
21723ca6ca Improve documentation of PostScript-style drawing commands. 2016-02-09 15:09:39 +01:00
Jürg Lehni
717bc4bc79 Implement PathItem#getNearestLocation() / #getNearestPoint()
Closes #727
2016-02-09 14:34:21 +01:00
Jürg Lehni
a48d13878a Fix JSDoc warning on Style class. 2016-02-09 14:15:55 +01:00
Jürg Lehni
3965dd9b77 Implement CompoundPath#flatten(), #simplify(), #smooth()
And improve documentation for PathItem#simplify().

Closes #920
Relates to #727
2016-02-09 14:13:30 +01:00
Jürg Lehni
c793538841 No need to pass normalized tangents to PathFitter#fitCubic()
The get normalized and scaled anyway.
2016-02-09 14:11:23 +01:00
Jürg Lehni
e5d139ca11 Clean-up PathFitter code. 2016-02-09 14:09:53 +01:00
Jürg Lehni
d1b11c6ea9 Rearrange method sequence in Path. 2016-02-09 12:47:37 +01:00
Jürg Lehni
de9653ab45 Fix new exception in unit tests. 2016-02-09 10:07:28 +01:00
Jürg Lehni
da216aa581 Improve handling of view updates and detection of invisible documents.
Switch to the new HTML5 Page Visibility API.
2016-02-09 09:59:19 +01:00
Jürg Lehni
80e6246016 Include NPM and Bower badges. 2016-02-08 14:17:16 +01:00
Jürg Lehni
0371f66bda Do not snap curve points to t = 0 / 1 with epsilon
Closes #936. Also:
- Reduce CLIPPING_EPSILON to 1e-9 to fix errors that were masked by the snapping
- Implement unit tests for edge cases in #936
2016-02-06 15:12:35 +01:00
Jürg Lehni
a59a5354fb Clean-up unit test for #943 and add edge case from #944
See https://github.com/paperjs/paper.js/pull/944#issuecomment-180370569
2016-02-05 21:18:16 +01:00
Jürg Lehni
ffe42a0220 Some comment cleanup. 2016-02-05 20:31:58 +01:00
Jürg Lehni
5a46620768 Merge branch 'winding-fix' into develop
; Conflicts:
;	src/path/PathItem.Boolean.js
2016-02-05 20:25:25 +01:00
Jürg Lehni
55909b8bd5 Some code cleanup for winding-fix. 2016-02-05 19:43:48 +01:00
Jürg Lehni
23045bb0f7 Merge pull request #943 from iconexperience/replace-path-contains-test
Replace unit test in "PathItem_Contains"
2016-02-05 19:12:45 +01:00
Jürg Lehni
ec75985cd1 Merge pull request #944 from iconexperience/fix-getWinding
Change the implementation of getWinding() again to pass all unit tests.
2016-02-05 19:11:50 +01:00
iconexperience
5b31aee8bb Change the implementation of getWinding() again, so we pass all tests. This new version does not count any intersections if the point is on a y-monotonic curve, but at the final calculation it sets the winding to at least 1 if the point is on a curve. 2016-02-05 14:48:27 +01:00
iconexperience
e03c8cd198 Replace the "straight curves with zero-winding" test with a more comprehensive one containing more special cases. Also, this test requires that all points on a curve of a path must be counted as inside the path. 2016-02-05 12:45:33 +01:00
Jürg Lehni
fc4bdf4bd0 Use correct SVG namespace again.
It got mixed up in recent refactoring (d68239a541).
2016-02-03 18:39:00 +01:00
Jürg Lehni
f7b1aca3e4 Revert "Change the way we determine the winding in getWinding()." 2016-02-03 17:46:27 +01:00
Jürg Lehni
0152439627 Fix internalBounds regression caused by 1ac8e46d55 2016-02-03 17:39:03 +01:00
Jürg Lehni
336460b51f Define unit test for #internalBounds regression. 2016-02-03 17:38:30 +01:00
Jürg Lehni
41aca10112 Clean-up changes from #939 2016-02-03 12:54:54 +01:00
iconexperience
aed9d05bfc Change the way we determine the winding in getWinding(). Now the windings only get counted if the point is not on any of the y-monotonic curves. If the point is on a curve, the winding will be made odd at the very end. 2016-02-03 11:29:43 +01:00
Jürg Lehni
96d617a5ff Only attempt to reuse object that importJSON() is called on, when its type matches the root of the imported data.
Closes #764
2016-02-03 09:47:49 +01:00
Jürg Lehni
7888d1d107 JSON: Prevent name: undefined exports. 2016-02-03 09:46:40 +01:00
Jürg Lehni
0f084eaf02 Optimize Emitter._installEvents()
Check for #_eventTypes first, no need to do anything if they don't exist.
2016-02-03 09:46:25 +01:00
Jürg Lehni
922a502ee2 Add #interpolate() method to Segment, Path and CompoundPath
Closes #624
2016-02-02 22:11:06 +01:00
Jürg Lehni
53269ab169 Merge pull request #938 from iconexperience/getWinding-simplification
Simplify getWindings() by using only the 'last' property to understand when a new loop starts.
2016-02-02 21:45:04 +01:00
Jürg Lehni
5e53939006 Do not include text-styles in items that don't relate to text.
Closes #934
2016-02-02 21:43:44 +01:00
iconexperience
0716ebb994 Simplify getWindings(), The first curve of a loop always has the 'last' property set. We use this to know when a loop starts. The very rare cases when a loop only consists of horizontal curves are not a problem, because these curves are ignored. Using this simplification also get's rid of the 'length' property, which was set in _getMonoCurves(). 2016-02-02 21:23:46 +01:00
Jürg Lehni
8fb7c41537 Implement support for web-workers.
Relates to #634, closes #582
2016-02-02 17:30:38 +01:00
Jürg Lehni
74d188967c Fix accidentally leaked global variable. 2016-02-02 14:03:25 +01:00
Jürg Lehni
a71c364594 We cannot cache #strokeBounds when #strokeScaling is false.
Closes #697
2016-02-02 13:56:08 +01:00
Jürg Lehni
a02d7248c0 Move Path_Bounds tests to Item_Bounds.
And add a test for shape.strokeBounds without strokeScaling.
2016-02-02 13:55:36 +01:00
Jürg Lehni
21dce1a655 Implement tests for #697
One currently failing due to caching issues.
2016-02-02 13:28:06 +01:00
Jürg Lehni
340a1e2a5f Rename curve-time in API from 'parameter' to 'time'
And create separate versions of methods that receive curve-time arguments instead of offsets.

Curve#getNormalAt(time, true) -> #getNormalAtTime(true)
Curve#divide() -> #divideAt(offset) / #divideAtTime(time)
Curve#split() -> #splitAt(offset) / #splitAtTime(time)
Curve#getParameterAt(offset) -> #getTimeAt(offset)
Curve#getParameterOf(point) -> getTimeOf(point)
Curve#getPointAt(time, true) -> #getPointAtTime(time)
Curve#getTangentAt(time, true) -> #getTangenttTime(time)
Curve#getNormalAt(time, true) -> #getNormalAtTime(time)
Curve#getCurvatureAt(time, true) -> #getCurvatureAtTime(time)
CurveLocation#parameter -> #time
Path#split(offset/location) -> #splitAt(offset/location)

Closes #563
2016-02-02 11:59:53 +01:00
Jürg Lehni
45595b2b1d Fix unit test error on Node.js 2016-02-01 20:20:38 +01:00
Jürg Lehni
a12e99e387 Implement unit tests for SVG Importing, based on visual comparison.
For now, one test for #932
2016-02-01 20:15:37 +01:00
Jürg Lehni
8e25327b09 Fix wrongly copied attributes in Item#reduce()
Closes #932
2016-02-01 20:12:54 +01:00
Jürg Lehni
ad21b2b07a SVG: Pass the imported SVG date as the 2nd parameter to onLoad() 2016-02-01 20:09:43 +01:00
Jürg Lehni
b2f3b587ec Events: paper namespace may not be initialized when key evens are emitted. 2016-02-01 12:58:52 +01:00
Jürg Lehni
1c4ff31e6c SVG: Some renaming omitted in previous commit. 2016-02-01 12:52:50 +01:00
Jürg Lehni
af5984747f SVG: Rename 'SVG' prefix to 'Svg'
- To make it clear it's not browser-provided functionality
- To reflect how DomElement / DomEvent are already named, for the same reason
2016-02-01 12:50:22 +01:00
Jürg Lehni
519898357f SVG: Fix issue with invalid default stroke-width on IE.
Closes #467
2016-02-01 12:36:42 +01:00
Jürg Lehni
d68239a541 SVG: Introduce SVGNode object to handle SVG Elements. 2016-02-01 12:31:18 +01:00
Jürg Lehni
3d346d8045 Core: Do not serialize deprecated Style#font property.
Relates to #934
2016-02-01 12:19:12 +01:00
Jürg Lehni
50843d8f87 Node: Switch to jsdom v8.0.1 with patched-in image support.
And fix XMLSerializer#serializeToString() to work with it.
2016-01-31 22:47:57 +01:00