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
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
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
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
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
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
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
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
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
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
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
48cb05a181
Replace tabs with 4 white-spaces.
2014-08-16 19:24:54 +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
652dbe1e86
Use loop to produce CurveLocation getters, and add CurveLocation#curvature.
2014-07-25 20:05:44 +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
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
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
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
846c806034
Implement non-scaling strokes through Style#strokeScaling.
...
Closes #418 .
2014-05-13 13:38:51 +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
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
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
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
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
2b712959f2
Path: Improve docs of the 'Positions on Paths and Curves' group.
2014-04-28 18:12:44 +02:00
Jürg Lehni
a9618b50f8
Small fix in Segment#linear.
2014-04-28 16:43:11 +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
Jürg Lehni
19630d6229
Fix spelling mistakes.
2014-04-24 19:34:49 +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
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.curves
option 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
86277f0578
Reversing path direction needs to trigger a GEOMETRY change.
2014-04-10 22:37:11 +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
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
f953331edb
Implement correct selection drawing for CompoundPath.
...
Closes #402 .
2014-04-07 11:22:25 +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
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
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
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
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
e453b90ad2
Remove unused variable.
2014-03-20 17:26:22 +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
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
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
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
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
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