| Index: gm/gradientDirtyLaundry.cpp
|
| diff --git a/gm/gradientDirtyLaundry.cpp b/gm/gradientDirtyLaundry.cpp
|
| index 3fca7f276c8896f64adfd74c4dbfe1f587ad67a4..8ef5fc92292ccc4ad8915b2d4276a81d90e4f85e 100644
|
| --- a/gm/gradientDirtyLaundry.cpp
|
| +++ b/gm/gradientDirtyLaundry.cpp
|
| @@ -35,22 +35,27 @@
|
| // { 2, gCol2, nullptr },
|
| };
|
|
|
| -static sk_sp<SkShader> MakeLinear(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm) {
|
| - return SkGradientShader::MakeLinear(pts, data.fColors, data.fPos, data.fCount, tm);
|
| +static SkShader* MakeLinear(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm) {
|
| + return SkGradientShader::CreateLinear(pts, data.fColors, data.fPos, data.fCount, tm);
|
| }
|
|
|
| -static sk_sp<SkShader> MakeRadial(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm) {
|
| - const SkPoint pt{ SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY) };
|
| - return SkGradientShader::MakeRadial(pt, pt.fX, data.fColors, data.fPos, data.fCount, tm);
|
| +static SkShader* MakeRadial(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm) {
|
| + SkPoint center;
|
| + center.set(SkScalarAve(pts[0].fX, pts[1].fX),
|
| + SkScalarAve(pts[0].fY, pts[1].fY));
|
| + return SkGradientShader::CreateRadial(center, center.fX, data.fColors,
|
| + data.fPos, data.fCount, tm);
|
| }
|
|
|
| -static sk_sp<SkShader> MakeSweep(const SkPoint pts[2], const GradData& data, SkShader::TileMode) {
|
| - const SkPoint pt{ SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY) };
|
| - return SkGradientShader::MakeSweep(pt.fX, pt.fY, data.fColors, data.fPos, data.fCount);
|
| +static SkShader* MakeSweep(const SkPoint pts[2], const GradData& data, SkShader::TileMode) {
|
| + SkPoint center;
|
| + center.set(SkScalarAve(pts[0].fX, pts[1].fX),
|
| + SkScalarAve(pts[0].fY, pts[1].fY));
|
| + return SkGradientShader::CreateSweep(center.fX, center.fY, data.fColors, data.fPos, data.fCount);
|
| }
|
|
|
|
|
| -typedef sk_sp<SkShader> (*GradMaker)(const SkPoint pts[2], const GradData&, SkShader::TileMode);
|
| +typedef SkShader* (*GradMaker)(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm);
|
|
|
| static const GradMaker gGradMakers[] = {
|
| MakeLinear, MakeRadial, MakeSweep,
|
| @@ -81,7 +86,8 @@
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(gGradData); i++) {
|
| canvas->save();
|
| for (size_t j = 0; j < SK_ARRAY_COUNT(gGradMakers); j++) {
|
| - paint.setShader(gGradMakers[j](pts, gGradData[i], tm));
|
| + SkShader* shader = gGradMakers[j](pts, gGradData[i], tm);
|
| + paint.setShader(shader)->unref();
|
| canvas->drawRect(r, paint);
|
| canvas->translate(0, SkIntToScalar(120));
|
| }
|
|
|