aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--bench/MagnifierBench.cpp4
-rw-r--r--fuzz/FilterFuzz.cpp5
-rw-r--r--gm/imagemagnifier.cpp4
-rw-r--r--include/effects/SkMagnifierImageFilter.h11
-rw-r--r--samplecode/SampleFilterFuzz.cpp5
-rw-r--r--src/effects/SkMagnifierImageFilter.cpp14
6 files changed, 27 insertions, 16 deletions
diff --git a/bench/MagnifierBench.cpp b/bench/MagnifierBench.cpp
index 61850597fa..98deade164 100644
--- a/bench/MagnifierBench.cpp
+++ b/bench/MagnifierBench.cpp
@@ -38,11 +38,11 @@ protected:
const int h = fIsSmall ? FILTER_HEIGHT_SMALL : FILTER_HEIGHT_LARGE;
SkPaint paint;
paint.setImageFilter(
- SkMagnifierImageFilter::Create(
+ SkMagnifierImageFilter::Make(
SkRect::MakeXYWH(SkIntToScalar(w / 4),
SkIntToScalar(h / 4),
SkIntToScalar(w / 2),
- SkIntToScalar(h / 2)), 100))->unref();
+ SkIntToScalar(h / 2)), 100, nullptr));
for (int i = 0; i < loops; i++) {
canvas->drawBitmap(fCheckerboard, 0, 0, &paint);
diff --git a/fuzz/FilterFuzz.cpp b/fuzz/FilterFuzz.cpp
index 12ae50dd71..ebb9de85c2 100644
--- a/fuzz/FilterFuzz.cpp
+++ b/fuzz/FilterFuzz.cpp
@@ -579,8 +579,9 @@ static sk_sp<SkImageFilter> make_image_filter(bool canBeNull) {
make_image_filter());
break;
case MAGNIFIER:
- filter = sk_sp<SkImageFilter>(SkMagnifierImageFilter::Create(make_rect(),
- make_scalar(true)));
+ filter = SkMagnifierImageFilter::Make(make_rect(),
+ make_scalar(true),
+ make_image_filter());
break;
case DOWN_SAMPLE:
filter = SkDownSampleImageFilter::Make(make_scalar(), make_image_filter());
diff --git a/gm/imagemagnifier.cpp b/gm/imagemagnifier.cpp
index 73639813a3..5697aa2480 100644
--- a/gm/imagemagnifier.cpp
+++ b/gm/imagemagnifier.cpp
@@ -15,11 +15,11 @@
DEF_SIMPLE_GM_BG(imagemagnifier, canvas, WIDTH, HEIGHT, SK_ColorBLACK) {
SkPaint filterPaint;
filterPaint.setImageFilter(
- SkMagnifierImageFilter::Create(
+ SkMagnifierImageFilter::Make(
SkRect::MakeXYWH(SkIntToScalar(100), SkIntToScalar(100),
SkIntToScalar(WIDTH / 2),
SkIntToScalar(HEIGHT / 2)),
- 100))->unref();
+ 100, nullptr));
canvas->saveLayer(nullptr, &filterPaint);
const char* str = "The quick brown fox jumped over the lazy dog.";
SkRandom rand;
diff --git a/include/effects/SkMagnifierImageFilter.h b/include/effects/SkMagnifierImageFilter.h
index bea03adab3..739f1eec73 100644
--- a/include/effects/SkMagnifierImageFilter.h
+++ b/include/effects/SkMagnifierImageFilter.h
@@ -14,13 +14,20 @@
class SK_API SkMagnifierImageFilter : public SkImageFilter {
public:
- static SkImageFilter* Create(const SkRect& src, SkScalar inset, SkImageFilter* input = NULL);
+ static sk_sp<SkImageFilter> Make(const SkRect& src, SkScalar inset, sk_sp<SkImageFilter> input);
SK_TO_STRING_OVERRIDE()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMagnifierImageFilter)
+#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR
+ static SkImageFilter* Create(const SkRect& src, SkScalar inset,
+ SkImageFilter* input = nullptr) {
+ return Make(src, inset, sk_ref_sp<SkImageFilter>(input)).release();
+ }
+#endif
+
protected:
- SkMagnifierImageFilter(const SkRect& srcRect, SkScalar inset, SkImageFilter* input);
+ SkMagnifierImageFilter(const SkRect& srcRect, SkScalar inset, sk_sp<SkImageFilter> input);
void flatten(SkWriteBuffer&) const override;
bool onFilterImageDeprecated(Proxy*, const SkBitmap& src, const Context&,
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp
index 8f83c3e465..a7f4163b27 100644
--- a/samplecode/SampleFilterFuzz.cpp
+++ b/samplecode/SampleFilterFuzz.cpp
@@ -582,8 +582,9 @@ static sk_sp<SkImageFilter> make_image_filter(bool canBeNull) {
make_image_filter());
break;
case MAGNIFIER:
- filter = sk_sp<SkImageFilter>(SkMagnifierImageFilter::Create(make_rect(),
- make_scalar(true)));
+ filter = SkMagnifierImageFilter::Make(make_rect(),
+ make_scalar(true),
+ make_image_filter());
break;
case DOWN_SAMPLE:
filter = SkDownSampleImageFilter::Make(make_scalar(), make_image_filter());
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp
index dfd7f04f6a..616aaafcac 100644
--- a/src/effects/SkMagnifierImageFilter.cpp
+++ b/src/effects/SkMagnifierImageFilter.cpp
@@ -232,8 +232,8 @@ void GrMagnifierEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const
////////////////////////////////////////////////////////////////////////////////
-SkImageFilter* SkMagnifierImageFilter::Create(const SkRect& srcRect, SkScalar inset,
- SkImageFilter* input) {
+sk_sp<SkImageFilter> SkMagnifierImageFilter::Make(const SkRect& srcRect, SkScalar inset,
+ sk_sp<SkImageFilter> input) {
if (!SkScalarIsFinite(inset) || !SkIsValidRect(srcRect)) {
return nullptr;
@@ -242,13 +242,15 @@ SkImageFilter* SkMagnifierImageFilter::Create(const SkRect& srcRect, SkScalar in
if (srcRect.fLeft < 0 || srcRect.fTop < 0) {
return nullptr;
}
- return new SkMagnifierImageFilter(srcRect, inset, input);
+ return sk_sp<SkImageFilter>(new SkMagnifierImageFilter(srcRect, inset, std::move(input)));
}
SkMagnifierImageFilter::SkMagnifierImageFilter(const SkRect& srcRect, SkScalar inset,
- SkImageFilter* input)
- : INHERITED(1, &input), fSrcRect(srcRect), fInset(inset) {
+ sk_sp<SkImageFilter> input)
+ : INHERITED(&input, 1, nullptr)
+ , fSrcRect(srcRect)
+ , fInset(inset) {
SkASSERT(srcRect.x() >= 0 && srcRect.y() >= 0 && inset >= 0);
}
@@ -285,7 +287,7 @@ sk_sp<SkFlattenable> SkMagnifierImageFilter::CreateProc(SkReadBuffer& buffer) {
SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
SkRect src;
buffer.readRect(&src);
- return sk_sp<SkFlattenable>(Create(src, buffer.readScalar(), common.getInput(0).get()));
+ return Make(src, buffer.readScalar(), common.getInput(0));
}
void SkMagnifierImageFilter::flatten(SkWriteBuffer& buffer) const {