| Index: tests/ImageFilterTest.cpp
|
| diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
|
| index dd0824551b157342e0791c9cd537bedc1812de45..f46519d94eaa23759247b870724200a5eaceac16 100644
|
| --- a/tests/ImageFilterTest.cpp
|
| +++ b/tests/ImageFilterTest.cpp
|
| @@ -856,6 +856,64 @@ DEF_TEST(ImageFilterDilateThenBlurBounds, reporter) {
|
| REPORTER_ASSERT(reporter, bounds == expectedBounds);
|
| }
|
|
|
| +DEF_TEST(ImageFilterScaledBlurRadius, reporter) {
|
| + // Each blur should spread 3*sigma, so 3 for the blur and 30 for the shadow
|
| + // (before the CTM). Bounds should be computed correctly in the presence of
|
| + // a (possibly negative) scale.
|
| + sk_sp<SkImageFilter> blur(make_blur(nullptr));
|
| + sk_sp<SkImageFilter> dropShadow(make_drop_shadow(nullptr));
|
| + {
|
| + // Uniform scale by 2.
|
| + SkMatrix scaleMatrix;
|
| + scaleMatrix.setScale(2, 2);
|
| + SkIRect bounds = SkIRect::MakeLTRB(0, 0, 200, 200);
|
| +
|
| + SkIRect expectedBlurBounds = SkIRect::MakeLTRB(-6, -6, 206, 206);
|
| + SkIRect blurBounds = blur->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kForward_MapDirection);
|
| + REPORTER_ASSERT(reporter, blurBounds == expectedBlurBounds);
|
| + SkIRect reverseBlurBounds = blur->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kReverse_MapDirection);
|
| + REPORTER_ASSERT(reporter, reverseBlurBounds == expectedBlurBounds);
|
| +
|
| + SkIRect expectedShadowBounds = SkIRect::MakeLTRB(0, 0, 460, 460);
|
| + SkIRect shadowBounds = dropShadow->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kForward_MapDirection);
|
| + REPORTER_ASSERT(reporter, shadowBounds == expectedShadowBounds);
|
| + SkIRect expectedReverseShadowBounds =
|
| + SkIRect::MakeLTRB(-260, -260, 200, 200);
|
| + SkIRect reverseShadowBounds = dropShadow->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kReverse_MapDirection);
|
| + REPORTER_ASSERT(reporter,
|
| + reverseShadowBounds == expectedReverseShadowBounds);
|
| + }
|
| + {
|
| + // Vertical flip.
|
| + SkMatrix scaleMatrix;
|
| + scaleMatrix.setScale(1, -1);
|
| + SkIRect bounds = SkIRect::MakeLTRB(0, -100, 100, 0);
|
| +
|
| + SkIRect expectedBlurBounds = SkIRect::MakeLTRB(-3, -103, 103, 3);
|
| + SkIRect blurBounds = blur->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kForward_MapDirection);
|
| + REPORTER_ASSERT(reporter, blurBounds == expectedBlurBounds);
|
| + SkIRect reverseBlurBounds = blur->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kReverse_MapDirection);
|
| + REPORTER_ASSERT(reporter, reverseBlurBounds == expectedBlurBounds);
|
| +
|
| + SkIRect expectedShadowBounds = SkIRect::MakeLTRB(0, -230, 230, 0);
|
| + SkIRect shadowBounds = dropShadow->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kForward_MapDirection);
|
| + REPORTER_ASSERT(reporter, shadowBounds == expectedShadowBounds);
|
| + SkIRect expectedReverseShadowBounds =
|
| + SkIRect::MakeLTRB(-130, -100, 100, 130);
|
| + SkIRect reverseShadowBounds = dropShadow->filterBounds(
|
| + bounds, scaleMatrix, SkImageFilter::kReverse_MapDirection);
|
| + REPORTER_ASSERT(reporter,
|
| + reverseShadowBounds == expectedReverseShadowBounds);
|
| + }
|
| +}
|
| +
|
| DEF_TEST(ImageFilterComposedBlurFastBounds, reporter) {
|
| sk_sp<SkImageFilter> filter1(make_blur(nullptr));
|
| sk_sp<SkImageFilter> filter2(make_blur(nullptr));
|
|
|