aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-03-22 08:10:17 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-22 08:10:17 -0700
commit4c9776b046dd5e9e46e2d1ce35154855c8fcb381 (patch)
tree3cdcc394a99b0483921eb86a8f5cc118f20d6433 /include
parent1eb81db650d31f50be67b12d60c4f9e7dd08432f (diff)
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= Review URL: https://codereview.chromium.org/1825073002
Diffstat (limited to 'include')
-rw-r--r--include/core/SkColorFilter.h24
-rw-r--r--include/core/SkPaint.h2
-rw-r--r--include/core/SkShader.h6
-rw-r--r--include/effects/SkBlurDrawLooper.h2
-rw-r--r--include/effects/SkColorCubeFilter.h6
-rw-r--r--include/effects/SkColorFilterImageFilter.h3
-rw-r--r--include/effects/SkColorMatrixFilter.h21
-rw-r--r--include/effects/SkLumaColorFilter.h6
-rw-r--r--include/effects/SkTableColorFilter.h18
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()
};