Jürg Lehni
7da70181cc
Move addWinding() into getWinding()
...
Allowing the reuse of a whole lot of shared variables and leading to some nice simplifications.
2016-07-14 18:53:23 +02:00
Jürg Lehni
cad2858070
Use same naming for prev* variables as elsewhere in boolean code.
2016-07-14 18:02:42 +02:00
Jürg Lehni
acfe6cddeb
Boolean: Improve handling of open paths.
...
Relates to #1089
2016-07-14 10:49:12 +02:00
Jürg Lehni
c2df96c440
Implement CompoundPath#closed.
2016-07-14 10:24:04 +02:00
Jürg Lehni
41dce862d4
Fix CompoundPath#getLastCurve() and improve documentation.
2016-07-14 10:21:11 +02:00
Jürg Lehni
083a2c6e0d
Boolean: Prevent rare exception where an encountered segment is not part of a valid path anymore.
...
Relates to #1091
2016-07-14 09:14:11 +02:00
Jürg Lehni
6ca3bb1c63
Prevent Path#getStrokeBounds() from accidentally modifying segments.
...
Closes #1102
2016-07-13 18:43:15 +02:00
iconexperience
46ea9da423
Small cleanup in getWinding()
2016-07-13 11:07:12 +02:00
Jürg Lehni
89c60b1a05
Loosely couple Node.js code to canvas module.
...
Treat absence of canvas module like a web worker context.
Relates to #1103
2016-07-12 19:11:09 +02:00
Jürg Lehni
73fc111b50
SVG: Correctly handle relative "moveto" commands.
...
Closes #1101
2016-07-11 19:48:17 +02:00
Jürg Lehni
a02f181c00
Release version 0.10.2
2016-07-09 21:04:37 +02:00
Jürg Lehni
9fefa7dbf0
Release version 0.10.1
2016-07-09 17:17:22 +02:00
Jürg Lehni
0b31b5fdc6
Release version 0.10.0
2016-07-09 16:37:39 +02:00
Jürg Lehni
e15de78347
Update JSHint and fix some some hinting errors.
2016-07-09 14:32:01 +02:00
Jürg Lehni
da78e837a1
Simplify Numerical.solveCubic() code by introducing evaluate() closure.
2016-07-09 13:54:02 +02:00
Jürg Lehni
9d6aab3802
Streamline handling of getNormalizationFactor() to share more code.
...
Based on comments by @hkrish in https://github.com/paperjs/paper.js/pull/1087#issuecomment-231529361
2016-07-09 13:28:50 +02:00
Jürg Lehni
2532f205a7
Prefer native Math.log2(), but support IE through internalized polyfill.
2016-07-09 12:54:17 +02:00
Jürg Lehni
7e3d18f5d4
Further cleanups in Numerical.solveQuadratic()
2016-07-09 01:10:55 +02:00
Jürg Lehni
02658c9e74
Clean-up code from PR #1087
...
Closes #1085
2016-07-09 01:01:19 +02:00
Jürg Lehni
90bc4ffecb
Merge pull request #1087 from sapics/improve-poly-solve
...
Improvements to solve polynomials in Numerical.js
2016-07-07 06:39:28 +02:00
Jürg Lehni
866dcb50dd
Some tweaks to potentially support strict mode.
2016-07-07 06:21:20 +02:00
Jürg Lehni
f04dd14309
Remove jsdom legacy code.
2016-07-03 14:16:17 +02:00
Jürg Lehni
df8969f1c4
Switch to jsdom v9.4.0 with native DOMParser support.
...
Closes #1093
2016-07-03 13:39:05 +02:00
Jürg Lehni
45ffc6fb88
Improve Segment constructor to correctly handle undefined values.
...
Closes #1095
2016-07-03 13:30:56 +02:00
iconexperience
916a712737
Improved and simplified addWinding and getWinding
2016-06-23 07:54:27 +02:00
Jan
f94b4f969b
Accidential semicolon in var declaration
...
I think this is a mistake
2016-06-22 13:10:02 +02:00
sapics
4fd120fab8
Minor optimization in Numerical.js
2016-06-21 08:47:42 +09:00
sapics
645e2c2af3
Revert EPSILON error in solveCubic
2016-06-20 17:27:08 +09:00
sapics
78f65c9fab
Improve solveQuadratic and solveCubic by hkrish c-code
2016-06-20 17:13:09 +09:00
sapics
a9cc938967
Fix normalization in solveQuadratic
2016-06-20 13:53:39 +09:00
sapics
bb683c9291
Remove same value solution in solveCubic
2016-06-20 13:52:54 +09:00
Jürg Lehni
ab24f92373
Bring back accidentally removed hit-test optimization in event handling.
...
See comment.
2016-06-19 11:02:54 +02:00
Jürg Lehni
739788b67e
Clean up Event#currentTarget handlig.
2016-06-19 10:55:04 +02:00
Jürg Lehni
cc55991b66
Fix new issue with Emitter unit tests.
2016-06-18 23:14:48 +02:00
Jürg Lehni
f133475405
Implement MouseEvent#currentTarget and document MouseEvent#target.
...
Relates to #995
2016-06-18 23:06:17 +02:00
Jürg Lehni
f97143d37d
Fix jshint issue introduced by a03631f620
2016-06-17 00:50:06 +02:00
Jürg Lehni
a03631f620
Remove MouseEvent#target hitTest() getter magic again.
...
Relates to #995
2016-06-17 00:42:40 +02:00
Jürg Lehni
74b22266f7
Clean up code from #1082 & #1083
2016-06-16 14:16:48 +02:00
Jürg Lehni
fa0a474ec7
Merge pull request #1083 from iconexperience/solve-cubic
...
Add check of value range in Curve.solveCubic to improve performance
2016-06-16 14:02:48 +02:00
Jan
7009fc3ea0
Add check of value range in solveCubic
...
Performance of `Curve.solveCubic()` can be improved by first checking if the specified value is within the curve's value range. If it is outside the range, the expensive call to `Numerical.solveCubic()` is not necessary.
2016-06-16 13:13:16 +02:00
Jan
c217e963b8
Rough bounds checking for _addBounds()
...
Performance of `_addBounds()` can be improved significantly by performing a rough bounds checking first. This is a cheap way to check if the curve can extend the current min or max values at all. Only if the check is passed, further Only if the current bounds can be extended by the curve's bounds, further calculation needs to be done.
Also, if the values of a curve are sorted, the extrema are simply the start and end point.
2016-06-16 12:46:12 +02:00
Jürg Lehni
827abd21b8
More refactoring for a328f5b04b
2016-06-16 12:07:38 +02:00
Jürg Lehni
e80b2ff043
Some code-cleanup for a328f5b04b
2016-06-16 11:48:29 +02:00
Jürg Lehni
85c680820e
No more need for #_getCurves() since it now does the same as #getCurves()
...
#getCurves() works both on Path and CompoundPath. Relates to #1073 , #1075
2016-06-16 11:16:56 +02:00
Jürg Lehni
1a392bb5db
Rename monoCurves -> curves where full curves are dealt with now.
...
For better clarity. Relates to #1073 , #1075
2016-06-16 11:15:27 +02:00
iconexperience
a328f5b04b
Revamp winding calculation so it can determine the winding in horizontal and vertical direction. Monotonic curves are new only created on demand.
2016-06-16 10:13:10 +02:00
sapics
ff6484ba8c
Fix to cover the case when Numerical.solveQuadratic return -1 in Numerical.solveCubic
2016-06-16 14:53:32 +09:00
sapics
c5b4828ace
Fix to cover the case when Numerical.solveQuadratic return -1 in path._getMonoCurves culculation
2016-06-16 13:51:44 +09:00
Jan
262b9b388d
Make Numerical.solveQuadratic() optimizable for Chrome V8
...
Little change to help Chrome's V( optimize `Numerical.solveQuadratic()`. In my use case this resulted in an overall performance improvement of about 1.5%. For details see #1078
2016-06-15 14:53:28 +02:00
Jürg Lehni
643df2d46d
Add Raster#loaded to reflect the loading state of its image.
2016-06-14 17:08:32 +02:00
Jürg Lehni
c378050783
Fix linting error.
2016-06-14 17:02:05 +02:00
Jürg Lehni
2a3945c4a5
Add additional explanation to fix for #995
2016-06-14 16:54:16 +02:00
Jürg Lehni
724bcb2e35
Make sure mouse events propagate to the view while their targets remain consistent.
...
Closes #995
2016-06-14 16:52:31 +02:00
Jürg Lehni
93e4d81645
Clean up previous fix for #1069 by better handling mouseenter / leave events.
2016-06-14 16:15:50 +02:00
Jürg Lehni
6b3d8ecdfd
Add missing semi-colon.
2016-06-14 15:26:08 +02:00
Jürg Lehni
f6b77b7442
Do not change cashed decomposed matrix data when transforming content.
...
Just clear the cache and force new decomposition on next use, to avoid issues with nested applied transforms.
Closes #1004
2016-06-14 15:16:45 +02:00
sapics
a0b868c1ba
Fix indentations
2016-06-14 12:26:28 +09:00
sapics
7b91e41131
Fix variable leak
2016-06-14 12:20:58 +09:00
Jürg Lehni
28543deaf5
Boolean: Handle situations where seg.getNext() can be null.
...
Closes #1056
2016-06-13 14:17:47 +02:00
Jürg Lehni
742401a0e1
Fix Item#insertChildren() error when passing null for some children.
...
Relates to #1036
2016-06-13 14:16:25 +02:00
Jürg Lehni
693898a5b1
No more need for two passes of findBestIntersection()
...
Goodbye strict-mode :)
2016-06-13 12:49:57 +02:00
Jürg Lehni
fbe787dc4d
Fix leaked global.
2016-06-13 12:13:42 +02:00
Jürg Lehni
8da82fed19
Mark all segments as visited when processing intersection and subtraction, not just overlaps.
2016-06-13 12:09:17 +02:00
Jürg Lehni
af5a5b5f2d
Make findBestIntersection() more strict and improve comments.
2016-06-13 12:08:44 +02:00
Jürg Lehni
94853669f6
Do not complain about open paths if they would not contain an area when closed.
2016-06-13 12:08:04 +02:00
Jürg Lehni
7241edd98a
Implement a more refined strategy to handle 'contour' segment in unite boolean operations.
...
Improvement for the fix in 648beb33e9
for #1054 , solves the issues described in https://github.com/paperjs/paper.js/issues/1054#issuecomment-225356983
2016-06-13 11:58:18 +02:00
Jürg Lehni
34c35e26bd
Switch to sampling only one location for winding contribution.
...
Closes #1073
2016-06-13 11:26:02 +02:00
Jürg Lehni
4c94553b81
Minor cleanup.
2016-06-13 09:00:29 +02:00
Jürg Lehni
fc600595a4
Implement improved strategy to handle tangents in CurveLocation#isCrossing()
...
Relates to #1074
2016-06-13 08:56:45 +02:00
Jürg Lehni
4966f6250f
Implement better calculation of tangential angles in CurveLocation#isCrossing()
...
Relates to #1074
2016-06-12 18:53:14 +02:00
Jürg Lehni
5854c25dd5
Implement Curve#getOffsetAtTime()
2016-06-12 18:32:05 +02:00
Jürg Lehni
b0d0e41ddc
Allow negative offsets in all Curve#get*At() methods.
...
To search from the end of the curve instead of the beginning.
2016-06-12 18:21:37 +02:00
Jürg Lehni
7404485f96
Simplify isInRange() check a bit.
...
No need to check against ±180 as that condition will always be met.
2016-06-12 17:43:10 +02:00
Jürg Lehni
614c781f29
Put the recursion cap back into fat-line clipping code.
...
But use a higher value, and have it work in conjunction with call-count cap.
Relates to #1074
2016-06-12 17:07:43 +02:00
Jürg Lehni
452bbfdaa4
Add unit tests and change-log entry for #904
...
Closes #904
2016-06-11 13:13:08 +02:00
Jürg Lehni
d1f1d7a5f6
Change behavior of PathItem#closePath() to always attempt joining segments.
...
Add optional tolerance argument, and use it to handle SVG imprecisions.
Closes #1045
2016-06-11 12:43:37 +02:00
Jürg Lehni
de8b626033
Add tolerance argument to Path#join(path, tolerance)
2016-06-11 12:41:23 +02:00
Jürg Lehni
68be3f102e
Prevent mousedown events from disturbing mousenter / mouseleave.
...
Closes #1069
2016-06-11 11:14:19 +02:00
Jürg Lehni
41e4c622a3
Improve fat-line clipping for rare edge cases.
...
Instead of limiting recursion levels, limit actual call count. Relates to #904
2016-06-10 23:51:56 +02:00
Jürg Lehni
715025725d
Improve handling of SymbolItem bounds with #applyMatrix = false.
...
Closes #1070
2016-06-10 21:32:22 +02:00
Jürg Lehni
ed3e283802
Fix Item#importJSON() to preserve #parent on existing, already inserted items.
...
Closes #1041
2016-06-10 17:45:02 +02:00
Jürg Lehni
e7f7d7c5d1
Fix jshint error caused by #1065
2016-06-10 17:28:46 +02:00
Jürg Lehni
2c2542fb2f
Remove unique IDs from Color objects.
2016-06-10 16:19:59 +02:00
Jürg Lehni
0d2779dfc5
Docs: Define default value for PathItem#flatten()
...
And some other minor cleanups.
2016-06-10 14:53:52 +02:00
Jürg Lehni
964d8cf7d6
PaperScript: Only translate == to equals() calls for Point, Size and Color.
...
Closes #1043
2016-06-10 13:41:36 +02:00
Jürg Lehni
648beb33e9
Take type of boolean operation into account in getWinding()
...
Relates to #1054
2016-06-10 13:04:57 +02:00
Jürg Lehni
803dfb6bb1
Improve reliability of Curve#isStraight()
...
Closes #1066
2016-06-10 12:33:44 +02:00
Jürg Lehni
1f4e4f2f60
Implement boolean simplification suggested by @iconexperiene
...
See https://github.com/paperjs/paper.js/issues/1054#issuecomment-222517963
2016-06-10 12:06:08 +02:00
Jürg Lehni
719392dd2c
Merge pull request #1060 from iconexperience/patch-3
...
Check for prevTime >= tMin and prevTime <= tMax
2016-06-10 12:00:23 +02:00
Jan
e564955501
Correclty implement sorting of intercepts
...
`Array.sort()` without comparison function does not sort by numeric value, but by unicode characters (103 comes before 93 by this sorting), therefore a simple comparison function is required.
2016-06-07 16:44:42 +02:00
Jan
b735a3ec95
Fix getInteriorPoint()
...
getInteriorPoint() could return a point outside the path as explained in #1064
This fix excludes curve's start points from intercept detection to prevent double counting, it ensures that all intercepts are collected and the intercepts are sorted by x-value.
2016-06-07 16:11:37 +02:00
Jan
9f93f6ee78
Check for prevTime >= tMin and prevTime <= tMax
...
Parameter scaling should only be done if the curve was actually split previously. This only happened if prevTime greater tMin and less tMax.
2016-06-01 14:38:44 +02:00
Jürg Lehni
f19d0c8134
Rename GradientStop#rampPoint to #offset
2016-05-31 12:35:44 +02:00
Jürg Lehni
f07927a95e
Correctly handle { x: 0, y: 0 } in Raster#getAverageColor()
...
Closes #1053
2016-05-27 11:42:08 +02:00
Jürg Lehni
9aa29e0afc
Add support for construction from strings to Point and Size.
2016-05-27 11:37:19 +02:00
Jürg Lehni
fefb4302e8
Improve Item#_getStrokeMatrix()
2016-05-22 21:23:46 +02:00
Jürg Lehni
948a8af9a8
Fix Item#strokeBounds with #strokeScaling and #applyMatrix
...
Closes #1014
2016-05-22 21:17:24 +02:00
Jürg Lehni
be79a0e504
Cleanup Path#flatten() code.
2016-05-22 17:24:12 +02:00
sapics
78498f4fd5
Add last curve segment point in path.flatten
2016-05-06 13:28:27 +09:00
Jürg Lehni
681d5537b3
Always pass on dictionary object in _serialize()
...
It is used to determine if ojects can be serialized in compact form.
2016-05-04 18:06:18 -07:00