diff options
Diffstat (limited to 'include/effects/SkMorphologyImageFilter.h')
-rw-r--r-- | include/effects/SkMorphologyImageFilter.h | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/include/effects/SkMorphologyImageFilter.h b/include/effects/SkMorphologyImageFilter.h index 4e699a7633..27608ecd07 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; |