Update DownSampleImageFilter to sk_sp
authorrobertphillips <robertphillips@google.com>
Wed, 6 Apr 2016 14:44:01 +0000 (07:44 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 6 Apr 2016 14:44:01 +0000 (07:44 -0700)
TBR=reed@google.com

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1864583005

Review URL: https://codereview.chromium.org/1864583005

fuzz/FilterFuzz.cpp
gm/testimagefilters.cpp
include/effects/SkTestImageFilters.h
samplecode/SampleFilterFuzz.cpp
src/effects/SkTestImageFilters.cpp

index 87653a1..db3dc8f 100644 (file)
@@ -583,7 +583,7 @@ static sk_sp<SkImageFilter> make_image_filter(bool canBeNull) {
                                                                      make_scalar(true)));
         break;
     case DOWN_SAMPLE:
-        filter = sk_sp<SkImageFilter>(SkDownSampleImageFilter::Create(make_scalar()));
+        filter = SkDownSampleImageFilter::Make(make_scalar(), make_image_filter());
         break;
     case XFERMODE:
         filter = SkXfermodeImageFilter::Make(SkXfermode::Make(make_xfermode()),
index 0174fc1..c6742b2 100644 (file)
@@ -22,7 +22,7 @@
 #define FILTER_HEIGHT   SkIntToScalar(200)
 
 static sk_sp<SkImageFilter> make0() {
-    return sk_sp<SkImageFilter>(SkDownSampleImageFilter::Create(SK_Scalar1 / 5));
+    return SkDownSampleImageFilter::Make(SK_Scalar1 / 5, nullptr);
 }
 
 static sk_sp<SkImageFilter> make1() {
@@ -42,7 +42,7 @@ static sk_sp<SkImageFilter> make4() {
     sk_sp<SkImageFilter> outer(SkOffsetImageFilter::Make(SkIntToScalar(16),
                                                          SkIntToScalar(16),
                                                          nullptr));
-    sk_sp<SkImageFilter> inner(SkDownSampleImageFilter::Create(SK_Scalar1 / 5));
+    sk_sp<SkImageFilter> inner(SkDownSampleImageFilter::Make(SK_Scalar1 / 5, nullptr));
     return SkComposeImageFilter::Make(std::move(outer), std::move(inner));
 }
 
@@ -50,7 +50,7 @@ static sk_sp<SkImageFilter> make5() {
     sk_sp<SkImageFilter> first(SkOffsetImageFilter::Make(SkIntToScalar(16),
                                                          SkIntToScalar(16),
                                                          nullptr));
-    sk_sp<SkImageFilter> second(SkDownSampleImageFilter::Create(SK_Scalar1 / 5));
+    sk_sp<SkImageFilter> second(SkDownSampleImageFilter::Make(SK_Scalar1 / 5, nullptr));
     return SkMergeImageFilter::Make(std::move(first), std::move(second));
 }
 
@@ -58,7 +58,7 @@ static sk_sp<SkImageFilter> make6() {
     sk_sp<SkImageFilter> outer(SkOffsetImageFilter::Make(SkIntToScalar(16),
                                                          SkIntToScalar(16),
                                                          nullptr));
-    sk_sp<SkImageFilter> inner(SkDownSampleImageFilter::Create(SK_Scalar1 / 5));
+    sk_sp<SkImageFilter> inner(SkDownSampleImageFilter::Make(SK_Scalar1 / 5, nullptr));
     sk_sp<SkImageFilter> compose(SkComposeImageFilter::Make(std::move(outer), std::move(inner)));
 
     sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(0x880000FF, SkXfermode::kSrcIn_Mode));
index 943bb53..0f89759 100644 (file)
 // Fun mode that scales down (only) and then scales back up to look pixelated
 class SK_API SkDownSampleImageFilter : public SkImageFilter {
 public:
-    static SkImageFilter* Create(SkScalar scale, SkImageFilter* input = NULL) {
+    static sk_sp<SkImageFilter> Make(SkScalar scale, sk_sp<SkImageFilter> input) {
         if (!SkScalarIsFinite(scale)) {
-            return NULL;
+            return nullptr;
         }
         // we don't support scale in this range
         if (scale > SK_Scalar1 || scale <= 0) {
-            return NULL;
+            return nullptr;
         }
-        return new SkDownSampleImageFilter(scale, input);
+        return sk_sp<SkImageFilter>(new SkDownSampleImageFilter(scale, std::move(input)));
     }
 
     SK_TO_STRING_OVERRIDE()
     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter)
 
+#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR
+    static SkImageFilter* Create(SkScalar scale, SkImageFilter* input = nullptr) {
+        return Make(scale, sk_ref_sp<SkImageFilter>(input)).release();
+    }
+#endif
+
 protected:
     void flatten(SkWriteBuffer&) const override;
 
@@ -35,8 +41,8 @@ protected:
                                         SkIPoint* offset) const override;
 
 private:
-    SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input)
-        : INHERITED(1, &input), fScale(scale) {}
+    SkDownSampleImageFilter(SkScalar scale, sk_sp<SkImageFilter> input)
+        : INHERITED(&input, 1, nullptr), fScale(scale) {}
 
     SkScalar fScale;
 
index 67c17fb..685ad90 100644 (file)
@@ -586,7 +586,7 @@ static sk_sp<SkImageFilter> make_image_filter(bool canBeNull) {
                                                                      make_scalar(true)));
         break;
     case DOWN_SAMPLE:
-        filter = sk_sp<SkImageFilter>(SkDownSampleImageFilter::Create(make_scalar()));
+        filter = SkDownSampleImageFilter::Make(make_scalar(), make_image_filter());
         break;
     case XFERMODE:
         filter = SkXfermodeImageFilter::Make(SkXfermode::Make(make_xfermode()),
index d62fc72..5cc890c 100755 (executable)
@@ -82,7 +82,7 @@ sk_sp<SkSpecialImage> SkDownSampleImageFilter::onFilterImage(SkSpecialImage* sou
 
 sk_sp<SkFlattenable> SkDownSampleImageFilter::CreateProc(SkReadBuffer& buffer) {
     SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
-    return sk_sp<SkFlattenable>(Create(buffer.readScalar(), common.getInput(0).get()));
+    return Make(buffer.readScalar(), common.getInput(0));
 }
 
 void SkDownSampleImageFilter::flatten(SkWriteBuffer& buffer) const {