Commit graph

1297 commits

Author SHA1 Message Date
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
ccb9f518b8 Fix monotoneCurve calculation for open paths 2014-02-10 22:11:29 +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
acaf637f26 Keep exclude as a compound boolean operator for now. 2014-01-27 21:32:25 +01:00
hkrish
85736d4e84 Remove debug helpers 2014-01-26 05:44:55 +01:00
hkrish
aea9a5cd6c Minor Fixes 2014-01-26 05:39:51 +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
cf9aec9233 Remove addLocation helper. We have to remove duplicates once we have all the intersections. 2014-01-25 23:50:29 +01:00
hkrish
24cbf3b079 Correct winding contribution calculation for horizontal curves 2014-01-16 20:02:26 +01:00
Jürg Lehni
706fe2c77d Rearrange Base.read argument sequence.
options are used more often than length.
2014-01-05 18:31:24 +01:00
Jürg Lehni
cd6bfa0b77 Move Curve#getLength(from, to) to Curve#getPartLength(from, to).
Clears up the Curve#getLength() getter and removes the need for accessing arguments[]
2014-01-05 18:06:45 +01:00
Jürg Lehni
e3f3a9c9d2 Merge branch 'refs/heads/master' into v8-optimizations 2014-01-05 17:42:59 +01:00
Jürg Lehni
1ee5b2c126 Fix references to Bootstrap.js in comments. 2014-01-05 17:41:38 +01:00
Jürg Lehni
6cb25fafe3 Use changes in latest Straps.js to remove as many hidden parameters as possible.
Hidden parameters through arguments[] are bad news for JS optimizer engines.
2014-01-05 17:40:54 +01:00
hkrish
df7e8e43b2 More explanation and indentation fixes 2014-01-05 15:59:21 +01:00
hkrish
bcdec37b1a Do a much simpler but thorough check for winding contribution, instead of trying to be clever :) 2014-01-05 14:38:15 +01:00
Jürg Lehni
ea63d4c288 Merge branch 'refs/heads/master' into v8-optimizations
Conflicts:
	src/core/Base.js
	src/style/Color.js
2014-01-05 05:01:13 +01:00
Jürg Lehni
e22fa3a664 Update copyright notice. 2014-01-04 01:47:16 +01:00
Jürg Lehni
6a11547942 Fix issue in Curve.getLength() for linear curves with sub-ranges.
Closes #376.
2013-12-30 14:20:05 +01:00
Jürg Lehni
35890383d8 Merge branch 'refs/heads/paperscript-refactoring' into v8-optimizations 2013-12-29 15:54:54 +01:00
Jürg Lehni
8395541298 Clean up docs and fix spelling mistakes. 2013-12-29 15:44:26 +01:00
hkrish
f2168b48cb new Boolean operator functions 2013-12-29 13:40:22 +01:00
hkrish
3b85d3d990 Remove TestOnCurve method 2013-12-29 13:38:33 +01:00
hkrish
9831720c9c New computeBooleean method 2013-12-29 13:38:04 +01:00
hkrish
7af091ca5b Dont alter the winding direction for paths within compoundPaths if they are not completely contained 2013-12-29 13:36:43 +01:00
hkrish
d02e0dcecf Remove old SplitPath method 2013-12-29 13:32:12 +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
hkrish
1bacbc32e9 Link previous & next curves while returning monotone curves 2013-12-29 13:03:39 +01:00
hkrish
0b4da28c1e Optimize handling of horizontal curves in Curve#_getWinding 2013-12-29 12:38:59 +01:00
Jürg Lehni
c0ed227cbc Add sorted argument to PathItem#getIntersections() 2013-12-28 21:06:35 +01:00
Jürg Lehni
58bd3aa444 Sorting CurveLocation by path index produces the correct sequence in compound paths too. 2013-12-28 21:01:44 +01:00
Jürg Lehni
38d67d843d Move Path#getStyle() to better location and simplify code. 2013-12-28 20:56:44 +01:00
Jürg Lehni
451ff4fd03 Docs: Add group title to boolean path operations. 2013-12-28 20:56:30 +01:00
hkrish
a8a4a6fd03 Return horizontal curves as well, with monotonic curves 2013-12-26 18:03:23 +01:00
hkrish
4562b104f2 Winding number calculation for a given point 2013-12-25 20:46:13 +01:00
hkrish
39c52f326e New _getWinding method in Curve. This method return the winding contribution of this curve w.r.t. the resulting PathItem 2013-12-25 20:41:19 +01:00
hkrish
0134596f66 _getMonotoneCurves method which returns and caches curves that are monotonic in Y direction 2013-12-25 20:38:48 +01:00
hkrish
b4c7bcae5e Indent with Tabs like rest of paperjs code. 2013-12-25 20:33:51 +01:00
hkrish
70070c14d2 Avoid creating proxy array objects 2013-12-24 19:00:33 +01:00
hkrish
f23303e371 Merge branch 'master' into bool-new
* master:
  Share code that handles bounds in roots between solveQuadratic() and solveCubic()
  Inline EPSILON and TOLERANCE for better performance in Numerical.
  Clean up code a bit.
  Filter out insert property in Item#set()
  Typo Paelette -> Palette
  Rename Item#anchor -> Item#pivot
  Minor documentation fixes.
