aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--bench/BlurBench.cpp7
-rw-r--r--bench/BlurRectsBench.cpp2
-rw-r--r--bench/BlurRoundRectBench.cpp8
-rw-r--r--bench/RectoriBench.cpp6
-rw-r--r--gm/bigblurs.cpp3
-rw-r--r--gm/bleed.cpp10
-rw-r--r--gm/blurcircles.cpp6
-rw-r--r--gm/blurquickreject.cpp5
-rw-r--r--gm/blurrect.cpp6
-rw-r--r--gm/blurredclippedcircle.cpp4
-rw-r--r--gm/blurroundrect.cpp13
-rw-r--r--gm/blurs.cpp16
-rw-r--r--gm/circles.cpp5
-rw-r--r--gm/drawbitmaprect.cpp5
-rw-r--r--gm/drawfilter.cpp8
-rw-r--r--gm/drawlooper.cpp5
-rw-r--r--gm/emboss.cpp2
-rw-r--r--gm/largeglyphblur.cpp3
-rw-r--r--gm/megalooper.cpp12
-rw-r--r--gm/rects.cpp5
-rw-r--r--gm/samplerstress.cpp8
-rw-r--r--gm/skbug1719.cpp5
-rw-r--r--gm/textbloblooper.cpp5
-rw-r--r--gm/textblobmixedsizes.cpp5
-rw-r--r--gm/texteffects.cpp4
-rw-r--r--gyp/skia_for_android_framework_defines.gypi1
-rw-r--r--include/core/SkPaint.h3
-rw-r--r--include/effects/SkBlurDrawLooper.h4
-rw-r--r--include/effects/SkBlurMaskFilter.h16
-rw-r--r--include/effects/SkEmbossMaskFilter.h8
-rw-r--r--public.bzl1
-rw-r--r--samplecode/SampleAll.cpp15
-rw-r--r--samplecode/SampleAnimBlur.cpp8
-rw-r--r--samplecode/SampleBigBlur.cpp5
-rw-r--r--samplecode/SampleBlur.cpp12
-rw-r--r--samplecode/SampleEffects.cpp9
-rw-r--r--samplecode/SampleEmboss.cpp3
-rw-r--r--samplecode/SampleFilterFuzz.cpp13
-rw-r--r--samplecode/SampleFuzz.cpp3
-rw-r--r--samplecode/SampleSlides.cpp4
-rw-r--r--samplecode/SampleStrokePath.cpp4
-rw-r--r--samplecode/SampleTextAlpha.cpp5
-rw-r--r--samplecode/SampleTextureDomain.cpp12
-rw-r--r--samplecode/SampleXfermodesBlur.cpp7
-rw-r--r--src/animator/SkDrawBlur.cpp2
-rw-r--r--src/animator/SkDrawEmboss.cpp4
-rw-r--r--src/animator/SkDrawPaint.cpp2
-rw-r--r--src/c/sk_paint.cpp3
-rw-r--r--src/c/sk_surface.cpp2
-rw-r--r--src/core/SkPaint.cpp4
-rw-r--r--src/effects/SkBlurDrawLooper.cpp6
-rw-r--r--src/effects/SkBlurMaskFilter.cpp6
-rw-r--r--src/effects/SkEmbossMaskFilter.cpp14
-rw-r--r--src/effects/SkLayerDrawLooper.cpp2
-rw-r--r--tests/BlurTest.cpp31
-rw-r--r--tests/PaintTest.cpp5
-rw-r--r--tools/debugger/SkDrawCommand.cpp10
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));
}
}