aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/aarectmodes.cpp12
-rw-r--r--gm/bigmatrix.cpp8
-rw-r--r--gm/bitmaprect.cpp6
-rw-r--r--gm/bleed.cpp20
-rw-r--r--gm/blurrect.cpp12
-rw-r--r--gm/blurroundrect.cpp12
-rw-r--r--gm/bmpfilterqualityrepeat.cpp2
-rw-r--r--gm/circles.cpp9
-rw-r--r--gm/clippedbitmapshaders.cpp5
-rw-r--r--gm/color4f.cpp12
-rw-r--r--gm/colorcube.cpp13
-rw-r--r--gm/coloremoji.cpp8
-rw-r--r--gm/colorfilterimagefilter.cpp25
-rw-r--r--gm/colorfilters.cpp9
-rw-r--r--gm/colormatrix.cpp4
-rw-r--r--gm/colortype.cpp9
-rw-r--r--gm/colortypexfermode.cpp16
-rw-r--r--gm/composeshader.cpp71
-rw-r--r--gm/constcolorprocessor.cpp7
-rw-r--r--gm/convexpolyclip.cpp4
-rw-r--r--gm/drawbitmaprect.cpp4
-rw-r--r--gm/drawminibitmaprect.cpp4
-rw-r--r--gm/filltypespersp.cpp18
-rw-r--r--gm/gamma.cpp17
-rw-r--r--gm/gammatext.cpp29
-rw-r--r--gm/giantbitmap.cpp4
-rw-r--r--gm/glyph_pos_align.cpp8
-rw-r--r--src/utils/SkLua.cpp12
28 files changed, 149 insertions, 211 deletions
diff --git a/gm/aarectmodes.cpp b/gm/aarectmodes.cpp
index fb5145bc5f..badd1ae450 100644
--- a/gm/aarectmodes.cpp
+++ b/gm/aarectmodes.cpp
@@ -107,7 +107,7 @@ static SkScalar drawCell(SkCanvas* canvas, SkXfermode* mode,
return H;
}
-static SkShader* make_bg_shader() {
+static sk_sp<SkShader> make_bg_shader() {
SkBitmap bm;
bm.allocN32Pixels(2, 2);
*bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = 0xFFFFFFFF;
@@ -115,12 +115,8 @@ static SkShader* make_bg_shader() {
0xCF, 0xCE);
const SkMatrix m = SkMatrix::MakeScale(SkIntToScalar(6), SkIntToScalar(6));
- SkShader* s = SkShader::CreateBitmapShader(bm,
- SkShader::kRepeat_TileMode,
- SkShader::kRepeat_TileMode,
- &m);
-
- return s;
+ return SkShader::MakeBitmapShader(bm, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode,
+ &m);
}
namespace skiagm {
@@ -129,7 +125,7 @@ namespace skiagm {
SkPaint fBGPaint;
public:
AARectModesGM () {
- fBGPaint.setShader(make_bg_shader())->unref();
+ fBGPaint.setShader(make_bg_shader());
}
protected:
diff --git a/gm/bigmatrix.cpp b/gm/bigmatrix.cpp
index 2d2b7d9f7e..b39f2eab73 100644
--- a/gm/bigmatrix.cpp
+++ b/gm/bigmatrix.cpp
@@ -55,12 +55,8 @@ DEF_SIMPLE_GM_BG(bigmatrix, canvas, 50, 50,
SkMatrix s;
s.reset();
s.setScale(SK_Scalar1 / 1000, SK_Scalar1 / 1000);
- SkShader* shader = SkShader::CreateBitmapShader(
- bmp,
- SkShader::kRepeat_TileMode,
- SkShader::kRepeat_TileMode,
- &s);
- paint.setShader(shader)->unref();
+ paint.setShader(SkShader::MakeBitmapShader(bmp, SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode, &s));
paint.setAntiAlias(false);
paint.setFilterQuality(kLow_SkFilterQuality);
rect.setLTRB(pt.fX - small, pt.fY - small,
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index f855ad77c4..bf06adbe1d 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -1,10 +1,10 @@
-
/*
* Copyright 2011 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
+
#include "gm.h"
#include "SkCanvas.h"
#include "SkGradientShader.h"
@@ -23,8 +23,8 @@ static void make_bitmap(SkBitmap* bitmap) {
paint.setAntiAlias(true);
const SkPoint pts[] = { { 0, 0 }, { 64, 64 } };
const SkColor colors[] = { SK_ColorWHITE, SK_ColorBLUE };
- paint.setShader(SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
- SkShader::kClamp_TileMode))->unref();
+ paint.setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, 2,
+ SkShader::kClamp_TileMode));
canvas.drawCircle(32, 32, 32, paint);
}
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index 1a96fdbfec..5a04162938 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -277,13 +277,13 @@ static bool make_ringed_oversized_alpha_texture_bitmap(GrContext* ctx, TestPixel
ctx, result, width, height, kAlpha_8_GrPixelConfig, kZero, kOne, k3Q, kHalf, k1Q);
}
-static SkShader* make_shader() {
+static sk_sp<SkShader> make_shader() {
static const SkPoint pts[] = { {0, 0}, {20, 20} };
static const SkColor colors[] = { SK_ColorGREEN, SK_ColorYELLOW };
- return SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kMirror_TileMode);
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kMirror_TileMode);
}
-static SkShader* make_null_shader() { return nullptr; }
+static sk_sp<SkShader> make_null_shader() { return nullptr; }
enum BleedTest {
kUseBitmap_BleedTest,
@@ -300,7 +300,7 @@ enum BleedTest {
const struct {
const char* fName;
bool (*fPixelMaker)(GrContext*, TestPixels* result, int width, int height);
- SkShader* (*fShaderMaker)();
+ sk_sp<SkShader> (*fShaderMaker)();
} gBleedRec[] = {
{ "bleed", make_ringed_color_bitmap, make_null_shader },
{ "bleed_texture_bmp", make_ringed_oversized_color_texture_bitmap, make_null_shader },
@@ -468,7 +468,7 @@ protected:
return;
}
- fShader.reset(gBleedRec[fBT].fShaderMaker());
+ fShader = gBleedRec[fBT].fShaderMaker();
canvas->clear(SK_ColorGRAY);
SkTDArray<SkMatrix> matrices;
@@ -582,13 +582,13 @@ private:
static const int kSmallTextureSize = 6;
static const int kMaxTileSize = 32;
- bool fCreatedPixels;
- TestPixels fBigTestPixels;
- TestPixels fSmallTestPixels;
+ bool fCreatedPixels;
+ TestPixels fBigTestPixels;
+ TestPixels fSmallTestPixels;
- SkAutoTUnref<SkShader> fShader;
+ sk_sp<SkShader> fShader;
- const BleedTest fBT;
+ const BleedTest fBT;
typedef GM INHERITED;
};
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp
index 55c592b627..0fe866feb2 100644
--- a/gm/blurrect.cpp
+++ b/gm/blurrect.cpp
@@ -58,7 +58,7 @@ static void draw_donut_skewed(SkCanvas* canvas, const SkRect& r, const SkPaint&
/*
* Spits out a dummy gradient to test blur with shader on paint
*/
-static SkShader* MakeRadial() {
+static sk_sp<SkShader> MakeRadial() {
SkPoint pts[2] = {
{ 0, 0 },
{ SkIntToScalar(100), SkIntToScalar(100) }
@@ -74,10 +74,10 @@ static SkShader* MakeRadial() {
SkScalarAve(pts[0].fY, pts[1].fY));
center1.set(SkScalarInterp(pts[0].fX, pts[1].fX, SkIntToScalar(3)/5),
SkScalarInterp(pts[0].fY, pts[1].fY, SkIntToScalar(1)/4));
- return SkGradientShader::CreateTwoPointConical(center1, (pts[1].fX - pts[0].fX) / 7,
- center0, (pts[1].fX - pts[0].fX) / 2,
- colors, pos, SK_ARRAY_COUNT(colors), tm,
- 0, &scale);
+ return SkGradientShader::MakeTwoPointConical(center1, (pts[1].fX - pts[0].fX) / 7,
+ center0, (pts[1].fX - pts[0].fX) / 2,
+ colors, pos, SK_ARRAY_COUNT(colors), tm,
+ 0, &scale);
}
typedef void (*PaintProc)(SkPaint*, SkScalar width);
@@ -123,7 +123,7 @@ protected:
paint.setAlpha(fAlpha);
SkPaint paintWithRadial = paint;
- paintWithRadial.setShader(MakeRadial())->unref();
+ paintWithRadial.setShader(MakeRadial());
static const Proc procs[] = {
fill_rect, draw_donut, draw_donut_skewed
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp
index c3cdb66673..ef20e25860 100644
--- a/gm/blurroundrect.cpp
+++ b/gm/blurroundrect.cpp
@@ -92,7 +92,7 @@ private:
/*
* Spits out a dummy gradient to test blur with shader on paint
*/
-static SkShader* MakeRadial() {
+static sk_sp<SkShader> MakeRadial() {
SkPoint pts[2] = {
{ 0, 0 },
{ SkIntToScalar(100), SkIntToScalar(100) }
@@ -108,10 +108,10 @@ static SkShader* MakeRadial() {
SkScalarAve(pts[0].fY, pts[1].fY));
center1.set(SkScalarInterp(pts[0].fX, pts[1].fX, SkIntToScalar(3)/5),
SkScalarInterp(pts[0].fY, pts[1].fY, SkIntToScalar(1)/4));
- return SkGradientShader::CreateTwoPointConical(center1, (pts[1].fX - pts[0].fX) / 7,
- center0, (pts[1].fX - pts[0].fX) / 2,
- colors, pos, SK_ARRAY_COUNT(colors), tm,
- 0, &scale);
+ return SkGradientShader::MakeTwoPointConical(center1, (pts[1].fX - pts[0].fX) / 7,
+ center0, (pts[1].fX - pts[0].fX) / 2,
+ colors, pos, SK_ARRAY_COUNT(colors), tm,
+ 0, &scale);
}
// Simpler blurred RR test cases where all the radii are the same.
@@ -153,7 +153,7 @@ protected:
bool useRadial = SkToBool(k);
if (useRadial) {
- paint.setShader(MakeRadial())->unref();
+ paint.setShader(MakeRadial());
}
SkRRect rrect;
diff --git a/gm/bmpfilterqualityrepeat.cpp b/gm/bmpfilterqualityrepeat.cpp
index c147014a87..b32a99a454 100644
--- a/gm/bmpfilterqualityrepeat.cpp
+++ b/gm/bmpfilterqualityrepeat.cpp
@@ -60,7 +60,7 @@ protected:
lm.setTranslateY(330);
static const SkShader::TileMode kTM = SkShader::kRepeat_TileMode;
- bmpPaint.setShader(SkShader::CreateBitmapShader(fBmp, kTM, kTM, &lm))->unref();
+ bmpPaint.setShader(SkShader::MakeBitmapShader(fBmp, kTM, kTM, &lm));
SkRect rect = SkRect::MakeLTRB(20, 60, 220, 210);
canvas->drawRect(rect, bmpPaint);
paint.setAntiAlias(true);
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 369548cc59..4d3e33daee 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -67,13 +67,8 @@ protected:
SkPoint center = SkPoint::Make(SkIntToScalar(40), SkIntToScalar(40));
SkColor colors[] = { SK_ColorBLUE, SK_ColorRED, SK_ColorGREEN };
SkScalar pos[] = { 0, SK_ScalarHalf, SK_Scalar1 };
- SkShader* s = SkGradientShader::CreateRadial(center,
- SkIntToScalar(20),
- colors,
- pos,
- SK_ARRAY_COUNT(colors),
- SkShader::kClamp_TileMode);
- p.setShader(s)->unref();
+ p.setShader(SkGradientShader::MakeRadial(center, 20, colors, pos, SK_ARRAY_COUNT(colors),
+ SkShader::kClamp_TileMode));
fPaints.push_back(p);
}
diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp
index 6225abeec1..4b77aba9d0 100644
--- a/gm/clippedbitmapshaders.cpp
+++ b/gm/clippedbitmapshaders.cpp
@@ -82,11 +82,8 @@ protected:
s.reset();
s.setScale(8, 8);
s.postTranslate(SLIDE_SIZE / 2, SLIDE_SIZE / 2);
- SkShader* shader = SkShader::CreateBitmapShader(
- bmp, fMode, fMode, &s);
-
SkPaint paint;
- paint.setShader(shader)->unref();
+ paint.setShader(SkShader::MakeBitmapShader(bmp, fMode, fMode, &s));
if (fHQ) {
paint.setFilterQuality(kHigh_SkFilterQuality);
diff --git a/gm/color4f.cpp b/gm/color4f.cpp
index 9e6fcf6060..2d5b7d2c1a 100644
--- a/gm/color4f.cpp
+++ b/gm/color4f.cpp
@@ -14,12 +14,12 @@
#include "SkColorMatrixFilter.h"
#include "SkGradientShader.h"
-static SkShader* make_opaque_color() {
- return SkShader::CreateColorShader(0xFFFF0000);
+static sk_sp<SkShader> make_opaque_color() {
+ return SkShader::MakeColorShader(0xFFFF0000);
}
-static SkShader* make_alpha_color() {
- return SkShader::CreateColorShader(0x80FF0000);
+static sk_sp<SkShader> make_alpha_color() {
+ return SkShader::MakeColorShader(0x80FF0000);
}
static SkColorFilter* make_cf_null() {
@@ -51,12 +51,12 @@ static SkColorFilter* make_cf2() {
static void draw_into_canvas(SkCanvas* canvas) {
const SkRect r = SkRect::MakeWH(50, 100);
- SkShader* (*shaders[])() { make_opaque_color, make_alpha_color };
+ sk_sp<SkShader> (*shaders[])() { make_opaque_color, make_alpha_color };
SkColorFilter* (*filters[])() { make_cf_null, make_cf0, make_cf1, make_cf2 };
SkPaint paint;
for (auto shProc : shaders) {
- paint.setShader(shProc())->unref();
+ paint.setShader(shProc());
for (auto cfProc : filters) {
SkSafeUnref(paint.setColorFilter(cfProc()));
canvas->drawRect(r, paint);
diff --git a/gm/colorcube.cpp b/gm/colorcube.cpp
index fa9eea9f99..01aaf15610 100644
--- a/gm/colorcube.cpp
+++ b/gm/colorcube.cpp
@@ -13,14 +13,14 @@
namespace skiagm {
-static SkShader* MakeLinear() {
+static sk_sp<SkShader> MakeLinear() {
static const SkPoint pts[2] = {
{ 0, 0 },
{ SkIntToScalar(80), SkIntToScalar(80) }
};
static const SkColor colors[] = { SK_ColorYELLOW, SK_ColorBLUE };
- return SkGradientShader::CreateLinear(
- pts, colors, nullptr, 2, SkShader::kRepeat_TileMode, 0, &SkMatrix::I());
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kRepeat_TileMode, 0,
+ &SkMatrix::I());
}
class ColorCubeGM : public GM {
@@ -63,11 +63,8 @@ protected:
canvas.clear(0x00000000);
SkPaint paint;
paint.setAntiAlias(true);
- SkShader* shader = MakeLinear();
- paint.setShader(shader);
- SkRect r = { 0, 0, SkIntToScalar(80), SkIntToScalar(80) };
- canvas.drawRect(r, paint);
- shader->unref();
+ paint.setShader(MakeLinear());
+ canvas.drawRect(SkRect::MakeWH(80, 80), paint);
}
void make_3Dlut(SkData** data, int size, bool invR, bool invG, bool invB) {
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index 6dddc0fdc6..78c347c079 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -19,12 +19,12 @@
/*
* Spits out a dummy gradient to test blur with shader on paint
*/
-static SkShader* MakeLinear() {
+static sk_sp<SkShader> MakeLinear() {
static const SkPoint kPts[] = { { 0, 0 }, { 32, 32 } };
static const SkScalar kPos[] = { 0, SK_Scalar1/2, SK_Scalar1 };
static const SkColor kColors[] = {0x80F00080, 0xF0F08000, 0x800080F0 };
- return SkGradientShader::CreateLinear(kPts, kColors, kPos,
- SK_ARRAY_COUNT(kColors), SkShader::kClamp_TileMode);
+ return SkGradientShader::MakeLinear(kPts, kColors, kPos, SK_ARRAY_COUNT(kColors),
+ SkShader::kClamp_TileMode);
}
static SkImageFilter* make_grayscale(SkImageFilter* input = nullptr) {
@@ -94,7 +94,7 @@ protected:
SkPaint shaderPaint;
shaderPaint.setTypeface(paint.getTypeface());
if (SkToBool(makeLinear)) {
- shaderPaint.setShader(MakeLinear())->unref();
+ shaderPaint.setShader(MakeLinear());
}
if (SkToBool(makeBlur) && SkToBool(makeGray)) {
diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp
index daebe0d3df..4ab91f1afb 100644
--- a/gm/colorfilterimagefilter.cpp
+++ b/gm/colorfilterimagefilter.cpp
@@ -53,35 +53,36 @@ static void sk_gm_get_colorfilters(SkTDArray<SkColorFilter*>* array) {
#include "SkImage.h"
#include "Resources.h"
-static SkShader* sh_make_lineargradient0() {
+static sk_sp<SkShader> sh_make_lineargradient0() {
const SkPoint pts[] = { { 0, 0 }, { 100, 100 } };
const SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE };
- return SkGradientShader::CreateLinear(pts, colors, nullptr, 3, SkShader::kRepeat_TileMode);
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, 3, SkShader::kRepeat_TileMode);
}
-static SkShader* sh_make_lineargradient1() {
+static sk_sp<SkShader> sh_make_lineargradient1() {
const SkPoint pts[] = { { 0, 0 }, { 100, 100 } };
const SkColor colors[] = { SK_ColorRED, 0x0000FF00, SK_ColorBLUE };
- return SkGradientShader::CreateLinear(pts, colors, nullptr, 3, SkShader::kRepeat_TileMode);
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, 3, SkShader::kRepeat_TileMode);
}
-static SkShader* sh_make_image() {
+static sk_sp<SkShader> sh_make_image() {
SkAutoTUnref<SkImage> image(GetResourceAsImage("mandrill_128.png"));
if (!image) {
return nullptr;
}
- return image->newShader(SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode);
+ return sk_sp<SkShader>(image->newShader(SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode));
}
static void sk_gm_get_shaders(SkTDArray<SkShader*>* array) {
- if (SkShader* shader = sh_make_lineargradient0()) {
- *array->append() = shader;
+ if (auto shader = sh_make_lineargradient0()) {
+ *array->append() = shader.release();
}
- if (SkShader* shader = sh_make_lineargradient1()) {
- *array->append() = shader;
+ if (auto shader = sh_make_lineargradient1()) {
+ *array->append() = shader.release();
}
- if (SkShader* shader = sh_make_image()) {
- *array->append() = shader;
+ if (auto shader = sh_make_image()) {
+ *array->append() = shader.release();
}
}
diff --git a/gm/colorfilters.cpp b/gm/colorfilters.cpp
index dcd24d9ce4..eaee39dd55 100644
--- a/gm/colorfilters.cpp
+++ b/gm/colorfilters.cpp
@@ -10,7 +10,7 @@
#include "SkColorMatrixFilter.h"
#include "SkGradientShader.h"
-static SkShader* make_shader(const SkRect& bounds) {
+static sk_sp<SkShader> make_shader(const SkRect& bounds) {
const SkPoint pts[] = {
{ bounds.left(), bounds.top() },
{ bounds.right(), bounds.bottom() },
@@ -19,9 +19,8 @@ static SkShader* make_shader(const SkRect& bounds) {
SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorBLACK,
SK_ColorCYAN, SK_ColorMAGENTA, SK_ColorYELLOW,
};
- return SkGradientShader::CreateLinear(pts,
- colors, nullptr, SK_ARRAY_COUNT(colors),
- SkShader::kClamp_TileMode);
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors),
+ SkShader::kClamp_TileMode);
}
typedef void (*InstallPaint)(SkPaint*, uint32_t, uint32_t);
@@ -53,7 +52,7 @@ protected:
SkPaint paint;
SkRect r;
r.setWH(600, 50);
- paint.setShader(make_shader(r))->unref();
+ paint.setShader(make_shader(r));
const struct {
InstallPaint fProc;
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index b466188c6a..b6e83d3ceb 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -67,8 +67,8 @@ protected:
SkPoint pts[] = {{0, 0}, {SkIntToScalar(width), SkIntToScalar(height)}};
SkColor colors[] = {0x00000000, 0xFFFFFFFF};
SkPaint paint;
- paint.setShader(SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
- SkShader::kClamp_TileMode))->unref();
+ paint.setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, 2,
+ SkShader::kClamp_TileMode));
canvas.drawRect(SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height)), paint);
return SkImage::NewFromBitmap(bm);
}
diff --git a/gm/colortype.cpp b/gm/colortype.cpp
index 76b13817a9..c9314de2a4 100644
--- a/gm/colortype.cpp
+++ b/gm/colortype.cpp
@@ -28,15 +28,12 @@ protected:
};
SkMatrix local;
local.setRotate(180);
- SkShader* s = SkGradientShader::CreateSweep(0,0, colors, nullptr,
- SK_ARRAY_COUNT(colors), 0, &local);
-
SkPaint paint;
paint.setAntiAlias(true);
- paint.setShader(s)->unref();
+ paint.setShader(SkGradientShader::MakeSweep(0, 0, colors, nullptr, SK_ARRAY_COUNT(colors),
+ 0, &local));
- SkTypeface* orig = sk_tool_utils::create_portable_typeface("serif",
- SkTypeface::kBold);
+ SkTypeface* orig = sk_tool_utils::create_portable_typeface("serif", SkTypeface::kBold);
if (nullptr == orig) {
orig = SkTypeface::RefDefault();
}
diff --git a/gm/colortypexfermode.cpp b/gm/colortypexfermode.cpp
index 55d7697e35..3489f36557 100644
--- a/gm/colortypexfermode.cpp
+++ b/gm/colortypexfermode.cpp
@@ -35,15 +35,12 @@ protected:
};
SkMatrix local;
local.setRotate(180);
- SkShader* s = SkGradientShader::CreateSweep(0,0, colors, nullptr,
- SK_ARRAY_COUNT(colors), 0, &local);
-
SkPaint paint;
paint.setAntiAlias(true);
- paint.setShader(s)->unref();
+ paint.setShader(SkGradientShader::MakeSweep(0, 0, colors, nullptr, SK_ARRAY_COUNT(colors),
+ 0, &local));
- SkTypeface* orig = sk_tool_utils::create_portable_typeface("serif",
- SkTypeface::kBold);
+ SkTypeface* orig = sk_tool_utils::create_portable_typeface("serif", SkTypeface::kBold);
if (nullptr == orig) {
orig = SkTypeface::RefDefault();
}
@@ -105,10 +102,8 @@ protected:
const SkScalar h = SkIntToScalar(H);
SkMatrix m;
m.setScale(SkIntToScalar(6), SkIntToScalar(6));
- SkShader* s = SkShader::CreateBitmapShader(fBG,
- SkShader::kRepeat_TileMode,
- SkShader::kRepeat_TileMode,
- &m);
+ auto s = SkShader::MakeBitmapShader(fBG, SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode, &m);
SkPaint labelP;
labelP.setAntiAlias(true);
@@ -153,7 +148,6 @@ protected:
y += h + SkIntToScalar(30);
}
}
- s->unref();
}
private:
diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp
index 2f3d99d364..c43b443a07 100644
--- a/gm/composeshader.cpp
+++ b/gm/composeshader.cpp
@@ -7,7 +7,6 @@
#include "gm.h"
-#include "SkBitmapProcShader.h"
#include "SkCanvas.h"
#include "SkGradientShader.h"
#include "SkGraphics.h"
@@ -15,7 +14,7 @@
#include "SkString.h"
#include "SkXfermode.h"
-static SkShader* make_shader(SkXfermode::Mode mode) {
+static sk_sp<SkShader> make_shader(SkXfermode::Mode mode) {
SkPoint pts[2];
SkColor colors[2];
@@ -23,19 +22,17 @@ static SkShader* make_shader(SkXfermode::Mode mode) {
pts[1].set(SkIntToScalar(100), 0);
colors[0] = SK_ColorRED;
colors[1] = SK_ColorBLUE;
- SkAutoTUnref<SkShader> shaderA(SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
- SkShader::kClamp_TileMode));
+ auto shaderA = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
pts[0].set(0, 0);
pts[1].set(0, SkIntToScalar(100));
colors[0] = SK_ColorBLACK;
colors[1] = SkColorSetARGB(0x80, 0, 0, 0);
- SkAutoTUnref<SkShader> shaderB(SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
- SkShader::kClamp_TileMode));
+ auto shaderB = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
SkAutoTUnref<SkXfermode> xfer(SkXfermode::Create(mode));
- return SkShader::CreateComposeShader(shaderA, shaderB, xfer);
+ return SkShader::MakeComposeShader(std::move(shaderA), std::move(shaderB), xfer);
}
class ComposeShaderGM : public skiagm::GM {
@@ -44,10 +41,6 @@ public:
fShader = make_shader(SkXfermode::kDstIn_Mode);
}
- virtual ~ComposeShaderGM() {
- SkSafeUnref(fShader);
- }
-
protected:
SkString onShortName() override {
return SkString("composeshader");
@@ -58,9 +51,7 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
-
SkPaint paint;
-
paint.setColor(SK_ColorGREEN);
canvas->drawRectCoords(0, 0, SkIntToScalar(100), SkIntToScalar(100), paint);
paint.setShader(fShader);
@@ -68,7 +59,7 @@ protected:
}
protected:
- SkShader* fShader;
+ sk_sp<SkShader> fShader;
private:
typedef GM INHERITED ;
@@ -88,9 +79,10 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
- SkAutoTUnref<SkShader> shader0(make_shader(SkXfermode::kDstIn_Mode));
- SkAutoTUnref<SkShader> shader1(make_shader(SkXfermode::kSrcOver_Mode));
- SkShader* shaders[] = { shader0.get(), shader1.get() };
+ sk_sp<SkShader> shaders[] = {
+ make_shader(SkXfermode::kDstIn_Mode),
+ make_shader(SkXfermode::kSrcOver_Mode),
+ };
SkPaint paint;
paint.setColor(SK_ColorGREEN);
@@ -98,7 +90,6 @@ protected:
const SkRect r = SkRect::MakeXYWH(5, 5, 100, 100);
for (size_t y = 0; y < SK_ARRAY_COUNT(shaders); ++y) {
- SkShader* shader = shaders[y];
canvas->save();
for (int alpha = 0xFF; alpha > 0; alpha -= 0x28) {
paint.setAlpha(0xFF);
@@ -106,7 +97,7 @@ protected:
canvas->drawRect(r, paint);
paint.setAlpha(alpha);
- paint.setShader(shader);
+ paint.setShader(shaders[y]);
canvas->drawRect(r, paint);
canvas->translate(r.width() + 5, 0);
@@ -148,25 +139,20 @@ static void draw_alpha8_bm(SkBitmap* bm, int length) {
}
// creates a linear gradient shader
-static SkShader* make_linear_gradient_shader(int length) {
+static sk_sp<SkShader> make_linear_gradient_shader(int length) {
SkPoint pts[2];
SkColor colors[2];
pts[0].set(0, 0);
pts[1].set(SkIntToScalar(length), 0);
colors[0] = SK_ColorBLUE;
colors[1] = SkColorSetARGB(0, 0, 0, 0xFF);
- return SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
}
class ComposeShaderBitmapGM : public skiagm::GM {
public:
ComposeShaderBitmapGM() {}
- ~ComposeShaderBitmapGM() {
- SkSafeUnref(fColorBitmapShader);
- SkSafeUnref(fAlpha8BitmapShader);
- SkSafeUnref(fLinearGradientShader);
- }
protected:
void onOnceBeforeDraw() override {
@@ -174,10 +160,10 @@ protected:
draw_alpha8_bm(&fAlpha8Bitmap, squareLength);
SkMatrix s;
s.reset();
- fColorBitmapShader = new SkBitmapProcShader(fColorBitmap, SkShader::kRepeat_TileMode,
- SkShader::kRepeat_TileMode, &s);
- fAlpha8BitmapShader = new SkBitmapProcShader(fAlpha8Bitmap, SkShader::kRepeat_TileMode,
- SkShader::kRepeat_TileMode, &s);
+ fColorBitmapShader = SkShader::MakeBitmapShader(fColorBitmap, SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode, &s);
+ fAlpha8BitmapShader = SkShader::MakeBitmapShader(fAlpha8Bitmap, SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode, &s);
fLinearGradientShader = make_linear_gradient_shader(squareLength);
}
@@ -192,16 +178,12 @@ protected:
void onDraw(SkCanvas* canvas) override {
SkAutoTUnref<SkXfermode> xfer(SkXfermode::Create(SkXfermode::kDstOver_Mode));
- // gradient should appear over color bitmap
- SkAutoTUnref<SkShader> shader0(SkShader::CreateComposeShader(fLinearGradientShader,
- fColorBitmapShader,
- xfer));
- // gradient should appear over alpha8 bitmap colorized by the paint color
- SkAutoTUnref<SkShader> shader1(SkShader::CreateComposeShader(fLinearGradientShader,
- fAlpha8BitmapShader,
- xfer));
-
- SkShader* shaders[] = { shader0.get(), shader1.get() };
+ sk_sp<SkShader> shaders[] = {
+ // gradient should appear over color bitmap
+ SkShader::MakeComposeShader(fLinearGradientShader, fColorBitmapShader, xfer),
+ // gradient should appear over alpha8 bitmap colorized by the paint color
+ SkShader::MakeComposeShader(fLinearGradientShader, fAlpha8BitmapShader, xfer),
+ };
SkPaint paint;
paint.setColor(SK_ColorYELLOW);
@@ -210,11 +192,10 @@ protected:
SkIntToScalar(squareLength));
for (size_t y = 0; y < SK_ARRAY_COUNT(shaders); ++y) {
- SkShader* shader = shaders[y];
canvas->save();
for (int alpha = 0xFF; alpha > 0; alpha -= 0x28) {
paint.setAlpha(alpha);
- paint.setShader(shader);
+ paint.setShader(shaders[y]);
canvas->drawRect(r, paint);
canvas->translate(r.width() + 5, 0);
@@ -234,9 +215,9 @@ private:
SkBitmap fColorBitmap;
SkBitmap fAlpha8Bitmap;
- SkShader* fColorBitmapShader{nullptr};
- SkShader* fAlpha8BitmapShader{nullptr};
- SkShader* fLinearGradientShader{nullptr};
+ sk_sp<SkShader> fColorBitmapShader;
+ sk_sp<SkShader> fAlpha8BitmapShader;
+ sk_sp<SkShader> fLinearGradientShader;
typedef GM INHERITED;
};
diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp
index 177a8c9e4f..8c91a722ec 100644
--- a/gm/constcolorprocessor.cpp
+++ b/gm/constcolorprocessor.cpp
@@ -1,4 +1,3 @@
-
/*
* Copyright 2015 Google Inc.
*
@@ -43,8 +42,8 @@ protected:
void onOnceBeforeDraw() override {
SkColor colors[] = { 0xFFFF0000, 0x2000FF00, 0xFF0000FF};
SkPoint pts[] = { SkPoint::Make(0, 0), SkPoint::Make(kRectSize, kRectSize) };
- fShader.reset(SkGradientShader::CreateLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors),
- SkShader::kClamp_TileMode));
+ fShader = SkGradientShader::MakeLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors),
+ SkShader::kClamp_TileMode);
}
void onDraw(SkCanvas* canvas) override {
@@ -179,7 +178,7 @@ protected:
private:
// Use this as a way of generating and input FP
- SkAutoTUnref<SkShader> fShader;
+ sk_sp<SkShader> fShader;
static const SkScalar kPad;
static const SkScalar kRectSize;
diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp
index e6f967c35e..ff83a26225 100644
--- a/gm/convexpolyclip.cpp
+++ b/gm/convexpolyclip.cpp
@@ -44,12 +44,12 @@ static SkBitmap make_bmp(int w, int h) {
SkRect rect = SkRect::MakeWH(wScalar, hScalar);
SkMatrix mat = SkMatrix::I();
for (int i = 0; i < 4; ++i) {
- paint.setShader(SkGradientShader::CreateRadial(
+ paint.setShader(SkGradientShader::MakeRadial(
pt, radius,
colors, pos,
SK_ARRAY_COUNT(colors),
SkShader::kRepeat_TileMode,
- 0, &mat))->unref();
+ 0, &mat));
canvas.drawRect(rect, paint);
rect.inset(wScalar / 8, hScalar / 8);
mat.preTranslate(6 * wScalar, 6 * hScalar);
diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp
index c90ac2eaa1..7ee2271c5c 100644
--- a/gm/drawbitmaprect.cpp
+++ b/gm/drawbitmaprect.cpp
@@ -70,12 +70,12 @@ static SkImage* makebm(SkCanvas* origCanvas, SkBitmap* resultBM, int w, int h) {
SkRect rect = SkRect::MakeWH(wScalar, hScalar);
SkMatrix mat = SkMatrix::I();
for (int i = 0; i < 4; ++i) {
- paint.setShader(SkGradientShader::CreateRadial(
+ paint.setShader(SkGradientShader::MakeRadial(
pt, radius,
colors, pos,
SK_ARRAY_COUNT(colors),
SkShader::kRepeat_TileMode,
- 0, &mat))->unref();
+ 0, &mat));
canvas->drawRect(rect, paint);
rect.inset(wScalar / 8, hScalar / 8);
mat.postScale(SK_Scalar1 / 4, SK_Scalar1 / 4);
diff --git a/gm/drawminibitmaprect.cpp b/gm/drawminibitmaprect.cpp
index 85071c56c4..f0ce1a2db6 100644
--- a/gm/drawminibitmaprect.cpp
+++ b/gm/drawminibitmaprect.cpp
@@ -46,12 +46,12 @@ static SkImage* makebm(SkCanvas* caller, int w, int h) {
SkRect rect = SkRect::MakeWH(wScalar, hScalar);
SkMatrix mat = SkMatrix::I();
for (int i = 0; i < 4; ++i) {
- paint.setShader(SkGradientShader::CreateRadial(
+ paint.setShader(SkGradientShader::MakeRadial(
pt, radius,
colors, pos,
SK_ARRAY_COUNT(colors),
SkShader::kRepeat_TileMode,
- 0, &mat))->unref();
+ 0, &mat));
canvas->drawRect(rect, paint);
rect.inset(wScalar / 8, hScalar / 8);
mat.postScale(SK_Scalar1 / 4, SK_Scalar1 / 4);
diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp
index cc09b95bda..0722004662 100644
--- a/gm/filltypespersp.cpp
+++ b/gm/filltypespersp.cpp
@@ -55,13 +55,12 @@ protected:
SkPoint center = SkPoint::Make(SkIntToScalar(100), SkIntToScalar(100));
SkColor colors[] = {SK_ColorBLUE, SK_ColorRED, SK_ColorGREEN};
SkScalar pos[] = {0, SK_ScalarHalf, SK_Scalar1};
- SkShader* s = SkGradientShader::CreateRadial(center,
+ paint.setShader(SkGradientShader::MakeRadial(center,
SkIntToScalar(100),
colors,
pos,
SK_ARRAY_COUNT(colors),
- SkShader::kClamp_TileMode);
- paint.setShader(s)->unref();
+ SkShader::kClamp_TileMode));
paint.setAntiAlias(aa);
showPath(canvas, 0, 0, SkPath::kWinding_FillType,
@@ -85,13 +84,12 @@ protected:
SK_ColorYELLOW, SK_ColorWHITE};
SkScalar pos[] = {0, SK_ScalarHalf / 2,
3 * SK_ScalarHalf / 2, SK_Scalar1};
- SkShader* s = SkGradientShader::CreateRadial(center,
- SkIntToScalar(1000),
- colors,
- pos,
- SK_ARRAY_COUNT(colors),
- SkShader::kClamp_TileMode);
- bkgnrd.setShader(s)->unref();
+ bkgnrd.setShader(SkGradientShader::MakeRadial(center,
+ SkIntToScalar(1000),
+ colors,
+ pos,
+ SK_ARRAY_COUNT(colors),
+ SkShader::kClamp_TileMode));
canvas->save();
canvas->translate(SkIntToScalar(100), SkIntToScalar(100));
SkMatrix mat;
diff --git a/gm/gamma.cpp b/gm/gamma.cpp
index 003061baeb..1699083471 100644
--- a/gm/gamma.cpp
+++ b/gm/gamma.cpp
@@ -88,8 +88,7 @@ DEF_SIMPLE_GM(gamma, canvas, 500, 200) {
canvas->save();
// Black/white dither, pixel perfect. This is ground truth.
- p.setShader(SkShader::CreateBitmapShader(
- ditherBmp, rpt, rpt))->unref();
+ p.setShader(SkShader::MakeBitmapShader(ditherBmp, rpt, rpt));
p.setFilterQuality(SkFilterQuality::kNone_SkFilterQuality);
nextRect("Dither", "Reference");
@@ -98,15 +97,13 @@ DEF_SIMPLE_GM(gamma, canvas, 500, 200) {
// the raster pipeline into *not* snapping to nearest.
SkMatrix offsetMatrix = SkMatrix::Concat(
SkMatrix::MakeScale(-1.0f), SkMatrix::MakeTrans(0.5f, 0.0f));
- p.setShader(SkShader::CreateBitmapShader(
- ditherBmp, rpt, rpt, &offsetMatrix))->unref();
+ p.setShader(SkShader::MakeBitmapShader(ditherBmp, rpt, rpt, &offsetMatrix));
p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality);
nextRect("Dither", "Bilerp");
// Black/white dither, scaled down by 2x. Tests minification.
SkMatrix scaleMatrix = SkMatrix::MakeScale(0.5f);
- p.setShader(SkShader::CreateBitmapShader(
- ditherBmp, rpt, rpt, &scaleMatrix))->unref();
+ p.setShader(SkShader::MakeBitmapShader(ditherBmp, rpt, rpt, &scaleMatrix));
p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality);
nextRect("Dither", "Scale");
@@ -121,8 +118,8 @@ DEF_SIMPLE_GM(gamma, canvas, 500, 200) {
SkPoint::Make(sz + (sz * 10), 0)
};
SkColor colors[2] = { SK_ColorBLACK, SK_ColorWHITE };
- p.setShader(SkGradientShader::CreateLinear(
- points, colors, nullptr, 2, SkShader::kClamp_TileMode))->unref();
+ p.setShader(SkGradientShader::MakeLinear(points, colors, nullptr, 2,
+ SkShader::kClamp_TileMode));
nextRect("Gradient", 0);
// 50% grey from linear bitmap, with drawBitmap
@@ -132,12 +129,12 @@ DEF_SIMPLE_GM(gamma, canvas, 500, 200) {
nextBitmap(srgbGreyBmp, "sRGB BMP");
// Bitmap wrapped in a shader (linear):
- p.setShader(SkShader::CreateBitmapShader(linearGreyBmp, rpt, rpt))->unref();
+ p.setShader(SkShader::MakeBitmapShader(linearGreyBmp, rpt, rpt));
p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality);
nextRect("Lnr BMP", "Shader");
// Bitmap wrapped in a shader (sRGB):
- p.setShader(SkShader::CreateBitmapShader(srgbGreyBmp, rpt, rpt))->unref();
+ p.setShader(SkShader::MakeBitmapShader(srgbGreyBmp, rpt, rpt));
p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality);
nextRect("sRGB BMP", "Shader");
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index 63acb40c13..e978b6bc05 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -11,12 +11,11 @@
#include "SkGradientShader.h"
#include "SkTypeface.h"
-static SkShader* make_heatGradient(const SkPoint pts[2]) {
+static sk_sp<SkShader> make_heatGradient(const SkPoint pts[2]) {
const SkColor bw[] = { SK_ColorBLACK, SK_ColorWHITE };
- return SkGradientShader::CreateLinear(pts, bw, nullptr,
- SK_ARRAY_COUNT(bw),
- SkShader::kClamp_TileMode);
+ return SkGradientShader::MakeLinear(pts, bw, nullptr, SK_ARRAY_COUNT(bw),
+ SkShader::kClamp_TileMode);
}
static bool setFont(SkPaint* paint, const char name[]) {
@@ -50,12 +49,11 @@ protected:
}
static void drawGrad(SkCanvas* canvas) {
- SkPoint pts[] = { { 0, 0 }, { 0, SkIntToScalar(HEIGHT) } };
- SkShader* s = make_heatGradient(pts);
+ const SkPoint pts[] = { { 0, 0 }, { 0, SkIntToScalar(HEIGHT) } };
canvas->clear(SK_ColorRED);
SkPaint paint;
- paint.setShader(s)->unref();
+ paint.setShader(make_heatGradient(pts));
SkRect r = { 0, 0, SkIntToScalar(1024), SkIntToScalar(HEIGHT) };
canvas->drawRect(r, paint);
}
@@ -101,12 +99,12 @@ DEF_GM( return new GammaTextGM; )
//////////////////////////////////////////////////////////////////////////////
-static SkShader* make_gradient(SkColor c) {
+static sk_sp<SkShader> make_gradient(SkColor c) {
const SkPoint pts[] = { { 0, 0 }, { 240, 0 } };
SkColor colors[2];
colors[0] = c;
colors[1] = SkColorSetA(c, 0);
- return SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
+ return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
}
static void set_face(SkPaint* paint) {
@@ -114,37 +112,30 @@ static void set_face(SkPaint* paint) {
SkSafeUnref(paint->setTypeface(face));
}
-static void draw_pair(SkCanvas* canvas, SkPaint* paint, SkShader* shader) {
+static void draw_pair(SkCanvas* canvas, SkPaint* paint, const sk_sp<SkShader>& shader) {
const char text[] = "Now is the time for all good";
const size_t len = strlen(text);
paint->setShader(nullptr);
canvas->drawText(text, len, 10, 20, *paint);
- paint->setShader(SkShader::CreateColorShader(paint->getColor()))->unref();
+ paint->setShader(SkShader::MakeColorShader(paint->getColor()));
canvas->drawText(text, len, 10, 40, *paint);
paint->setShader(shader);
canvas->drawText(text, len, 10, 60, *paint);
}
class GammaShaderTextGM : public skiagm::GM {
- SkShader* fShaders[3];
+ sk_sp<SkShader> fShaders[3];
SkColor fColors[3];
public:
GammaShaderTextGM() {
const SkColor colors[] = { SK_ColorBLACK, SK_ColorRED, SK_ColorBLUE };
for (size_t i = 0; i < SK_ARRAY_COUNT(fShaders); ++i) {
- fShaders[i] = nullptr;
fColors[i] = colors[i];
}
}
- ~GammaShaderTextGM() override {
- for (size_t i = 0; i < SK_ARRAY_COUNT(fShaders); ++i) {
- SkSafeUnref(fShaders[i]);
- }
- }
-
protected:
SkString onShortName() override {
return SkString("gammagradienttext");
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index 4005359aca..e1ba737d2f 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -104,9 +104,7 @@ protected:
SkScalar scale = 11*SK_Scalar1/12;
m.setScale(scale, scale);
}
- SkShader* s = SkShader::CreateBitmapShader(getBitmap(), fMode, fMode, &m);
-
- paint.setShader(s)->unref();
+ paint.setShader(SkShader::MakeBitmapShader(getBitmap(), fMode, fMode, &m));
paint.setFilterQuality(fDoFilter ? kLow_SkFilterQuality : kNone_SkFilterQuality);
canvas->translate(SkIntToScalar(50), SkIntToScalar(50));
diff --git a/gm/glyph_pos_align.cpp b/gm/glyph_pos_align.cpp
index e80955e1ac..0ac877d0d0 100644
--- a/gm/glyph_pos_align.cpp
+++ b/gm/glyph_pos_align.cpp
@@ -25,12 +25,8 @@ DEF_SIMPLE_GM_BG(glyph_pos_align, canvas, kWidth, kHeight, SK_ColorBLACK) {
paint.setFakeBoldText(true);
const SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE };
const SkPoint pts[] = {{0, 0}, {kWidth, kHeight}};
- SkAutoTUnref<SkShader> grad(SkGradientShader::CreateLinear(pts, colors, nullptr,
- SK_ARRAY_COUNT(colors),
- SkShader::kMirror_TileMode));
- paint.setShader(grad);
-
-
+ paint.setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors),
+ SkShader::kMirror_TileMode));
paint.setTextAlign(SkPaint::kRight_Align);
drawTestCase(canvas, "Right Align", kTextHeight, paint);
diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp
index dd74640401..b84ba0f518 100644
--- a/src/utils/SkLua.cpp
+++ b/src/utils/SkLua.cpp
@@ -82,6 +82,12 @@ template <typename T> T* push_ref(lua_State* L, T* ref) {
return ref;
}
+template <typename T> void push_ref(lua_State* L, sk_sp<T> sp) {
+ *(T**)lua_newuserdata(L, sizeof(T*)) = sp.release();
+ luaL_getmetatable(L, get_mtname<T>());
+ lua_setmetatable(L, -2);
+}
+
template <typename T> T* get_ref(lua_State* L, int index) {
return *(T**)luaL_checkudata(L, index, get_mtname<T>());
}
@@ -1977,11 +1983,11 @@ static int lsk_newLinearGradient(lua_State* L) {
SkPoint pts[] = { { x0, y0 }, { x1, y1 } };
SkColor colors[] = { c0, c1 };
- SkShader* s = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
- if (nullptr == s) {
+ auto s = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
+ if (!s) {
lua_pushnil(L);
} else {
- push_ref(L, s)->unref();
+ push_ref(L, std::move(s));
}
return 1;
}