2013-12-24 00:02:15 +01:00
hkrish
3b013c0720 Add an optional ignoreLinear parameter to Curve#divide, so that new segments on linear curves will keep their correct bezier handles. 2013-12-23 23:38:12 +01:00
hkrish
20b6d699db Consistently return curve parameter on Line intersections as well, so that sorting intersections wouldn't fail. 2013-12-23 23:34:26 +01:00
hkrish
20fbdcffda Subdivide only if tDiff on both curves have failed to converge more than 80% 2013-12-23 23:27:23 +01:00
Jürg Lehni
81651a7379 Prevent V8 "assignment to parameter in arguments object" deoptimizations.
Some getter-like functions still need fixing, but this might require a fix in Straps.js first.
2013-12-17 23:28:55 +01:00
Jürg Lehni
3dbad9c477 Replace delete in favor of setting to undefined to prevent V8 deoptimization. 2013-12-17 23:27:48 +01:00
Jürg Lehni
99d7b5cfdb Merge branch 'refs/heads/fatline' 2013-12-17 22:07:34 +01:00
Jürg Lehni
6b4917f4a8 Clean up code a bit. 2013-12-17 15:23:07 +01:00
Jürg Lehni
45ed406aa3 Remove unnecessary exports. 2013-12-16 21:58:32 +01:00
Jürg Lehni
94b27e933a Some more variable renaming. 2013-12-16 21:56:41 +01:00
Jürg Lehni
e9d2c6cfd4 Further simplify code a bit. 2013-12-16 21:45:06 +01:00
Jürg Lehni
d984a2cd87 Use correct value for tolerance in non-fatline code again. 2013-12-16 21:41:46 +01:00
Jürg Lehni
a59a42376a Clean up coding style a bit. 2013-12-16 21:40:40 +01:00
hkrish
5fe092672e Fatline clipping: fix c-hull corner case. 2013-12-14 00:31:42 +01:00
hkrish
a0013da7f8 Merge branch 'master' into fatline
* master: (71 commits)
  Define the default value for Color#alpha.
  Some minor changes in Satie example.
  Include point property in stroke hit-results.
  Clean up code and comments in various places.
  Use Point.read() for center parameter in Item#rotate
  Make hit-tests work again with projects that don't have a view.
  Write documentation for Item#anchor.
  Keep support for Item#registration for now as well, since there are some scripts on the mailing list that use it.
  Rename Item#registration to Item#anchor
  No need to run Radial Rainbows in HiDPI mode.
  Include Satie Sound Analysis Example.
  Only start dragging if none of the mosedown events have stopped propagation.
  Fix item-level mousedrag events again.
  Allow layers to select children again, since it breaks examples otherwise.
  Fix documentation issues in TextItem.
  Make hit-test tolerance dependent of view#matrix
  Implement options.selected for hit-testing segments and handles.
  Fix typo in new segment / handle hit-testing code.
  Use same stroke tolerance approach for hit-testing joins and caps as well.
  Do not factor in view matrix into Item#globalMatrix.
  ...
