Commit graph

148 commits

Author SHA1 Message Date
Jürg Lehni
72bd150a34 Fix the rest of the failing tests that 6c6ad76c94 had caused.
Also closes #610.
2015-01-04 23:59:25 +01:00
Jürg Lehni
5f3df1f5a1 Fix some failing tests with PathItem#contains(), introduced by commit 6c6ad76c94 2015-01-04 23:28:39 +01:00
Jürg Lehni
5d875f2d83 Clean up code formatting. 2015-01-04 22:37:27 +01:00
Jürg Lehni
8928eaffd0 Merge branch 'refs/heads/master' into boolean-operations 2015-01-04 22:00:55 +01:00
Jürg Lehni
7e80e19e32 Insert results of boolean operations above the first path. 2015-01-04 21:59:31 +01:00
Jürg Lehni
d522e4aec2 Merge remote-tracking branch 'origin/master' into boolean-operations
Conflicts:
	src/path/PathItem.Boolean.js
2015-01-04 21:29:50 +01:00
Jürg Lehni
9f0a774fd0 Fix newly introduced error in clean-up. 2015-01-04 18:07:02 +01:00
Jürg Lehni
77193e1465 Clean-up new splitPath() code. 2015-01-04 17:37:15 +01:00
hkrish
718af4527f Boolean: handle linear segments correctly.
Earlier implementation was unfinished and did not reset some handles to
linear, this caused the winding to be miscalculated.

Conflicts:
	src/path/PathItem.Boolean.js
2015-01-04 17:30:19 +01:00
Jürg Lehni
afc14b9634 Reduce Numerical.TOLERANCE to 1e-6, and use the same value across the boolean code.
Yields very good results now, across all tests.
2015-01-04 15:54:50 +01:00
Jürg Lehni
cca6606f72 Reduce the amount of path reversing required.
We don't need paths at clockwise / counter-clockwise orientation. We simply need them oriented the same way, or the opposite way.
2015-01-04 01:51:27 +01:00
Jürg Lehni
390ef324f2 Find a better implementation for exclude() boolean operations, requiring only one pass instead of two. 2015-01-04 01:50:24 +01:00
Jürg Lehni
5c184e381b Merge remote-tracking branch 'origin/master' into boolean-operations
Conflicts:
	src/path/PathItem.Boolean.js
2015-01-03 21:09:31 +01:00
Jürg Lehni
b6a4815d03 Remove Curve#isHorizontal() as its implementation and precision is specific to boolean operations. 2015-01-03 21:02:12 +01:00
Jürg Lehni
46d7717812 Use standard values for tMin / tMax when calling getTangentAt() tracePaths() 2015-01-03 20:59:20 +01:00
Jürg Lehni
6bb6002d1a No need to double tolerances here. 2015-01-03 20:35:51 +01:00
Jürg Lehni
3e67f72393 Some code clean-up. 2015-01-03 20:25:12 +01:00
Jürg Lehni
51ec3325e3 Remove the need to store winding samples in array and sort.
Calculating the average winding value instead yields the same results.
2015-01-03 11:25:10 +01:00
Jürg Lehni
26f209c835 Implement better strategy for handling edge cases in winding samples. 2015-01-03 11:24:27 +01:00
Jürg Lehni
80e1a54171 Dirty temporary fix for new median winding code that struggles with circles. 2015-01-03 01:17:48 +01:00
Jürg Lehni
e195db2567 Handle empty paths in Path#reorient()
Closes #548
2015-01-03 00:46:24 +01:00
Jürg Lehni
001561decb Remove the dependency of Math.random() from boolean operation code.
Closes #473
2015-01-03 00:32:06 +01:00
Jürg Lehni
bb2fece225 Restructure code that determines median winding contribution. 2015-01-03 00:26:13 +01:00
Jürg Lehni
538eac6dc7 Use smaller tolerances in winding code, to address edge cases.
Closes #559
2015-01-02 23:47:26 +01:00
Jürg Lehni
51739e6e27 Merge remote-tracking branch 'origin/master' into solve-cubic
Conflicts:
	src/path/PathItem.Boolean.js
2015-01-02 21:26:04 +01:00
Jürg Lehni
4ed9ef54f2 Fix bug in Curve.filterIntersections() and clean up code a bit. 2015-01-02 21:19:18 +01:00
Jürg Lehni
878be7962e Merge branch 'refs/heads/master' into solve-cubic
Conflicts:
	src/path/Curve.js
	src/path/PathItem.Boolean.js
	src/util/Numerical.js
2015-01-02 15:33:23 +01: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
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
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
c64f177583 Simplify linearHandles code changes a bit. 2014-05-08 10:48:22 +01: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
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
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
f002c633a7 Remove trailing white spaces and ensure newlines at the end. 2014-04-06 13:48:03 +02: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
2a3f0646f0 Fix exception in _getMonoCurves() when path is empty.
Closes #427.
2014-03-17 14:58:40 +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
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