diff options
author | caryclark <caryclark@google.com> | 2014-08-12 05:49:37 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-12 05:49:37 -0700 |
commit | 80a83adaf2f8db849bfae288e31b7c789dafabf5 (patch) | |
tree | bcd309242d9c40a924e081367b5cac669f881d4b | |
parent | c019ec412ba2704bc6e2cdfd321ea06787ba415d (diff) |
relax quadratic binary search test
Extreme implicit quartic equations solve to roots that are different
enough that they appear to have failed. In this case, fall back on
binary searching to find an intersection.
Relax the condition when this happens; don't give up just because the
computed implicit root points aren't remotely the same.
TBR=reed
BUG=skia:2808
Author: caryclark@google.com
Review URL: https://codereview.chromium.org/456383003
-rw-r--r-- | src/pathops/SkDQuadIntersection.cpp | 4 | ||||
-rw-r--r-- | tests/PathOpsOpTest.cpp | 29 | ||||
-rw-r--r-- | tests/PathOpsQuadIntersectionTest.cpp | 3 | ||||
-rw-r--r-- | tools/pathops_visualizer.htm | 251 |
4 files changed, 159 insertions, 128 deletions
diff --git a/src/pathops/SkDQuadIntersection.cpp b/src/pathops/SkDQuadIntersection.cpp index 5a8bafcdc5..239711c321 100644 --- a/src/pathops/SkDQuadIntersection.cpp +++ b/src/pathops/SkDQuadIntersection.cpp @@ -486,8 +486,8 @@ int SkIntersections::intersect(const SkDQuad& q1, const SkDQuad& q2) { if (r1Count == 1 && used() == 0) { if (pts1[0].approximatelyEqual(pts2[0])) { insert(roots1Copy[0], roots2Copy[0], pts1[0]); - } else if (pts1[0].moreRoughlyEqual(pts2[0])) { - // experiment: try to find intersection by chasing t + } else { + // find intersection by chasing t if (binary_search(q1, q2, roots1Copy, roots2Copy, pts1)) { insert(roots1Copy[0], roots2Copy[0], pts1[0]); } diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp index b7babd3af6..2c67449950 100644 --- a/tests/PathOpsOpTest.cpp +++ b/tests/PathOpsOpTest.cpp @@ -3484,6 +3484,34 @@ static void issue2753(skiatest::Reporter* reporter, const char* filename) { } #endif +static void issue2808(skiatest::Reporter* reporter, const char* filename) { + SkPath path1, path2; + + path1.moveTo(509.20300293f, 385.601989746f); + path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f); + path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.236999512f); + path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f); + path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.601989746f); + path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.241271973f); + path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f); + path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.241271973f); + path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746f); + path1.close(); + + path2.moveTo(449.033996582f, 290.87298584f); + path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.209106445f); + path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.389984131f); + path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.209106445f); + path2.quadTo(400, 301.028259277f, 400, 290.87298584f); + path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f); + path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.355987549f); + path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.536865234f); + path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.87298584f); + path2.close(); + + testPathOp(reporter, path1, path2, kUnion_PathOp, filename); +} + static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0; static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0; @@ -3494,6 +3522,7 @@ static struct TestDesc tests[] = { #if CUBIC_OP_114 // FIXME: curve with inflection is ordered the wrong way TEST(cubicOp114), #endif + TEST(issue2808), TEST(cubicOp114asQuad), TEST(rects4), TEST(rects3), diff --git a/tests/PathOpsQuadIntersectionTest.cpp b/tests/PathOpsQuadIntersectionTest.cpp index ffa00edee1..1ddbbcc51e 100644 --- a/tests/PathOpsQuadIntersectionTest.cpp +++ b/tests/PathOpsQuadIntersectionTest.cpp @@ -53,6 +53,9 @@ static void standardTestCases(skiatest::Reporter* reporter) { } static const SkDQuad testSet[] = { +{{{441.853149, 308.209106}, {434.672272, 315.389984}, {424.516998, 315.389984}}}, +{{{385.207275, 334.241272}, {406.481598, 312.96698}, {436.567993, 312.96698}}}, + {{{-708.00779269310044, -154.36998607290101}, {-707.90560262312511, -154.36998607290101}, {-707.8333433370193, -154.44224536635932}}}, {{{-708.00779269310044, -154.61669472244046}, {-701.04513225634582, -128.85970734043804}, {505.58447265625, -504.9130859375}}}, diff --git a/tools/pathops_visualizer.htm b/tools/pathops_visualizer.htm index 7c109ee3e1..1c6cdf1e42 100644 --- a/tools/pathops_visualizer.htm +++ b/tools/pathops_visualizer.htm @@ -2,139 +2,138 @@ <head> <div height="0" hidden="true"> -<div id="issue2753"> - RunTestSet [issue2753] - -{{142.701004,110.568001}, {142.957001,100}}, -{{142.957001,100}, {153.835007,100}}, -{{153.835007,100}, {154.591995,108.188004}}, -{{154.591995,108.188004}, {154.591995,108.188004}, {153.173004,108.483002}, {152.830002,109.412003}}, -{{152.830002,109.412003}, {152.830002,109.412003}, {142.701004,110.568001}, {142.701004,110.568001}}, +<div id="issue2808"> + RunTestSet [issue2808] + +{{509.203003,385.60199}, {509.203003,415.688385}, {487.928711,436.962708}}, +{{487.928711,436.962708}, {466.654388,458.237}, {436.567993,458.237}}, +{{436.567993,458.237}, {406.481598,458.237}, {385.207275,436.962708}}, +{{385.207275,436.962708}, {363.932983,415.688385}, {363.932983,385.60199}}, +{{363.932983,385.60199}, {363.932983,355.515594}, {385.207275,334.241272}}, +{{385.207275,334.241272}, {406.481598,312.96698}, {436.567993,312.96698}}, +{{436.567993,312.96698}, {466.654388,312.96698}, {487.928711,334.241272}}, +{{487.928711,334.241272}, {509.203003,355.515594}, {509.203003,385.60199}}, op union -{{39,124.000999}, {39,124.000999}, {50.5999985,117.000999}, {50.5999985,117.000999}}, -{{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}}, -{{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}}, -debugShowCubicIntersection no self intersect {{154.591995,108.188004}, {154.591995,108.188004}, {153.173004,108.483002}, {152.830002,109.412003}} -debugShowLineIntersection wtTs[0]=1 {{142.701004,110.568001}, {142.957001,100}} {{142.957001,100}} wnTs[0]=0 {{142.957001,100}, {153.835007,100}} -debugShowLineIntersection wtTs[0]=0 {{142.701004,110.568001}, {142.957001,100}} {{142.701004,110.568001}} wnTs[0]=1 {{152.830002,109.412003}, {142.701004,110.568001}} -debugShowLineIntersection wtTs[0]=0 {{153.835007,100}, {154.591995,108.188004}} {{153.835007,100}} wnTs[0]=1 {{142.957001,100}, {153.835007,100}} -debugShowCubicLineIntersection wtTs[0]=0 {{154.591995,108.188004}, {154.591995,108.188004}, {153.173004,108.483002}, {152.830002,109.412003}} {{154.591995,108.188004}} wnTs[0]=1 {{153.835007,100}, {154.591995,108.188004}} -debugShowCubicLineIntersection wtTs[0]=1 {{154.591995,108.188004}, {154.591995,108.188004}, {153.173004,108.483002}, {152.830002,109.412003}} {{152.830002,109.412003}} wnTs[0]=0 {{152.830002,109.412003}, {142.701004,110.568001}} -debugShowCubicLineIntersection wtTs[0]=0.671281996 {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} {{142.883102,103.050758}} wnTs[0]=0.711321 {{142.701004,110.568001}, {142.957001,100}} -debugShowCubicLineIntersection wtTs[0]=0.642192755 {{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}} {{142.753387,108.405373}} wnTs[0]=0.204639 {{142.701004,110.568001}, {142.957001,100}} -debugShowCubicLineIntersection wtTs[0]=0.734814757 {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} {{154.165848,103.578537}} wnTs[0]=0.437047 {{153.835007,100}, {154.591995,108.188004}} -debugShowCubicIntersection no intersect {{154.591995,108.188004}, {154.591995,108.188004}, {153.173004,108.483002}, {152.830002,109.412003}} {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} -debugShowCubicIntersection no intersect {{154.591995,108.188004}, {154.591995,108.188004}, {153.173004,108.483002}, {152.830002,109.412003}} {{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}} -debugShowCubicLineIntersection no intersect {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} {{152.830002,109.412003}, {142.701004,110.568001}} -debugShowCubicLineIntersection no intersect {{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}} {{152.830002,109.412003}, {142.701004,110.568001}} -debugShowCubicIntersection no self intersect {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} -debugShowCubicIntersection no self intersect {{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}} -debugShowCubicLineIntersection wtTs[0]=0 {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} {{50.5999985,117.000999}} wnTs[0]=1 {{39,124.000999}, {50.5999985,117.000999}} -debugShowCubicLineIntersection wtTs[0]=1 {{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}} {{39,124.000999}} wnTs[0]=0 {{39,124.000999}, {50.5999985,117.000999}} -debugShowCubicIntersection wtTs[0]=1 {{50.5999985,117.000999}, {50.5999985,117.000999}, {164.600998,85.1999969}, {188.201004,117.600998}} {{188.201004,117.600998}} wnTs[0]=0 {{188.201004,117.600998}, {188.201004,117.600998}, {174.800995,93}, {39,124.000999}} -SkOpSegment::sortAngles [0] tStart=0.204639461 [1] -SkOpAngle::after [0/1] 21/21 tStart=0.204639461 tEnd=0 < [7/1] 1/29 tStart=0.642192755 tEnd=0 < [0/2] 5/5 tStart=0.204639461 tEnd=0.711321242 T 4 -SkOpAngle::after [0/1] 21/21 tStart=0.204639461 tEnd=0 < [7/2] 17/17 tStart=0.642192755 tEnd=1 < [7/1] 1/29 tStart=0.642192755 tEnd=0 F 4 -SkOpAngle::after [7/1] 1/29 tStart=0.642192755 tEnd=0 < [7/2] 17/17 tStart=0.642192755 tEnd=1 < [0/2] 5/5 tStart=0.204639461 tEnd=0.711321242 F 4 -SkOpAngle::after [0/2] 5/5 tStart=0.204639461 tEnd=0.711321242 < [7/2] 17/17 tStart=0.642192755 tEnd=1 < [0/1] 21/21 tStart=0.204639461 tEnd=0 T 4 -SkOpSegment::sortAngles [0] tStart=0.711321242 [2] -SkOpAngle::after [0/3] 21/21 tStart=0.711321242 tEnd=0.204639461 < [6/1] 13/17 tStart=0.671281996 tEnd=0 < [0/4] 5/5 tStart=0.711321242 tEnd=1 F 4 -SkOpAngle::after [0/3] 21/21 tStart=0.711321242 tEnd=0.204639461 < [6/2] 29/29 tStart=0.671281996 tEnd=0.734814757 < [0/4] 5/5 tStart=0.711321242 tEnd=1 T 4 -SkOpSegment::sortAngles [2] tStart=0.437046747 [1] -SkOpAngle::after [2/1] 9/9 tStart=0.437046747 tEnd=0 < [6/3] 13/13 tStart=0.734814757 tEnd=0.671281996 < [2/2] 25/25 tStart=0.437046747 tEnd=1 T 4 -SkOpAngle::after [2/1] 9/9 tStart=0.437046747 tEnd=0 < [6/4] 29/29 tStart=0.734814757 tEnd=1 < [6/3] 13/13 tStart=0.734814757 tEnd=0.671281996 F 4 -SkOpAngle::after [6/3] 13/13 tStart=0.734814757 tEnd=0.671281996 < [6/4] 29/29 tStart=0.734814757 tEnd=1 < [2/2] 25/25 tStart=0.437046747 tEnd=1 F 4 -SkOpAngle::after [2/2] 25/25 tStart=0.437046747 tEnd=1 < [6/4] 29/29 tStart=0.734814757 tEnd=1 < [2/1] 9/9 tStart=0.437046747 tEnd=0 T 4 -SkOpSegment::debugShowActiveSpans id=0 (142.701004,110.568001 142.957001,100) t=0 (142.701004,110.568001) tEnd=0.204639461 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=0 (142.701004,110.568001 142.957001,100) t=0.204639461 (142.753387,108.405373) tEnd=0.711321242 other=7 otherT=0.642192755 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=0 (142.701004,110.568001 142.957001,100) t=0.711321242 (142.883102,103.050758) tEnd=1 other=6 otherT=0.671281996 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=1 (142.957001,100 153.835007,100) t=0 (142.957001,100) tEnd=1 other=0 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=2 (153.835007,100 154.591995,108.188004) t=0 (153.835007,100) tEnd=0.437046747 other=1 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=2 (153.835007,100 154.591995,108.188004) t=0.437046747 (154.165848,103.578537) tEnd=1 other=6 otherT=0.734814757 otherIndex=2 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=3 (154.591995,108.188004 154.591995,108.188004 153.173004,108.483002 152.830002,109.412003) t=0 (154.591995,108.188004) tEnd=1 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=4 (152.830002,109.412003 142.701004,110.568001) t=0 (152.830002,109.412003) tEnd=1 other=3 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=5 (39,124.000999 50.5999985,117.000999) t=0 (39,124.000999) tEnd=1 other=7 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0 (50.5999985,117.000999) tEnd=0.671281996 other=5 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0.671281996 (142.883102,103.050758) tEnd=0.734814757 other=0 otherT=0.711321242 otherIndex=2 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0.734814757 (154.165848,103.578537) tEnd=1 other=2 otherT=0.437046747 otherIndex=1 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=7 (188.201004,117.600998 188.201004,117.600998 174.800995,93 39,124.000999) t=0 (188.201004,117.600998) tEnd=0.642192755 other=6 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0 -SkOpSegment::debugShowActiveSpans id=7 (188.201004,117.600998 188.201004,117.600998 174.800995,93 39,124.000999) t=0.642192755 (142.753387,108.405373) tEnd=1 other=0 otherT=0.204639461 otherIndex=1 windSum=? windValue=1 oppValue=0 +{{449.033997,290.872986}, {449.033997,301.028259}, {441.853149,308.209106}}, +{{441.853149,308.209106}, {434.672272,315.389984}, {424.516998,315.389984}}, +{{424.516998,315.389984}, {414.361725,315.389984}, {407.180847,308.209106}}, +{{407.180847,308.209106}, {400,301.028259}, {400,290.872986}}, +{{400,290.872986}, {400,280.717712}, {407.180847,273.536865}}, +{{407.180847,273.536865}, {414.361725,266.355988}, {424.516998,266.355988}}, +{{424.516998,266.355988}, {434.672272,266.355988}, {441.853149,273.536865}}, +{{441.853149,273.536865}, {449.033997,280.717712}, {449.033997,290.872986}}, +debugShowQuadIntersection wtTs[0]=1 {{449.033997,290.872986}, {449.033997,301.028259}, {441.853149,308.209106}} {{441.853149,308.209106}} wnTs[0]=0 {{441.853149,308.209106}, {434.672272,315.389984}, {424.516998,315.389984}} +debugShowQuadIntersection wtTs[0]=0 {{449.033997,290.872986}, {449.033997,301.028259}, {441.853149,308.209106}} {{449.033997,290.872986}} wnTs[0]=1 {{441.853149,273.536865}, {449.033997,280.717712}, {449.033997,290.872986}} +debugShowQuadIntersection wtTs[0]=1 {{441.853149,308.209106}, {434.672272,315.389984}, {424.516998,315.389984}} {{424.516998,315.389984}} wnTs[0]=0 {{424.516998,315.389984}, {414.361725,315.389984}, {407.180847,308.209106}} +debugShowQuadIntersection wtTs[0]=1 {{424.516998,315.389984}, {414.361725,315.389984}, {407.180847,308.209106}} {{407.180847,308.209106}} wnTs[0]=0 {{407.180847,308.209106}, {400,301.028259}, {400,290.872986}} +debugShowQuadIntersection wtTs[0]=1 {{407.180847,308.209106}, {400,301.028259}, {400,290.872986}} {{400,290.872986}} wnTs[0]=0 {{400,290.872986}, {400,280.717712}, {407.180847,273.536865}} +debugShowQuadIntersection wtTs[0]=1 {{400,290.872986}, {400,280.717712}, {407.180847,273.536865}} {{407.180847,273.536865}} wnTs[0]=0 {{407.180847,273.536865}, {414.361725,266.355988}, {424.516998,266.355988}} +debugShowQuadIntersection wtTs[0]=1 {{407.180847,273.536865}, {414.361725,266.355988}, {424.516998,266.355988}} {{424.516998,266.355988}} wnTs[0]=0 {{424.516998,266.355988}, {434.672272,266.355988}, {441.853149,273.536865}} +debugShowQuadIntersection wtTs[0]=1 {{424.516998,266.355988}, {434.672272,266.355988}, {441.853149,273.536865}} {{441.853149,273.536865}} wnTs[0]=0 {{441.853149,273.536865}, {449.033997,280.717712}, {449.033997,290.872986}} +debugShowQuadIntersection no intersect {{441.853149,308.209106}, {434.672272,315.389984}, {424.516998,315.389984}} {{385.207275,334.241272}, {406.481598,312.96698}, {436.567993,312.96698}} +debugShowQuadIntersection no intersect {{441.853149,308.209106}, {434.672272,315.389984}, {424.516998,315.389984}} {{436.567993,312.96698}, {466.654388,312.96698}, {487.928711,334.241272}} +debugShowQuadIntersection wtTs[0]=0.266471573 {{424.516998,315.389984}, {414.361725,315.389984}, {407.180847,308.209106}} {{419.31601,314.880096}} wnTs[0]=0.700123 {{385.207275,334.241272}, {406.481598,312.96698}, {436.567993,312.96698}} +debugShowQuadIntersection wtTs[0]=1 {{509.203003,385.60199}, {509.203003,415.688385}, {487.928711,436.962708}} {{487.928711,436.962708}} wnTs[0]=0 {{487.928711,436.962708}, {466.654388,458.237}, {436.567993,458.237}} +debugShowQuadIntersection wtTs[0]=0 {{509.203003,385.60199}, {509.203003,415.688385}, {487.928711,436.962708}} {{509.203003,385.60199}} wnTs[0]=1 {{487.928711,334.241272}, {509.203003,355.515594}, {509.203003,385.60199}} +debugShowQuadIntersection wtTs[0]=1 {{487.928711,436.962708}, {466.654388,458.237}, {436.567993,458.237}} {{436.567993,458.237}} wnTs[0]=0 {{436.567993,458.237}, {406.481598,458.237}, {385.207275,436.962708}} +debugShowQuadIntersection wtTs[0]=1 {{436.567993,458.237}, {406.481598,458.237}, {385.207275,436.962708}} {{385.207275,436.962708}} wnTs[0]=0 {{385.207275,436.962708}, {363.932983,415.688385}, {363.932983,385.60199}} +debugShowQuadIntersection wtTs[0]=1 {{385.207275,436.962708}, {363.932983,415.688385}, {363.932983,385.60199}} {{363.932983,385.60199}} wnTs[0]=0 {{363.932983,385.60199}, {363.932983,355.515594}, {385.207275,334.241272}} +debugShowQuadIntersection wtTs[0]=1 {{363.932983,385.60199}, {363.932983,355.515594}, {385.207275,334.241272}} {{385.207275,334.241272}} wnTs[0]=0 {{385.207275,334.241272}, {406.481598,312.96698}, {436.567993,312.96698}} +debugShowQuadIntersection wtTs[0]=1 {{385.207275,334.241272}, {406.481598,312.96698}, {436.567993,312.96698}} {{436.567993,312.96698}} wnTs[0]=0 {{436.567993,312.96698}, {466.654388,312.96698}, {487.928711,334.241272}} +debugShowQuadIntersection wtTs[0]=1 {{436.567993,312.96698}, {466.654388,312.96698}, {487.928711,334.241272}} {{487.928711,334.241272}} wnTs[0]=0 {{487.928711,334.241272}, {509.203003,355.515594}, {509.203003,385.60199}} +SkOpSegment::sortAngles [10] tStart=0.266471573 [1] +SkOpAngle::after [10/1] 29/29 tStart=0.266471573 tEnd=0 < [5/1] 17/17 tStart=0.700123447 tEnd=0 < [10/2] 13/13 tStart=0.266471573 tEnd=1 F 4 +SkOpAngle::after [10/1] 29/29 tStart=0.266471573 tEnd=0 < [5/2] 1/1 tStart=0.700123447 tEnd=1 < [10/2] 13/13 tStart=0.266471573 tEnd=1 T 4 +SkOpSegment::debugShowActiveSpans id=8 (449.033997,290.872986 449.033997,301.028259 441.853149,308.209106) t=0 (449.033997,290.872986) tEnd=1 other=15 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=9 (441.853149,308.209106 434.672272,315.389984 424.516998,315.389984) t=0 (441.853149,308.209106) tEnd=1 other=8 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=10 (424.516998,315.389984 414.361725,315.389984 407.180847,308.209106) t=0 (424.516998,315.389984) tEnd=0.266471573 other=9 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=10 (424.516998,315.389984 414.361725,315.389984 407.180847,308.209106) t=0.266471573 (419.31601,314.880096) tEnd=1 other=5 otherT=0.700123447 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=11 (407.180847,308.209106 400,301.028259 400,290.872986) t=0 (407.180847,308.209106) tEnd=1 other=10 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=12 (400,290.872986 400,280.717712 407.180847,273.536865) t=0 (400,290.872986) tEnd=1 other=11 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=13 (407.180847,273.536865 414.361725,266.355988 424.516998,266.355988) t=0 (407.180847,273.536865) tEnd=1 other=12 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=14 (424.516998,266.355988 434.672272,266.355988 441.853149,273.536865) t=0 (424.516998,266.355988) tEnd=1 other=13 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=15 (441.853149,273.536865 449.033997,280.717712 449.033997,290.872986) t=0 (441.853149,273.536865) tEnd=1 other=14 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=0 (509.203003,385.60199 509.203003,415.688385 487.928711,436.962708) t=0 (509.203003,385.60199) tEnd=1 other=7 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=1 (487.928711,436.962708 466.654388,458.237 436.567993,458.237) t=0 (487.928711,436.962708) tEnd=1 other=0 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=2 (436.567993,458.237 406.481598,458.237 385.207275,436.962708) t=0 (436.567993,458.237) tEnd=1 other=1 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=3 (385.207275,436.962708 363.932983,415.688385 363.932983,385.60199) t=0 (385.207275,436.962708) tEnd=1 other=2 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=4 (363.932983,385.60199 363.932983,355.515594 385.207275,334.241272) t=0 (363.932983,385.60199) tEnd=1 other=3 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=5 (385.207275,334.241272 406.481598,312.96698 436.567993,312.96698) t=0 (385.207275,334.241272) tEnd=0.700123447 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=5 (385.207275,334.241272 406.481598,312.96698 436.567993,312.96698) t=0.700123447 (419.31601,314.880096) tEnd=1 other=10 otherT=0.266471573 otherIndex=1 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=6 (436.567993,312.96698 466.654388,312.96698 487.928711,334.241272) t=0 (436.567993,312.96698) tEnd=1 other=5 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0 +SkOpSegment::debugShowActiveSpans id=7 (487.928711,334.241272 509.203003,355.515594 509.203003,385.60199) t=0 (487.928711,334.241272) tEnd=1 other=6 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0 SkOpSegment::findTop -SkOpAngle::dumpOne [0/5] next=1/1 sect=21/21 s=1 [3] e=0.711321242 [2] sgn=1 windVal=1 windSum=? -SkOpAngle::dumpOne [1/1] next=0/5 sect=31/31 s=0 [0] e=1 [1] sgn=-1 windVal=1 windSum=? stop -SkOpSegment::markWinding id=0 (142.701004,110.568001 142.957001,100) t=0.711321242 [2] (142.883102,103.050758) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpAngle::dumpOne [13/1] next=14/1 sect=16/17 s=1 [1] e=0 [0] sgn=1 windVal=1 windSum=? operand +SkOpAngle::dumpOne [14/1] next=13/1 sect=30/29 s=0 [0] e=1 [1] sgn=-1 windVal=1 windSum=? operand stop +SkOpSegment::markWinding id=13 (407.180847,273.536865 414.361725,266.355988 424.516998,266.355988) t=0 [0] (407.180847,273.536865) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 SkOpSegment::nextChase mismatched signs -SkOpSegment::markWinding id=1 (142.957001,100 153.835007,100) t=0 [0] (142.957001,100) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=2 (153.835007,100 154.591995,108.188004) t=0 [0] (153.835007,100) tEnd=0.437046747 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=0 (142.701004,110.568001 142.957001,100) t=0.711321242 [2] (142.883102,103.050758) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::activeOp id=0 t=0.711321242 tEnd=1 op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1 +SkOpSegment::markWinding id=14 (424.516998,266.355988 434.672272,266.355988 441.853149,273.536865) t=0 [0] (424.516998,266.355988) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=15 (441.853149,273.536865 449.033997,280.717712 449.033997,290.872986) t=0 [0] (441.853149,273.536865) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=8 (449.033997,290.872986 449.033997,301.028259 441.853149,308.209106) t=0 [0] (449.033997,290.872986) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=9 (441.853149,308.209106 434.672272,315.389984 424.516998,315.389984) t=0 [0] (441.853149,308.209106) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=10 (424.516998,315.389984 414.361725,315.389984 407.180847,308.209106) t=0 [0] (424.516998,315.389984) tEnd=0.266471573 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=13 (407.180847,273.536865 414.361725,266.355988 424.516998,266.355988) t=0 [0] (407.180847,273.536865) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +SkOpSegment::markWinding id=12 (400,290.872986 400,280.717712 407.180847,273.536865) t=0 [0] (400,290.872986) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=11 (407.180847,308.209106 400,301.028259 400,290.872986) t=0 [0] (407.180847,308.209106) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=10 (424.516998,315.389984 414.361725,315.389984 407.180847,308.209106) t=0.266471573 [1] (419.31601,314.880096) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::activeOp id=13 t=0 tEnd=1 op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1 SkOpSegment::nextChase mismatched signs SkOpSegment::findNextOp simple -SkOpSegment::markDoneBinary id=0 (142.701004,110.568001 142.957001,100) t=0.711321242 [2] (142.883102,103.050758) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 -bridgeOp current id=0 from=(142.883102,103.050758) to=(142.957001,100) +SkOpSegment::markDoneBinary id=13 (407.180847,273.536865 414.361725,266.355988 424.516998,266.355988) t=0 [0] (407.180847,273.536865) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +bridgeOp current id=13 from=(407.180847,273.536865) to=(424.516998,266.355988) +path.moveTo(407.180847,273.536865); +path.quadTo(414.361725,266.355988, 424.516998,266.355988); SkOpSegment::findNextOp simple -SkOpSegment::markDoneBinary id=1 (142.957001,100 153.835007,100) t=0 [0] (142.957001,100) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 -bridgeOp current id=1 from=(142.957001,100) to=(153.835007,100) -path.moveTo(142.883102,103.050758); -path.lineTo(142.957001,100); -SkOpSegment::markWinding id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0.671281996 [1] (142.883102,103.050758) tEnd=0.734814757 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markAngle last id=6 windSum=-1 small=0 -SkOpSegment::markWinding id=2 (153.835007,100 154.591995,108.188004) t=0.437046747 [1] (154.165848,103.578537) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=3 (154.591995,108.188004 154.591995,108.188004 153.173004,108.483002 152.830002,109.412003) t=0 [0] (154.591995,108.188004) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=4 (152.830002,109.412003 142.701004,110.568001) t=0 [0] (152.830002,109.412003) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=0 (142.701004,110.568001 142.957001,100) t=0 [0] (142.701004,110.568001) tEnd=0.204639461 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markAngle last id=0 windSum=? small=0 -SkOpSegment::markWinding id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0.734814757 [2] (154.165848,103.578537) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=7 (188.201004,117.600998 188.201004,117.600998 174.800995,93 39,124.000999) t=0 [0] (188.201004,117.600998) tEnd=0.642192755 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markAngle last id=7 windSum=? small=0 -SkOpSegment::findNextOp -SkOpAngle::dumpOne [2/1] next=6/3 sect=9/9 s=0.437046747 [1] e=0 [0] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 -SkOpAngle::dumpOne [6/3] next=2/2 sect=13/13 s=0.734814757 [2] e=0.671281996 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand -SkOpAngle::dumpOne [2/2] next=6/4 sect=25/25 s=0.437046747 [1] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 -SkOpAngle::dumpOne [6/4] next=2/1 sect=29/29 s=0.734814757 [2] e=1 [3] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand -SkOpSegment::activeOp id=6 t=0.734814757 tEnd=0.671281996 op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0 -SkOpSegment::markDoneBinary id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0.671281996 [1] (142.883102,103.050758) tEnd=0.734814757 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::findNextOp chase.append id=6 windSum=-1 small=0 -SkOpSegment::activeOp id=2 t=0.437046747 tEnd=1 op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0 -SkOpSegment::markDoneBinary id=2 (153.835007,100 154.591995,108.188004) t=0.437046747 [1] (154.165848,103.578537) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::markDoneBinary id=3 (154.591995,108.188004 154.591995,108.188004 153.173004,108.483002 152.830002,109.412003) t=0 [0] (154.591995,108.188004) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::markDoneBinary id=4 (152.830002,109.412003 142.701004,110.568001) t=0 [0] (152.830002,109.412003) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::markDoneBinary id=0 (142.701004,110.568001 142.957001,100) t=0 [0] (142.701004,110.568001) tEnd=0.204639461 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::findNextOp chase.append id=0 windSum=-2147483647 small=0 -SkOpSegment::activeOp id=6 t=0.734814757 tEnd=1 op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1 -SkOpSegment::findNextOp chase.append id=7 windSum=-2147483647 small=0 -SkOpSegment::markDoneBinary id=2 (153.835007,100 154.591995,108.188004) t=0 [0] (153.835007,100) tEnd=0.437046747 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::findNextOp from:[2] to:[6] start=2 end=3 -bridgeOp current id=2 from=(153.835007,100) to=(154.165848,103.578537) -path.lineTo(153.835007,100); +SkOpSegment::markDoneBinary id=14 (424.516998,266.355988 434.672272,266.355988 441.853149,273.536865) t=0 [0] (424.516998,266.355988) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +bridgeOp current id=14 from=(424.516998,266.355988) to=(441.853149,273.536865) +path.quadTo(434.672272,266.355988, 441.853149,273.536865); +SkOpSegment::findNextOp simple +SkOpSegment::markDoneBinary id=15 (441.853149,273.536865 449.033997,280.717712 449.033997,290.872986) t=0 [0] (441.853149,273.536865) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +bridgeOp current id=15 from=(441.853149,273.536865) to=(449.033997,290.872986) +path.quadTo(449.033997,280.717712, 449.033997,290.872986); +SkOpSegment::findNextOp simple +SkOpSegment::markDoneBinary id=8 (449.033997,290.872986 449.033997,301.028259 441.853149,308.209106) t=0 [0] (449.033997,290.872986) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +bridgeOp current id=8 from=(449.033997,290.872986) to=(441.853149,308.209106) +path.quadTo(449.033997,301.028259, 441.853149,308.209106); SkOpSegment::findNextOp simple -SkOpSegment::markDoneBinary id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0.734814757 [2] (154.165848,103.578537) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 -bridgeOp current id=6 from=(154.165848,103.578537) to=(188.201004,117.600998) -path.lineTo(154.165848,103.578537); -path.cubicTo(169.326965,104.931351, 181.942627,109.008728, 188.201004,117.600998); -SkOpSegment::markWinding id=0 (142.701004,110.568001 142.957001,100) t=0.204639461 [1] (142.753387,108.405373) tEnd=0.711321242 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markAngle last id=0 windSum=-1 small=0 -SkOpSegment::markWinding id=7 (188.201004,117.600998 188.201004,117.600998 174.800995,93 39,124.000999) t=0.642192755 [1] (142.753387,108.405373) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=5 (39,124.000999 50.5999985,117.000999) t=0 [0] (39,124.000999) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markWinding id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0 [0] (50.5999985,117.000999) tEnd=0.671281996 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0 -SkOpSegment::markAngle last id=6 windSum=-1 small=0 +SkOpSegment::markDoneBinary id=9 (441.853149,308.209106 434.672272,315.389984 424.516998,315.389984) t=0 [0] (441.853149,308.209106) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +bridgeOp current id=9 from=(441.853149,308.209106) to=(424.516998,315.389984) +path.quadTo(434.672272,315.389984, 424.516998,315.389984); +SkOpSegment::markWinding id=5 (385.207275,334.241272 406.481598,312.96698 436.567993,312.96698) t=0.700123447 [1] (419.31601,314.880096) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=6 (436.567993,312.96698 466.654388,312.96698 487.928711,334.241272) t=0 [0] (436.567993,312.96698) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=7 (487.928711,334.241272 509.203003,355.515594 509.203003,385.60199) t=0 [0] (487.928711,334.241272) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=0 (509.203003,385.60199 509.203003,415.688385 487.928711,436.962708) t=0 [0] (509.203003,385.60199) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=1 (487.928711,436.962708 466.654388,458.237 436.567993,458.237) t=0 [0] (487.928711,436.962708) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=2 (436.567993,458.237 406.481598,458.237 385.207275,436.962708) t=0 [0] (436.567993,458.237) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=3 (385.207275,436.962708 363.932983,415.688385 363.932983,385.60199) t=0 [0] (385.207275,436.962708) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=4 (363.932983,385.60199 363.932983,355.515594 385.207275,334.241272) t=0 [0] (363.932983,385.60199) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markWinding id=5 (385.207275,334.241272 406.481598,312.96698 436.567993,312.96698) t=0 [0] (385.207275,334.241272) tEnd=0.700123447 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0 +SkOpSegment::markAngle last id=5 windSum=1 small=0 SkOpSegment::findNextOp -SkOpAngle::dumpOne [7/1] next=0/2 sect=1/29 s=0.642192755 [1] e=0 [0] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand -SkOpAngle::dumpOne [0/2] next=7/2 sect=5/5 s=0.204639461 [1] e=0.711321242 [2] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 -SkOpAngle::dumpOne [7/2] next=0/1 sect=17/17 s=0.642192755 [1] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand -SkOpAngle::dumpOne [0/1] next=7/1 sect=21/21 s=0.204639461 [1] e=0 [0] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done -SkOpSegment::activeOp id=0 t=0.204639461 tEnd=0.711321242 op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0 -SkOpSegment::markDoneBinary id=0 (142.701004,110.568001 142.957001,100) t=0.204639461 [1] (142.753387,108.405373) tEnd=0.711321242 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 -SkOpSegment::findNextOp chase.append id=0 windSum=-1 small=0 -SkOpSegment::activeOp id=7 t=0.642192755 tEnd=1 op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0 -SkOpSegment::markDoneBinary id=7 (188.201004,117.600998 188.201004,117.600998 174.800995,93 39,124.000999) t=0.642192755 [1] (142.753387,108.405373) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::markDoneBinary id=5 (39,124.000999 50.5999985,117.000999) t=0 [0] (39,124.000999) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::markDoneBinary id=6 (50.5999985,117.000999 50.5999985,117.000999 164.600998,85.1999969 188.201004,117.600998) t=0 [0] (50.5999985,117.000999) tEnd=0.671281996 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::activeOp id=0 t=0.204639461 tEnd=0 op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1 -SkOpSegment::markDoneBinary id=7 (188.201004,117.600998 188.201004,117.600998 174.800995,93 39,124.000999) t=0 [0] (188.201004,117.600998) tEnd=0.642192755 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 -SkOpSegment::findNextOp from:[7] to:[0] start=1 end=0 -bridgeOp current id=7 from=(188.201004,117.600998) to=(142.753387,108.405373) -path.cubicTo(188.201004,117.600998, 182.674683,107.455261, 142.753387,108.405373); +SkOpAngle::dumpOne [10/1] next=5/2 sect=29/29 s=0.266471573 [1] e=0 [0] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand +SkOpAngle::dumpOne [5/2] next=10/2 sect=1/1 s=0.700123447 [1] e=1 [2] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 +SkOpAngle::dumpOne [10/2] next=5/1 sect=13/13 s=0.266471573 [1] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand +SkOpAngle::dumpOne [5/1] next=10/1 sect=17/17 s=0.700123447 [1] e=0 [0] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 +SkOpSegment::activeOp id=5 t=0.700123447 tEnd=1 op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0 +SkOpSegment::markDoneBinary id=5 (385.207275,334.241272 406.481598,312.96698 436.567993,312.96698) t=0.700123447 [1] (419.31601,314.880096) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=6 (436.567993,312.96698 466.654388,312.96698 487.928711,334.241272) t=0 [0] (436.567993,312.96698) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=7 (487.928711,334.241272 509.203003,355.515594 509.203003,385.60199) t=0 [0] (487.928711,334.241272) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=0 (509.203003,385.60199 509.203003,415.688385 487.928711,436.962708) t=0 [0] (509.203003,385.60199) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=1 (487.928711,436.962708 466.654388,458.237 436.567993,458.237) t=0 [0] (487.928711,436.962708) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=2 (436.567993,458.237 406.481598,458.237 385.207275,436.962708) t=0 [0] (436.567993,458.237) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=3 (385.207275,436.962708 363.932983,415.688385 363.932983,385.60199) t=0 [0] (385.207275,436.962708) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=4 (363.932983,385.60199 363.932983,355.515594 385.207275,334.241272) t=0 [0] (363.932983,385.60199) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=5 (385.207275,334.241272 406.481598,312.96698 436.567993,312.96698) t=0 [0] (385.207275,334.241272) tEnd=0.700123447 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0 +SkOpSegment::findNextOp chase.append id=5 windSum=1 small=0 +SkOpSegment::activeOp id=10 t=0.266471573 tEnd=1 op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0 +SkOpSegment::markDoneBinary id=10 (424.516998,315.389984 414.361725,315.389984 407.180847,308.209106) t=0.266471573 [1] (419.31601,314.880096) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=11 (407.180847,308.209106 400,301.028259 400,290.872986) t=0 [0] (407.180847,308.209106) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +SkOpSegment::markDoneBinary id=12 (400,290.872986 400,280.717712 407.180847,273.536865) t=0 [0] (400,290.872986) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +SkOpSegment::activeOp id=5 t=0.700123447 tEnd=0 op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1 +SkOpSegment::markDoneBinary id=10 (424.516998,315.389984 414.361725,315.389984 407.180847,308.209106) t=0 [0] (424.516998,315.389984) tEnd=0.266471573 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 +SkOpSegment::findNextOp from:[10] to:[5] start=1 end=0 +bridgeOp current id=10 from=(424.516998,315.389984) to=(419.31601,314.880096) +path.quadTo(421.810883,315.389984, 419.31601,314.880096); </div> </div> @@ -142,7 +141,7 @@ path.cubicTo(188.201004,117.600998, 182.674683,107.455261, 142.753387,108.405373 <script type="text/javascript"> var testDivs = [ - issue2753, + issue2808, ]; var decimal_places = 3; // make this 3 to show more precision |