aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/effects/SkMergeImageFilter.h
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2016-03-30 13:34:16 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-30 13:34:17 -0700
commit2238c9dbca4b791edc512957728a18ce14d55912 (patch)
tree684102215b697506f7c2dce012bb89183467e208 /include/effects/SkMergeImageFilter.h
parent3243143f25f4ccba632847574cf8e1a8ee0fe0f2 (diff)
Update SkMergeImageFilter to sk_sp
Diffstat (limited to 'include/effects/SkMergeImageFilter.h')
-rw-r--r--include/effects/SkMergeImageFilter.h41
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