diff options
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkBlurImageFilter.cpp | 23 | ||||
-rw-r--r-- | src/effects/SkComposeImageFilter.cpp | 18 | ||||
-rw-r--r-- | src/effects/SkDisplacementMapEffect.cpp | 29 | ||||
-rw-r--r-- | src/effects/SkDropShadowImageFilter.cpp | 30 | ||||
-rw-r--r-- | src/effects/SkImageSource.cpp | 4 | ||||
-rw-r--r-- | src/effects/SkMatrixConvolutionImageFilter.cpp | 15 | ||||
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 18 | ||||
-rw-r--r-- | src/effects/SkOffsetImageFilter.cpp | 18 | ||||
-rw-r--r-- | src/effects/SkTileImageFilter.cpp | 16 |
9 files changed, 71 insertions, 100 deletions
diff --git a/src/effects/SkBlurImageFilter.cpp b/src/effects/SkBlurImageFilter.cpp index 249e69779d..80467063bc 100644 --- a/src/effects/SkBlurImageFilter.cpp +++ b/src/effects/SkBlurImageFilter.cpp @@ -179,23 +179,18 @@ bool SkBlurImageFilter::onFilterImageDeprecated(Proxy* proxy, } -void SkBlurImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { - if (this->getInput(0)) { - this->getInput(0)->computeFastBounds(src, dst); - } else { - *dst = src; - } - - dst->outset(SkScalarMul(fSigma.width(), SkIntToScalar(3)), - SkScalarMul(fSigma.height(), SkIntToScalar(3))); +SkRect SkBlurImageFilter::computeFastBounds(const SkRect& src) const { + SkRect bounds = this->getInput(0) ? this->getInput(0)->computeFastBounds(src) : src; + bounds.outset(SkScalarMul(fSigma.width(), SkIntToScalar(3)), + SkScalarMul(fSigma.height(), SkIntToScalar(3))); + return bounds; } -void SkBlurImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection) const { - *dst = src; +SkIRect SkBlurImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection) const { SkVector sigma = map_sigma(fSigma, ctm); - dst->outset(SkScalarCeilToInt(SkScalarMul(sigma.x(), SkIntToScalar(3))), - SkScalarCeilToInt(SkScalarMul(sigma.y(), SkIntToScalar(3)))); + return src.makeOutset(SkScalarCeilToInt(SkScalarMul(sigma.x(), SkIntToScalar(3))), + SkScalarCeilToInt(SkScalarMul(sigma.y(), SkIntToScalar(3)))); } bool SkBlurImageFilter::filterImageGPUDeprecated(Proxy* proxy, const SkBitmap& src, diff --git a/src/effects/SkComposeImageFilter.cpp b/src/effects/SkComposeImageFilter.cpp index b9216611ab..86a4d50389 100644 --- a/src/effects/SkComposeImageFilter.cpp +++ b/src/effects/SkComposeImageFilter.cpp @@ -12,13 +12,11 @@ #include "SkWriteBuffer.h" -void SkComposeImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { +SkRect SkComposeImageFilter::computeFastBounds(const SkRect& src) const { SkImageFilter* outer = getInput(0); SkImageFilter* inner = getInput(1); - SkRect tmp; - inner->computeFastBounds(src, &tmp); - outer->computeFastBounds(tmp, dst); + return outer->computeFastBounds(inner->computeFastBounds(src)); } SkSpecialImage* SkComposeImageFilter::onFilterImage(SkSpecialImage* source, const Context& ctx, @@ -27,7 +25,7 @@ SkSpecialImage* SkComposeImageFilter::onFilterImage(SkSpecialImage* source, cons // filter, so that the inner filter produces the pixels that the outer // filter requires as input. This matters if the outer filter moves pixels. SkIRect innerClipBounds; - getInput(0)->filterBounds(ctx.clipBounds(), ctx.ctm(), &innerClipBounds); + innerClipBounds = getInput(0)->filterBounds(ctx.clipBounds(), ctx.ctm()); Context innerContext(ctx.ctm(), innerClipBounds, ctx.cache()); SkIPoint innerOffset = SkIPoint::Make(0, 0); SkAutoTUnref<SkSpecialImage> inner(this->filterInput(1, source, innerContext, &innerOffset)); @@ -51,16 +49,12 @@ SkSpecialImage* SkComposeImageFilter::onFilterImage(SkSpecialImage* source, cons return outer.release(); } -bool SkComposeImageFilter::onFilterBounds(const SkIRect& src, - const SkMatrix& ctm, - SkIRect* dst, - MapDirection direction) const { +SkIRect SkComposeImageFilter::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection direction) const { SkImageFilter* outer = this->getInput(0); SkImageFilter* inner = this->getInput(1); - SkIRect tmp; - return inner->filterBounds(src, ctm, &tmp, direction) && - outer->filterBounds(tmp, ctm, dst, direction); + return outer->filterBounds(inner->filterBounds(src, ctm, direction), ctm, direction); } SkFlattenable* SkComposeImageFilter::CreateProc(SkReadBuffer& buffer) { diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp index 7940203bdd..ab4767c64b 100644 --- a/src/effects/SkDisplacementMapEffect.cpp +++ b/src/effects/SkDisplacementMapEffect.cpp @@ -265,32 +265,27 @@ bool SkDisplacementMapEffect::onFilterImageDeprecated(Proxy* proxy, return true; } -void SkDisplacementMapEffect::computeFastBounds(const SkRect& src, SkRect* dst) const { - if (this->getColorInput()) { - this->getColorInput()->computeFastBounds(src, dst); - } else { - *dst = src; - } - dst->outset(SkScalarAbs(fScale) * SK_ScalarHalf, SkScalarAbs(fScale) * SK_ScalarHalf); +SkRect SkDisplacementMapEffect::computeFastBounds(const SkRect& src) const { + SkRect bounds = this->getColorInput() ? this->getColorInput()->computeFastBounds(src) : src; + bounds.outset(SkScalarAbs(fScale) * SK_ScalarHalf, SkScalarAbs(fScale) * SK_ScalarHalf); + return bounds; } -void SkDisplacementMapEffect::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection) const { - *dst = src; +SkIRect SkDisplacementMapEffect::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection) const { SkVector scale = SkVector::Make(fScale, fScale); ctm.mapVectors(&scale, 1); - dst->outset(SkScalarCeilToInt(SkScalarAbs(scale.fX) * SK_ScalarHalf), - SkScalarCeilToInt(SkScalarAbs(scale.fY) * SK_ScalarHalf)); + return src.makeOutset(SkScalarCeilToInt(SkScalarAbs(scale.fX) * SK_ScalarHalf), + SkScalarCeilToInt(SkScalarAbs(scale.fY) * SK_ScalarHalf)); } -bool SkDisplacementMapEffect::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection direction) const { +SkIRect SkDisplacementMapEffect::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection direction) const { // Recurse only into color input. if (this->getColorInput()) { - return this->getColorInput()->filterBounds(src, ctm, dst, direction); + return this->getColorInput()->filterBounds(src, ctm, direction); } - *dst = src; - return true; + return src; } #ifndef SK_IGNORE_TO_STRING diff --git a/src/effects/SkDropShadowImageFilter.cpp b/src/effects/SkDropShadowImageFilter.cpp index e2e72c1097..deece35b38 100644 --- a/src/effects/SkDropShadowImageFilter.cpp +++ b/src/effects/SkDropShadowImageFilter.cpp @@ -99,41 +99,37 @@ bool SkDropShadowImageFilter::onFilterImageDeprecated(Proxy* proxy, const SkBitm return true; } -void SkDropShadowImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { - if (getInput(0)) { - getInput(0)->computeFastBounds(src, dst); - } else { - *dst = src; - } - - SkRect shadowBounds = *dst; +SkRect SkDropShadowImageFilter::computeFastBounds(const SkRect& src) const { + SkRect bounds = this->getInput(0) ? this->getInput(0)->computeFastBounds(src) : src; + SkRect shadowBounds = bounds; shadowBounds.offset(fDx, fDy); shadowBounds.outset(SkScalarMul(fSigmaX, SkIntToScalar(3)), SkScalarMul(fSigmaY, SkIntToScalar(3))); if (fShadowMode == kDrawShadowAndForeground_ShadowMode) { - dst->join(shadowBounds); + bounds.join(shadowBounds); } else { - *dst = shadowBounds; + bounds = shadowBounds; } + return bounds; } -void SkDropShadowImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection direction) const { - *dst = src; +SkIRect SkDropShadowImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection direction) const { SkVector offsetVec = SkVector::Make(fDx, fDy); if (kReverse_MapDirection == direction) { offsetVec.negate(); } ctm.mapVectors(&offsetVec, 1); - dst->offset(SkScalarCeilToInt(offsetVec.x()), - SkScalarCeilToInt(offsetVec.y())); + SkIRect dst = src.makeOffset(SkScalarCeilToInt(offsetVec.x()), + SkScalarCeilToInt(offsetVec.y())); SkVector sigma = SkVector::Make(fSigmaX, fSigmaY); ctm.mapVectors(&sigma, 1); - dst->outset(SkScalarCeilToInt(SkScalarMul(sigma.x(), SkIntToScalar(3))), + dst.outset(SkScalarCeilToInt(SkScalarMul(sigma.x(), SkIntToScalar(3))), SkScalarCeilToInt(SkScalarMul(sigma.y(), SkIntToScalar(3)))); if (fShadowMode == kDrawShadowAndForeground_ShadowMode) { - dst->join(src); + dst.join(src); } + return dst; } #ifndef SK_IGNORE_TO_STRING diff --git a/src/effects/SkImageSource.cpp b/src/effects/SkImageSource.cpp index c0a8deebf9..d63eda989f 100644 --- a/src/effects/SkImageSource.cpp +++ b/src/effects/SkImageSource.cpp @@ -113,8 +113,8 @@ SkSpecialImage* SkImageSource::onFilterImage(SkSpecialImage* source, const Conte return surf->makeImageSnapshot().release(); } -void SkImageSource::computeFastBounds(const SkRect& src, SkRect* dst) const { - *dst = fDstRect; +SkRect SkImageSource::computeFastBounds(const SkRect& src) const { + return fDstRect; } #ifndef SK_IGNORE_TO_STRING diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp index 0d14caf131..7a25f5f7eb 100644 --- a/src/effects/SkMatrixConvolutionImageFilter.cpp +++ b/src/effects/SkMatrixConvolutionImageFilter.cpp @@ -323,17 +323,18 @@ bool SkMatrixConvolutionImageFilter::onFilterImageDeprecated(Proxy* proxy, return true; } -void SkMatrixConvolutionImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection direction) const { - *dst = src; +SkIRect SkMatrixConvolutionImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection direction) const { + SkIRect dst = src; int w = fKernelSize.width() - 1, h = fKernelSize.height() - 1; - dst->fRight += w; - dst->fBottom += h; + dst.fRight += w; + dst.fBottom += h; if (kReverse_MapDirection == direction) { - dst->offset(-fKernelOffset); + dst.offset(-fKernelOffset); } else { - dst->offset(fKernelOffset - SkIPoint::Make(w, h)); + dst.offset(fKernelOffset - SkIPoint::Make(w, h)); } + return dst; } bool SkMatrixConvolutionImageFilter::canComputeFastBounds() const { diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index 61b0c339c9..204f4f3a62 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -142,22 +142,18 @@ bool SkDilateImageFilter::onFilterImageDeprecated(Proxy* proxy, proxy, source, ctx, dst, offset); } -void SkMorphologyImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { - if (this->getInput(0)) { - this->getInput(0)->computeFastBounds(src, dst); - } else { - *dst = src; - } - dst->outset(SkIntToScalar(fRadius.width()), SkIntToScalar(fRadius.height())); +SkRect SkMorphologyImageFilter::computeFastBounds(const SkRect& src) const { + SkRect bounds = this->getInput(0) ? this->getInput(0)->computeFastBounds(src) : src; + bounds.outset(SkIntToScalar(fRadius.width()), SkIntToScalar(fRadius.height())); + return bounds; } -void SkMorphologyImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection) const { - *dst = src; +SkIRect SkMorphologyImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection) const { SkVector radius = SkVector::Make(SkIntToScalar(this->radius().width()), SkIntToScalar(this->radius().height())); ctm.mapVectors(&radius, 1); - dst->outset(SkScalarCeilToInt(radius.x()), SkScalarCeilToInt(radius.y())); + return src.makeOutset(SkScalarCeilToInt(radius.x()), SkScalarCeilToInt(radius.y())); } SkFlattenable* SkErodeImageFilter::CreateProc(SkReadBuffer& buffer) { diff --git a/src/effects/SkOffsetImageFilter.cpp b/src/effects/SkOffsetImageFilter.cpp index f3d2bb0c58..8e4b87881d 100644 --- a/src/effects/SkOffsetImageFilter.cpp +++ b/src/effects/SkOffsetImageFilter.cpp @@ -65,25 +65,21 @@ SkSpecialImage* SkOffsetImageFilter::onFilterImage(SkSpecialImage* source, } } -void SkOffsetImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { - if (getInput(0)) { - getInput(0)->computeFastBounds(src, dst); - } else { - *dst = src; - } - dst->offset(fOffset.fX, fOffset.fY); +SkRect SkOffsetImageFilter::computeFastBounds(const SkRect& src) const { + SkRect bounds = this->getInput(0) ? this->getInput(0)->computeFastBounds(src) : src; + bounds.offset(fOffset.fX, fOffset.fY); + return bounds; } -void SkOffsetImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection direction) const { +SkIRect SkOffsetImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection direction) const { SkVector vec; ctm.mapVectors(&vec, &fOffset, 1); if (kReverse_MapDirection == direction) { vec.negate(); } - *dst = src; - dst->offset(SkScalarCeilToInt(vec.fX), SkScalarCeilToInt(vec.fY)); + return src.makeOffset(SkScalarCeilToInt(vec.fX), SkScalarCeilToInt(vec.fY)); } SkFlattenable* SkOffsetImageFilter::CreateProc(SkReadBuffer& buffer) { diff --git a/src/effects/SkTileImageFilter.cpp b/src/effects/SkTileImageFilter.cpp index dff8e9bbfc..e6b561dec4 100644 --- a/src/effects/SkTileImageFilter.cpp +++ b/src/effects/SkTileImageFilter.cpp @@ -106,22 +106,20 @@ bool SkTileImageFilter::onFilterImageDeprecated(Proxy* proxy, const SkBitmap& sr return true; } -void SkTileImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection direction) const { +SkIRect SkTileImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection direction) const { SkRect rect = kReverse_MapDirection == direction ? fSrcRect : fDstRect; ctm.mapRect(&rect); - rect.roundOut(dst); + return rect.roundOut(); } -bool SkTileImageFilter::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst, MapDirection direction) const { +SkIRect SkTileImageFilter::onFilterBounds(const SkIRect& src, const SkMatrix&, MapDirection) const { // Don't recurse into inputs. - *dst = src; - return true; + return src; } -void SkTileImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const { - *dst = fDstRect; +SkRect SkTileImageFilter::computeFastBounds(const SkRect& src) const { + return fDstRect; } SkFlattenable* SkTileImageFilter::CreateProc(SkReadBuffer& buffer) { |