diff options
author | Fredrik Söderquist <fs@opera.com> | 2017-10-26 13:54:16 +0200 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-26 13:10:07 +0000 |
commit | b87f798e5a629284cc008b4986bb2ddba7ed9cb1 (patch) | |
tree | cb3b9545f6f99a089a6e4ce8a02471a987955e49 /tests/ImageFilterTest.cpp | |
parent | 154beea85961f73ed7f0da047b7ebd16d2a2d829 (diff) |
Consistently round fOffset in SkOffsetImageFilter
Since SkScalarRoundToInt rounds differently depending on the sign of the
value, care must be taken to perform rounding before any potential
change to the sign - like in SkOffsetImageFilter::onFilterNodeBounds.
Bug: chromium:778204
Change-Id: I3debff7565f45022c7b8566662927149850b1bea
Reviewed-on: https://skia-review.googlesource.com/64020
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'tests/ImageFilterTest.cpp')
-rw-r--r-- | tests/ImageFilterTest.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp index c39cc2ee83..59f0f2853b 100644 --- a/tests/ImageFilterTest.cpp +++ b/tests/ImageFilterTest.cpp @@ -1998,6 +1998,21 @@ DEF_TEST(XfermodeImageFilterBounds, reporter) { REPORTER_ASSERT(reporter, bounds.isEmpty()); } +DEF_TEST(OffsetImageFilterBounds, reporter) { + SkIRect src = SkIRect::MakeXYWH(0, 0, 100, 100); + sk_sp<SkImageFilter> offset(SkOffsetImageFilter::Make(-50.5f, -50.5f, nullptr)); + + SkIRect expectedForward = SkIRect::MakeXYWH(-50, -50, 100, 100); + SkIRect boundsForward = offset->filterBounds(src, SkMatrix::I(), + SkImageFilter::kForward_MapDirection); + REPORTER_ASSERT(reporter, boundsForward == expectedForward); + + SkIRect expectedReverse = SkIRect::MakeXYWH(50, 50, 100, 100); + SkIRect boundsReverse = offset->filterBounds(src, SkMatrix::I(), + SkImageFilter::kReverse_MapDirection); + REPORTER_ASSERT(reporter, boundsReverse == expectedReverse); +} + static void test_arithmetic_bounds(skiatest::Reporter* reporter, float k1, float k2, float k3, float k4, sk_sp<SkImageFilter> background, sk_sp<SkImageFilter> foreground, |