shape ops work in progress
add xor spot tests
rewrite path compare
work on quadratic, angle, tooCloseToCall code
git-svn-id: http://skia.googlecode.com/svn/trunk@5255 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/SimplifyNew_Test.cpp b/experimental/Intersection/SimplifyNew_Test.cpp
index 828da54..8d6bb50 100644
--- a/experimental/Intersection/SimplifyNew_Test.cpp
+++ b/experimental/Intersection/SimplifyNew_Test.cpp
@@ -20,6 +20,16 @@
testSimplifyx(path);
}
+static void testLine1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(2,0);
+ path.lineTo(1,1);
+ path.lineTo(0,0);
+ path.close();
+ testSimplifyx(path);
+}
+
static void addInnerCWTriangle(SkPath& path) {
path.moveTo(3,0);
path.lineTo(4,1);
@@ -50,6 +60,15 @@
static void testLine2() {
SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
addInnerCWTriangle(path);
addOuterCWTriangle(path);
testSimplifyx(path);
@@ -57,6 +76,15 @@
static void testLine3() {
SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
addInnerCCWTriangle(path);
addOuterCWTriangle(path);
testSimplifyx(path);
@@ -69,6 +97,14 @@
testSimplifyx(path);
}
+static void testLine3ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCWTriangle(path);
+ addOuterCCWTriangle(path);
+ testSimplifyx(path);
+}
+
static void testLine3b() {
SkPath path;
addInnerCCWTriangle(path);
@@ -76,6 +112,14 @@
testSimplifyx(path);
}
+static void testLine3bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCCWTriangle(path);
+ addOuterCCWTriangle(path);
+ testSimplifyx(path);
+}
+
static void testLine4() {
SkPath path;
addOuterCCWTriangle(path);
@@ -83,6 +127,14 @@
testSimplifyx(path);
}
+static void testLine4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addOuterCCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
static void testLine5() {
SkPath path;
addOuterCWTriangle(path);
@@ -90,6 +142,14 @@
testSimplifyx(path);
}
+static void testLine5x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addOuterCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
static void testLine6() {
SkPath path;
path.moveTo(0,0);
@@ -103,6 +163,20 @@
testSimplifyx(path);
}
+static void testLine6x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(6,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine7() {
SkPath path;
path.moveTo(0,0);
@@ -116,6 +190,20 @@
testSimplifyx(path);
}
+static void testLine7x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine7a() {
SkPath path;
path.moveTo(0,0);
@@ -125,6 +213,16 @@
testSimplifyx(path);
}
+static void testLine7ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine7b() {
SkPath path;
path.moveTo(0,0);
@@ -137,6 +235,19 @@
testSimplifyx(path);
}
+static void testLine7bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine8() {
SkPath path;
path.moveTo(0,4);
@@ -150,6 +261,20 @@
testSimplifyx(path);
}
+static void testLine8x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,4);
+ path.lineTo(6,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine9() {
SkPath path;
path.moveTo(0,4);
@@ -163,6 +288,20 @@
testSimplifyx(path);
}
+static void testLine9x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,4);
+ path.lineTo(2,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine10() {
SkPath path;
path.moveTo(0,4);
@@ -176,6 +315,20 @@
testSimplifyx(path);
}
+static void testLine10x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,1);
+ path.lineTo(3,4);
+ path.lineTo(6,1);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine10a() {
SkPath path;
path.moveTo(0,4);
@@ -189,6 +342,20 @@
testSimplifyx(path);
}
+static void testLine10ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(8,4);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(2,2);
+ path.lineTo(3,3);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void addCWContainer(SkPath& path) {
path.moveTo(6,4);
path.lineTo(0,4);
@@ -224,6 +391,14 @@
testSimplifyx(path);
}
+static void testLine11x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCWContainer(path);
+ addCWContents(path);
+ testSimplifyx(path);
+}
+
static void testLine12() {
SkPath path;
addCCWContainer(path);
@@ -231,6 +406,14 @@
testSimplifyx(path);
}
+static void testLine12x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCCWContainer(path);
+ addCWContents(path);
+ testSimplifyx(path);
+}
+
static void testLine13() {
SkPath path;
addCWContainer(path);
@@ -238,6 +421,14 @@
testSimplifyx(path);
}
+static void testLine13x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCWContainer(path);
+ addCCWContents(path);
+ testSimplifyx(path);
+}
+
static void testLine14() {
SkPath path;
addCCWContainer(path);
@@ -245,12 +436,27 @@
testSimplifyx(path);
}
+static void testLine14x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCCWContainer(path);
+ addCCWContents(path);
+ testSimplifyx(path);
+}
+
static void testLine15() {
SkPath path;
path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
testSimplifyx(path);
}
+static void testLine15x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine16() {
SkPath path;
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -258,6 +464,14 @@
testSimplifyx(path);
}
+static void testLine16x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine17() {
SkPath path;
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -265,6 +479,14 @@
testSimplifyx(path);
}
+static void testLine17x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine18() {
SkPath path;
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -272,6 +494,14 @@
testSimplifyx(path);
}
+static void testLine18x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 4, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine19() {
SkPath path;
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -279,6 +509,14 @@
testSimplifyx(path);
}
+static void testLine19x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 16, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine20() {
SkPath path;
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -286,6 +524,14 @@
testSimplifyx(path);
}
+static void testLine20x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 12, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine21() {
SkPath path;
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -293,6 +539,14 @@
testSimplifyx(path);
}
+static void testLine21x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 16, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine22() {
SkPath path;
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -300,6 +554,14 @@
testSimplifyx(path);
}
+static void testLine22x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine23() {
SkPath path;
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -307,7 +569,13 @@
testSimplifyx(path);
}
-
+static void testLine23x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
static void testLine24a() {
SkPath path;
@@ -322,6 +590,20 @@
testSimplifyx(path);
}
+static void testLine24ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(2,0);
+ path.lineTo(4,4);
+ path.lineTo(0,4);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(1,2);
+ path.lineTo(2,2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testLine24() {
SkPath path;
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -329,6 +611,14 @@
testSimplifyx(path);
}
+static void testLine24x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine25() {
SkPath path;
path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
@@ -336,6 +626,14 @@
testSimplifyx(path);
}
+static void testLine25x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine26() {
SkPath path;
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -343,6 +641,14 @@
testSimplifyx(path);
}
+static void testLine26x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 12, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine27() {
SkPath path;
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -350,6 +656,14 @@
testSimplifyx(path);
}
+static void testLine27x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 8, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine28() {
SkPath path;
path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
@@ -357,6 +671,14 @@
testSimplifyx(path);
}
+static void testLine28x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine29() {
SkPath path;
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -364,6 +686,14 @@
testSimplifyx(path);
}
+static void testLine29x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine30() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -372,6 +702,15 @@
testSimplifyx(path);
}
+static void testLine30x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 4, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine31() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -380,6 +719,15 @@
testSimplifyx(path);
}
+static void testLine31x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine32() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -388,6 +736,15 @@
testSimplifyx(path);
}
+static void testLine32x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine33() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -396,6 +753,15 @@
testSimplifyx(path);
}
+static void testLine33x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine34() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -404,6 +770,15 @@
testSimplifyx(path);
}
+static void testLine34x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine35() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -412,6 +787,15 @@
testSimplifyx(path);
}
+static void testLine35x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
+ path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine36() {
SkPath path;
path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
@@ -420,6 +804,15 @@
testSimplifyx(path);
}
+static void testLine36x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
+ path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine37() {
SkPath path;
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -428,6 +821,15 @@
testSimplifyx(path);
}
+static void testLine37x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
+ path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine38() {
SkPath path;
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
@@ -436,6 +838,15 @@
testSimplifyx(path);
}
+static void testLine38x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+ path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
+ path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine40() {
SkPath path;
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
@@ -444,6 +855,15 @@
testSimplifyx(path);
}
+static void testLine40x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+ path.addRect(12, 18, 24, 24, (SkPath::Direction) 0);
+ path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine41() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -452,6 +872,15 @@
testSimplifyx(path);
}
+static void testLine41x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine42() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -460,6 +889,15 @@
testSimplifyx(path);
}
+static void testLine42x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(8, 16, 17, 17, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine43() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -468,6 +906,15 @@
testSimplifyx(path);
}
+static void testLine43x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 24, 18, 18, (SkPath::Direction) 0);
+ path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine44() {
SkPath path;
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
@@ -476,6 +923,15 @@
testSimplifyx(path);
}
+static void testLine44x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+ path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
+ path.addRect(18, 32, 27, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine45() {
SkPath path;
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
@@ -484,6 +940,15 @@
testSimplifyx(path);
}
+static void testLine45x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+ path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
+ path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine46() {
SkPath path;
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
@@ -492,6 +957,15 @@
testSimplifyx(path);
}
+static void testLine46x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+ path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
+ path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine47() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -500,6 +974,15 @@
testSimplifyx(path);
}
+static void testLine47x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine48() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -508,6 +991,15 @@
testSimplifyx(path);
}
+static void testLine48x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine49() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -516,6 +1008,15 @@
testSimplifyx(path);
}
+static void testLine49x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine50() {
SkPath path;
path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -523,6 +1024,13 @@
testSimplifyx(path);
}
+static void testLine50x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
+ path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
static void testLine51() {
SkPath path;
@@ -532,6 +1040,15 @@
testSimplifyx(path);
}
+static void testLine51x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine52() {
SkPath path;
path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
@@ -540,6 +1057,15 @@
testSimplifyx(path);
}
+static void testLine52x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
+ path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine53() {
SkPath path;
path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -548,6 +1074,15 @@
testSimplifyx(path);
}
+static void testLine53x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
+ path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
+ path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine54() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -556,6 +1091,15 @@
testSimplifyx(path);
}
+static void testLine54x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
+ path.addRect(8, 4, 17, 17, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine55() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -564,6 +1108,15 @@
testSimplifyx(path);
}
+static void testLine55x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 6, 18, 18, (SkPath::Direction) 0);
+ path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine56() {
SkPath path;
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -572,6 +1125,15 @@
testSimplifyx(path);
}
+static void testLine56x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
+ path.addRect(18, 20, 30, 30, (SkPath::Direction) 0);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine57() {
SkPath path;
path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
@@ -580,6 +1142,15 @@
testSimplifyx(path);
}
+static void testLine57x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
+ path.addRect(20, 0, 30, 40, (SkPath::Direction) 0);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine58() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -588,6 +1159,15 @@
testSimplifyx(path);
}
+static void testLine58x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 0, 12, 12, (SkPath::Direction) 1);
+ path.addRect(0, 12, 9, 9, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine59() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -596,6 +1176,15 @@
testSimplifyx(path);
}
+static void testLine59x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 6, 18, 18, (SkPath::Direction) 1);
+ path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine60() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -604,6 +1193,15 @@
testSimplifyx(path);
}
+static void testLine60x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(6, 12, 18, 18, (SkPath::Direction) 1);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine61() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -612,6 +1210,15 @@
testSimplifyx(path);
}
+static void testLine61x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(12, 0, 24, 24, (SkPath::Direction) 1);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine62() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -621,6 +1228,16 @@
testSimplifyx(path);
}
+static void testLine62x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+ path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine63() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -630,6 +1247,16 @@
testSimplifyx(path);
}
+static void testLine63x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 6, 12, 12, (SkPath::Direction) 1);
+ path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine64() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -638,6 +1265,15 @@
testSimplifyx(path);
}
+static void testLine64x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+ path.addRect(18, 6, 30, 30, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine65() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -647,6 +1283,16 @@
testSimplifyx(path);
}
+static void testLine65x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+ path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
+ path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine66() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -655,6 +1301,15 @@
testSimplifyx(path);
}
+static void testLine66x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
+ path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine67() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -664,6 +1319,16 @@
testSimplifyx(path);
}
+static void testLine67x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+ path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
+ path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68a() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -672,6 +1337,15 @@
testSimplifyx(path);
}
+static void testLine68ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
+ path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68b() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -680,6 +1354,15 @@
testSimplifyx(path);
}
+static void testLine68bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68c() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
@@ -688,6 +1371,15 @@
testSimplifyx(path);
}
+static void testLine68cx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
+ path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68d() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
@@ -696,6 +1388,15 @@
testSimplifyx(path);
}
+static void testLine68dx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68e() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -705,6 +1406,16 @@
testSimplifyx(path);
}
+static void testLine68ex() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68f() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -714,6 +1425,16 @@
testSimplifyx(path);
}
+static void testLine68fx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68g() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -724,6 +1445,17 @@
testSimplifyx(path);
}
+static void testLine68gx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine68h() {
SkPath path;
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -734,6 +1466,17 @@
testSimplifyx(path);
}
+static void testLine68hx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+ path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine69() {
SkPath path;
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -742,6 +1485,15 @@
testSimplifyx(path);
}
+static void testLine69x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
+ path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine70() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -750,6 +1502,15 @@
testSimplifyx(path);
}
+static void testLine70x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 24, 12, 12, (SkPath::Direction) 0);
+ path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine71() {
SkPath path;
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -758,6 +1519,15 @@
testSimplifyx(path);
}
+static void testLine71x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+ path.addRect(12, 0, 24, 24, (SkPath::Direction) 0);
+ path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine72() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -766,6 +1536,15 @@
testSimplifyx(path);
}
+static void testLine72x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+ path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
+ testSimplifyx(path);
+}
+
static void testLine73() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -775,6 +1554,16 @@
testSimplifyx(path);
}
+static void testLine73x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(0, 40, 20, 20, (SkPath::Direction) 0);
+ path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
+ path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine74() {
SkPath path;
path.addRect(20, 30, 40, 40, (SkPath::Direction) 0);
@@ -783,6 +1572,15 @@
testSimplifyx(path);
}
+static void testLine74x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(20, 30, 40, 40, (SkPath::Direction) 0);
+ path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
+ path.addRect(32, 24, 36, 41, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine75() {
SkPath path;
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -792,6 +1590,16 @@
testSimplifyx(path);
}
+static void testLine75x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+ path.addRect(10, 0, 30, 30, (SkPath::Direction) 1);
+ path.addRect(18, 0, 30, 30, (SkPath::Direction) 1);
+ path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine76() {
SkPath path;
path.addRect(36, 0, 66, 60, (SkPath::Direction) 0);
@@ -801,6 +1609,16 @@
testSimplifyx(path);
}
+static void testLine76x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(36, 0, 66, 60, (SkPath::Direction) 0);
+ path.addRect(10, 20, 40, 30, (SkPath::Direction) 0);
+ path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
+ path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine77() {
SkPath path;
path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
@@ -809,6 +1627,15 @@
testSimplifyx(path);
}
+static void testLine77x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
+ path.addRect(24, 6, 36, 36, (SkPath::Direction) 1);
+ path.addRect(24, 32, 33, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine78() {
SkPath path;
path.addRect(0, 0, 30, 60, (SkPath::Direction) 0);
@@ -818,6 +1645,16 @@
testSimplifyx(path);
}
+static void testLine78x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 30, 60, (SkPath::Direction) 0);
+ path.addRect(10, 20, 30, 30, (SkPath::Direction) 1);
+ path.addRect(18, 20, 30, 30, (SkPath::Direction) 1);
+ path.addRect(32, 0, 36, 41, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testLine79() {
SkPath path;
path.addRect(0, 36, 60, 30, (SkPath::Direction) 0);
@@ -827,6 +1664,16 @@
testSimplifyx(path);
}
+static void testLine79x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 36, 60, 30, (SkPath::Direction) 0);
+ path.addRect(10, 30, 40, 30, (SkPath::Direction) 0);
+ path.addRect(0, 20, 12, 30, (SkPath::Direction) 1);
+ path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
+ testSimplifyx(path);
+}
+
static void testDegenerate1() {
SkPath path;
path.moveTo(0, 0);
@@ -840,6 +1687,20 @@
testSimplifyx(path);
}
+static void testDegenerate1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(2, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testDegenerate2() {
SkPath path;
path.moveTo(0, 0);
@@ -853,6 +1714,20 @@
testSimplifyx(path);
}
+static void testDegenerate2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testDegenerate3() {
SkPath path;
path.moveTo(0, 0);
@@ -866,6 +1741,20 @@
testSimplifyx(path);
}
+static void testDegenerate3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testDegenerate4() {
SkPath path;
path.moveTo(0, 0);
@@ -879,6 +1768,20 @@
testSimplifyx(path);
}
+static void testDegenerate4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testNondegenerate1() {
SkPath path;
path.moveTo(0, 0);
@@ -892,6 +1795,20 @@
testSimplifyx(path);
}
+static void testNondegenerate1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testNondegenerate2() {
SkPath path;
path.moveTo(1, 0);
@@ -905,6 +1822,20 @@
testSimplifyx(path);
}
+static void testNondegenerate2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testNondegenerate3() {
SkPath path;
path.moveTo(0, 0);
@@ -918,6 +1849,20 @@
testSimplifyx(path);
}
+static void testNondegenerate3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testNondegenerate4() {
SkPath path;
path.moveTo(1, 0);
@@ -931,6 +1876,20 @@
testSimplifyx(path);
}
+static void testNondegenerate4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadralateral5() {
SkPath path;
path.moveTo(0, 0);
@@ -946,6 +1905,22 @@
testSimplifyx(path);
}
+static void testQuadralateral5x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(3, 2);
+ path.lineTo(3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadralateral6() {
SkPath path;
path.moveTo(0, 0);
@@ -961,6 +1936,22 @@
testSimplifyx(path);
}
+static void testQuadralateral6x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testFauxQuadralateral6() {
SkPath path;
path.moveTo(0, 0);
@@ -978,6 +1969,24 @@
testSimplifyx(path);
}
+static void testFauxQuadralateral6x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1 + 1.0f/3, 2.0f/3);
+ path.close();
+ path.moveTo(1 + 1.0f/3, 2.0f/3);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testFauxQuadralateral6a() {
SkPath path;
path.moveTo(0, 0);
@@ -995,6 +2004,24 @@
testSimplifyx(path);
}
+static void testFauxQuadralateral6ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testFauxQuadralateral6b() {
SkPath path;
path.moveTo(0, 0);
@@ -1012,6 +2039,24 @@
testSimplifyx(path);
}
+static void testFauxQuadralateral6bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testFauxQuadralateral6c() {
SkPath path;
path.moveTo(0, 0);
@@ -1029,6 +2074,24 @@
testSimplifyx(path);
}
+static void testFauxQuadralateral6cx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testFauxQuadralateral6d() {
SkPath path;
path.moveTo(0, 0);
@@ -1046,6 +2109,24 @@
testSimplifyx(path);
}
+static void testFauxQuadralateral6dx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadralateral6a() {
SkPath path;
path.moveTo(0, 0);
@@ -1061,6 +2142,22 @@
testSimplifyx(path);
}
+static void testQuadralateral6ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadralateral7() {
SkPath path;
path.moveTo(0, 0);
@@ -1076,6 +2173,22 @@
testSimplifyx(path);
}
+static void testQuadralateral7x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 2);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadralateral8() {
SkPath path;
path.moveTo(0, 0);
@@ -1091,6 +2204,22 @@
testSimplifyx(path);
}
+static void testQuadralateral8x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 1);
+ path.lineTo(1, 3);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(2, 1);
+ path.lineTo(0, 2);
+ path.lineTo(3, 2);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadralateral9() {
SkPath path;
path.moveTo(0, 0);
@@ -1106,7 +2235,23 @@
testSimplifyx(path);
}
-static void testLine1x() {
+static void testQuadralateral9x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 3);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine1ax() {
SkPath path;
path.setFillType(SkPath::kEvenOdd_FillType);
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -1114,7 +2259,7 @@
testSimplifyx(path);
}
-static void testLine2x() {
+static void testLine2ax() {
SkPath path;
path.setFillType(SkPath::kEvenOdd_FillType);
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -1123,7 +2268,7 @@
testSimplifyx(path);
}
-static void testLine3x() {
+static void testLine3aax() {
SkPath path;
path.setFillType(SkPath::kEvenOdd_FillType);
path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -1132,7 +2277,7 @@
testSimplifyx(path);
}
-static void testLine4x() {
+static void testLine4ax() {
SkPath path;
path.setFillType(SkPath::kEvenOdd_FillType);
path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -1154,6 +2299,20 @@
testSimplifyx(path);
}
+static void testQuadratic1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadratic2() {
SkPath path;
path.moveTo(0, 0);
@@ -1167,6 +2326,20 @@
testSimplifyx(path);
}
+static void testQuadratic2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
static void testQuadratic3() {
SkPath path;
path.moveTo(0, 0);
@@ -1180,38 +2353,278 @@
testSimplifyx(path);
}
-static void (*firstTest)() = testQuadratic3;
+static void testQuadratic3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic4() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic5() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic6() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic7() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(3, 0, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic8() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic9() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(1, 2, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic14() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(3, 2, 3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void (*firstTest)() = testQuadratic14;
static struct {
void (*fun)();
const char* str;
} tests[] = {
+ TEST(testQuadratic14),
+ TEST(testQuadratic9),
+ TEST(testQuadratic8),
+ TEST(testQuadratic7),
+ TEST(testQuadratic6),
+ TEST(testQuadratic5),
+ TEST(testQuadratic4x),
+ TEST(testQuadratic3x),
+ TEST(testQuadratic2x),
+ TEST(testQuadratic1x),
+ TEST(testQuadratic4),
TEST(testQuadratic3),
TEST(testQuadratic2),
TEST(testQuadratic1),
- TEST(testLine4x),
- TEST(testLine3x),
- TEST(testLine2x),
- TEST(testLine1x),
+ TEST(testLine4ax),
+ TEST(testLine3aax),
+ TEST(testLine2ax),
+ TEST(testLine1ax),
+ TEST(testQuadralateral9x),
+ TEST(testQuadralateral8x),
+ TEST(testQuadralateral7x),
+ TEST(testQuadralateral6x),
+ TEST(testQuadralateral6ax),
TEST(testQuadralateral9),
TEST(testQuadralateral8),
TEST(testQuadralateral7),
TEST(testQuadralateral6),
TEST(testQuadralateral6a),
+ TEST(testFauxQuadralateral6dx),
+ TEST(testFauxQuadralateral6cx),
+ TEST(testFauxQuadralateral6bx),
+ TEST(testFauxQuadralateral6ax),
+ TEST(testFauxQuadralateral6x),
TEST(testFauxQuadralateral6d),
TEST(testFauxQuadralateral6c),
TEST(testFauxQuadralateral6b),
TEST(testFauxQuadralateral6a),
TEST(testFauxQuadralateral6),
+ TEST(testQuadralateral5x),
TEST(testQuadralateral5),
+ TEST(testNondegenerate4x),
+ TEST(testNondegenerate3x),
+ TEST(testNondegenerate2x),
+ TEST(testNondegenerate1x),
TEST(testNondegenerate4),
TEST(testNondegenerate3),
TEST(testNondegenerate2),
TEST(testNondegenerate1),
+ TEST(testDegenerate4x),
+ TEST(testDegenerate3x),
+ TEST(testDegenerate2x),
+ TEST(testDegenerate1x),
TEST(testDegenerate4),
TEST(testDegenerate3),
TEST(testDegenerate2),
TEST(testDegenerate1),
+ TEST(testLine79x),
+ TEST(testLine78x),
+ TEST(testLine77x),
+ TEST(testLine76x),
+ TEST(testLine75x),
+ TEST(testLine74x),
+ TEST(testLine73x),
+ TEST(testLine72x),
+ TEST(testLine71x),
+ TEST(testLine70x),
+ TEST(testLine69x),
+ TEST(testLine68hx),
+ TEST(testLine68gx),
+ TEST(testLine68fx),
+ TEST(testLine68ex),
+ TEST(testLine68dx),
+ TEST(testLine68cx),
+ TEST(testLine68bx),
+ TEST(testLine68ax),
+ TEST(testLine67x),
+ TEST(testLine66x),
+ TEST(testLine65x),
+ TEST(testLine64x),
+ TEST(testLine63x),
+ TEST(testLine62x),
+ TEST(testLine61x),
+ TEST(testLine60x),
+ TEST(testLine59x),
+ TEST(testLine58x),
+ TEST(testLine57x),
+ TEST(testLine56x),
+ TEST(testLine55x),
+ TEST(testLine54x),
+ TEST(testLine53x),
+ TEST(testLine52x),
+ TEST(testLine51x),
+ TEST(testLine50x),
+ TEST(testLine49x),
+ TEST(testLine48x),
+ TEST(testLine47x),
+ TEST(testLine46x),
+ TEST(testLine45x),
+ TEST(testLine44x),
+ TEST(testLine43x),
+ TEST(testLine42x),
+ TEST(testLine41x),
+ TEST(testLine40x),
+ TEST(testLine38x),
+ TEST(testLine37x),
+ TEST(testLine36x),
+ TEST(testLine35x),
+ TEST(testLine34x),
+ TEST(testLine33x),
+ TEST(testLine32x),
+ TEST(testLine31x),
+ TEST(testLine30x),
+ TEST(testLine29x),
+ TEST(testLine28x),
+ TEST(testLine27x),
+ TEST(testLine26x),
+ TEST(testLine25x),
+ TEST(testLine24ax),
+ TEST(testLine24x),
+ TEST(testLine23x),
+ TEST(testLine22x),
+ TEST(testLine21x),
+ TEST(testLine20x),
+ TEST(testLine19x),
+ TEST(testLine18x),
+ TEST(testLine17x),
+ TEST(testLine16x),
+ TEST(testLine15x),
+ TEST(testLine14x),
+ TEST(testLine13x),
+ TEST(testLine12x),
+ TEST(testLine11x),
+ TEST(testLine10ax),
+ TEST(testLine10x),
+ TEST(testLine9x),
+ TEST(testLine8x),
+ TEST(testLine7bx),
+ TEST(testLine7ax),
+ TEST(testLine7x),
+ TEST(testLine6x),
+ TEST(testLine5x),
+ TEST(testLine4x),
+ TEST(testLine3bx),
+ TEST(testLine3ax),
+ TEST(testLine3x),
+ TEST(testLine2x),
+ TEST(testLine1x),
TEST(testLine79),
TEST(testLine78),
TEST(testLine77),