aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/pathops/SkDQuadIntersection.cpp4
-rw-r--r--tests/PathOpsOpTest.cpp29
-rw-r--r--tests/PathOpsQuadIntersectionTest.cpp3
-rw-r--r--tools/pathops_visualizer.htm251
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