diff options
57 files changed, 175 insertions, 207 deletions
diff --git a/bench/BlurBench.cpp b/bench/BlurBench.cpp index 58f9e89ffa..20afd4a2e5 100644 --- a/bench/BlurBench.cpp +++ b/bench/BlurBench.cpp @@ -65,10 +65,9 @@ protected: r.offset(fRadius, fRadius); if (fRadius > 0) { - SkMaskFilter* mf = SkBlurMaskFilter::Create(fStyle, - SkBlurMask::ConvertRadiusToSigma(fRadius), - fFlags); - paint.setMaskFilter(mf)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(fStyle, + SkBlurMask::ConvertRadiusToSigma(fRadius), + fFlags)); } canvas->drawOval(r, paint); } diff --git a/bench/BlurRectsBench.cpp b/bench/BlurRectsBench.cpp index 6bfde8ebf8..fc04d0294e 100644 --- a/bench/BlurRectsBench.cpp +++ b/bench/BlurRectsBench.cpp @@ -31,7 +31,7 @@ public: void onDraw(int loops, SkCanvas* canvas) override { SkPaint paint; - paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, fRadius))->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, fRadius)); SkPath path; path.addRect(fOuter, SkPath::kCW_Direction); diff --git a/bench/BlurRoundRectBench.cpp b/bench/BlurRoundRectBench.cpp index 46f410d3b3..ef88422e3c 100644 --- a/bench/BlurRoundRectBench.cpp +++ b/bench/BlurRoundRectBench.cpp @@ -49,11 +49,9 @@ public: info.fOffset = SkPoint::Make(SkIntToScalar(-1), SkIntToScalar(0)); info.fPostTranslate = false; SkPaint* paint = looperBuilder.addLayerOnTop(info); - SkMaskFilter* maskFilter = SkBlurMaskFilter::Create( - kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SK_ScalarHalf), - SkBlurMaskFilter::kHighQuality_BlurFlag); - paint->setMaskFilter(maskFilter)->unref(); + paint->setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(0.5), + SkBlurMaskFilter::kHighQuality_BlurFlag)); paint->setColorFilter(SkColorFilter::MakeModeFilter(SK_ColorLTGRAY, SkXfermode::kSrcIn_Mode)); paint->setColor(SK_ColorGRAY); diff --git a/bench/RectoriBench.cpp b/bench/RectoriBench.cpp index e2a44e383f..ad3d4c29ea 100644 --- a/bench/RectoriBench.cpp +++ b/bench/RectoriBench.cpp @@ -86,10 +86,8 @@ private: SkPaint* paint = looperBuilder.addLayer(info); - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - sigma, - SkBlurMaskFilter::kHighQuality_BlurFlag); - paint->setMaskFilter(mf)->unref(); + paint->setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, sigma, + SkBlurMaskFilter::kHighQuality_BlurFlag)); //----------------------------------------------- info.fPaintBits = 0; diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp index d68b2ca1f7..5c09ab94ef 100644 --- a/gm/bigblurs.cpp +++ b/gm/bigblurs.cpp @@ -70,8 +70,7 @@ protected: for (int i = 0; i < 2; ++i) { for (int j = 0; j <= kLastEnum_SkBlurStyle; ++j) { - SkMaskFilter* mf = SkBlurMaskFilter::Create((SkBlurStyle)j, kSigma); - blurPaint.setMaskFilter(mf)->unref(); + blurPaint.setMaskFilter(SkBlurMaskFilter::Make((SkBlurStyle)j, kSigma)); for (int k = 0; k < (int)SK_ARRAY_COUNT(origins); ++k) { canvas->save(); diff --git a/gm/bleed.cpp b/gm/bleed.cpp index bd1a282227..5a27b3972e 100644 --- a/gm/bleed.cpp +++ b/gm/bleed.cpp @@ -410,9 +410,8 @@ protected: SkPaint paint; paint.setFilterQuality(filter); - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(3)); - paint.setMaskFilter(mf)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(3))); paint.setShader(fShader); paint.setColor(SK_ColorBLUE); paint.setAntiAlias(aa); @@ -429,9 +428,8 @@ protected: SkPaint paint; paint.setFilterQuality(filter); - SkMaskFilter* mf = SkBlurMaskFilter::Create(kOuter_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(7)); - paint.setMaskFilter(mf)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kOuter_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(7))); paint.setShader(fShader); paint.setColor(SK_ColorBLUE); paint.setAntiAlias(aa); diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp index 74490ce424..b15901b6a0 100644 --- a/gm/blurcircles.cpp +++ b/gm/blurcircles.cpp @@ -31,10 +31,10 @@ protected: const float blurRadii[kNumBlurs] = { 1,5,10,20 }; for (int i = 0; i < kNumBlurs; ++i) { - fBlurFilters[i].reset(SkBlurMaskFilter::Create( + fBlurFilters[i] = SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i])), - SkBlurMaskFilter::kHighQuality_BlurFlag)); + SkBlurMaskFilter::kHighQuality_BlurFlag); } } @@ -60,7 +60,7 @@ protected: private: static const int kNumBlurs = 4; - SkAutoTUnref<SkMaskFilter> fBlurFilters[kNumBlurs]; + sk_sp<SkMaskFilter> fBlurFilters[kNumBlurs]; typedef skiagm::GM INHERITED; }; diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp index 11697fca5d..c970458a88 100644 --- a/gm/blurquickreject.cpp +++ b/gm/blurquickreject.cpp @@ -56,9 +56,8 @@ protected: SkPaint blurPaint; blurPaint.setFilterQuality(kLow_SkFilterQuality); - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(kBlurRadius)); - blurPaint.setMaskFilter(mf)->unref(); + blurPaint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(kBlurRadius))); canvas->clear(SK_ColorBLACK); canvas->save(); diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp index 0fe866feb2..8aae04a6de 100644 --- a/gm/blurrect.cpp +++ b/gm/blurrect.cpp @@ -83,7 +83,7 @@ static sk_sp<SkShader> MakeRadial() { typedef void (*PaintProc)(SkPaint*, SkScalar width); class BlurRectGM : public skiagm::GM { - SkAutoTUnref<SkMaskFilter> fMaskFilters[kLastEnum_SkBlurStyle + 1]; + sk_sp<SkMaskFilter> fMaskFilters[kLastEnum_SkBlurStyle + 1]; SkString fName; SkAlpha fAlpha; public: @@ -95,9 +95,9 @@ public: protected: void onOnceBeforeDraw() override { for (int i = 0; i <= kLastEnum_SkBlurStyle; ++i) { - fMaskFilters[i].reset(SkBlurMaskFilter::Create((SkBlurStyle)i, + fMaskFilters[i] = SkBlurMaskFilter::Make((SkBlurStyle)i, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(STROKE_WIDTH/2)), - SkBlurMaskFilter::kHighQuality_BlurFlag)); + SkBlurMaskFilter::kHighQuality_BlurFlag); } } diff --git a/gm/blurredclippedcircle.cpp b/gm/blurredclippedcircle.cpp index d162ac1110..495d16a3c2 100644 --- a/gm/blurredclippedcircle.cpp +++ b/gm/blurredclippedcircle.cpp @@ -63,10 +63,10 @@ protected: SkPaint paint; - paint.setMaskFilter(SkBlurMaskFilter::Create( + paint.setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, 1.366025f, - SkBlurMaskFilter::kHighQuality_BlurFlag))->unref(); + SkBlurMaskFilter::kHighQuality_BlurFlag)); paint.setColorFilter(SkColorFilter::MakeModeFilter( SK_ColorRED, SkXfermode::kSrcIn_Mode)); diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp index 9135ba099f..5982d06be3 100644 --- a/gm/blurroundrect.cpp +++ b/gm/blurroundrect.cpp @@ -55,11 +55,10 @@ public: info.fOffset = SkPoint::Make(SkIntToScalar(-1), SkIntToScalar(0)); info.fPostTranslate = false; SkPaint* paint = looperBuilder.addLayerOnTop(info); - SkMaskFilter* maskFilter = SkBlurMaskFilter::Create( + paint->setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SK_ScalarHalf), - SkBlurMaskFilter::kHighQuality_BlurFlag); - paint->setMaskFilter(maskFilter)->unref(); + SkBlurMaskFilter::kHighQuality_BlurFlag)); paint->setColorFilter(SkColorFilter::MakeModeFilter( sk_tool_utils::color_to_565(SK_ColorLTGRAY), SkXfermode::kSrcIn_Mode)); @@ -142,13 +141,11 @@ protected: canvas->translate(0, (r.height() + SkIntToScalar(50)) * i); for (size_t j = 0; j < SK_ARRAY_COUNT(cornerRadii); ++j) { for (int k = 0; k <= 1; k++) { - SkMaskFilter* filter = SkBlurMaskFilter::Create( - kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i])), - SkBlurMaskFilter::kHighQuality_BlurFlag); SkPaint paint; paint.setColor(SK_ColorBLACK); - paint.setMaskFilter(filter)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i])), + SkBlurMaskFilter::kHighQuality_BlurFlag)); bool useRadial = SkToBool(k); if (useRadial) { diff --git a/gm/blurs.cpp b/gm/blurs.cpp index 8f2137eeab..8fa97b886b 100644 --- a/gm/blurs.cpp +++ b/gm/blurs.cpp @@ -35,10 +35,9 @@ DEF_SIMPLE_GM_BG(blurs, canvas, 700, 500, sk_tool_utils::color_to_565(0xFFDDDDDD paint.setColor(SK_ColorBLUE); for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) { if (gRecs[i].fStyle != NONE) { - SkMaskFilter* mf = SkBlurMaskFilter::Create(gRecs[i].fStyle, + paint.setMaskFilter(SkBlurMaskFilter::Make(gRecs[i].fStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(20)), - flags); - paint.setMaskFilter(mf)->unref(); + flags)); } else { paint.setMaskFilter(nullptr); } @@ -49,10 +48,9 @@ DEF_SIMPLE_GM_BG(blurs, canvas, 700, 500, sk_tool_utils::color_to_565(0xFFDDDDDD } // draw text { - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(4)), - flags); - paint.setMaskFilter(mf)->unref(); + flags)); SkScalar x = SkIntToScalar(70); SkScalar y = SkIntToScalar(400); paint.setColor(SK_ColorBLACK); @@ -82,8 +80,7 @@ DEF_SIMPLE_GM_BG(blurs, canvas, 700, 500, sk_tool_utils::color_to_565(0xFFDDDDDD DEF_SIMPLE_GM(blur2rects, canvas, 700, 500) { SkPaint paint; - paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - 2.3f))->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 2.3f)); SkRect outer = SkRect::MakeXYWH(10.125f, 10.125f, 100.125f, 100); SkRect inner = SkRect::MakeXYWH(20.25f, 20.125f, 80, 80); @@ -101,8 +98,7 @@ DEF_SIMPLE_GM(blur2rects, canvas, 700, 500) { DEF_SIMPLE_GM(blur2rectsnonninepatch, canvas, 700, 500) { SkPaint paint; - paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - 4.3f))->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 4.3f)); SkRect outer = SkRect::MakeXYWH(10, 110, 100, 100); SkRect inner = SkRect::MakeXYWH(50, 150, 10, 10); diff --git a/gm/circles.cpp b/gm/circles.cpp index dd37a61d5d..2c2542b9dc 100644 --- a/gm/circles.cpp +++ b/gm/circles.cpp @@ -51,11 +51,10 @@ protected: // AA with mask filter SkPaint p; p.setAntiAlias(true); - SkMaskFilter* mf = SkBlurMaskFilter::Create( + p.setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)), - SkBlurMaskFilter::kHighQuality_BlurFlag); - p.setMaskFilter(mf)->unref(); + SkBlurMaskFilter::kHighQuality_BlurFlag)); fPaints.push_back(p); } diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp index 7d830475fa..bd6fffec63 100644 --- a/gm/drawbitmaprect.cpp +++ b/gm/drawbitmaprect.cpp @@ -211,12 +211,11 @@ protected: paint.setFilterQuality(kLow_SkFilterQuality); srcRect.setXYWH(1, 1, 3, 3); - SkMaskFilter* mf = SkBlurMaskFilter::Create( + paint.setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)), SkBlurMaskFilter::kHighQuality_BlurFlag | - SkBlurMaskFilter::kIgnoreTransform_BlurFlag); - paint.setMaskFilter(mf)->unref(); + SkBlurMaskFilter::kIgnoreTransform_BlurFlag)); canvas->drawBitmapRect(bm, srcRect, dstRect, &paint); } } diff --git a/gm/drawfilter.cpp b/gm/drawfilter.cpp index d17eb4f52f..33e1d00853 100644 --- a/gm/drawfilter.cpp +++ b/gm/drawfilter.cpp @@ -33,7 +33,7 @@ public: } class DrawFilterGM : public skiagm::GM { - SkAutoTUnref<SkMaskFilter> fBlur; + sk_sp<SkMaskFilter> fBlur; protected: SkISize onISize() override { @@ -45,15 +45,15 @@ protected: } void onOnceBeforeDraw() override { - fBlur.reset(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, + fBlur = SkBlurMaskFilter::Make(kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(10.0f), - kLow_SkBlurQuality)); + kLow_SkBlurQuality); } void onDraw(SkCanvas* canvas) override { SkPaint p; p.setColor(SK_ColorBLUE); - p.setMaskFilter(fBlur.get()); + p.setMaskFilter(fBlur); SkRect r = { 20, 20, 100, 100 }; canvas->setDrawFilter(nullptr); canvas->drawRect(r, p); diff --git a/gm/drawlooper.cpp b/gm/drawlooper.cpp index 7ee7747208..019566e30f 100644 --- a/gm/drawlooper.cpp +++ b/gm/drawlooper.cpp @@ -82,9 +82,8 @@ private: paint->setStyle(gParams[i].fStyle); paint->setStrokeWidth(gParams[i].fWidth); if (gParams[i].fBlur > 0) { - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(gParams[i].fBlur)); - paint->setMaskFilter(mf)->unref(); + paint->setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(gParams[i].fBlur))); } } fLooper = looperBuilder.detach(); diff --git a/gm/emboss.cpp b/gm/emboss.cpp index 5773577389..e7c58001f4 100644 --- a/gm/emboss.cpp +++ b/gm/emboss.cpp @@ -43,7 +43,7 @@ protected: canvas->drawBitmap(bm, 10, 10, &paint); const SkScalar dir[] = { 1, 1, 1 }; - paint.setMaskFilter(SkBlurMaskFilter::CreateEmboss(3, dir, 0.3f, 0.1f))->unref(); + paint.setMaskFilter(SkBlurMaskFilter::MakeEmboss(3, dir, 0.3f, 0.1f)); canvas->translate(bm.width() + SkIntToScalar(10), 0); canvas->drawBitmap(bm, 10, 10, &paint); diff --git a/gm/largeglyphblur.cpp b/gm/largeglyphblur.cpp index a4c112328d..6ffe953431 100644 --- a/gm/largeglyphblur.cpp +++ b/gm/largeglyphblur.cpp @@ -26,8 +26,7 @@ DEF_SIMPLE_GM(largeglyphblur, canvas, 1920, 600) { static const SkScalar kSigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(40)); SkPaint blurPaint(paint); - SkAutoTUnref<SkMaskFilter> mf(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, kSigma)); - blurPaint.setMaskFilter(mf); + blurPaint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, kSigma)); SkTextBlobBuilder builder; diff --git a/gm/megalooper.cpp b/gm/megalooper.cpp index 6f5640272f..385c60efb1 100644 --- a/gm/megalooper.cpp +++ b/gm/megalooper.cpp @@ -96,7 +96,7 @@ private: SkPaint paint; paint.setAntiAlias(true); - paint.setMaskFilter(createBlur())->unref(); + paint.setMaskFilter(MakeBlur()); for (int i = 0; i < 4; ++i) { paint.setColor(gColors[i]); @@ -110,11 +110,11 @@ private: canvas->restore(); } - SkMaskFilter* createBlur() { + static sk_sp<SkMaskFilter> MakeBlur() { static const SkScalar kBlurSigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(25)); - return SkBlurMaskFilter::Create(kNormal_SkBlurStyle, kBlurSigma, - SkBlurMaskFilter::kHighQuality_BlurFlag); + return SkBlurMaskFilter::Make(kNormal_SkBlurStyle, kBlurSigma, + SkBlurMaskFilter::kHighQuality_BlurFlag); } // This draws 4 blurred shadows around a single square (centered at x, y). @@ -173,7 +173,7 @@ private: SkPaint* paint = looperBuilder.addLayer(info); - paint->setMaskFilter(this->createBlur())->unref(); + paint->setMaskFilter(MakeBlur()); paint->setColorFilter(SkColorFilter::MakeModeFilter(color, SkXfermode::kSrcIn_Mode)); @@ -219,7 +219,7 @@ private: info.fOffset.set(xOff+gBlurOffsets[i].fX, yOff+gBlurOffsets[i].fY); paint = looperBuilder.addLayer(info); - paint->setMaskFilter(this->createBlur())->unref(); + paint->setMaskFilter(MakeBlur()); paint->setColorFilter(SkColorFilter::MakeModeFilter(gColors[i], SkXfermode::kSrcIn_Mode)); diff --git a/gm/rects.cpp b/gm/rects.cpp index 51eeff0bfb..9ec7881f90 100644 --- a/gm/rects.cpp +++ b/gm/rects.cpp @@ -64,11 +64,10 @@ protected: SkPaint p; p.setColor(SK_ColorWHITE); p.setAntiAlias(true); - SkMaskFilter* mf = SkBlurMaskFilter::Create( + p.setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)), - SkBlurMaskFilter::kHighQuality_BlurFlag); - p.setMaskFilter(mf)->unref(); + SkBlurMaskFilter::kHighQuality_BlurFlag)); fPaints.push_back(p); } diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp index 10e3cacd03..ee87f091f9 100644 --- a/gm/samplerstress.cpp +++ b/gm/samplerstress.cpp @@ -76,12 +76,12 @@ protected: } void createMaskFilter() { - if (fMaskFilter.get()) { + if (fMaskFilter) { return; } const SkScalar sigma = 1; - fMaskFilter.reset(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, sigma)); + fMaskFilter = SkBlurMaskFilter::Make(kNormal_SkBlurStyle, sigma); } void onDraw(SkCanvas* canvas) override { @@ -96,7 +96,7 @@ protected: paint.setAntiAlias(true); paint.setTextSize(72); paint.setShader(fShader); - paint.setMaskFilter(fMaskFilter.get()); + paint.setMaskFilter(fMaskFilter); sk_tool_utils::set_portable_typeface(&paint); SkRect temp; @@ -138,7 +138,7 @@ private: SkBitmap fTexture; bool fTextureCreated; sk_sp<SkShader> fShader; - SkAutoTUnref<SkMaskFilter> fMaskFilter; + sk_sp<SkMaskFilter> fMaskFilter; typedef GM INHERITED; }; diff --git a/gm/skbug1719.cpp b/gm/skbug1719.cpp index 3358de5525..ec7818cc10 100644 --- a/gm/skbug1719.cpp +++ b/gm/skbug1719.cpp @@ -61,9 +61,8 @@ DEF_SIMPLE_GM_BG(skbug1719, canvas, 300, 100, paint.setAntiAlias(true); paint.setColor(0xFF000000); paint.setMaskFilter( - SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - 0.78867501f, - SkBlurMaskFilter::kHighQuality_BlurFlag))->unref(); + SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 0.78867501f, + SkBlurMaskFilter::kHighQuality_BlurFlag)); paint.setColorFilter(SkColorFilter::MakeModeFilter(0xBFFFFFFF, SkXfermode::kSrcIn_Mode)); canvas->clipPath(clipPath, SkRegion::kIntersect_Op, true); diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp index ac8b7c9759..066546ee2b 100644 --- a/gm/textbloblooper.cpp +++ b/gm/textbloblooper.cpp @@ -61,9 +61,8 @@ struct LooperSettings { }; static void mask_filter(SkPaint* paint) { - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(3.f)); - paint->setMaskFilter(mf)->unref(); + paint->setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(3.f))); } static sk_sp<SkPathEffect> make_tile_effect() { diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp index b2697a8cf4..82a0dbbd2a 100644 --- a/gm/textblobmixedsizes.cpp +++ b/gm/textblobmixedsizes.cpp @@ -135,9 +135,8 @@ protected: // setup blur paint SkPaint blurPaint(paint); blurPaint.setColor(sk_tool_utils::color_to_565(SK_ColorBLACK)); - SkAutoTUnref<SkMaskFilter> mf(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, kSigma)); - blurPaint.setMaskFilter(mf); - + blurPaint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, kSigma)); + for (int i = 0; i < 4; i++) { canvas->save(); switch (i % 2) { diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp index 5962cd7f16..a398ae2e68 100644 --- a/gm/texteffects.cpp +++ b/gm/texteffects.cpp @@ -13,8 +13,8 @@ #include "SkLayerRasterizer.h" static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { - p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3))))->unref(); + p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3)))); rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); p.setMaskFilter(nullptr); diff --git a/gyp/skia_for_android_framework_defines.gypi b/gyp/skia_for_android_framework_defines.gypi index a06931c6f6..9f6b9ea45b 100644 --- a/gyp/skia_for_android_framework_defines.gypi +++ b/gyp/skia_for_android_framework_defines.gypi @@ -25,6 +25,7 @@ 'SK_SUPPORT_LEGACY_PATHEFFECT_PTR', 'SK_SUPPORT_LEGACY_NEW_SURFACE_API', 'SK_SUPPORT_LEGACY_PICTURE_PTR', + 'SK_SUPPORT_LEGACY_MASKFILTER_PTR', 'SK_SUPPORT_LEGACY_XFERMODE_PTR', ], }, diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h index 1a80ce33b0..57122550b3 100644 --- a/include/core/SkPaint.h +++ b/include/core/SkPaint.h @@ -41,7 +41,6 @@ class SkTypeface; The SkPaint class holds the style and color information about how to draw geometries, text and bitmaps. */ - class SK_API SkPaint { public: SkPaint(); @@ -589,7 +588,9 @@ public: the paint @return maskfilter */ +#ifdef SK_SUPPORT_LEGACY_MASKFILTER_PTR SkMaskFilter* setMaskFilter(SkMaskFilter* maskfilter); +#endif void setMaskFilter(sk_sp<SkMaskFilter>); // These attributes are for text/fonts diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h index 49b0c51f25..9b87683f04 100644 --- a/include/effects/SkBlurDrawLooper.h +++ b/include/effects/SkBlurDrawLooper.h @@ -46,8 +46,6 @@ public: } #endif - virtual ~SkBlurDrawLooper(); - SkDrawLooper::Context* createContext(SkCanvas*, void* storage) const override; size_t contextSize() const override { return sizeof(BlurDrawLooperContext); } @@ -64,7 +62,7 @@ protected: bool asABlurShadow(BlurShadowRec*) const override; private: - SkMaskFilter* fBlur; + sk_sp<SkMaskFilter> fBlur; sk_sp<SkColorFilter> fColorFilter; SkScalar fDx, fDy, fSigma; SkColor fBlurColor; diff --git a/include/effects/SkBlurMaskFilter.h b/include/effects/SkBlurMaskFilter.h index 356475ed4c..3ba91774f0 100644 --- a/include/effects/SkBlurMaskFilter.h +++ b/include/effects/SkBlurMaskFilter.h @@ -37,7 +37,8 @@ public: * @param flags Flags to use - defaults to none * @return The new blur maskfilter */ - static SkMaskFilter* Create(SkBlurStyle style, SkScalar sigma, uint32_t flags = kNone_BlurFlag); + static sk_sp<SkMaskFilter> Make(SkBlurStyle style, SkScalar sigma, + uint32_t flags = kNone_BlurFlag); /** Create an emboss maskfilter @param blurSigma standard deviation of the Gaussian blur to apply @@ -47,13 +48,22 @@ public: @param specular coefficient for specular highlights (e.g. 8) @return the emboss maskfilter */ - static SkMaskFilter* CreateEmboss(SkScalar blurSigma, const SkScalar direction[3], - SkScalar ambient, SkScalar specular); + static sk_sp<SkMaskFilter> MakeEmboss(SkScalar blurSigma, const SkScalar direction[3], + SkScalar ambient, SkScalar specular); +#ifdef SK_SUPPORT_LEGACY_MASKFILTER_PTR + static SkMaskFilter* Create(SkBlurStyle style, SkScalar sigma, uint32_t flags = kNone_BlurFlag){ + return Make(style, sigma, flags).release(); + } + static SkMaskFilter* CreateEmboss(SkScalar blurSigma, const SkScalar direction[3], + SkScalar ambient, SkScalar specular) { + return MakeEmboss(blurSigma, direction, ambient, specular).release(); + } SK_ATTR_DEPRECATED("use sigma version") static SkMaskFilter* CreateEmboss(const SkScalar direction[3], SkScalar ambient, SkScalar specular, SkScalar blurRadius); +#endif SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() diff --git a/include/effects/SkEmbossMaskFilter.h b/include/effects/SkEmbossMaskFilter.h index 72020bf3ce..8a34282451 100644 --- a/include/effects/SkEmbossMaskFilter.h +++ b/include/effects/SkEmbossMaskFilter.h @@ -23,7 +23,13 @@ public: uint8_t fSpecular; // exponent, 4.4 right now }; - static SkMaskFilter* Create(SkScalar blurSigma, const Light& light); + static sk_sp<SkMaskFilter> Make(SkScalar blurSigma, const Light& light); + +#ifdef SK_SUPPORT_LEGACY_MASKFILTER_PTR + static SkMaskFilter* Create(SkScalar blurSigma, const Light& light) { + return Make(blurSigma, light).release(); + } +#endif // overrides from SkMaskFilter // This method is not exported to java. diff --git a/public.bzl b/public.bzl index bf163d0a4d..889585ca39 100644 --- a/public.bzl +++ b/public.bzl @@ -544,6 +544,7 @@ DEFINES_ALL = [ "SK_SUPPORT_LEGACY_NEW_SURFACE_API", "SK_SUPPORT_LEGACY_PATHEFFECT_PTR", "SK_SUPPORT_LEGACY_PICTURE_PTR", + "SK_SUPPORT_LEGACY_MASKFILTER_PTR", "SK_SUPPORT_LEGACY_XFERMODE_PTR", ] diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp index aa08261200..357a437a67 100644 --- a/samplecode/SampleAll.cpp +++ b/samplecode/SampleAll.cpp @@ -77,9 +77,9 @@ private: /////////////////////////////////////////////////////////// static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { - p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3)), - SkBlurMaskFilter::kNone_BlurFlag))->unref(); + p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3)), + SkBlurMaskFilter::kNone_BlurFlag)); rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); p.setMaskFilter(nullptr); @@ -250,9 +250,9 @@ static void apply_shader(SkPaint* paint, int index) { #if 1 SkScalar dir[] = { SK_Scalar1, SK_Scalar1, SK_Scalar1 }; - paint->setMaskFilter(SkBlurMaskFilter::CreateEmboss( + paint->setMaskFilter(SkBlurMaskFilter::MakeEmboss( SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3)), dir, - SK_Scalar1/4, SkIntToScalar(4)))->unref(); + SK_Scalar1/4, SkIntToScalar(4))); paint->setColor(SK_ColorBLUE); #endif } @@ -379,8 +379,6 @@ protected: light.fDirection[2] = SK_Scalar1/3; light.fAmbient = 0x48; light.fSpecular = 0x80; - SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(12)/5); - SkMaskFilter* embossFilter = SkEmbossMaskFilter::Create(sigma, light); auto lightingFilter = SkColorMatrixFilter::MakeLightingFilter( 0xff89bc45, 0xff112233); @@ -420,7 +418,8 @@ protected: // circle w/ emboss & transparent (exercises 3dshader) canvas->translate(SkIntToScalar(50), 0); - paint.setMaskFilter(embossFilter)->unref(); + paint.setMaskFilter(SkEmbossMaskFilter::Make( + SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(12)/5), light)); canvas->drawOval(rect, paint); canvas->translate(SkIntToScalar(10), SkIntToScalar(10)); // paint.setShader(transparentShader)->unref(); diff --git a/samplecode/SampleAnimBlur.cpp b/samplecode/SampleAnimBlur.cpp index 98a3560fe9..5330fdfa71 100644 --- a/samplecode/SampleAnimBlur.cpp +++ b/samplecode/SampleAnimBlur.cpp @@ -46,12 +46,10 @@ protected: SkRandom random; for (size_t i = 0; i < SK_ARRAY_COUNT(gStyles); ++i) { - SkMaskFilter* mf = SkBlurMaskFilter::Create( - gStyles[i], - fBlurSigma, - SkBlurMaskFilter::kHighQuality_BlurFlag); SkPaint paint; - SkSafeUnref(paint.setMaskFilter(mf)); + paint.setMaskFilter(SkBlurMaskFilter::Make(gStyles[i], + fBlurSigma, + SkBlurMaskFilter::kHighQuality_BlurFlag)); paint.setColor(random.nextU() | 0xff000000); canvas->drawCircle(200 * SK_Scalar1 + 400 * (i % 2) * SK_Scalar1, 200 * SK_Scalar1 + i / 2 * 400 * SK_Scalar1, diff --git a/samplecode/SampleBigBlur.cpp b/samplecode/SampleBigBlur.cpp index 800ae24fbd..cb7a419a80 100644 --- a/samplecode/SampleBigBlur.cpp +++ b/samplecode/SampleBigBlur.cpp @@ -29,11 +29,10 @@ protected: SkPaint paint; canvas->save(); paint.setColor(SK_ColorBLUE); - SkMaskFilter* mf = SkBlurMaskFilter::Create( + paint.setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(128)), - SkBlurMaskFilter::kHighQuality_BlurFlag); - paint.setMaskFilter(mf)->unref(); + SkBlurMaskFilter::kHighQuality_BlurFlag)); canvas->translate(200, 200); canvas->drawCircle(100, 100, 200, paint); canvas->restore(); diff --git a/samplecode/SampleBlur.cpp b/samplecode/SampleBlur.cpp index b617691b65..7e6a32562d 100644 --- a/samplecode/SampleBlur.cpp +++ b/samplecode/SampleBlur.cpp @@ -98,10 +98,9 @@ protected: paint.setColor(SK_ColorBLUE); for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) { if (gRecs[i].fStyle != NONE) { - SkMaskFilter* mf = SkBlurMaskFilter::Create(gRecs[i].fStyle, + paint.setMaskFilter(SkBlurMaskFilter::Make(gRecs[i].fStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(20)), - flags); - paint.setMaskFilter(mf)->unref(); + flags)); } else { paint.setMaskFilter(nullptr); } @@ -110,10 +109,9 @@ protected: } // draw text { - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(4)), - flags); - paint.setMaskFilter(mf)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(4), + flags)); SkScalar x = SkIntToScalar(70); SkScalar y = SkIntToScalar(400); paint.setColor(SK_ColorBLACK); diff --git a/samplecode/SampleEffects.cpp b/samplecode/SampleEffects.cpp index a8f793c160..c998052fab 100644 --- a/samplecode/SampleEffects.cpp +++ b/samplecode/SampleEffects.cpp @@ -22,18 +22,15 @@ static void paint_proc0(SkPaint*) { } static void paint_proc1(SkPaint* paint) { - paint->setMaskFilter(SkBlurMaskFilter::Create( + paint->setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(2))))->unref(); + SkBlurMask::ConvertRadiusToSigma(2))); } static void paint_proc2(SkPaint* paint) { SkScalar dir[3] = { 1, 1, 1}; paint->setMaskFilter( - SkBlurMaskFilter::CreateEmboss(SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(1)), - dir, - 0.1f, - 0.05f))->unref(); + SkBlurMaskFilter::MakeEmboss(SkBlurMask::ConvertRadiusToSigma(1), dir, 0.1f, 0.05f)); } static void paint_proc3(SkPaint* paint) { diff --git a/samplecode/SampleEmboss.cpp b/samplecode/SampleEmboss.cpp index 215a1e07d2..f1ea1fe547 100644 --- a/samplecode/SampleEmboss.cpp +++ b/samplecode/SampleEmboss.cpp @@ -50,8 +50,7 @@ protected: paint.setAntiAlias(true); paint.setStyle(SkPaint::kStroke_Style); paint.setStrokeWidth(SkIntToScalar(10)); - paint.setMaskFilter(SkEmbossMaskFilter::Create( - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(4)), fLight))->unref(); + paint.setMaskFilter(SkEmbossMaskFilter::Make(SkBlurMask::ConvertRadiusToSigma(4), fLight)); paint.setShader(SkShader::MakeColorShader(SK_ColorBLUE)); paint.setDither(true); diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp index 6413aa103f..1b7d30be1d 100644 --- a/samplecode/SampleFilterFuzz.cpp +++ b/samplecode/SampleFilterFuzz.cpp @@ -461,13 +461,12 @@ static sk_sp<SkPathEffect> make_path_effect(bool canBeNull = true) { return pathEffect; } -static SkMaskFilter* make_mask_filter() { - SkMaskFilter* maskFilter; +static sk_sp<SkMaskFilter> make_mask_filter() { + sk_sp<SkMaskFilter> maskFilter; switch (R(3)) { case 0: - maskFilter = SkBlurMaskFilter::Create(make_blur_style(), - make_scalar(), - make_blur_mask_filter_flag()); + maskFilter = SkBlurMaskFilter::Make(make_blur_style(), make_scalar(), + make_blur_mask_filter_flag()); case 1: { SkEmbossMaskFilter::Light light; for (int i = 0; i < 3; ++i) { @@ -476,12 +475,10 @@ static SkMaskFilter* make_mask_filter() { light.fPad = R(65536); light.fAmbient = R(256); light.fSpecular = R(256); - maskFilter = SkEmbossMaskFilter::Create(make_scalar(), - light); + maskFilter = SkEmbossMaskFilter::Make(make_scalar(), light); } case 2: default: - maskFilter = nullptr; break; } return maskFilter; diff --git a/samplecode/SampleFuzz.cpp b/samplecode/SampleFuzz.cpp index b8c800ab16..76420f026a 100644 --- a/samplecode/SampleFuzz.cpp +++ b/samplecode/SampleFuzz.cpp @@ -189,8 +189,7 @@ static void do_fuzz(SkCanvas* canvas) { case 7: if (quick == true) break; - SkSafeUnref(paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - make_number()))); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, make_number())); break; case 8: diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp index b4ebb3c30d..4748a766a0 100644 --- a/samplecode/SampleSlides.cpp +++ b/samplecode/SampleSlides.cpp @@ -462,8 +462,8 @@ static void mesh_slide(SkCanvas* canvas) { static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { - p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3))))->unref(); + p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(3))); rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); p.setMaskFilter(nullptr); diff --git a/samplecode/SampleStrokePath.cpp b/samplecode/SampleStrokePath.cpp index f3cdee33a6..e69625e9bf 100644 --- a/samplecode/SampleStrokePath.cpp +++ b/samplecode/SampleStrokePath.cpp @@ -165,12 +165,10 @@ protected: kSolid_SkBlurStyle, }; for (int x = 0; x < 5; x++) { - SkMaskFilter* mf; SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(4)); for (int y = 0; y < 10; y++) { if (x) { - mf = SkBlurMaskFilter::Create(gStyle[x - 1], sigma); - paint.setMaskFilter(mf)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(gStyle[x - 1], sigma)); } canvas->drawText("Title Bar", 9, x*SkIntToScalar(100), y*SkIntToScalar(30), paint); sigma *= 0.75f; diff --git a/samplecode/SampleTextAlpha.cpp b/samplecode/SampleTextAlpha.cpp index a57c01632a..cb07e92b55 100644 --- a/samplecode/SampleTextAlpha.cpp +++ b/samplecode/SampleTextAlpha.cpp @@ -52,9 +52,8 @@ protected: paint.setARGB(fByte, 0xFF, 0xFF, 0xFF); - paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3)))); - paint.getMaskFilter()->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(3))); SkRandom rand; diff --git a/samplecode/SampleTextureDomain.cpp b/samplecode/SampleTextureDomain.cpp index 59d0822b44..e615235a57 100644 --- a/samplecode/SampleTextureDomain.cpp +++ b/samplecode/SampleTextureDomain.cpp @@ -77,12 +77,11 @@ protected: // renders correctly srcRect.setXYWH(1, 1, 3, 3); dstRect.setXYWH(5, 405, 305, 305); - SkMaskFilter* mf = SkBlurMaskFilter::Create( + paint.setMaskFilter(SkBlurMaskFilter::Make( kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)), SkBlurMaskFilter::kHighQuality_BlurFlag | - SkBlurMaskFilter::kIgnoreTransform_BlurFlag); - paint.setMaskFilter(mf)->unref(); + SkBlurMaskFilter::kIgnoreTransform_BlurFlag)); canvas->drawImageRect(image, srcRect, dstRect, &paint); // Blur and a rotation + nullptr src rect @@ -90,10 +89,9 @@ protected: // but it will test a code path in SkGpuDevice::drawBitmap // that handles blurs with rects transformed to non- // orthogonal rects. It also tests the nullptr src rect handling - mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(5), - SkBlurMaskFilter::kHighQuality_BlurFlag); - paint.setMaskFilter(mf)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(5), + SkBlurMaskFilter::kHighQuality_BlurFlag)); dstRect.setXYWH(-150, -150, 300, 300); canvas->translate(550, 550); diff --git a/samplecode/SampleXfermodesBlur.cpp b/samplecode/SampleXfermodesBlur.cpp index cab13391ed..af75f89388 100644 --- a/samplecode/SampleXfermodesBlur.cpp +++ b/samplecode/SampleXfermodesBlur.cpp @@ -42,10 +42,9 @@ class XfermodesBlurView : public SampleView { void draw_mode(SkCanvas* canvas, sk_sp<SkXfermode> mode, int alpha, SkScalar x, SkScalar y) { SkPaint p; - SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)), - SkBlurMaskFilter::kNone_BlurFlag); - p.setMaskFilter(mf)->unref(); + p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(5), + SkBlurMaskFilter::kNone_BlurFlag)); SkScalar ww = SkIntToScalar(W); SkScalar hh = SkIntToScalar(H); diff --git a/src/animator/SkDrawBlur.cpp b/src/animator/SkDrawBlur.cpp index 14f34acf9b..0acb13ec5a 100644 --- a/src/animator/SkDrawBlur.cpp +++ b/src/animator/SkDrawBlur.cpp @@ -29,5 +29,5 @@ SkMaskFilter* SkDrawBlur::getMaskFilter() { if (fSigma <= 0) { return nullptr; } - return SkBlurMaskFilter::Create((SkBlurStyle)fBlurStyle, fSigma); + return SkBlurMaskFilter::Make((SkBlurStyle)fBlurStyle, fSigma).release(); } diff --git a/src/animator/SkDrawEmboss.cpp b/src/animator/SkDrawEmboss.cpp index a1cd4dcd16..9f50f2449e 100644 --- a/src/animator/SkDrawEmboss.cpp +++ b/src/animator/SkDrawEmboss.cpp @@ -29,6 +29,6 @@ SkDrawEmboss::SkDrawEmboss() : fSigma(-1) { SkMaskFilter* SkDrawEmboss::getMaskFilter() { if (fSigma < 0 || fDirection.count() !=3) return nullptr; - return SkBlurMaskFilter::CreateEmboss(fSigma, fDirection.begin(), - fAmbient, fSpecular); + return SkBlurMaskFilter::MakeEmboss(fSigma, fDirection.begin(), + fAmbient, fSpecular).release(); } diff --git a/src/animator/SkDrawPaint.cpp b/src/animator/SkDrawPaint.cpp index fc1a413244..1336ea2dc4 100644 --- a/src/animator/SkDrawPaint.cpp +++ b/src/animator/SkDrawPaint.cpp @@ -229,7 +229,7 @@ void SkDrawPaint::setupPaint(SkPaint* paint) const { if (maskFilter == nullptr) paint->setMaskFilter(nullptr); else if (maskFilter != (SkDrawMaskFilter*) -1) - SkSafeUnref(paint->setMaskFilter(maskFilter->getMaskFilter())); + paint->setMaskFilter(sk_sp<SkMaskFilter>(maskFilter->getMaskFilter())); if (pathEffect == nullptr) paint->setPathEffect(nullptr); else if (pathEffect != (SkDrawPathEffect*) -1) diff --git a/src/c/sk_paint.cpp b/src/c/sk_paint.cpp index b48e28fb6d..f82cd815c1 100644 --- a/src/c/sk_paint.cpp +++ b/src/c/sk_paint.cpp @@ -5,6 +5,7 @@ * found in the LICENSE file. */ +#include "SkMaskFilter.h" #include "SkPaint.h" #include "SkShader.h" @@ -68,7 +69,7 @@ void sk_paint_set_shader(sk_paint_t* cpaint, sk_shader_t* cshader) { } void sk_paint_set_maskfilter(sk_paint_t* cpaint, sk_maskfilter_t* cfilter) { - AsPaint(cpaint)->setMaskFilter(AsMaskFilter(cfilter)); + AsPaint(cpaint)->setMaskFilter(sk_ref_sp(AsMaskFilter(cfilter))); } bool sk_paint_is_stroke(const sk_paint_t* cpaint) { diff --git a/src/c/sk_surface.cpp b/src/c/sk_surface.cpp index fcc22465c6..c9b25675a0 100644 --- a/src/c/sk_surface.cpp +++ b/src/c/sk_surface.cpp @@ -671,7 +671,7 @@ sk_maskfilter_t* sk_maskfilter_new_blur(sk_blurstyle_t cstyle, float sigma) { if (!find_blurstyle(cstyle, &style)) { return NULL; } - return ToMaskFilter(SkBlurMaskFilter::Create(style, sigma)); + return ToMaskFilter(SkBlurMaskFilter::Make(style, sigma).release()); } /////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index d5e4c08c1f..8bd386a762 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -386,7 +386,9 @@ SET_PTR(Xfermode) #ifdef SK_SUPPORT_LEGACY_PATHEFFECT_PTR SET_PTR(PathEffect) #endif +#ifdef SK_SUPPORT_LEGACY_MASKFILTER_PTR SET_PTR(MaskFilter) +#endif #undef SET_PTR #ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR @@ -2255,7 +2257,7 @@ SkTextBaseIter::SkTextBaseIter(const char text[], size_t length, } fPaint.setStyle(style); fPaint.setPathEffect(pe); - fPaint.setMaskFilter(paint.getMaskFilter()); // restore + fPaint.setMaskFilter(sk_ref_sp(paint.getMaskFilter())); // restore // now compute fXOffset if needed diff --git a/src/effects/SkBlurDrawLooper.cpp b/src/effects/SkBlurDrawLooper.cpp index 2578d092bb..30583747c9 100644 --- a/src/effects/SkBlurDrawLooper.cpp +++ b/src/effects/SkBlurDrawLooper.cpp @@ -34,7 +34,7 @@ void SkBlurDrawLooper::initEffects() { SkBlurMaskFilter::kHighQuality_BlurFlag : SkBlurMaskFilter::kNone_BlurFlag; - fBlur = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, fSigma, flags); + fBlur = SkBlurMaskFilter::Make(kNormal_SkBlurStyle, fSigma, flags); } else { fBlur = nullptr; } @@ -78,10 +78,6 @@ void SkBlurDrawLooper::flatten(SkWriteBuffer& buffer) const { buffer.write32(fBlurFlags); } -SkBlurDrawLooper::~SkBlurDrawLooper() { - SkSafeUnref(fBlur); -} - bool SkBlurDrawLooper::asABlurShadow(BlurShadowRec* rec) const { if (fSigma <= 0 || (fBlurFlags & fBlurFlags & kIgnoreTransform_BlurFlag)) { return false; diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp index ec4fd939fa..bb6a8a5ae6 100644 --- a/src/effects/SkBlurMaskFilter.cpp +++ b/src/effects/SkBlurMaskFilter.cpp @@ -123,7 +123,7 @@ private: const SkScalar SkBlurMaskFilterImpl::kMAX_BLUR_SIGMA = SkIntToScalar(128); -SkMaskFilter* SkBlurMaskFilter::Create(SkBlurStyle style, SkScalar sigma, uint32_t flags) { +sk_sp<SkMaskFilter> SkBlurMaskFilter::Make(SkBlurStyle style, SkScalar sigma, uint32_t flags) { if (!SkScalarIsFinite(sigma) || sigma <= 0) { return nullptr; } @@ -133,7 +133,7 @@ SkMaskFilter* SkBlurMaskFilter::Create(SkBlurStyle style, SkScalar sigma, uint32 if (flags > SkBlurMaskFilter::kAll_BlurFlag) { return nullptr; } - return new SkBlurMaskFilterImpl(sigma, style, flags); + return sk_sp<SkMaskFilter>(new SkBlurMaskFilterImpl(sigma, style, flags)); } /////////////////////////////////////////////////////////////////////////////// @@ -586,7 +586,7 @@ sk_sp<SkFlattenable> SkBlurMaskFilterImpl::CreateProc(SkReadBuffer& buffer) { const unsigned style = buffer.readUInt(); const unsigned flags = buffer.readUInt(); if (style <= kLastEnum_SkBlurStyle) { - return sk_sp<SkFlattenable>(SkBlurMaskFilter::Create((SkBlurStyle)style, sigma, flags)); + return SkBlurMaskFilter::Make((SkBlurStyle)style, sigma, flags); } return nullptr; } diff --git a/src/effects/SkEmbossMaskFilter.cpp b/src/effects/SkEmbossMaskFilter.cpp index aa93e5a594..5f3952d1ad 100644 --- a/src/effects/SkEmbossMaskFilter.cpp +++ b/src/effects/SkEmbossMaskFilter.cpp @@ -13,19 +13,21 @@ #include "SkWriteBuffer.h" #include "SkString.h" -SkMaskFilter* SkEmbossMaskFilter::Create(SkScalar blurSigma, const Light& light) { - return new SkEmbossMaskFilter(blurSigma, light); +sk_sp<SkMaskFilter> SkEmbossMaskFilter::Make(SkScalar blurSigma, const Light& light) { + return sk_sp<SkMaskFilter>(new SkEmbossMaskFilter(blurSigma, light)); } +#ifdef SK_SUPPORT_LEGACY_MASKFILTER_PTR SkMaskFilter* SkBlurMaskFilter::CreateEmboss(const SkScalar direction[3], SkScalar ambient, SkScalar specular, SkScalar blurRadius) { return SkBlurMaskFilter::CreateEmboss(SkBlurMask::ConvertRadiusToSigma(blurRadius), direction, ambient, specular); } +#endif -SkMaskFilter* SkBlurMaskFilter::CreateEmboss(SkScalar blurSigma, const SkScalar direction[3], - SkScalar ambient, SkScalar specular) { +sk_sp<SkMaskFilter> SkBlurMaskFilter::MakeEmboss(SkScalar blurSigma, const SkScalar direction[3], + SkScalar ambient, SkScalar specular) { if (direction == nullptr) { return nullptr; } @@ -39,7 +41,7 @@ SkMaskFilter* SkBlurMaskFilter::CreateEmboss(SkScalar blurSigma, const SkScalar static const SkScalar kSpecularMultiplier = SkIntToScalar(255) / 16; light.fSpecular = static_cast<U8CPU>(SkScalarPin(specular, 0, 16) * kSpecularMultiplier + 0.5); - return SkEmbossMaskFilter::Create(blurSigma, light); + return SkEmbossMaskFilter::Make(blurSigma, light); } /////////////////////////////////////////////////////////////////////////////// @@ -117,7 +119,7 @@ sk_sp<SkFlattenable> SkEmbossMaskFilter::CreateProc(SkReadBuffer& buffer) { if (buffer.readByteArray(&light, sizeof(Light))) { light.fPad = 0; // for the font-cache lookup to be clean const SkScalar sigma = buffer.readScalar(); - return sk_sp<SkFlattenable>(Create(sigma, light)); + return Make(sigma, light); } return nullptr; } diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp index ffcaa43e20..d8f774437e 100644 --- a/src/effects/SkLayerDrawLooper.cpp +++ b/src/effects/SkLayerDrawLooper.cpp @@ -95,7 +95,7 @@ void SkLayerDrawLooper::LayerDrawLooperContext::ApplyInfo( dst->setPathEffect(sk_ref_sp(src.getPathEffect())); } if (bits & kMaskFilter_Bit) { - dst->setMaskFilter(src.getMaskFilter()); + dst->setMaskFilter(sk_ref_sp(src.getMaskFilter())); } if (bits & kShader_Bit) { dst->setShader(sk_ref_sp(src.getShader())); diff --git a/tests/BlurTest.cpp b/tests/BlurTest.cpp index 8c726e9136..679701de93 100644 --- a/tests/BlurTest.cpp +++ b/tests/BlurTest.cpp @@ -111,11 +111,7 @@ DEF_TEST(BlurDrawing, reporter) { const uint32_t flagPermutations = SkBlurMaskFilter::kAll_BlurFlag; for (uint32_t flags = 0; flags < flagPermutations; ++flags) { - SkMaskFilter* filter; - filter = SkBlurMaskFilter::Create(blurStyle, sigma, flags); - - paint.setMaskFilter(filter); - filter->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(blurStyle, sigma, flags)); for (size_t test = 0; test < SK_ARRAY_COUNT(tests); ++test) { SkPath path; @@ -234,10 +230,8 @@ static void blur_path(SkCanvas* canvas, const SkPath& path, SkPaint blurPaint; blurPaint.setColor(SK_ColorWHITE); - SkMaskFilter* filter = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - gaussianSigma, - SkBlurMaskFilter::kHighQuality_BlurFlag); - blurPaint.setMaskFilter(filter)->unref(); + blurPaint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, gaussianSigma, + SkBlurMaskFilter::kHighQuality_BlurFlag)); canvas->drawColor(SK_ColorBLACK); canvas->drawPath(path, blurPaint); @@ -463,17 +457,18 @@ static void make_noop_layer(SkLayerDrawLooper::Builder* builder) { builder->addLayer(info); } -static void make_blur_layer(SkLayerDrawLooper::Builder* builder, SkMaskFilter* mf) { +static void make_blur_layer(SkLayerDrawLooper::Builder* builder, sk_sp<SkMaskFilter> mf) { SkLayerDrawLooper::LayerInfo info; info.fPaintBits = SkLayerDrawLooper::kMaskFilter_Bit; info.fColorMode = SkXfermode::kSrc_Mode; SkPaint* paint = builder->addLayer(info); - paint->setMaskFilter(mf); + paint->setMaskFilter(std::move(mf)); } -static void test_layerDrawLooper(skiatest::Reporter* reporter, SkMaskFilter* mf, SkScalar sigma, - SkBlurStyle style, SkBlurQuality quality, bool expectSuccess) { +static void test_layerDrawLooper(skiatest::Reporter* reporter, sk_sp<SkMaskFilter> mf, + SkScalar sigma, SkBlurStyle style, SkBlurQuality quality, + bool expectSuccess) { SkLayerDrawLooper::LayerInfo info; SkLayerDrawLooper::Builder builder; @@ -517,7 +512,7 @@ DEF_TEST(BlurAsABlur, reporter) { for (int flags = 0; flags <= SkBlurMaskFilter::kAll_BlurFlag; ++flags) { const SkBlurQuality quality = blurMaskFilterFlags_as_quality(flags); - SkAutoTUnref<SkMaskFilter> mf(SkBlurMaskFilter::Create(style, sigma, flags)); + sk_sp<SkMaskFilter> mf(SkBlurMaskFilter::Make(style, sigma, flags)); if (nullptr == mf.get()) { REPORTER_ASSERT(reporter, sigma <= 0); } else { @@ -532,7 +527,7 @@ DEF_TEST(BlurAsABlur, reporter) { REPORTER_ASSERT(reporter, rec.fStyle == style); REPORTER_ASSERT(reporter, rec.fQuality == quality); } - test_layerDrawLooper(reporter, mf, sigma, style, quality, success); + test_layerDrawLooper(reporter, std::move(mf), sigma, style, quality, success); } test_blurDrawLooper(reporter, sigma, style, flags); } @@ -547,8 +542,8 @@ DEF_TEST(BlurAsABlur, reporter) { }; for (size_t j = 0; j < SK_ARRAY_COUNT(sigmas); ++j) { const SkScalar sigma = sigmas[j]; - SkAutoTUnref<SkMaskFilter> mf(SkEmbossMaskFilter::Create(sigma, light)); - if (mf.get()) { + auto mf(SkEmbossMaskFilter::Make(sigma, light)); + if (mf) { SkMaskFilter::BlurRec rec; bool success = mf->asABlur(&rec); REPORTER_ASSERT(reporter, !success); @@ -571,7 +566,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SmallBoxBlurBug, reporter, ctx) { SkRRect rr = SkRRect::MakeRectXY(r, 10, 10); SkPaint p; - p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, 0.01f))->unref(); + p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 0.01f)); canvas->drawRRect(rr, p); } diff --git a/tests/PaintTest.cpp b/tests/PaintTest.cpp index b07c0e41ae..253ce86769 100644 --- a/tests/PaintTest.cpp +++ b/tests/PaintTest.cpp @@ -147,9 +147,8 @@ DEF_TEST(Paint_copy, reporter) { // set a few pointers SkLayerDrawLooper::Builder looperBuilder; paint.setLooper(looperBuilder.detach()); - SkMaskFilter* mask = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(1))); - paint.setMaskFilter(mask)->unref(); + paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, + SkBlurMask::ConvertRadiusToSigma(1))); // copy the paint using the copy constructor and check they are the same SkPaint copiedPaint = paint; diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp index d868418d54..985f7d5cc3 100644 --- a/tools/debugger/SkDrawCommand.cpp +++ b/tools/debugger/SkDrawCommand.cpp @@ -1145,10 +1145,10 @@ static void extract_json_paint_maskfilter(Json::Value& jsonPaint, UrlDataManager SkPaint* target) { if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER)) { Json::Value jsonMaskFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER]; - SkMaskFilter* maskFilter = (SkMaskFilter*) load_flattenable(jsonMaskFilter, urlDataManager); - if (maskFilter != nullptr) { - target->setMaskFilter(maskFilter); - maskFilter->unref(); + sk_sp<SkMaskFilter> maskFilter((SkMaskFilter*)load_flattenable(jsonMaskFilter, + urlDataManager)); + if (maskFilter) { + target->setMaskFilter(std::move(maskFilter)); } } } @@ -1339,7 +1339,7 @@ static void extract_json_paint_blur(Json::Value& jsonPaint, SkPaint* target) { SkASSERT(false); flags = SkBlurMaskFilter::BlurFlags::kNone_BlurFlag; } - target->setMaskFilter(SkBlurMaskFilter::Create(style, sigma, flags)); + target->setMaskFilter(SkBlurMaskFilter::Make(style, sigma, flags)); } } |