diff options
author | Brian Osman <brianosman@google.com> | 2017-09-18 13:13:48 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-09-18 14:59:49 +0000 |
commit | 205a1267605f6d47855146dfa8f2eed4c4368bd8 (patch) | |
tree | fdb1e01cd8da150029029e8d9915f7581cab22f1 | |
parent | fb0fcb2579b420ac136bac434d35e0b38e926c44 (diff) |
Revert "Revert "Don't ignore degenerates when deciding if a path is convex""
This reverts commit f95352322496796ce4c99df9582dbc630fe8a327.
Reason for revert: Re-landing now that gold has settled.
Original change's description:
> Revert "Don't ignore degenerates when deciding if a path is convex"
>
> This reverts commit 53cd6c4331a2ef21a7c5eb6166c782cd33178a7b.
>
> Reason for revert: Temporary to limit gold cross-talk with other CLs.
>
> Original change's description:
> > Don't ignore degenerates when deciding if a path is convex
> >
> > This ensures that a path with a second contour will always be marked
> > concave. GrDefaultPathRenderer was incorrectly drawing paths of this type
> > (thinking that it could fill them with simple triangulation).
> >
> > Bug: skia:7020 skia:1460
> > Change-Id: I62bfd72e4c61da427687acf53c552357b57707aa
> > Reviewed-on: https://skia-review.googlesource.com/47082
> > Reviewed-by: Cary Clark <caryclark@google.com>
> > Commit-Queue: Brian Osman <brianosman@google.com>
>
> TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,reed@google.com
>
> Change-Id: Id7d121633faeb8a43dbd334409408ba51db43d68
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:7020 skia:1460
> Reviewed-on: https://skia-review.googlesource.com/47343
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,reed@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:7020 skia:1460
Change-Id: I45ff90a54b66ce9ea068f246d066cc24b310c966
Reviewed-on: https://skia-review.googlesource.com/47820
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
-rw-r--r-- | src/core/SkPath.cpp | 2 | ||||
-rw-r--r-- | tests/PathTest.cpp | 15 |
2 files changed, 7 insertions, 10 deletions
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp index 99d7e1a66e..19592211ce 100644 --- a/src/core/SkPath.cpp +++ b/src/core/SkPath.cpp @@ -2476,7 +2476,7 @@ SkPath::Convexity SkPath::internalGetConvexity() const { if (!isFinite()) { return kUnknown_Convexity; } - while ((verb = iter.next(pts, true, true)) != SkPath::kDone_Verb) { + while ((verb = iter.next(pts, false, false)) != SkPath::kDone_Verb) { switch (verb) { case kMove_Verb: if (++contourCount > 1) { diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp index 75e86e3f92..8c629d9485 100644 --- a/tests/PathTest.cpp +++ b/tests/PathTest.cpp @@ -1880,15 +1880,10 @@ static void test_conservativelyContains(skiatest::Reporter* reporter) { // Test that multiple move commands do not cause asserts. - - // At the time of writing, this would not modify cached convexity. This caused an assert while - // checking conservative containment again. https://bug.skia.org/1460 path.moveTo(SkIntToScalar(100), SkIntToScalar(100)); -#if 0 REPORTER_ASSERT(reporter, path.conservativelyContainsRect(SkRect::MakeXYWH(SkIntToScalar(50), 0, SkIntToScalar(10), SkIntToScalar(10)))); -#endif // Same as above path and first test but with an extra moveTo. path.reset(); @@ -1896,10 +1891,12 @@ static void test_conservativelyContains(skiatest::Reporter* reporter) { path.moveTo(0, 0); path.lineTo(SkIntToScalar(100), 0); path.lineTo(0, SkIntToScalar(100)); - - REPORTER_ASSERT(reporter, path.conservativelyContainsRect(SkRect::MakeXYWH(SkIntToScalar(50), 0, - SkIntToScalar(10), - SkIntToScalar(10)))); + // Convexity logic is now more conservative, so that multiple (non-trailing) moveTos make a + // path non-convex. + REPORTER_ASSERT(reporter, !path.conservativelyContainsRect( + SkRect::MakeXYWH(SkIntToScalar(50), 0, + SkIntToScalar(10), + SkIntToScalar(10)))); // Same as above path and first test but with the extra moveTo making a degenerate sub-path // following the non-empty sub-path. Verifies that this does not trigger assertions. |