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()),
#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() {
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));
}
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));
}
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));
// 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;
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;
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()),
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 {