diff options
author | 2016-04-05 09:09:36 -0700 | |
---|---|---|
committer | 2016-04-05 09:09:37 -0700 | |
commit | fc11b0afe0ca922a42767d4a656ed640008da1bb (patch) | |
tree | eb84a2ba05f37c8e7b9c721f38bc93bac27b5bcb /include/effects/SkMorphologyImageFilter.h | |
parent | b8797bb7b74adcab1d198de3ef4f0871b0bb6718 (diff) |
Update SkMorphology ImageFilters to sk_sp
TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1860573002
Review URL: https://codereview.chromium.org/1860573002
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; |