aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PathTest.cpp
diff options
context:
space:
mode:
authorGravatar caryclark <caryclark@google.com>2016-01-05 06:20:09 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-05 06:20:09 -0800
commitdbaec7323f20c3a7e8a234dac9dfb8a9446a2717 (patch)
treed1498bb89786c04c4c37c1f6d850889a624aed3c /tests/PathTest.cpp
parent4e5a758f3832594cf1828d367496b5a80bcab8ee (diff)
give up on quad root if infinite
SkPath::contains() uses SkFindUnitQuadRoots to see which side of a curve a point is on. If the intermediate exceeds a float, return no found root. R=reed@google.com BUG=572406 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1556353002 Review URL: https://codereview.chromium.org/1556353002
Diffstat (limited to 'tests/PathTest.cpp')
-rw-r--r--tests/PathTest.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index faa091c997..7c5ca0e4ff 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -3508,6 +3508,15 @@ static void test_get_point(skiatest::Reporter* reporter) {
static void test_contains(skiatest::Reporter* reporter) {
SkPath p;
+ p.moveTo(SkBits2Float(0xe085e7b1), SkBits2Float(0x5f512c00)); // -7.7191e+19f, 1.50724e+19f
+ p.conicTo(SkBits2Float(0xdfdaa221), SkBits2Float(0x5eaac338), SkBits2Float(0x60342f13), SkBits2Float(0xdf0cbb58), SkBits2Float(0x3f3504f3)); // -3.15084e+19f, 6.15237e+18f, 5.19345e+19f, -1.01408e+19f, 0.707107f
+ p.conicTo(SkBits2Float(0x60ead799), SkBits2Float(0xdfb76c24), SkBits2Float(0x609b9872), SkBits2Float(0xdf730de8), SkBits2Float(0x3f3504f4)); // 1.35377e+20f, -2.6434e+19f, 8.96947e+19f, -1.75139e+19f, 0.707107f
+ p.lineTo(SkBits2Float(0x609b9872), SkBits2Float(0xdf730de8)); // 8.96947e+19f, -1.75139e+19f
+ p.conicTo(SkBits2Float(0x6018b296), SkBits2Float(0xdeee870d), SkBits2Float(0xe008cd8e), SkBits2Float(0x5ed5b2db), SkBits2Float(0x3f3504f3)); // 4.40121e+19f, -8.59386e+18f, -3.94308e+19f, 7.69931e+18f, 0.707107f
+ p.conicTo(SkBits2Float(0xe0d526d9), SkBits2Float(0x5fa67b31), SkBits2Float(0xe085e7b2), SkBits2Float(0x5f512c01), SkBits2Float(0x3f3504f3)); // -1.22874e+20f, 2.39925e+19f, -7.7191e+19f, 1.50724e+19f, 0.707107f
+ REPORTER_ASSERT(reporter, !p.contains(-77.2027664f, 15.3066053f));
+
+ p.reset();
p.setFillType(SkPath::kInverseWinding_FillType);
REPORTER_ASSERT(reporter, p.contains(0, 0));
p.setFillType(SkPath::kWinding_FillType);