From e07c3097d0bb040988af5d4e699fa2c58b9d7401 Mon Sep 17 00:00:00 2001 From: "senorblanco@chromium.org" Date: Wed, 19 Feb 2014 22:06:20 +0000 Subject: First draft of computeFastBounds() and onFilterBounds() for SkResizeImageFilter. git-svn-id: http://skia.googlecode.com/svn/trunk@13504 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/effects/SkResizeImageFilter.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/effects/SkResizeImageFilter.cpp b/src/effects/SkResizeImageFilter.cpp index 4a3f4b56ee..3c4165c610 100644 --- a/src/effects/SkResizeImageFilter.cpp +++ b/src/effects/SkResizeImageFilter.cpp @@ -80,3 +80,28 @@ bool SkResizeImageFilter::onFilterImage(Proxy* proxy, offset->fY = dstBounds.fTop; return true; } + +void SkResizeImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { + SkRect bounds = src; + if (getInput(0)) { + getInput(0)->computeFastBounds(src, &bounds); + } + dst->setXYWH(bounds.x(), bounds.y(), bounds.width() * fSx, bounds.height() * fSy); +} + +bool SkResizeImageFilter::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, + SkIRect* dst) const { + SkMatrix dstMatrix; + SkRect dstRect; + SkIRect dstRectI; + dstMatrix.setScale(SkScalarInvert(fSx), SkScalarInvert(fSy)); + dstMatrix.mapRect(&dstRect, SkRect::Make(src)); + dstRect.roundOut(&dstRectI); + if (getInput(0) && !getInput(0)->filterBounds(dstRectI, ctm, &dstRectI)) { + return false; + } +// *dst = dstRectI; + *dst = src; + return true; +} + -- cgit v1.2.3