Commit graph

178 commits

Author SHA1 Message Date
Jürg Lehni
b89fc84789 Start simplifying PathItem#_tracePaths() code by using improved Curve#evaluate() and relying on Path#reduce(). 2014-02-20 02:52:20 +01:00
Jürg Lehni
4453f68cfa Revert handling of linear segment reseting, as it broke some rare boolean tests. 2014-02-20 02:13:55 +01:00
Jürg Lehni
d730b75073 Simplify and clean-up PathItem._splitPath() code. 2014-02-20 01:56:49 +01:00
Jürg Lehni
56bf87ce84 Rename _getMonotoneCurves() to _getMonoCurves()
Shorter is better...
2014-02-20 00:24:09 +01:00
Jürg Lehni
36394c4c56 Simplify and clean-up PathItem._getWinding() code. 2014-02-20 00:19:44 +01:00
Jürg Lehni
8726a3f082 Reformat documentation comments and change wording to follow existing documentation convention. 2014-02-19 23:17:59 +01:00
Jürg Lehni
19d84a8a8d Rename Path._getWindingNumber to _getWinding (to reflect the naming of the existing Path#_getWinding). 2014-02-19 22:18:51 +01:00
Jürg Lehni
9de4189233 Minor simplification. 2014-02-19 14:28:35 +01:00
Jürg Lehni
74a153dd88 Some code clean-up.
More to come.
2014-02-17 20:59:38 +01:00
Jürg Lehni
73627346c0 Remove unnecessary paper namespace prefixes inside the library. 2014-02-17 20:36:41 +01:00
hkrish
e88ae54a22 _tracePaths: support self-intersections 2014-02-16 18:47:11 +01:00
hkrish
16ecbbafad Remove debug notes and helpers 2014-02-15 23:19:27 +01:00
hkrish
83eaf70ee4 Fix regression: getLength has been split to getLength and getPartLength in master branch 2014-02-15 00:04:05 +01:00
hkrish
87ded4dcff Merge master 2014-02-15 00:02:02 +01:00
hkrish
a798b553a2 Remove old tracePaths method 2014-02-14 22:52:32 +01:00
hkrish
ea29e65e6b _tracePaths: Switch contours only if necessary 2014-02-14 22:50:55 +01:00
hkrish
26ef85930d _tracePaths: Calculate correct entry&exit tangents. 2014-02-11 19:18:54 +01:00
hkrish
099f2d411e _tracePaths: Optimize contour selection a bit. 2014-02-10 22:13:03 +01:00
hkrish
2121b564d0 _tracePaths: Avoid traversing to visited segments 2014-02-10 22:12:32 +01:00
hkrish
dfd1c97a4f Bug fixes in the tracePath method to work with self-Intersection resolution 2014-02-10 22:12:13 +01:00
hkrish
f8f31349d9 Modified tracePath method for supporting self-intersection resolution and offset curves 2014-02-10 22:11:43 +01:00
hkrish
de0cfb7e3d Refactor code common to getIntersections and getSelfIntersections.
Conflicts:
	src/path/PathItem.js
2014-02-10 22:10:55 +01:00
hkrish
74c4df9b8c Fix winding contribution case for horizontal curves 2014-01-28 18:04:09 +01:00
hkrish
85736d4e84 Remove debug helpers 2014-01-26 05:44:55 +01:00
hkrish
758cf67f6e Move sorting and expansion of intersections to the getIntersections method 2014-01-26 05:39:00 +01:00
hkrish
c5ddbf19da Remove duplicate intersections in #getIntersections 2014-01-26 05:38:09 +01:00
hkrish
24cbf3b079 Correct winding contribution calculation for horizontal curves 2014-01-16 20:02:26 +01:00
Jürg Lehni
e22fa3a664 Update copyright notice. 2014-01-04 01:47:16 +01:00
hkrish
3f6562d5b3 Method for tracing a set of connected segments and producing paths; used in boolean ops and path offsetting methods. 2013-12-29 13:29:54 +01:00
hkrish
7c75dcee97 New Split path method 2013-12-29 13:25:48 +01:00
hkrish
1be669396e First cut at a new winding number calculation algorithm 2013-12-29 13:21:08 +01:00
hkrish
a88d7f5eae Rudimentary self-intersection calculation 2013-12-29 13:06:25 +01:00
Jürg Lehni
c0ed227cbc Add sorted argument to PathItem#getIntersections() 2013-12-28 21:06:35 +01:00
hkrish
4562b104f2 Winding number calculation for a given point 2013-12-25 20:46:13 +01:00
Jürg Lehni
6b4917f4a8 Clean up code a bit. 2013-12-17 15:23:07 +01:00
Jürg Lehni
7c28c7e9e3 Do not factor in view matrix into Item#globalMatrix.
Instead concatenate it when drawing selections.
2013-12-10 13:18:21 +01:00
Jürg Lehni
064d632d65 More matrix related clean-ups. 2013-12-08 22:12:36 +01:00
Jürg Lehni
8cec512cc2 Take matrices into account in PathItem#getIntersections() 2013-12-08 22:00:40 +01:00
Jürg Lehni
93d10983ee Update to latest Prepro.js and switch from global options object to __options, to avoid name clashes. 2013-11-29 20:26:38 +01:00
Jürg Lehni
593e0d8d7f Remove Base.merge() and use a new Straps.js feature instead.
A more clever Base() constructor that allows merging.
2013-11-28 22:20:00 +01:00
Jürg Lehni
d079e179ac Fix Path#arcBy(to, boolean) 2013-11-25 01:04:51 +01:00
Jürg Lehni
1301aea47d Fix issues with importing Ghostscript Tiger. 2013-11-03 12:52:00 +01:00
Jürg Lehni
4f32cc2eea No need for RegExp group in match statement. 2013-11-02 13:25:03 +01:00
Jürg Lehni
7b1f118aed Use same command sequence as in switch statement. 2013-11-02 09:45:11 +01:00
Jürg Lehni
97a29e6ada Improve SVG path data parser. 2013-11-02 09:30:40 +01:00
Jürg Lehni
29c00584be Fix SVG parsing issues with multiple concatenated coordinate values
e.g. "1.5.5", is to be read as "1.5" and ".5"
2013-11-01 17:56:16 +01:00
Jürg Lehni
132f54d362 Define Item#clear() as an alias for Item#removeChildren(), or Path#removeSegments() for paths. 2013-11-01 17:52:27 +01:00
Jürg Lehni
0ded3ae0ba Implement PathItem#cubicCurveBy() and #quadraticCurveBy()
Closes #284.
2013-10-30 01:43:55 +01:00
Jürg Lehni
fc9cad009f Implement CompoundPath#_getWindings() and move #_contains() code for both Path and CompoundPath to PathItem. 2013-10-29 17:57:25 +01:00
Jürg Lehni
aa4d990c90 Move and unify handling of Item#_set(props) to new Item#_initialize(), and add support for props.insert = false. 2013-07-21 15:45:22 -07:00
Jürg Lehni
a4535edbb9 Bring back _class names, since code minification breaks reliance on constructor.name.
Closes #248.
2013-06-23 20:18:32 -07:00
Jürg Lehni
719b9d5e24 Move logic that determines if item can be directly composited into separate per-item #_canComposite() method. 2013-06-19 08:22:08 -07:00
Jürg Lehni
6fe60cff9d Fix trailing comas. 2013-06-12 17:42:38 -07:00
Jürg Lehni
cb0dcf1719 Fix accidental global leakage. 2013-06-12 17:27:20 -07:00
hkrish
cdaab794f2 Merge branch 'master' of https://github.com/paperjs/paper.js
* 'master' of https://github.com/paperjs/paper.js: (56 commits)
  Fix regressions in Raster caused by faulty merge.
  Store data in _data rather than on the image itself.
  Clean up @trankek's fix for node a bit.
  Explain compact = true in Project#_serialize()
  Properly fix issue with Project#exportJSON() creating separate projects on import.
  Update straps.js to version 1.1.0
  Rename options.server to options.node
  Remove all create() constructors for basic types since new constructors are now faster.
  Make sure project we import into is active.
  Unbox project data in Project#importJSON(), as we don't want to create a new project object.
  Remove need for _needsRedraw() calls by replacing it with a boolean flag.
  Apply "pending" matrix in group when it receives content.
  Move main Item insertion code from #insertChild() to #insertChildren().
  Fix documentation warning.
  Handle exporting of Numerical and PaperScript in export.js
  Update straps.js to latest version.
  Accessors cannot define the writable property.
  Properly export Numerical and PaperScript again.
  Only reset matrices in Groups when it could actually be applied to the content.
  Set options.stats = false for build.sh and Node.js
  ...
2013-05-29 19:09:07 +02:00
Jürg Lehni
5592bb57e0 Properly export Numerical and PaperScript again. 2013-05-27 15:55:44 -07:00
Jürg Lehni
10d5de3ed6 Implement a better way to name and export class constructors.
This change also simplified the way classes are exported to PaperScope objects.
2013-05-27 12:48:58 -07:00
hkrish
cfbe6d8312 Merge branch 'master' of https://github.com/paperjs/paper.js
* 'master' of https://github.com/paperjs/paper.js:
  Remove Item#applyMatrix boolean, go back to previous way of directly applying transformations to children in Group and Layer, and introduce new Clip class for non-transformed nested matrices.
  Make sure the Base class is exposed in Node.js
2013-05-16 20:33:13 +02:00
Jürg Lehni
7c2e57e105 Remove Item#applyMatrix boolean, go back to previous way of directly applying transformations to children in Group and Layer, and introduce new Clip class for non-transformed nested matrices. 2013-05-13 18:57:17 -07:00
Jürg Lehni
d70c9b0464 Minor syntax fixes. 2013-05-05 23:19:22 -07:00
Jürg Lehni
7ec53f74d1 Move boolean code into its own file, and add information comments again. 2013-05-03 16:16:52 -07:00
Jürg Lehni
90e3dd201a Move boolean code into its own file, and add information comments again. 2013-05-03 16:16:52 -07:00
hkrish
debce28bc4 Merge upstream 2013-05-02 14:18:24 +02:00
hkrish
10553c1bd8 Merge upstream 2013-05-02 14:18:24 +02:00
hkrish
381ee98cbc Updated boolean operation methods.
The algorithm is based on paperjs' native segment and curve objects
rather than the generic Node and Link objects.
Also this is much smaller and faster! :)
2013-05-02 13:49:07 +02:00
hkrish
73b018f006 Updated boolean operation methods.
The algorithm is based on paperjs' native segment and curve objects
rather than the generic Node and Link objects.
Also this is much smaller and faster! :)
2013-05-02 13:49:07 +02:00
hkrish
d8dc762826 Merge branch 'master' of https://github.com/paperjs/paper.js
* 'master' of https://github.com/paperjs/paper.js:
  Define CurveLocation#intersection as a way to retrieve the CurveLocation on the intersecting path when using Path#getIntersections().

