aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-03-22 10:17:23 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-22 10:17:23 -0700
commitd053ce9c54d4e5937a142278359e5a4cde18095e (patch)
treee85d4b9d8b23f4fc3c04e6a72173d363ba5f69d5 /include
parentd25d06bf5f109c429e59a41d11854d2a3835abe9 (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.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()
};