diff options
author | 2018-01-23 15:29:32 -0500 | |
---|---|---|
committer | 2018-01-23 21:14:20 +0000 | |
commit | 80747ef591ff3c09c2b610eb21258132d1ff4ef5 (patch) | |
tree | e7472d73f966f9400b0e52cb02ad9e8515de32c3 /src/effects | |
parent | a7701e032bcc55a73360aa8d1b53ceef566de991 (diff) |
move the guts of SkMaskFilter.h into SkMaskFilterBase.h
Bug: skia:
Change-Id: I29ad0960156562867429542d3cfbf3d639529cab
Reviewed-on: https://skia-review.googlesource.com/98802
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkBlurMaskFilter.cpp | 7 | ||||
-rw-r--r-- | src/effects/SkEmbossMaskFilter.h | 4 | ||||
-rw-r--r-- | src/effects/SkLayerDrawLooper.cpp | 5 | ||||
-rw-r--r-- | src/effects/SkRRectsGaussianEdgeMaskFilter.cpp | 3 | ||||
-rw-r--r-- | src/effects/SkShaderMaskFilter.cpp | 3 | ||||
-rw-r--r-- | src/effects/SkTableMaskFilter.cpp | 58 |
6 files changed, 61 insertions, 19 deletions
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp index 0d67b4a18f..d730d62d14 100644 --- a/src/effects/SkBlurMaskFilter.cpp +++ b/src/effects/SkBlurMaskFilter.cpp @@ -8,6 +8,7 @@ #include "SkBlurMaskFilter.h" #include "SkBlurMask.h" #include "SkGpuBlurUtils.h" +#include "SkMaskFilterBase.h" #include "SkReadBuffer.h" #include "SkWriteBuffer.h" #include "SkMaskFilter.h" @@ -40,7 +41,7 @@ SkScalar SkBlurMaskFilter::ConvertRadiusToSigma(SkScalar radius) { return SkBlurMask::ConvertRadiusToSigma(radius); } -class SkBlurMaskFilterImpl : public SkMaskFilter { +class SkBlurMaskFilterImpl : public SkMaskFilterBase { public: SkBlurMaskFilterImpl(SkScalar sigma, SkBlurStyle, const SkRect& occluder, uint32_t flags); @@ -459,7 +460,7 @@ static SkCachedData* add_cached_rects(SkMask* mask, SkScalar sigma, SkBlurStyle static const bool c_analyticBlurRRect{true}; #endif -SkMaskFilter::FilterReturn +SkMaskFilterBase::FilterReturn SkBlurMaskFilterImpl::filterRRectToNine(const SkRRect& rrect, const SkMatrix& matrix, const SkIRect& clipBounds, NinePatch* patch) const { @@ -596,7 +597,7 @@ SkBlurMaskFilterImpl::filterRRectToNine(const SkRRect& rrect, const SkMatrix& ma // Use the faster analytic blur approach for ninepatch rects static const bool c_analyticBlurNinepatch{true}; -SkMaskFilter::FilterReturn +SkMaskFilterBase::FilterReturn SkBlurMaskFilterImpl::filterRectsToNine(const SkRect rects[], int count, const SkMatrix& matrix, const SkIRect& clipBounds, diff --git a/src/effects/SkEmbossMaskFilter.h b/src/effects/SkEmbossMaskFilter.h index 29b70ad1f9..89bb5c8921 100644 --- a/src/effects/SkEmbossMaskFilter.h +++ b/src/effects/SkEmbossMaskFilter.h @@ -8,13 +8,13 @@ #ifndef SkEmbossMaskFilter_DEFINED #define SkEmbossMaskFilter_DEFINED -#include "SkMaskFilter.h" +#include "SkMaskFilterBase.h" /** \class SkEmbossMaskFilter This mask filter creates a 3D emboss look, by specifying a light and blur amount. */ -class SK_API SkEmbossMaskFilter : public SkMaskFilter { +class SK_API SkEmbossMaskFilter : public SkMaskFilterBase { public: struct Light { SkScalar fDirection[3]; // x,y,z diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp index 7dff657c52..17aa7a123d 100644 --- a/src/effects/SkLayerDrawLooper.cpp +++ b/src/effects/SkLayerDrawLooper.cpp @@ -10,6 +10,7 @@ #include "SkCanvas.h" #include "SkColorSpaceXformer.h" #include "SkColor.h" +#include "SkMaskFilterBase.h" #include "SkReadBuffer.h" #include "SkWriteBuffer.h" #include "SkLayerDrawLooper.h" @@ -181,8 +182,8 @@ bool SkLayerDrawLooper::asABlurShadow(BlurShadowRec* bsRec) const { if (nullptr == mf) { return false; } - SkMaskFilter::BlurRec maskBlur; - if (!mf->asABlur(&maskBlur)) { + SkMaskFilterBase::BlurRec maskBlur; + if (!as_MFB(mf)->asABlur(&maskBlur)) { return false; } diff --git a/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp b/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp index 09739c0813..850e440099 100644 --- a/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp +++ b/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp @@ -5,6 +5,7 @@ * found in the LICENSE file. */ +#include "SkMaskFilterBase.h" #include "SkRRectsGaussianEdgeMaskFilter.h" #include "SkReadBuffer.h" #include "SkRRect.h" @@ -19,7 +20,7 @@ * The round rects must have the same radii at each corner and the x&y radii * must also be equal. */ -class SkRRectsGaussianEdgeMaskFilterImpl : public SkMaskFilter { +class SkRRectsGaussianEdgeMaskFilterImpl : public SkMaskFilterBase { public: SkRRectsGaussianEdgeMaskFilterImpl(const SkRRect& first, const SkRRect& second, SkScalar radius) diff --git a/src/effects/SkShaderMaskFilter.cpp b/src/effects/SkShaderMaskFilter.cpp index 8693751899..f2088fce72 100644 --- a/src/effects/SkShaderMaskFilter.cpp +++ b/src/effects/SkShaderMaskFilter.cpp @@ -6,12 +6,13 @@ */ #include "SkCanvas.h" +#include "SkMaskFilterBase.h" #include "SkReadBuffer.h" #include "SkShaderMaskFilter.h" #include "SkShader.h" #include "SkString.h" -class SkShaderMF : public SkMaskFilter { +class SkShaderMF : public SkMaskFilterBase { public: SkShaderMF(sk_sp<SkShader> shader) : fShader(std::move(shader)) {} diff --git a/src/effects/SkTableMaskFilter.cpp b/src/effects/SkTableMaskFilter.cpp index a3b4038a2f..5006f04cb0 100644 --- a/src/effects/SkTableMaskFilter.cpp +++ b/src/effects/SkTableMaskFilter.cpp @@ -5,26 +5,48 @@ * found in the LICENSE file. */ - #include "SkFixed.h" #include "SkReadBuffer.h" #include "SkString.h" #include "SkTableMaskFilter.h" #include "SkWriteBuffer.h" -SkTableMaskFilter::SkTableMaskFilter() { +class SkTableMaskFilterImpl : public SkMaskFilterBase { +public: + explicit SkTableMaskFilterImpl(const uint8_t table[256]); + + SkMask::Format getFormat() const override; + bool filterMask(SkMask*, const SkMask&, const SkMatrix&, SkIPoint*) const override; + + SK_TO_STRING_OVERRIDE() + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTableMaskFilterImpl) + +protected: + ~SkTableMaskFilterImpl() override; + + void flatten(SkWriteBuffer&) const override; + +private: + SkTableMaskFilterImpl(); + + uint8_t fTable[256]; + + typedef SkMaskFilter INHERITED; +}; + +SkTableMaskFilterImpl::SkTableMaskFilterImpl() { for (int i = 0; i < 256; i++) { fTable[i] = i; } } -SkTableMaskFilter::SkTableMaskFilter(const uint8_t table[256]) { +SkTableMaskFilterImpl::SkTableMaskFilterImpl(const uint8_t table[256]) { memcpy(fTable, table, sizeof(fTable)); } -SkTableMaskFilter::~SkTableMaskFilter() {} +SkTableMaskFilterImpl::~SkTableMaskFilterImpl() {} -bool SkTableMaskFilter::filterMask(SkMask* dst, const SkMask& src, +bool SkTableMaskFilterImpl::filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, SkIPoint* margin) const { if (src.fFormat != SkMask::kA8_Format) { return false; @@ -66,24 +88,40 @@ bool SkTableMaskFilter::filterMask(SkMask* dst, const SkMask& src, return true; } -SkMask::Format SkTableMaskFilter::getFormat() const { +SkMask::Format SkTableMaskFilterImpl::getFormat() const { return SkMask::kA8_Format; } -void SkTableMaskFilter::flatten(SkWriteBuffer& wb) const { +void SkTableMaskFilterImpl::flatten(SkWriteBuffer& wb) const { wb.writeByteArray(fTable, 256); } -sk_sp<SkFlattenable> SkTableMaskFilter::CreateProc(SkReadBuffer& buffer) { +sk_sp<SkFlattenable> SkTableMaskFilterImpl::CreateProc(SkReadBuffer& buffer) { uint8_t table[256]; if (!buffer.readByteArray(table, 256)) { return nullptr; } - return sk_sp<SkFlattenable>(Create(table)); + return sk_sp<SkFlattenable>(SkTableMaskFilter::Create(table)); } /////////////////////////////////////////////////////////////////////////////// +SkMaskFilter* SkTableMaskFilter::Create(const uint8_t table[256]) { + return new SkTableMaskFilterImpl(table); +} + +SkMaskFilter* SkTableMaskFilter::CreateGamma(SkScalar gamma) { + uint8_t table[256]; + MakeGammaTable(table, gamma); + return new SkTableMaskFilterImpl(table); +} + +SkMaskFilter* SkTableMaskFilter::CreateClip(uint8_t min, uint8_t max) { + uint8_t table[256]; + MakeClipTable(table, min, max); + return new SkTableMaskFilterImpl(table); +} + void SkTableMaskFilter::MakeGammaTable(uint8_t table[256], SkScalar gamma) { const float dx = 1 / 255.0f; const float g = SkScalarToFloat(gamma); @@ -131,7 +169,7 @@ void SkTableMaskFilter::MakeClipTable(uint8_t table[256], uint8_t min, } #ifndef SK_IGNORE_TO_STRING -void SkTableMaskFilter::toString(SkString* str) const { +void SkTableMaskFilterImpl::toString(SkString* str) const { str->append("SkTableMaskFilter: ("); str->append("table: "); |