€ý5€ý`q€kb:q
2013-05-01 12:39:04 +02:00
hkrish
88b720be76 Merge branch 'master' of https://github.com/paperjs/paper.js
* 'master' of https://github.com/paperjs/paper.js:
  Define CurveLocation#intersection as a way to retrieve the CurveLocation on the intersecting path when using Path#getIntersections().

€ý5€ý`q€kb:q
2013-05-01 12:39:04 +02:00
Jürg Lehni
69f8bdc560 Define CurveLocation#intersection as a way to retrieve the CurveLocation on the intersecting path when using Path#getIntersections(). 2013-04-30 18:41:26 -07:00
Jürg Lehni
883e3ad563 Define CurveLocation#intersection as a way to retrieve the CurveLocation on the intersecting path when using Path#getIntersections(). 2013-04-30 18:41:26 -07:00
hkrish
30d9e322e8 Boolean Operations.
This is probably a crude integration. Need to resolve some issues,
such as finding the right place for constants, private classes etc.
2013-04-29 21:36:12 +02:00
hkrish
b4dd16bbfb Boolean Operations.
This is probably a crude integration. Need to resolve some issues,
such as finding the right place for constants, private classes etc.
2013-04-29 21:36:12 +02:00
Jürg Lehni
1b5ca4dec9 Rename Curve._addIntersections() to Curve.getIntersections() 2013-04-25 17:17:53 -07:00
Jürg Lehni
bcb10a222f Add SvgImport example for Inkscape and fix issue with multiple SVG path commands.
Closes #203.
2013-04-20 14:54:21 -07:00
Jürg Lehni
67203e753c Move #applyMatrix setting to PathItem. 2013-04-19 13:16:00 -07:00
Jürg Lehni
a9a0857ba4 Find a better strategy to avoid duplicate solutions in PathItem#getIntersections().
Closes #197.
2013-04-09 20:27:55 -07:00
Jürg Lehni
fa143ad545 Fix typo. 2013-04-07 09:49:34 -07:00
Jürg Lehni
18ed9010a6 Derive Item#type from Item#_class and use that instead in code that depends on Item types. 2013-04-06 18:07:30 +02:00
Jürg Lehni
f43b322d2a Rename Base#_type property to #_class. 2013-04-06 09:16:08 +02:00
Jürg Lehni
849d3efc2e Have PathItem#setPathData() clear the previous content. 2013-03-03 16:56:48 -08:00
Jonathan Puckey
3cdb11fe36 GradientStop & PathItem example documentation. 2013-03-03 19:47:32 +01:00
Jürg Lehni
12d4d563d9 Further shorten path data code. 2013-03-01 01:18:42 -08:00
Jürg Lehni
13a567bcaa Fix handling of multiple h / v commands in path data. 2013-03-01 01:18:27 -08:00
Jürg Lehni
5fbc6e939d Fix small SVG path-data parser issue. 2013-02-28 19:33:08 -08:00
Jürg Lehni
82cefa9846 Fix typo. 2013-02-28 19:29:44 -08:00
Jürg Lehni
0f140e391d Minor clean ups. 2013-02-28 19:21:46 -08:00
Jürg Lehni
78b3621cf6 Implement PathItem#pathData getter and setter for SVG style path data.
And use it fro SvgImport too.
2013-02-28 19:14:06 -08:00
Jürg Lehni
6c9c16ad3d Update copyright information comments, and year. 2013-01-28 18:03:27 -08:00
Jürg Lehni
cb8f3291d3 Clean up some comments. 2012-12-27 20:19:23 +01:00
Jürg Lehni
00898908d3 Write documentation for PathItem#getIntersections(). 2012-12-27 19:26:40 +01:00
Jürg Lehni
68ad4bb5ba Implement PathItem#getIntersections(path) and Curve#getIntersections(curve) using divide-and-conquer approach, and new Curve.getBounds(). 2012-12-27 19:23:03 +01:00
Jürg Lehni
c025c41ec0 Start implementing PathItem#getIntersections(). 2012-12-21 16:13:38 +01:00
Jürg Lehni
77296c4640 Update documentation a bit. 2012-10-05 16:09:15 -07:00
Jürg Lehni
733d879bb6 Add / improve comments about DOCS. 2011-12-23 22:47:10 +01:00
Jonathan Puckey
3ac171a304 Path#smooth() example: select path using fullySelected instead of selected, so we can see its handles. 2011-11-12 16:45:33 +01:00
Jürg Lehni
79c0ad8cc5 Update copyright notices. 2011-07-01 12:17:45 +02:00
Jürg Lehni
7211e68245 Add documentation to PathItem class. 2011-07-01 11:22:33 +02:00
Richard D. Worth
ac39873693 Whitespace. Removed all trailing whitespace from .js files 2011-06-30 06:01:51 -04:00
Jürg Lehni
7cd749e63d Change all documentation to new convention of defining @class outside injection scope, fix some comments and a few errors with examples. 2011-06-22 23:56:05 +01:00
Jürg Lehni
8d49d2377b Fix documentation for PathItem#smooth(). 2011-06-16 23:37:45 +01:00