diff options
author | 2016-03-30 13:34:16 -0700 | |
---|---|---|
committer | 2016-03-30 13:34:17 -0700 | |
commit | 2238c9dbca4b791edc512957728a18ce14d55912 (patch) | |
tree | 684102215b697506f7c2dce012bb89183467e208 /include/effects/SkMergeImageFilter.h | |
parent | 3243143f25f4ccba632847574cf8e1a8ee0fe0f2 (diff) |
Update SkMergeImageFilter to sk_sp
TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1847583002
Review URL: https://codereview.chromium.org/1847583002
Diffstat (limited to 'include/effects/SkMergeImageFilter.h')
-rw-r--r-- | include/effects/SkMergeImageFilter.h | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/include/effects/SkMergeImageFilter.h b/include/effects/SkMergeImageFilter.h index 3bf649d97d..e85cc1f97f 100644 --- a/include/effects/SkMergeImageFilter.h +++ b/include/effects/SkMergeImageFilter.h @@ -16,30 +16,51 @@ class SK_API SkMergeImageFilter : public SkImageFilter { public: ~SkMergeImageFilter() override; - static SkImageFilter* Create(SkImageFilter* first, SkImageFilter* second, - SkXfermode::Mode mode = SkXfermode::kSrcOver_Mode, - const CropRect* cropRect = NULL) { - SkImageFilter* inputs[2] = { first, second }; + static sk_sp<SkImageFilter> Make(sk_sp<SkImageFilter> first, sk_sp<SkImageFilter> second, + SkXfermode::Mode mode = SkXfermode::kSrcOver_Mode, + const CropRect* cropRect = nullptr) { + sk_sp<SkImageFilter> inputs[2] = { first, second }; SkXfermode::Mode modes[2] = { mode, mode }; - return new SkMergeImageFilter(inputs, 2, modes, cropRect); + return sk_sp<SkImageFilter>(new SkMergeImageFilter(inputs, 2, modes, cropRect)); } - static SkImageFilter* Create(SkImageFilter* filters[], int count, - const SkXfermode::Mode modes[] = NULL, - const CropRect* cropRect = NULL) { - return new SkMergeImageFilter(filters, count, modes, cropRect); + static sk_sp<SkImageFilter> Make(sk_sp<SkImageFilter> filters[], + int count, + const SkXfermode::Mode modes[] = nullptr, + const CropRect* cropRect = nullptr) { + return sk_sp<SkImageFilter>(new SkMergeImageFilter(filters, count, modes, cropRect)); } SK_TO_STRING_OVERRIDE() SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMergeImageFilter) +#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR + static SkImageFilter* Create(SkImageFilter* first, SkImageFilter* second, + SkXfermode::Mode mode = SkXfermode::kSrcOver_Mode, + const CropRect* cropRect = nullptr) { + return Make(sk_ref_sp<SkImageFilter>(first), + sk_ref_sp<SkImageFilter>(second), + mode, cropRect).release(); + } + + static SkImageFilter* Create(SkImageFilter* filters[], int count, + const SkXfermode::Mode modes[] = nullptr, + const CropRect* cropRect = nullptr) { + SkAutoTDeleteArray<sk_sp<SkImageFilter>> temp(new sk_sp<SkImageFilter>[count]); + for (int i = 0; i < count; ++i) { + temp[i] = sk_ref_sp<SkImageFilter>(filters[i]); + } + return Make(temp.get(), count, modes, cropRect).release(); + } +#endif + protected: void flatten(SkWriteBuffer&) const override; sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, SkIPoint* offset) const override; private: - SkMergeImageFilter(SkImageFilter* filters[], int count, const SkXfermode::Mode modes[], + SkMergeImageFilter(sk_sp<SkImageFilter> filters[], int count, const SkXfermode::Mode modes[], const CropRect* cropRect); uint8_t* fModes; // SkXfermode::Mode |