diff options
author | 2016-03-22 10:17:23 -0700 | |
---|---|---|
committer | 2016-03-22 10:17:23 -0700 | |
commit | d053ce9c54d4e5937a142278359e5a4cde18095e (patch) | |
tree | e85d4b9d8b23f4fc3c04e6a72173d363ba5f69d5 /include | |
parent | d25d06bf5f109c429e59a41d11854d2a3835abe9 (diff) |
Reland of [2] of "switch colorfilters to sk_sp (patchset #11 id:200001 of https://codereview.chromium.o… (patchset #1 id:1 of https://codereview.chromium.org/1821103004/ )
Reason for revert:
guard has now landed in chrome
Original issue's description:
> Revert of Revert[2] of "switch colorfilters to sk_sp (patchset #11 id:200001 of https://codereview.chromium.o… (patchset #3 id:40001 of https://codereview.chromium.org/1825073002/ )
>
> Reason for revert:
> CreateModeFilter not compiling
>
> Original issue's description:
> > Revert[2] of "switch colorfilters to sk_sp (patchset #11 id:200001 of https://codereview.chromium.org/1822623002/ )"
> >
> > Fixed legacy withColorFilter to call new(er) make method
> >
> > This reverts commit 1eb81db650d31f50be67b12d60c4f9e7dd08432f.
> >
> > BUG=skia:
> > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1825073002
> >
> > TBR=
> >
> > Committed: https://skia.googlesource.com/skia/+/4c9776b046dd5e9e46e2d1ce35154855c8fcb381
>
> TBR=
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/d6889293dd0942f27f9593f679722c956831f2c4
TBR=
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=skia:
Review URL: https://codereview.chromium.org/1827433002
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 | 6 | ||||
-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, 64 insertions, 24 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..e2ebda5f10 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 @@ -393,9 +393,7 @@ public: SkShader* newWithLocalMatrix(const SkMatrix& matrix) const { return this->makeWithLocalMatrix(matrix).release(); } - SkShader* newWithColorFilter(SkColorFilter* filter) const { - return this->makeWithColorFilter(filter).release(); - } + SkShader* newWithColorFilter(SkColorFilter* filter) const; #endif /** 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() }; |