Index: tests/PathOpsOpTest.cpp |
diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp |
index e06bc8f57c23bc720920749e8baa817f349ac1a2..098b3864fc8af3d399d32921d7a997e81543f8c4 100644 |
--- a/tests/PathOpsOpTest.cpp |
+++ b/tests/PathOpsOpTest.cpp |
@@ -1733,9 +1733,116 @@ static void skphealth_com76(skiatest::Reporter* reporter) { |
#endif |
} |
+static void skpahrefs_com88(skiatest::Reporter* reporter) { |
+ SkPath path; |
+ path.setFillType(SkPath::kEvenOdd_FillType); |
+ path.moveTo(1099.82886f, 7.17117119f); |
+ path.lineTo(1099.12134f, 7.87867832f); |
+ path.cubicTo(1099.66418f, 8.42157173f, 1100.00000f, 9.17157173f, 1100.00000f, 10.0000000f); |
+ path.lineTo(1100.00000f, 28.0000000f); |
+ path.cubicTo(1100.00000f, 29.6568546f, 1098.65686f, 31.0000000f, 1097.00000f, 31.0000000f); |
+ path.lineTo(1088.00000f, 31.0000000f); |
+ path.lineTo(1088.00000f, 32.0000000f); |
+ path.lineTo(1097.00000f, 32.0000000f); |
+ path.quadTo(1098.65686f, 32.0000000f, 1099.82886f, 30.8288002f); |
+ path.quadTo(1101.00000f, 29.6568546f, 1101.00000f, 28.0000000f); |
+ path.lineTo(1101.00000f, 10.0000000f); |
+ path.quadTo(1101.00000f, 8.34314537f, 1099.82886f, 7.17119980f); |
+ path.lineTo(1099.82886f, 7.17117119f); |
+ path.close(); |
+ SkPath pathB; |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(1101.00000f, 6.00000000f); |
+ pathB.lineTo(1088.00000f, 6.00000000f); |
+ pathB.lineTo(1088.00000f, 19.0000000f); |
+ pathB.lineTo(1101.00000f, 32.0000000f); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void skpahrefs_com29(skiatest::Reporter* reporter) { |
+ SkPath path; |
+ path.setFillType(SkPath::kEvenOdd_FillType); |
+ path.moveTo(1037.17114f, 7.17119980f); |
+ path.quadTo(1038.34314f, 6.00000000f, 1040.00000f, 6.00000000f); |
+ path.lineTo(1074.00000f, 6.00000000f); |
+ path.lineTo(1074.00000f, 32.0000000f); |
+ path.lineTo(1040.00000f, 32.0000000f); |
+ path.quadTo(1038.34314f, 32.0000000f, 1037.17114f, 30.8288002f); |
+ path.quadTo(1036.00000f, 29.6568546f, 1036.00000f, 28.0000000f); |
+ path.lineTo(1036.00000f, 10.0000000f); |
+ path.quadTo(1036.00000f, 8.34314537f, 1037.17114f, 7.17119980f); |
+ path.close(); |
+ path.moveTo(1037.00000f, 10.0000000f); |
+ path.cubicTo(1037.00000f, 8.34314537f, 1038.34314f, 7.00000000f, 1040.00000f, 7.00000000f); |
+ path.lineTo(1073.00000f, 7.00000000f); |
+ path.lineTo(1073.00000f, 31.0000000f); |
+ path.lineTo(1040.00000f, 31.0000000f); |
+ path.cubicTo(1038.34314f, 31.0000000f, 1037.00000f, 29.6568546f, 1037.00000f, 28.0000000f); |
+ path.lineTo(1037.00000f, 10.0000000f); |
+ path.close(); |
+ SkPath pathB; |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(1036.00000f, 32.0000000f); |
+ pathB.lineTo(1049.00000f, 19.0000000f); |
+ pathB.lineTo(1073.00000f, 31.0000000f); |
+ pathB.lineTo(1074.00000f, 32.0000000f); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+ |
+static void cubicOp85d(skiatest::Reporter* reporter) { |
+ SkPath path; |
+ path.setFillType(SkPath::kWinding_FillType); |
+ path.moveTo(0,1); |
+ path.cubicTo(1,6, 1,0, 6,2); |
+ path.close(); |
+ SkPath pathB; |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(0,1); |
+ pathB.cubicTo(2,6, 1,0, 6,1); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kDifference_PathOp); |
+} |
+ |
+#if 0 // FIXME |
+// this fails because the pair of nearly coincident cubics intersect at the ends |
+// but the line connected to one of the cubics at the same point does not intersect |
+// the other |
+static void skpkkiste_to98(skiatest::Reporter* reporter) { |
+ SkPath path; |
+ path.setFillType(SkPath::kEvenOdd_FillType); |
+ path.moveTo(96, 122); |
+ path.cubicTo(94.6192932f, 122, 93.3692932f, 122.559647f, 92.4644699f, 123.46447f); |
+ path.lineTo(94.1715698f, 125.17157f); |
+ path.cubicTo(94.8954315f, 124.447708f, 95.8954315f, 124, 97, 124); |
+ path.lineTo(257, 124); |
+ path.cubicTo(258.104553f, 124, 259.104584f, 124.447708f, 259.82843f, 125.17157f); |
+ path.lineTo(261.535522f, 123.46447f); |
+ path.cubicTo(260.630707f, 122.559647f, 259.380707f, 122, 258, 122); |
+ path.lineTo(96, 122); |
+ path.close(); |
+ SkPath pathB; |
+ pathB.setFillType(SkPath::kWinding_FillType); |
+ pathB.moveTo(258, 122); |
+ pathB.cubicTo(260.761414f, 122, 263, 124.238579f, 263, 127); |
+ pathB.lineTo(263, 284); |
+ pathB.cubicTo(263, 286.761414f, 260.761414f, 289, 258, 289); |
+ pathB.lineTo(96, 289); |
+ pathB.cubicTo(93.2385788f, 289, 91, 286.761414f, 91, 284); |
+ pathB.lineTo(91, 127); |
+ pathB.cubicTo(91, 124.238579f, 93.2385788f, 122, 96, 122); |
+ pathB.lineTo(258, 122); |
+ pathB.close(); |
+ testPathOp(reporter, path, pathB, kIntersect_PathOp); |
+} |
+#endif |
+ |
static void (*firstTest)(skiatest::Reporter* ) = 0; |
static struct TestDesc tests[] = { |
+// TEST(skpkkiste_to98), |
+ TEST(skpahrefs_com29), |
+ TEST(cubicOp85d), |
+ TEST(skpahrefs_com88), |
TEST(skphealth_com76), |
TEST(skpancestry_com1), |
TEST(skpbyte_com1), |