aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/ImageFilterTest.cpp
diff options
context:
space:
mode:
authorGravatar Fredrik Söderquist <fs@opera.com>2017-10-26 13:54:16 +0200
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-26 13:10:07 +0000
commitb87f798e5a629284cc008b4986bb2ddba7ed9cb1 (patch)
treecb3b9545f6f99a089a6e4ce8a02471a987955e49 /tests/ImageFilterTest.cpp
parent154beea85961f73ed7f0da047b7ebd16d2a2d829 (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.cpp15
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,