Index: include/effects/SkMorphologyImageFilter.h |
diff --git a/include/effects/SkMorphologyImageFilter.h b/include/effects/SkMorphologyImageFilter.h |
index 4e699a7633eaa9b924b32e675ef86e1dfdb2b14a..27608ecd07f8d727e0e91a81400312b7af75a508 100644 |
--- a/include/effects/SkMorphologyImageFilter.h |
+++ b/include/effects/SkMorphologyImageFilter.h |
@@ -36,7 +36,8 @@ protected: |
virtual Op op() const = 0; |
- SkMorphologyImageFilter(int radiusX, int radiusY, SkImageFilter* input, |
+ SkMorphologyImageFilter(int radiusX, int radiusY, |
+ sk_sp<SkImageFilter> input, |
const CropRect* cropRect); |
sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, |
const Context&, |
@@ -54,23 +55,37 @@ private: |
/////////////////////////////////////////////////////////////////////////////// |
class SK_API SkDilateImageFilter : public SkMorphologyImageFilter { |
public: |
- static SkImageFilter* Create(int radiusX, int radiusY, |
- SkImageFilter* input = nullptr, |
- const CropRect* cropRect = nullptr) { |
+ static sk_sp<SkImageFilter> Make(int radiusX, int radiusY, |
+ sk_sp<SkImageFilter> input, |
+ const CropRect* cropRect = nullptr) { |
if (radiusX < 0 || radiusY < 0) { |
return nullptr; |
} |
- return new SkDilateImageFilter(radiusX, radiusY, input, cropRect); |
+ return sk_sp<SkImageFilter>(new SkDilateImageFilter(radiusX, radiusY, |
+ std::move(input), |
+ cropRect)); |
} |
SK_TO_STRING_OVERRIDE() |
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDilateImageFilter) |
+#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR |
+ static SkImageFilter* Create(int radiusX, int radiusY, |
+ SkImageFilter* input = nullptr, |
+ const CropRect* cropRect = nullptr) { |
+ return Make(radiusX, radiusY, |
+ sk_ref_sp<SkImageFilter>(input), |
+ cropRect).release(); |
+ } |
+#endif |
+ |
protected: |
Op op() const override { return kDilate_Op; } |
private: |
- SkDilateImageFilter(int radiusX, int radiusY, SkImageFilter* input, const CropRect* cropRect) |
+ SkDilateImageFilter(int radiusX, int radiusY, |
+ sk_sp<SkImageFilter> input, |
+ const CropRect* cropRect) |
: INHERITED(radiusX, radiusY, input, cropRect) {} |
typedef SkMorphologyImageFilter INHERITED; |
@@ -79,23 +94,36 @@ private: |
/////////////////////////////////////////////////////////////////////////////// |
class SK_API SkErodeImageFilter : public SkMorphologyImageFilter { |
public: |
- static SkImageFilter* Create(int radiusX, int radiusY, |
- SkImageFilter* input = nullptr, |
- const CropRect* cropRect = nullptr) { |
+ static sk_sp<SkImageFilter> Make(int radiusX, int radiusY, |
+ sk_sp<SkImageFilter> input, |
+ const CropRect* cropRect = nullptr) { |
if (radiusX < 0 || radiusY < 0) { |
return nullptr; |
} |
- return new SkErodeImageFilter(radiusX, radiusY, input, cropRect); |
+ return sk_sp<SkImageFilter>(new SkErodeImageFilter(radiusX, radiusY, |
+ std::move(input), |
+ cropRect)); |
} |
SK_TO_STRING_OVERRIDE() |
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkErodeImageFilter) |
+#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR |
+ static SkImageFilter* Create(int radiusX, int radiusY, |
+ SkImageFilter* input = nullptr, |
+ const CropRect* cropRect = nullptr) { |
+ return Make(radiusX, radiusY, |
+ sk_ref_sp<SkImageFilter>(input), |
+ cropRect).release(); |
+ } |
+#endif |
+ |
protected: |
Op op() const override { return kErode_Op; } |
private: |
- SkErodeImageFilter(int radiusX, int radiusY, SkImageFilter* input, const CropRect* cropRect) |
+ SkErodeImageFilter(int radiusX, int radiusY, |
+ sk_sp<SkImageFilter> input, const CropRect* cropRect) |
: INHERITED(radiusX, radiusY, input, cropRect) {} |
typedef SkMorphologyImageFilter INHERITED; |