diff options
author | vjiaoblack <vjiaoblack@google.com> | 2016-08-22 10:51:27 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-22 10:51:27 -0700 |
commit | e426babe7552b1cb4e27cdf4e90826feabb9e3b0 (patch) | |
tree | 2f0c0f4d0a98fddd7dd64d2ccc0fb991fe66b79e /src | |
parent | ac1d0abfd89ded89d57ea5e985e04c81c3c8ebf2 (diff) |
Moving SkBlurImageFilter into core
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003
Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
Review-Url: https://codereview.chromium.org/2255803003
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBlurImageFilter.cpp (renamed from src/effects/SkBlurImageFilter.cpp) | 62 | ||||
-rw-r--r-- | src/core/SkGpuBlurUtils.cpp (renamed from src/effects/SkGpuBlurUtils.cpp) | 0 | ||||
-rw-r--r-- | src/core/SkGpuBlurUtils.h (renamed from src/effects/SkGpuBlurUtils.h) | 0 | ||||
-rw-r--r-- | src/ports/SkGlobalInitialization_default.cpp | 2 |
4 files changed, 50 insertions, 14 deletions
diff --git a/src/effects/SkBlurImageFilter.cpp b/src/core/SkBlurImageFilter.cpp index 37584ab3ad..c82837b3fe 100644 --- a/src/effects/SkBlurImageFilter.cpp +++ b/src/core/SkBlurImageFilter.cpp @@ -5,8 +5,6 @@ * found in the LICENSE file. */ -#include "SkBlurImageFilter.h" - #include "SkAutoPixmapStorage.h" #include "SkColorPriv.h" #include "SkGpuBlurUtils.h" @@ -20,13 +18,51 @@ #include "SkGr.h" #endif -sk_sp<SkImageFilter> SkBlurImageFilter::Make(SkScalar sigmaX, SkScalar sigmaY, +class SkBlurImageFilterImpl : public SkImageFilter { +public: + SkBlurImageFilterImpl(SkScalar sigmaX, + SkScalar sigmaY, + sk_sp<SkImageFilter> input, + const CropRect* cropRect); + + SkRect computeFastBounds(const SkRect&) const override; + + SK_TO_STRING_OVERRIDE() + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilterImpl) + +#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR + static SkImageFilter* Create(SkScalar sigmaX, SkScalar sigmaY, SkImageFilter* input = nullptr, + const CropRect* cropRect = nullptr) { + return SkImageInfo::Make(sigmaX, sigmaY, sk_ref_sp<SkImageFilter>(input), cropRect).release(); + } +#endif + +protected: + void flatten(SkWriteBuffer&) const override; + sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, + SkIPoint* offset) const override; + SkIRect onFilterNodeBounds(const SkIRect& src, const SkMatrix&, MapDirection) const override; + +private: + SkSize fSigma; + typedef SkImageFilter INHERITED; + + friend class SkImageFilter; +}; + +SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkImageFilter) + SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurImageFilterImpl) +SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END + +/////////////////////////////////////////////////////////////////////////////// + +sk_sp<SkImageFilter> SkImageFilter::MakeBlur(SkScalar sigmaX, SkScalar sigmaY, sk_sp<SkImageFilter> input, const CropRect* cropRect) { if (0 == sigmaX && 0 == sigmaY && !cropRect) { return input; } - return sk_sp<SkImageFilter>(new SkBlurImageFilter(sigmaX, sigmaY, input, cropRect)); + return sk_sp<SkImageFilter>(new SkBlurImageFilterImpl(sigmaX, sigmaY, input, cropRect)); } // This rather arbitrary-looking value results in a maximum box blur kernel size @@ -44,7 +80,7 @@ static SkVector map_sigma(const SkSize& localSigma, const SkMatrix& ctm) { return sigma; } -SkBlurImageFilter::SkBlurImageFilter(SkScalar sigmaX, +SkBlurImageFilterImpl::SkBlurImageFilterImpl(SkScalar sigmaX, SkScalar sigmaY, sk_sp<SkImageFilter> input, const CropRect* cropRect) @@ -52,14 +88,14 @@ SkBlurImageFilter::SkBlurImageFilter(SkScalar sigmaX, , fSigma(SkSize::Make(sigmaX, sigmaY)) { } -sk_sp<SkFlattenable> SkBlurImageFilter::CreateProc(SkReadBuffer& buffer) { +sk_sp<SkFlattenable> SkBlurImageFilterImpl::CreateProc(SkReadBuffer& buffer) { SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); SkScalar sigmaX = buffer.readScalar(); SkScalar sigmaY = buffer.readScalar(); - return Make(sigmaX, sigmaY, common.getInput(0), &common.cropRect()); + return SkImageFilter::MakeBlur(sigmaX, sigmaY, common.getInput(0), &common.cropRect()); } -void SkBlurImageFilter::flatten(SkWriteBuffer& buffer) const { +void SkBlurImageFilterImpl::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeScalar(fSigma.fWidth); buffer.writeScalar(fSigma.fHeight); @@ -80,7 +116,7 @@ static void get_box3_params(SkScalar s, int *kernelSize, int* kernelSize3, int * } } -sk_sp<SkSpecialImage> SkBlurImageFilter::onFilterImage(SkSpecialImage* source, +sk_sp<SkSpecialImage> SkBlurImageFilterImpl::onFilterImage(SkSpecialImage* source, const Context& ctx, SkIPoint* offset) const { SkIPoint inputOffset = SkIPoint::Make(0, 0); @@ -231,14 +267,14 @@ sk_sp<SkSpecialImage> SkBlurImageFilter::onFilterImage(SkSpecialImage* source, } -SkRect SkBlurImageFilter::computeFastBounds(const SkRect& src) const { +SkRect SkBlurImageFilterImpl::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; } -SkIRect SkBlurImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, +SkIRect SkBlurImageFilterImpl::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm, MapDirection) const { SkVector sigma = map_sigma(fSigma, ctm); return src.makeOutset(SkScalarCeilToInt(SkScalarMul(sigma.x(), SkIntToScalar(3))), @@ -246,8 +282,8 @@ SkIRect SkBlurImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix } #ifndef SK_IGNORE_TO_STRING -void SkBlurImageFilter::toString(SkString* str) const { - str->appendf("SkBlurImageFilter: ("); +void SkBlurImageFilterImpl::toString(SkString* str) const { + str->appendf("SkBlurImageFilterImpl: ("); str->appendf("sigma: (%f, %f) input (", fSigma.fWidth, fSigma.fHeight); if (this->getInput(0)) { diff --git a/src/effects/SkGpuBlurUtils.cpp b/src/core/SkGpuBlurUtils.cpp index ca762e88e3..ca762e88e3 100644 --- a/src/effects/SkGpuBlurUtils.cpp +++ b/src/core/SkGpuBlurUtils.cpp diff --git a/src/effects/SkGpuBlurUtils.h b/src/core/SkGpuBlurUtils.h index a12a08873c..a12a08873c 100644 --- a/src/effects/SkGpuBlurUtils.h +++ b/src/core/SkGpuBlurUtils.h diff --git a/src/ports/SkGlobalInitialization_default.cpp b/src/ports/SkGlobalInitialization_default.cpp index cc697ce0ba..fdafd9609a 100644 --- a/src/ports/SkGlobalInitialization_default.cpp +++ b/src/ports/SkGlobalInitialization_default.cpp @@ -102,7 +102,7 @@ void SkFlattenable::PrivateInitializer::InitEffects() { SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect) // ImageFilter - SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurImageFilter) + SkImageFilter::InitializeFlattenables(); SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDilateImageFilter) SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDisplacementMapEffect) SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDropShadowImageFilter) |