diff options
Diffstat (limited to 'include/core')
-rw-r--r-- | include/core/SkColorFilter.h | 24 | ||||
-rw-r--r-- | include/core/SkPaint.h | 2 | ||||
-rw-r--r-- | include/core/SkShader.h | 2 |
3 files changed, 23 insertions, 5 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 |