aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-02-19 22:06:20 +0000
committerGravatar senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-02-19 22:06:20 +0000
commite07c3097d0bb040988af5d4e699fa2c58b9d7401 (patch)
treedeeb332d96909ac99baf076fab69f8906f8c98e5
parent446cf71426745b5e367e951c467058764882429d (diff)
First draft of computeFastBounds() and onFilterBounds() for SkResizeImageFilter.
git-svn-id: http://skia.googlecode.com/svn/trunk@13504 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--src/effects/SkResizeImageFilter.cpp25
1 files changed, 25 insertions, 0 deletions
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;
+}
+