diff options
author | caryclark <caryclark@google.com> | 2015-04-24 09:08:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-24 09:08:57 -0700 |
commit | 08bc8488fa2ea2d2a17efb1443f0ec6579d5a3c8 (patch) | |
tree | 9dbc81feaac0b80700e3fb7bc032adef3f1e062c /tests/PathOpsIssue3651.cpp | |
parent | e062db9cc6478745138cca964ee46839e413ab7b (diff) |
fix multiple intersection logic
When three or more curves intersect at the same point, ensure that
each curve records the intersections of the others. This fixes a
number of cubic tests.
TBR=reed@google.com
BUG=skia:3588
Review URL: https://codereview.chromium.org/1105943002
Diffstat (limited to 'tests/PathOpsIssue3651.cpp')
-rw-r--r-- | tests/PathOpsIssue3651.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/PathOpsIssue3651.cpp b/tests/PathOpsIssue3651.cpp index 349e04d9ce..cb4c7e81f3 100644 --- a/tests/PathOpsIssue3651.cpp +++ b/tests/PathOpsIssue3651.cpp @@ -1347,11 +1347,26 @@ path.close(); testPathOpCheck(reporter, pathA, path, SkPathOp::kUnion_SkPathOp, filename, FLAGS_runFail); } +static void issue3651_6(skiatest::Reporter* reporter, const char* filename) { + SkPath path; +path.cubicTo(SkBits2Float(0x41c1999a), SkBits2Float(0x4380423d), SkBits2Float(0x41ca6666), SkBits2Float(0x4380789f), SkBits2Float(0x41d33333), SkBits2Float(0x43808db9)); // 24.2f, 256.517f, 25.3f, 256.942f, 26.4f, 257.107f +path.cubicTo(SkBits2Float(0x41dc0000), SkBits2Float(0x4380a2d3), SkBits2Float(0x41e4cccd), SkBits2Float(0x4380b36f), SkBits2Float(0x41ed999a), SkBits2Float(0x4380b333)); // 27.5f, 257.272f, 28.6f, 257.402f, 29.7f, 257.4f +path.lineTo(SkBits2Float(0x411e6666), SkBits2Float(0x4380b333)); // 9.9f, 257.4f +path.close(); +SkPath pathA = path; +path.reset(); +path.cubicTo(SkBits2Float(0x41c1999a), SkBits2Float(0x43812429), SkBits2Float(0x41ca6666), SkBits2Float(0x4380edc7), SkBits2Float(0x41d33333), SkBits2Float(0x4380d8ad)); // 24.2f, 258.283f, 25.3f, 257.858f, 26.4f, 257.693f +path.cubicTo(SkBits2Float(0x41dc0000), SkBits2Float(0x4380c393), SkBits2Float(0x41e4cccd), SkBits2Float(0x4380b2f7), SkBits2Float(0x41ed999a), SkBits2Float(0x4380b333)); // 27.5f, 257.528f, 28.6f, 257.398f, 29.7f, 257.4f + testPathOp(reporter, pathA, path, SkPathOp::kUnion_SkPathOp, filename); +} + + static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0; static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0; static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0; static struct TestDesc tests[] = { + TEST(issue3651_6), TEST(issue3651_5), TEST(issue3651_4), TEST(issue3651_1), |