diff options
author | reed <reed@google.com> | 2016-03-22 07:23:24 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-22 07:23:24 -0700 |
commit | f809d7687a4fb7b88b651b046da2bc0035d6aa09 (patch) | |
tree | 38fa4182df2c735459e43b0eaaa073c1ef8c612d /include | |
parent | cfcd1819d1431bbe5812c174fc337d3678d63f06 (diff) |
switch colorfilters to sk_sp
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1822623002
Review URL: https://codereview.chromium.org/1822623002
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkColorFilter.h | 24 | ||||
-rw-r--r-- | include/core/SkPaint.h | 2 | ||||
-rw-r--r-- | include/core/SkShader.h | 2 | ||||
-rw-r--r-- | include/effects/SkBlurDrawLooper.h | 2 | ||||
-rw-r--r-- | include/effects/SkColorCubeFilter.h | 6 | ||||
-rw-r--r-- | include/effects/SkColorFilterImageFilter.h | 3 | ||||
-rw-r--r-- | include/effects/SkColorMatrixFilter.h | 21 | ||||
-rw-r--r-- | include/effects/SkLumaColorFilter.h | 6 | ||||
-rw-r--r-- | include/effects/SkTableColorFilter.h | 18 |
9 files changed, 63 insertions, 21 deletions
diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h index 4c9795c271..7ac335fb10 100644 --- a/include/core/SkColorFilter.h +++ b/include/core/SkColorFilter.h @@ -86,7 +86,7 @@ public: * * e.g. result(color) == this_filter(inner(color)) */ - virtual SkColorFilter* newComposed(const SkColorFilter* /*inner*/) const { return NULL; } + virtual sk_sp<SkColorFilter> makeComposed(sk_sp<SkColorFilter>) const { return nullptr; } /** * Apply this colorfilter to the specified SkColor. This routine handles @@ -110,7 +110,7 @@ public: @return colorfilter object that applies the src color and mode, or NULL if the mode will have no effect. */ - static SkColorFilter* CreateModeFilter(SkColor c, SkXfermode::Mode mode); + static sk_sp<SkColorFilter> MakeModeFilter(SkColor c, SkXfermode::Mode mode); /** Construct a colorfilter whose effect is to first apply the inner filter and then apply * the outer filter to the result of the inner's. @@ -119,12 +119,28 @@ public: * Due to internal limits, it is possible that this will return NULL, so the caller must * always check. */ - static SkColorFilter* CreateComposeFilter(SkColorFilter* outer, SkColorFilter* inner); + static sk_sp<SkColorFilter> MakeComposeFilter(sk_sp<SkColorFilter> outer, + sk_sp<SkColorFilter> inner); /** Construct a color filter that transforms a color by a 4x5 matrix. The matrix is in row- * major order and the translation column is specified in unnormalized, 0...255, space. */ - static SkColorFilter* CreateMatrixFilterRowMajor255(const SkScalar array[20]); + static sk_sp<SkColorFilter> MakeMatrixFilterRowMajor255(const SkScalar array[20]); + +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR + static SkColorFilter* CreateModeFilter(SkColor c, SkXfermode::Mode mode) { + return MakeModeFilter(c, mode).release(); + } + static SkColorFilter* CreateComposeFilter(SkColorFilter* outer, SkColorFilter* inner) { + return MakeComposeFilter(sk_ref_sp(outer), sk_ref_sp(inner)).release(); + } + static SkColorFilter* CreateMatrixFilterRowMajor255(const SkScalar array[20]) { + return MakeMatrixFilterRowMajor255(array).release(); + } + virtual SkColorFilter* newComposed(const SkColorFilter* inner) const { + return this->makeComposed(sk_ref_sp(const_cast<SkColorFilter*>(inner))).release(); + } +#endif /** * A subclass may implement this factory function to work with the GPU backend. It returns diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h index f5c3bc3d4b..21d7109cbb 100644 --- a/include/core/SkPaint.h +++ b/include/core/SkPaint.h @@ -515,7 +515,9 @@ public: @param filter May be NULL. The filter to be installed in the paint @return filter */ +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR SkColorFilter* setColorFilter(SkColorFilter* filter); +#endif void setColorFilter(sk_sp<SkColorFilter>); /** Get the paint's xfermode object. diff --git a/include/core/SkShader.h b/include/core/SkShader.h index c9c760d06d..44235adc28 100644 --- a/include/core/SkShader.h +++ b/include/core/SkShader.h @@ -359,7 +359,7 @@ public: * Create a new shader that produces the same colors as invoking this shader and then applying * the colorfilter. */ - sk_sp<SkShader> makeWithColorFilter(SkColorFilter*) const; + sk_sp<SkShader> makeWithColorFilter(sk_sp<SkColorFilter>) const; ////////////////////////////////////////////////////////////////////////// // Factory methods for stock shaders diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h index 0371700ba4..49b0c51f25 100644 --- a/include/effects/SkBlurDrawLooper.h +++ b/include/effects/SkBlurDrawLooper.h @@ -65,7 +65,7 @@ protected: private: SkMaskFilter* fBlur; - SkColorFilter* fColorFilter; + sk_sp<SkColorFilter> fColorFilter; SkScalar fDx, fDy, fSigma; SkColor fBlurColor; uint32_t fBlurFlags; diff --git a/include/effects/SkColorCubeFilter.h b/include/effects/SkColorCubeFilter.h index 8d63667c32..8b621292b0 100644 --- a/include/effects/SkColorCubeFilter.h +++ b/include/effects/SkColorCubeFilter.h @@ -20,7 +20,11 @@ public: * This cube contains a transform where (x,y,z) maps to the (r,g,b). * The alpha components of the colors must be 0xFF. */ + static sk_sp<SkColorFilter> Make(sk_sp<SkData> cubeData, int cubeDimension); + +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR static SkColorFilter* Create(SkData* cubeData, int cubeDimension); +#endif void filterSpan(const SkPMColor src[], int count, SkPMColor[]) const override; uint32_t getFlags() const override; @@ -33,7 +37,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorCubeFilter) protected: - SkColorCubeFilter(SkData* cubeData, int cubeDimension); + SkColorCubeFilter(sk_sp<SkData> cubeData, int cubeDimension); void flatten(SkWriteBuffer&) const override; private: diff --git a/include/effects/SkColorFilterImageFilter.h b/include/effects/SkColorFilterImageFilter.h index 6dd9df2495..c34e9ced59 100644 --- a/include/effects/SkColorFilterImageFilter.h +++ b/include/effects/SkColorFilterImageFilter.h @@ -31,9 +31,8 @@ private: SkColorFilterImageFilter(SkColorFilter* cf, SkImageFilter* input, const CropRect* cropRect); - virtual ~SkColorFilterImageFilter(); - SkColorFilter* fColorFilter; + sk_sp<SkColorFilter> fColorFilter; typedef SkImageFilter INHERITED; }; diff --git a/include/effects/SkColorMatrixFilter.h b/include/effects/SkColorMatrixFilter.h index d71d2ed533..6e74bee315 100644 --- a/include/effects/SkColorMatrixFilter.h +++ b/include/effects/SkColorMatrixFilter.h @@ -13,20 +13,25 @@ class SK_API SkColorMatrixFilter : public SkColorFilter { public: - static SkColorFilter* Create(const SkColorMatrix& cm) { - return SkColorFilter::CreateMatrixFilterRowMajor255(cm.fMat); - } - static SkColorFilter* Create(const SkScalar array[20]) { - return SkColorFilter::CreateMatrixFilterRowMajor255(array); - } - /** * Create a colorfilter that multiplies the RGB channels by one color, and * then adds a second color, pinning the result for each component to * [0..255]. The alpha components of the mul and add arguments * are ignored. */ - static SkColorFilter* CreateLightingFilter(SkColor mul, SkColor add); + static sk_sp<SkColorFilter> MakeLightingFilter(SkColor mul, SkColor add); + +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR + static SkColorFilter* Create(const SkColorMatrix& cm) { + return SkColorFilter::MakeMatrixFilterRowMajor255(cm.fMat).release(); + } + static SkColorFilter* Create(const SkScalar array[20]) { + return SkColorFilter::MakeMatrixFilterRowMajor255(array).release(); + } + static SkColorFilter* CreateLightingFilter(SkColor mul, SkColor add) { + return MakeLightingFilter(mul, add).release(); + } +#endif }; #endif diff --git a/include/effects/SkLumaColorFilter.h b/include/effects/SkLumaColorFilter.h index 8dd519af4a..3a68607b19 100644 --- a/include/effects/SkLumaColorFilter.h +++ b/include/effects/SkLumaColorFilter.h @@ -23,7 +23,11 @@ */ class SK_API SkLumaColorFilter : public SkColorFilter { public: - static SkColorFilter* Create(); + static sk_sp<SkColorFilter> Make(); + +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR + static SkColorFilter* Create() { return Make().release(); } +#endif void filterSpan(const SkPMColor src[], int count, SkPMColor[]) const override; diff --git a/include/effects/SkTableColorFilter.h b/include/effects/SkTableColorFilter.h index e4d42dc00c..fe31149464 100644 --- a/include/effects/SkTableColorFilter.h +++ b/include/effects/SkTableColorFilter.h @@ -23,7 +23,7 @@ public: * colors are premultiplied, they are temporarily unpremultiplied, then * the table is applied, and then the result is remultiplied. */ - static SkColorFilter* Create(const uint8_t table[256]); + static sk_sp<SkColorFilter> Make(const uint8_t table[256]); /** * Create a table colorfilter, with a different table for each @@ -31,11 +31,23 @@ public: * treated as identity, with the component left unchanged. If a table * is not null, then its contents are copied into the filter. */ + static sk_sp<SkColorFilter> MakeARGB(const uint8_t tableA[256], + const uint8_t tableR[256], + const uint8_t tableG[256], + const uint8_t tableB[256]); + +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR + static SkColorFilter* Create(const uint8_t table[256]) { + return Make(table).release(); + } static SkColorFilter* CreateARGB(const uint8_t tableA[256], const uint8_t tableR[256], const uint8_t tableG[256], - const uint8_t tableB[256]); - + const uint8_t tableB[256]) { + return MakeARGB(tableA, tableR, tableG, tableB).release(); + } +#endif + SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() }; |