diff options
Diffstat (limited to 'include/effects/SkOffsetImageFilter.h')
-rw-r--r-- | include/effects/SkOffsetImageFilter.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/include/effects/SkOffsetImageFilter.h b/include/effects/SkOffsetImageFilter.h index 908f20b67a..cf2ff96ada 100644 --- a/include/effects/SkOffsetImageFilter.h +++ b/include/effects/SkOffsetImageFilter.h @@ -13,12 +13,14 @@ class SK_API SkOffsetImageFilter : public SkImageFilter { public: - static SkImageFilter* Create(SkScalar dx, SkScalar dy, SkImageFilter* input = NULL, - const CropRect* cropRect = NULL) { + static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy, + sk_sp<SkImageFilter> input, + const CropRect* cropRect = nullptr) { if (!SkScalarIsFinite(dx) || !SkScalarIsFinite(dy)) { - return NULL; + return nullptr; } - return new SkOffsetImageFilter(dx, dy, input, cropRect); + + return sk_sp<SkImageFilter>(new SkOffsetImageFilter(dx, dy, std::move(input), cropRect)); } SkRect computeFastBounds(const SkRect& src) const override; @@ -26,6 +28,13 @@ public: SK_TO_STRING_OVERRIDE() SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter) +#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR + static SkImageFilter* Create(SkScalar dx, SkScalar dy, SkImageFilter* input = nullptr, + const CropRect* cropRect = nullptr) { + return Make(dx, dy, sk_ref_sp(input), cropRect).release(); + } +#endif + protected: void flatten(SkWriteBuffer&) const override; sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, @@ -33,7 +42,7 @@ protected: SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix&, MapDirection) const override; private: - SkOffsetImageFilter(SkScalar dx, SkScalar dy, SkImageFilter* input, const CropRect*); + SkOffsetImageFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input, const CropRect*); SkVector fOffset; |