Index: include/effects/SkOffsetImageFilter.h |
diff --git a/include/effects/SkOffsetImageFilter.h b/include/effects/SkOffsetImageFilter.h |
index 908f20b67a87f82a63af73ff5d8a114b26b34aba..cf2ff96ada5369f9f90c36c2d213225b2ae3a3fd 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; |