Index: tests/PathOpsOpTest.cpp |
diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp |
index 08dff90c2920fae7f59930c75bd0300e3c02879c..48ed866a904d085c23c1acc7ecf212c24ab2712e 100644 |
--- a/tests/PathOpsOpTest.cpp |
+++ b/tests/PathOpsOpTest.cpp |
@@ -1144,6 +1144,7 @@ static void cubicOp69d(skiatest::Reporter* reporter) { |
testPathOp(reporter, path, pathB, kDifference_PathOp); |
} |
+ |
SkPathOp ops[] = { |
kUnion_PathOp, |
kXOR_PathOp, |
@@ -1343,9 +1344,175 @@ static void cubicOp70d(skiatest::Reporter* reporter) { |
testPathOp(reporter, path, pathB, kDifference_PathOp); |
} |
-static void (*firstTest)(skiatest::Reporter* ) = 0; |
+static void cubicOp71d(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(0,5, 4,1, 6,4); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(1,4); |
+ pathB.cubicTo(4,6, 1,0, 5,0); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kDifference_PathOp); |
+} |
+ |
+static void cubicOp72i(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(0,5, 5,2, 5,4); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(2,5); |
+ pathB.cubicTo(4,5, 1,0, 5,0); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void cubicOp73d(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(3,4, 4,0, 6,4); |
+ path.lineTo(0,1); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(0,4); |
+ pathB.cubicTo(4,6, 1,0, 4,3); |
+ pathB.lineTo(0,4); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kDifference_PathOp); |
+} |
+ |
+static void cubicOp75d(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(0,4, 5,1, 6,4); |
+ path.lineTo(0,1); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(1,5); |
+ pathB.cubicTo(4,6, 1,0, 4,0); |
+ pathB.lineTo(1,5); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kDifference_PathOp); |
+} |
+ |
+static void cubicOp77i(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kEvenOdd_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(1,3, 2,0, 3,2); |
+ path.lineTo(0,1); |
+ path.close(); |
+ pathB.setFillType(SkPath::kEvenOdd_FillType); |
+ pathB.moveTo(0,2); |
+ pathB.cubicTo(2,3, 1,0, 3,1); |
+ pathB.lineTo(0,2); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void cubicOp78u(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kEvenOdd_FillType); |
+ path.moveTo(1,6); |
+ path.cubicTo(1,6, 5,0, 6,1); |
+ path.lineTo(1,6); |
+ path.close(); |
+ pathB.setFillType(SkPath::kEvenOdd_FillType); |
+ pathB.moveTo(0,5); |
+ pathB.cubicTo(1,6, 6,1, 6,1); |
+ pathB.lineTo(0,5); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kUnion_PathOp); |
+} |
+ |
+static void cubicOp79d(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,2); |
+ path.cubicTo(0,1, 3,-0.1f, 1,0); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(0,3); |
+ pathB.cubicTo(0,1, 2,0, 1,0); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kDifference_PathOp); |
+} |
+ |
+static void cubicOp79u(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(1,3, 1,0, 6,4); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(0,1); |
+ pathB.cubicTo(4,6, 1,0, 3,1); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void cubicOp80i(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(2,3, 2,1, 4,3); |
+ path.lineTo(0,1); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(1,2); |
+ pathB.cubicTo(3,4, 1,0, 3,2); |
+ pathB.lineTo(1,2); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void cubicOp82i(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kEvenOdd_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(2,3, 5,2, 3,0); |
+ path.lineTo(0,1); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(2,5); |
+ pathB.cubicTo(0,3, 1,0, 3,2); |
+ pathB.lineTo(2,5); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void cubicOp81d(skiatest::Reporter* reporter) { |
+ SkPath path, pathB; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(4,6, 4,3, 5,4); |
+ path.close(); |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(3,4); |
+ pathB.cubicTo(4,5, 1,0, 6,4); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kDifference_PathOp); |
+} |
+ |
+static void (*firstTest)(skiatest::Reporter* ) = cubicOp81d; |
static struct TestDesc tests[] = { |
+ TEST(cubicOp82i), |
+ TEST(cubicOp81d), |
+ TEST(cubicOp80i), |
+ TEST(cubicOp79u), |
+ TEST(cubicOp79d), |
+ TEST(cubicOp78u), |
+ TEST(cubicOp77i), |
+ TEST(cubicOp75d), |
+ TEST(cubicOp73d), |
+ TEST(cubicOp72i), |
+ TEST(cubicOp71d), |
TEST(skp5), |
TEST(skp4), |
TEST(skp3), |