aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-05-09 15:12:23 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-10 12:59:02 +0000
commit21015b7004248c46233f1678eeaba69223d68769 (patch)
treecfff054ee806773e41f62960842d995315d5c780 /gm
parentd31b2f674acc24b44fe68cea872109d96da4c796 (diff)
Fix clipping of SkMatrixImageFilter input (take 2)
This cannot land before the Chrome CL https://chromium-review.googlesource.com/c/chromium/src/+/1052850 (Add a flag to ignore an upcoming Skia bug fix that changes layout and unit tests) Bug: skia:7931 Change-Id: I2951a727bd3f61aeda0e1e322cd76e48f677f75f Reviewed-on: https://skia-review.googlesource.com/127125 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'gm')
-rw-r--r--gm/resizeimagefilter.cpp66
1 files changed, 24 insertions, 42 deletions
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index fe7561626b..625e098c67 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -61,57 +61,39 @@ protected:
void onDraw(SkCanvas* canvas) override {
canvas->clear(SK_ColorBLACK);
- SkRect srcRect = SkRect::MakeWH(96, 96);
+ const SkRect srcRect = SkRect::MakeWH(96, 96);
+ const SkSize deviceSize = SkSize::Make(16, 16);
- SkSize deviceSize = SkSize::Make(16, 16);
- this->draw(canvas,
- srcRect,
- deviceSize,
- kNone_SkFilterQuality,
- nullptr);
+ this->draw(canvas, srcRect, deviceSize, kNone_SkFilterQuality, nullptr);
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
- this->draw(canvas,
- srcRect,
- deviceSize,
- kLow_SkFilterQuality,
- nullptr);
+ this->draw(canvas, srcRect, deviceSize, kLow_SkFilterQuality, nullptr);
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
- this->draw(canvas,
- srcRect,
- deviceSize,
- kMedium_SkFilterQuality,
- nullptr);
+ this->draw(canvas, srcRect, deviceSize, kMedium_SkFilterQuality, nullptr);
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
- this->draw(canvas,
- srcRect,
- deviceSize,
- kHigh_SkFilterQuality,
- nullptr);
-
- sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(16, 16));
- SkCanvas* surfaceCanvas = surface->getCanvas();
- surfaceCanvas->clear(0x000000);
+ this->draw(canvas, srcRect, deviceSize, kHigh_SkFilterQuality, nullptr);
+
{
- SkPaint paint;
- paint.setColor(0xFF00FF00);
- SkRect ovalRect = SkRect::MakeWH(16, 16);
- ovalRect.inset(SkIntToScalar(2)/3, SkIntToScalar(2)/3);
- surfaceCanvas->drawOval(ovalRect, paint);
+ sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(16, 16));
+ SkCanvas* surfaceCanvas = surface->getCanvas();
+ surfaceCanvas->clear(0x000000);
+ {
+ SkPaint paint;
+ paint.setColor(0xFF00FF00);
+ SkRect ovalRect = SkRect::MakeWH(16, 16);
+ ovalRect.inset(SkIntToScalar(2)/3, SkIntToScalar(2)/3);
+ surfaceCanvas->drawOval(ovalRect, paint);
+ }
+ sk_sp<SkImage> image(surface->makeImageSnapshot());
+ SkRect inRect = SkRect::MakeXYWH(-4, -4, 20, 20);
+ SkRect outRect = SkRect::MakeXYWH(-24, -24, 120, 120);
+ sk_sp<SkImageFilter> source(
+ SkImageSource::Make(std::move(image), inRect, outRect, kHigh_SkFilterQuality));
+ canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
+ this->draw(canvas, srcRect, deviceSize, kHigh_SkFilterQuality, std::move(source));
}
- sk_sp<SkImage> image(surface->makeImageSnapshot());
- SkRect inRect = SkRect::MakeXYWH(-4, -4, 20, 20);
- SkRect outRect = SkRect::MakeXYWH(-24, -24, 120, 120);
- sk_sp<SkImageFilter> source(
- SkImageSource::Make(std::move(image), inRect, outRect, kHigh_SkFilterQuality));
- canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
- this->draw(canvas,
- srcRect,
- deviceSize,
- kHigh_SkFilterQuality,
- std::move(source));
}
private: