diff options
author | 2016-01-05 06:20:09 -0800 | |
---|---|---|
committer | 2016-01-05 06:20:09 -0800 | |
commit | dbaec7323f20c3a7e8a234dac9dfb8a9446a2717 (patch) | |
tree | d1498bb89786c04c4c37c1f6d850889a624aed3c /tests/PathTest.cpp | |
parent | 4e5a758f3832594cf1828d367496b5a80bcab8ee (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.cpp | 9 |
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); |