2013-12-13 20:04:43 +01:00
hkrish
5fb75593c2 Remove enpoint fix from curve-line intersections, since it's already handled 2013-12-13 20:01:58 +01:00
Jürg Lehni
d176acfc53 Include point property in stroke hit-results. 2013-12-11 17:10:32 +01:00
hkrish
ef66b6dbe6 Fatline clipping: fix convergence check to be more strict 2013-12-10 20:45:25 +01:00
Jürg Lehni
68bce5b062 Implement options.selected for hit-testing segments and handles. 2013-12-10 19:34:25 +01:00
Jürg Lehni
52891830e4 Fix typo in new segment / handle hit-testing code. 2013-12-10 18:59:04 +01:00
Jürg Lehni
9177bac125 Use same stroke tolerance approach for hit-testing joins and caps as well. 2013-12-10 14:23:05 +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
48c8946f9e Implement correct hit-testing tolerance using transformed 2D stroke padding rather than unscaled numerical tolerance.
But we still need to factor in the View zoom as well...
2013-12-10 12:52:42 +01:00
Jürg Lehni
d65ede7df8 Correctly take strokePadding and transformation matrices into account in roughBounds, through new Path._getPenPadding() 2013-12-10 11:43:05 +01:00
hkrish
ac41f0d3c1 Fatline clipping: fix issue where one of the curves has been converged completely and other hasn't. 2013-12-09 23:27:26 +01:00
hkrish
0598afd77b Fatline clipping: remove old #curveIntersection method 2013-12-09 19:36:14 +01:00
Jürg Lehni
b7943239eb Implement cached getInternalRoughBounds as well. 2013-12-09 19:33:34 +01:00
hkrish
2fa5e3d417 Remove debug helpers 2013-12-09 19:31:58 +01:00
hkrish
82ab532885 Fatline clipping: clipConvexHull method handles only the clipping part 2013-12-09 19:31:04 +01:00
hkrish
35acebb91d Fatline clipping: remove old fatline code. This is handled by the CurveIntersections method now 2013-12-09 19:30:03 +01:00
hkrish
6041b2b09d Fatline clipping: new #CurveIntersections method 2013-12-09 19:28:56 +01:00
Jürg Lehni
1e9fc61644 Fix issues with deserializing selection states. 2013-12-09 15:18:43 +01:00
Jürg Lehni
44e913201d Switch back to instanceof checks.
As people are started to subclass Paper.js classes...
2013-12-09 15:04:44 +01:00
Jürg Lehni
e238d23194 Implement caching of internal, untransformed bounds. 2013-12-09 10:53:19 +01:00
hkrish
b471b90229 Fatline clipping: Iterate to find intersections 2013-12-08 23:29:38 +01:00
hkrish
68b9adac95 Modify old clipFatline code to a much cleaner version 2013-12-08 23:15:18 +01:00
hkrish
45e35aad83 New CurveCurveINtersections code; doing the fatline clip inplace. 2013-12-08 23:14:13 +01:00
Jürg Lehni
17e4078e3b Fix a newly introduced bug in drawSegments() 2013-12-08 22:16:27 +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
516b9d040f Apply matrices before calculating boolean path operations. 2013-12-08 21:39:56 +01:00
hkrish
6c5e18ae45 New clip convex-hull routine 2013-12-08 19:09:59 +01:00
Jürg Lehni
fc4e88c039 Change the way segments, points and handles are selected and deselected.
There is no interdependency anymore, except for selecting a segment selects the point and both handles, and selecting a curve selects both points and handles.

Closes #355
2013-12-08 18:06:31 +01:00
Jürg Lehni
afe00add32 Implement option.type filtering in #hitTest() functions. 2013-12-08 16:32:42 +01:00
Jürg Lehni
2884894d0f Implement hit-testing tolerance for fill tests.
Closes #278.
2013-12-08 12:15:10 +01:00
hkrish
834c8d17a9 Declutter getConvexHull code. 2013-12-08 00:18:47 +01:00
hkrish
baa189bb19 getConvexHull returns upper and lower part of the c-hull seperately 2013-12-08 00:11:13 +01:00
Jürg Lehni
054356c78d Fix drawing of closed path with only one segment. 2013-12-07 16:16:04 +01:00
Jürg Lehni
f166b08257 Simplify addCap() function. 2013-12-07 16:11:02 +01:00
Jürg Lehni
eb1f62b908 Improve strokeBounds fix for paths with only one segment. 2013-12-07 16:07:51 +01:00
msand
e431154e0e Fix indent. 2013-12-07 16:09:50 +02:00
msand
73b1b9843a Wrote failing test for strokeBounds on paths with a single segment and strokeColor. Implemented fix for failing test. 2013-12-07 15:59:45 +02:00