diff options
author | csmartdalton <csmartdalton@google.com> | 2016-08-15 11:17:19 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-15 11:17:19 -0700 |
commit | d211e7875d9d564f075f664d9f402e1fed6dd90c (patch) | |
tree | e6ea3720badcff1e5b4eb1af613cd5928d189d2d /tests/ClipStackTest.cpp | |
parent | 3fe0327585f32ea2b9334965d8c90d9d699c584e (diff) |
Convert GrAppliedClip interface to builder style
GrAppliedClip was about at its limit for how many "make" functions it
could have. Window rectangles would push it over the edge. This change
makes it so GrDrawTarget supplies the original draw bounds to the
constructor, and then GrClip adds the various required clipping
techniques.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246113002
Review-Url: https://codereview.chromium.org/2246113002
Diffstat (limited to 'tests/ClipStackTest.cpp')
-rw-r--r-- | tests/ClipStackTest.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/tests/ClipStackTest.cpp b/tests/ClipStackTest.cpp index a6b636271a..5265ac2c67 100644 --- a/tests/ClipStackTest.cpp +++ b/tests/ClipStackTest.cpp @@ -916,7 +916,8 @@ static void test_reduced_clip_stack(skiatest::Reporter* reporter) { // they are equal. // All the clip elements will be contained within these bounds. - static const SkRect kBounds = SkRect::MakeWH(100, 100); + static const SkIRect kIBounds = SkIRect::MakeWH(100, 100); + static const SkRect kBounds = SkRect::Make(kIBounds); enum { kNumTests = 250, @@ -1015,13 +1016,14 @@ static void test_reduced_clip_stack(skiatest::Reporter* reporter) { testCase.c_str()); if (!reduced.elements().isEmpty()) { + REPORTER_ASSERT_MESSAGE(reporter, reduced.hasIBounds(), testCase.c_str()); SkRect stackBounds; SkClipStack::BoundsType stackBoundsType; stack.getBounds(&stackBounds, &stackBoundsType); if (SkClipStack::kNormal_BoundsType == stackBoundsType) { // Unless GrReducedClip starts doing some heroic tightening of the clip bounds, this // will be true since the stack bounds are completely contained inside the query. - REPORTER_ASSERT_MESSAGE(reporter, GrClip::IsInsideClip(reduced.iBounds(), stackBounds), + REPORTER_ASSERT_MESSAGE(reporter, GrClip::IsInsideClip(reduced.ibounds(), stackBounds), testCase.c_str()); } REPORTER_ASSERT_MESSAGE(reporter, reduced.requiresAA() == doAA, testCase.c_str()); @@ -1037,16 +1039,18 @@ static void test_reduced_clip_stack(skiatest::Reporter* reporter) { add_elem_to_stack(*iter.get(), &reducedStack); } + SkIRect ibounds = reduced.hasIBounds() ? reduced.ibounds() : kIBounds; + // GrReducedClipStack assumes that the final result is clipped to the returned bounds - reducedStack.clipDevRect(reduced.iBounds(), SkRegion::kIntersect_Op); - stack.clipDevRect(reduced.iBounds(), SkRegion::kIntersect_Op); + reducedStack.clipDevRect(ibounds, SkRegion::kIntersect_Op); + stack.clipDevRect(ibounds, SkRegion::kIntersect_Op); // convert both the original stack and reduced stack to SkRegions and see if they're equal SkRegion region; - set_region_to_stack(stack, reduced.iBounds(), ®ion); + set_region_to_stack(stack, ibounds, ®ion); SkRegion reducedRegion; - set_region_to_stack(reducedStack, reduced.iBounds(), &reducedRegion); + set_region_to_stack(reducedStack, ibounds, &reducedRegion); REPORTER_ASSERT_MESSAGE(reporter, region == reducedRegion, testCase.c_str()); } @@ -1151,8 +1155,10 @@ static void test_reduced_clip_stack_genid(skiatest::Reporter* reporter) { SkASSERT(reduced.genID() == testCases[i].reducedGenID); REPORTER_ASSERT(reporter, reduced.initialState() == testCases[i].initialState); SkASSERT(reduced.initialState() == testCases[i].initialState); - REPORTER_ASSERT(reporter, reduced.iBounds() == testCases[i].clipIRect); - SkASSERT(reduced.iBounds() == testCases[i].clipIRect); + REPORTER_ASSERT(reporter, reduced.hasIBounds()); + SkASSERT(reduced.hasIBounds()); + REPORTER_ASSERT(reporter, reduced.ibounds() == testCases[i].clipIRect); + SkASSERT(reduced.ibounds() == testCases[i].clipIRect); } } } @@ -1197,7 +1203,9 @@ static void test_aa_query(skiatest::Reporter* reporter, const SkString& testName return; case ClipMethod::kIgnoreClip: SkASSERT(0 == numExpectedElems); - REPORTER_ASSERT_MESSAGE(reporter, GrClip::IsInsideClip(reduced.iBounds(), queryBounds), + REPORTER_ASSERT_MESSAGE(reporter, + !reduced.hasIBounds() || + GrClip::IsInsideClip(reduced.ibounds(), queryBounds), testName.c_str()); REPORTER_ASSERT_MESSAGE(reporter, reduced.elements().isEmpty(), testName.c_str()); REPORTER_ASSERT_MESSAGE(reporter, @@ -1210,7 +1218,8 @@ static void test_aa_query(skiatest::Reporter* reporter, const SkString& testName SkIRect expectedScissor; stackBounds.round(&expectedScissor); REPORTER_ASSERT_MESSAGE(reporter, reduced.elements().isEmpty(), testName.c_str()); - REPORTER_ASSERT_MESSAGE(reporter, expectedScissor == reduced.iBounds(), + REPORTER_ASSERT_MESSAGE(reporter, reduced.hasIBounds(), testName.c_str()); + REPORTER_ASSERT_MESSAGE(reporter, expectedScissor == reduced.ibounds(), testName.c_str()); REPORTER_ASSERT_MESSAGE(reporter, GrReducedClip::InitialState::kAllIn == reduced.initialState(), @@ -1224,7 +1233,8 @@ static void test_aa_query(skiatest::Reporter* reporter, const SkString& testName } REPORTER_ASSERT_MESSAGE(reporter, numExpectedElems == reduced.elements().count(), testName.c_str()); - REPORTER_ASSERT_MESSAGE(reporter, expectedClipIBounds == reduced.iBounds(), + REPORTER_ASSERT_MESSAGE(reporter, reduced.hasIBounds(), testName.c_str()); + REPORTER_ASSERT_MESSAGE(reporter, expectedClipIBounds == reduced.ibounds(), testName.c_str()); REPORTER_ASSERT_MESSAGE(reporter, reduced.requiresAA() == !reduced.elements().isEmpty(), testName.c_str()); |