aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-05-09 19:00:28 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-09 19:00:48 +0000
commitef4f7b4dc1e4c315dab7bd387627cfb9e04bcefd (patch)
tree53288e8001b17715aa5edcace2867ae03ba76cd9
parent010ce2bc74a82bb2fc310b145799468637d5fcb5 (diff)
Revert "Fix clipping of SkMatrixImageFilter input"
This reverts commit cb8b5d1101d0a1bf7c78f3d1fec73afbe470994c. Reason for revert: Chrome layout tests Original change's description: > Fix clipping of SkMatrixImageFilter input > > Bug: skia:7931 > Change-Id: I3e424dcd5c0b04542976f4f59a5836e7c3079d06 > Reviewed-on: https://skia-review.googlesource.com/127020 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Robert Phillips <robertphillips@google.com> TBR=egdaniel@google.com,robertphillips@google.com Change-Id: I6b871071e180c45016038dcf2b01d2c96e93911c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia:7931 Reviewed-on: https://skia-review.googlesource.com/127160 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
-rw-r--r--gm/resizeimagefilter.cpp66
-rw-r--r--src/core/SkMatrixImageFilter.cpp10
2 files changed, 43 insertions, 33 deletions
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index 625e098c67..fe7561626b 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -61,39 +61,57 @@ protected:
void onDraw(SkCanvas* canvas) override {
canvas->clear(SK_ColorBLACK);
- const SkRect srcRect = SkRect::MakeWH(96, 96);
- const SkSize deviceSize = SkSize::Make(16, 16);
+ SkRect srcRect = SkRect::MakeWH(96, 96);
- this->draw(canvas, srcRect, deviceSize, kNone_SkFilterQuality, nullptr);
+ SkSize deviceSize = SkSize::Make(16, 16);
+ 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);
-
+ this->draw(canvas,
+ srcRect,
+ deviceSize,
+ kHigh_SkFilterQuality,
+ nullptr);
+
+ sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(16, 16));
+ SkCanvas* surfaceCanvas = surface->getCanvas();
+ surfaceCanvas->clear(0x000000);
{
- 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));
+ 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));
}
private:
diff --git a/src/core/SkMatrixImageFilter.cpp b/src/core/SkMatrixImageFilter.cpp
index 212b787d18..a27ca980f1 100644
--- a/src/core/SkMatrixImageFilter.cpp
+++ b/src/core/SkMatrixImageFilter.cpp
@@ -131,15 +131,7 @@ SkIRect SkMatrixImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatr
matrix.postConcat(ctm);
SkRect floatBounds;
matrix.mapRect(&floatBounds, SkRect::Make(src));
- SkIRect result = floatBounds.roundOut();
-
- if (kReverse_MapDirection == direction && kNone_SkFilterQuality != fFilterQuality) {
- // When filtering we might need some pixels in the source that might be otherwise
- // clipped off.
- result.outset(1, 1);
- }
-
- return result;
+ return floatBounds.roundOut();
}
void SkMatrixImageFilter::toString(SkString* str) const {