Fix bounds computations for SkDisplacementMapEffect with negative scale.
BUG=skia:4835
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1616663003
Review URL: https://codereview.chromium.org/1616663003
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index bebc276..c5f1837 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -43,7 +43,7 @@
}
SkISize onISize() override {
- return SkISize::Make(500, 500);
+ return SkISize::Make(600, 500);
}
void drawClippedBitmap(SkCanvas* canvas, int x, int y, const SkPaint& paint) const {
@@ -153,6 +153,13 @@
40.0f, displ, nullptr, &cropRect))->unref();
drawClippedBitmap(canvas, 400, 300, paint);
+ // Test for negative scale.
+ paint.setImageFilter(SkDisplacementMapEffect::Create(
+ SkDisplacementMapEffect::kG_ChannelSelectorType,
+ SkDisplacementMapEffect::kA_ChannelSelectorType,
+ -40.0f, displ))->unref();
+ this->drawClippedBitmap(canvas, 500, 0, paint);
+
// Tests for images of different sizes
displ.reset(SkImageSource::Create(fSmall));
paint.setImageFilter(SkDisplacementMapEffect::Create(