diff options
author | bungeman <bungeman@google.com> | 2016-06-09 08:01:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-09 08:01:03 -0700 |
commit | 06ca8ec87cf6fab57cadd043a5ac18c4154a4129 (patch) | |
tree | 95e7eaaaf3f42ce550332277c431e3ec119446f4 /src/effects/gradients | |
parent | 897a8e38879643d81a64d2bb6bed4e22af982aa4 (diff) |
sk_sp for Ganesh.
Convert use of GrFragmentProcessor, GrGeometryProcessor, and
GrXPFactory to sk_sp. This clarifies ownership and should
reduce reference count churn by moving ownership.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2041113004
Review-Url: https://codereview.chromium.org/2041113004
Diffstat (limited to 'src/effects/gradients')
-rw-r--r-- | src/effects/gradients/SkLinearGradient.cpp | 22 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.h | 2 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.cpp | 21 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.h | 2 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.cpp | 17 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.h | 2 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.cpp | 8 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.h | 2 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp | 102 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient_gpu.h | 4 |
10 files changed, 92 insertions, 90 deletions
diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp index cd55673dc9..40340fe4df 100644 --- a/src/effects/gradients/SkLinearGradient.cpp +++ b/src/effects/gradients/SkLinearGradient.cpp @@ -7,6 +7,7 @@ #include "Sk4fLinearGradient.h" #include "SkLinearGradient.h" +#include "SkRefCnt.h" // define to test the 4f gradient path // #define FORCE_4F_CONTEXT @@ -369,11 +370,11 @@ private: class GrLinearGradient : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkLinearGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm) { - return new GrLinearGradient(ctx, shader, matrix, tm); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkLinearGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm) { + return sk_sp<GrFragmentProcessor>(new GrLinearGradient(ctx, shader, matrix, tm)); } virtual ~GrLinearGradient() { } @@ -407,7 +408,7 @@ private: GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrLinearGradient); -const GrFragmentProcessor* GrLinearGradient::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> GrLinearGradient::TestCreate(GrProcessorTestData* d) { SkPoint points[] = {{d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}, {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}}; @@ -417,7 +418,7 @@ const GrFragmentProcessor* GrLinearGradient::TestCreate(GrProcessorTestData* d) SkShader::TileMode tm; int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeLinear(points, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -442,7 +443,7 @@ void GrGLLinearGradient::emitCode(EmitArgs& args) { ///////////////////////////////////////////////////////////////////// -const GrFragmentProcessor* SkLinearGradient::asFragmentProcessor( +sk_sp<GrFragmentProcessor> SkLinearGradient::asFragmentProcessor( GrContext* context, const SkMatrix& viewm, const SkMatrix* localMatrix, @@ -463,9 +464,8 @@ const GrFragmentProcessor* SkLinearGradient::asFragmentProcessor( } matrix.postConcat(fPtsToUnit); - SkAutoTUnref<const GrFragmentProcessor> inner( - GrLinearGradient::Create(context, *this, matrix, fTileMode)); - return GrFragmentProcessor::MulOutputByInputAlpha(inner); + sk_sp<GrFragmentProcessor> inner(GrLinearGradient::Make(context, *this, matrix, fTileMode)); + return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); } diff --git a/src/effects/gradients/SkLinearGradient.h b/src/effects/gradients/SkLinearGradient.h index 8edcb9d639..5800e576db 100644 --- a/src/effects/gradients/SkLinearGradient.h +++ b/src/effects/gradients/SkLinearGradient.h @@ -57,7 +57,7 @@ public: GradientType asAGradient(GradientInfo* info) const override; #if SK_SUPPORT_GPU - const GrFragmentProcessor* asFragmentProcessor(GrContext*, + sk_sp<GrFragmentProcessor> asFragmentProcessor(GrContext*, const SkMatrix& viewM, const SkMatrix*, SkFilterQuality, diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp index a0fee273d7..c7e6656549 100644 --- a/src/effects/gradients/SkRadialGradient.cpp +++ b/src/effects/gradients/SkRadialGradient.cpp @@ -264,11 +264,11 @@ private: class GrRadialGradient : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkRadialGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm) { - return new GrRadialGradient(ctx, shader, matrix, tm); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkRadialGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm) { + return sk_sp<GrFragmentProcessor>(new GrRadialGradient(ctx, shader, matrix, tm)); } virtual ~GrRadialGradient() { } @@ -302,7 +302,7 @@ private: GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrRadialGradient); -const GrFragmentProcessor* GrRadialGradient::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> GrRadialGradient::TestCreate(GrProcessorTestData* d) { SkPoint center = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkScalar radius = d->fRandom->nextUScalar1(); @@ -312,7 +312,7 @@ const GrFragmentProcessor* GrRadialGradient::TestCreate(GrProcessorTestData* d) SkShader::TileMode tm; int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeRadial(center, radius, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -338,7 +338,7 @@ void GrGLRadialGradient::emitCode(EmitArgs& args) { ///////////////////////////////////////////////////////////////////// -const GrFragmentProcessor* SkRadialGradient::asFragmentProcessor( +sk_sp<GrFragmentProcessor> SkRadialGradient::asFragmentProcessor( GrContext* context, const SkMatrix& viewM, const SkMatrix* localMatrix, @@ -358,9 +358,8 @@ const GrFragmentProcessor* SkRadialGradient::asFragmentProcessor( matrix.postConcat(inv); } matrix.postConcat(fPtsToUnit); - SkAutoTUnref<const GrFragmentProcessor> inner( - GrRadialGradient::Create(context, *this, matrix, fTileMode)); - return GrFragmentProcessor::MulOutputByInputAlpha(inner); + sk_sp<GrFragmentProcessor> inner(GrRadialGradient::Make(context, *this, matrix, fTileMode)); + return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); } #endif diff --git a/src/effects/gradients/SkRadialGradient.h b/src/effects/gradients/SkRadialGradient.h index 8eb1f76832..dfa6823c0e 100644 --- a/src/effects/gradients/SkRadialGradient.h +++ b/src/effects/gradients/SkRadialGradient.h @@ -26,7 +26,7 @@ public: GradientType asAGradient(GradientInfo* info) const override; #if SK_SUPPORT_GPU - const GrFragmentProcessor* asFragmentProcessor(GrContext*, + sk_sp<GrFragmentProcessor> asFragmentProcessor(GrContext*, const SkMatrix& viewM, const SkMatrix*, SkFilterQuality, diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp index 08232bccb3..9e2b909075 100644 --- a/src/effects/gradients/SkSweepGradient.cpp +++ b/src/effects/gradients/SkSweepGradient.cpp @@ -147,9 +147,9 @@ private: class GrSweepGradient : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, const SkSweepGradient& shader, - const SkMatrix& m) { - return new GrSweepGradient(ctx, shader, m); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, const SkSweepGradient& shader, + const SkMatrix& m) { + return sk_sp<GrFragmentProcessor>(new GrSweepGradient(ctx, shader, m)); } virtual ~GrSweepGradient() { } @@ -181,7 +181,7 @@ private: GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSweepGradient); -const GrFragmentProcessor* GrSweepGradient::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> GrSweepGradient::TestCreate(GrProcessorTestData* d) { SkPoint center = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkColor colors[kMaxRandomGradientColors]; @@ -191,7 +191,7 @@ const GrFragmentProcessor* GrSweepGradient::TestCreate(GrProcessorTestData* d) { int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tmIgnored); sk_sp<SkShader> shader(SkGradientShader::MakeSweep(center.fX, center.fY, colors, stops, colorCount)); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); @@ -227,7 +227,7 @@ void GrGLSweepGradient::emitCode(EmitArgs& args) { ///////////////////////////////////////////////////////////////////// -const GrFragmentProcessor* SkSweepGradient::asFragmentProcessor( +sk_sp<GrFragmentProcessor> SkSweepGradient::asFragmentProcessor( GrContext* context, const SkMatrix& viewM, const SkMatrix* localMatrix, @@ -247,9 +247,8 @@ const GrFragmentProcessor* SkSweepGradient::asFragmentProcessor( } matrix.postConcat(fPtsToUnit); - SkAutoTUnref<const GrFragmentProcessor> inner( - GrSweepGradient::Create(context, *this, matrix)); - return GrFragmentProcessor::MulOutputByInputAlpha(inner); + sk_sp<GrFragmentProcessor> inner(GrSweepGradient::Make(context, *this, matrix)); + return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); } #endif diff --git a/src/effects/gradients/SkSweepGradient.h b/src/effects/gradients/SkSweepGradient.h index d0807daf23..0812a583a4 100644 --- a/src/effects/gradients/SkSweepGradient.h +++ b/src/effects/gradients/SkSweepGradient.h @@ -27,7 +27,7 @@ public: GradientType asAGradient(GradientInfo* info) const override; #if SK_SUPPORT_GPU - const GrFragmentProcessor* asFragmentProcessor(GrContext*, + sk_sp<GrFragmentProcessor> asFragmentProcessor(GrContext*, const SkMatrix& viewM, const SkMatrix*, SkFilterQuality, diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp index a7cdc7e1b4..afc77feb5f 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp @@ -356,7 +356,7 @@ void SkTwoPointConicalGradient::flatten(SkWriteBuffer& buffer) const { #include "SkGr.h" -const GrFragmentProcessor* SkTwoPointConicalGradient::asFragmentProcessor( +sk_sp<GrFragmentProcessor> SkTwoPointConicalGradient::asFragmentProcessor( GrContext* context, const SkMatrix& viewM, const SkMatrix* localMatrix, @@ -364,9 +364,9 @@ const GrFragmentProcessor* SkTwoPointConicalGradient::asFragmentProcessor( SkSourceGammaTreatment) const { SkASSERT(context); SkASSERT(fPtsToUnit.isIdentity()); - SkAutoTUnref<const GrFragmentProcessor> inner( - Gr2PtConicalGradientEffect::Create(context, *this, fTileMode, localMatrix)); - return GrFragmentProcessor::MulOutputByInputAlpha(inner); + sk_sp<GrFragmentProcessor> inner( + Gr2PtConicalGradientEffect::Make(context, *this, fTileMode, localMatrix)); + return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); } #endif diff --git a/src/effects/gradients/SkTwoPointConicalGradient.h b/src/effects/gradients/SkTwoPointConicalGradient.h index b50a5e3a4e..f2102c1472 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.h +++ b/src/effects/gradients/SkTwoPointConicalGradient.h @@ -57,7 +57,7 @@ public: SkShader::GradientType asAGradient(GradientInfo* info) const override; #if SK_SUPPORT_GPU - const GrFragmentProcessor* asFragmentProcessor(GrContext*, + sk_sp<GrFragmentProcessor> asFragmentProcessor(GrContext*, const SkMatrix&, const SkMatrix*, SkFilterQuality, diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp index e638982d0c..91b0a9326d 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp @@ -61,11 +61,11 @@ static void set_matrix_edge_conical(const SkTwoPointConicalGradient& shader, class Edge2PtConicalEffect : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkTwoPointConicalGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm) { - return new Edge2PtConicalEffect(ctx, shader, matrix, tm); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkTwoPointConicalGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm) { + return sk_sp<GrFragmentProcessor>(new Edge2PtConicalEffect(ctx, shader, matrix, tm)); } virtual ~Edge2PtConicalEffect() {} @@ -184,7 +184,7 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); /* * All Two point conical gradient test create functions may occasionally create edge case shaders */ -const GrFragmentProcessor* Edge2PtConicalEffect::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> Edge2PtConicalEffect::TestCreate(GrProcessorTestData* d) { SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkScalar radius1 = d->fRandom->nextUScalar1(); SkPoint center2; @@ -208,7 +208,7 @@ const GrFragmentProcessor* Edge2PtConicalEffect::TestCreate(GrProcessorTestData* int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -370,12 +370,13 @@ static ConicalType set_matrix_focal_conical(const SkTwoPointConicalGradient& sha class FocalOutside2PtConicalEffect : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkTwoPointConicalGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm, - SkScalar focalX) { - return new FocalOutside2PtConicalEffect(ctx, shader, matrix, tm, focalX); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkTwoPointConicalGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm, + SkScalar focalX) { + return sk_sp<GrFragmentProcessor>( + new FocalOutside2PtConicalEffect(ctx, shader, matrix, tm, focalX)); } virtual ~FocalOutside2PtConicalEffect() { } @@ -463,7 +464,7 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); /* * All Two point conical gradient test create functions may occasionally create edge case shaders */ -const GrFragmentProcessor* FocalOutside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> FocalOutside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkScalar radius1 = 0.f; SkPoint center2; @@ -484,7 +485,7 @@ const GrFragmentProcessor* FocalOutside2PtConicalEffect::TestCreate(GrProcessorT int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -580,12 +581,13 @@ class GLFocalInside2PtConicalEffect; class FocalInside2PtConicalEffect : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkTwoPointConicalGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm, - SkScalar focalX) { - return new FocalInside2PtConicalEffect(ctx, shader, matrix, tm, focalX); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkTwoPointConicalGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm, + SkScalar focalX) { + return sk_sp<GrFragmentProcessor>( + new FocalInside2PtConicalEffect(ctx, shader, matrix, tm, focalX)); } virtual ~FocalInside2PtConicalEffect() {} @@ -668,7 +670,7 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); /* * All Two point conical gradient test create functions may occasionally create edge case shaders */ -const GrFragmentProcessor* FocalInside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> FocalInside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkScalar radius1 = 0.f; SkPoint center2; @@ -691,7 +693,7 @@ const GrFragmentProcessor* FocalInside2PtConicalEffect::TestCreate(GrProcessorTe int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -819,12 +821,13 @@ static ConicalType set_matrix_circle_conical(const SkTwoPointConicalGradient& sh class CircleInside2PtConicalEffect : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkTwoPointConicalGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm, - const CircleConicalInfo& info) { - return new CircleInside2PtConicalEffect(ctx, shader, matrix, tm, info); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkTwoPointConicalGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm, + const CircleConicalInfo& info) { + return sk_sp<GrFragmentProcessor>( + new CircleInside2PtConicalEffect(ctx, shader, matrix, tm, info)); } virtual ~CircleInside2PtConicalEffect() {} @@ -916,7 +919,7 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); /* * All Two point conical gradient test create functions may occasionally create edge case shaders */ -const GrFragmentProcessor* CircleInside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> CircleInside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkScalar radius1 = d->fRandom->nextUScalar1() + 0.0001f; // make sure radius1 != 0 SkPoint center2; @@ -938,7 +941,7 @@ const GrFragmentProcessor* CircleInside2PtConicalEffect::TestCreate(GrProcessorT int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(d->fContext, GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -1035,12 +1038,13 @@ void GLCircleInside2PtConicalEffect::GenKey(const GrProcessor& processor, class CircleOutside2PtConicalEffect : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, - const SkTwoPointConicalGradient& shader, - const SkMatrix& matrix, - SkShader::TileMode tm, - const CircleConicalInfo& info) { - return new CircleOutside2PtConicalEffect(ctx, shader, matrix, tm, info); + static sk_sp<GrFragmentProcessor> Make(GrContext* ctx, + const SkTwoPointConicalGradient& shader, + const SkMatrix& matrix, + SkShader::TileMode tm, + const CircleConicalInfo& info) { + return sk_sp<GrFragmentProcessor>( + new CircleOutside2PtConicalEffect(ctx, shader, matrix, tm, info)); } virtual ~CircleOutside2PtConicalEffect() {} @@ -1147,7 +1151,7 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); /* * All Two point conical gradient test create functions may occasionally create edge case shaders */ -const GrFragmentProcessor* CircleOutside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { +sk_sp<GrFragmentProcessor> CircleOutside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; SkScalar radius1 = d->fRandom->nextUScalar1() + 0.0001f; // make sure radius1 != 0 SkPoint center2; @@ -1170,7 +1174,7 @@ const GrFragmentProcessor* CircleOutside2PtConicalEffect::TestCreate(GrProcessor int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, colors, stops, colorCount, tm); - const GrFragmentProcessor* fp = shader->asFragmentProcessor( + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor( d->fContext,GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, SkSourceGammaTreatment::kRespect); GrAlwaysAssert(fp); @@ -1291,10 +1295,10 @@ void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor, ////////////////////////////////////////////////////////////////////////////// -GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, - const SkTwoPointConicalGradient& shader, - SkShader::TileMode tm, - const SkMatrix* localMatrix) { +sk_sp<GrFragmentProcessor> Gr2PtConicalGradientEffect::Make(GrContext* ctx, + const SkTwoPointConicalGradient& shader, + SkShader::TileMode tm, + const SkMatrix* localMatrix) { SkMatrix matrix; if (!shader.getLocalMatrix().invert(&matrix)) { return nullptr; @@ -1311,12 +1315,12 @@ GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, SkScalar focalX; ConicalType type = set_matrix_focal_conical(shader, &matrix, &focalX); if (type == kInside_ConicalType) { - return FocalInside2PtConicalEffect::Create(ctx, shader, matrix, tm, focalX); + return FocalInside2PtConicalEffect::Make(ctx, shader, matrix, tm, focalX); } else if(type == kEdge_ConicalType) { set_matrix_edge_conical(shader, &matrix); - return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); + return Edge2PtConicalEffect::Make(ctx, shader, matrix, tm); } else { - return FocalOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, focalX); + return FocalOutside2PtConicalEffect::Make(ctx, shader, matrix, tm, focalX); } } @@ -1324,12 +1328,12 @@ GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, ConicalType type = set_matrix_circle_conical(shader, &matrix, &info); if (type == kInside_ConicalType) { - return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, info); + return CircleInside2PtConicalEffect::Make(ctx, shader, matrix, tm, info); } else if (type == kEdge_ConicalType) { set_matrix_edge_conical(shader, &matrix); - return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); + return Edge2PtConicalEffect::Make(ctx, shader, matrix, tm); } else { - return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, info); + return CircleOutside2PtConicalEffect::Make(ctx, shader, matrix, tm, info); } } diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.h b/src/effects/gradients/SkTwoPointConicalGradient_gpu.h index 601a1667c4..9dd058d4b1 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.h +++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.h @@ -18,8 +18,8 @@ namespace Gr2PtConicalGradientEffect { * Creates an effect that produces a two point conical gradient based on the * shader passed in. */ - GrFragmentProcessor* Create(GrContext* ctx, const SkTwoPointConicalGradient& shader, - SkShader::TileMode tm, const SkMatrix* localMatrix); + sk_sp<GrFragmentProcessor> Make(GrContext* ctx, const SkTwoPointConicalGradient& shader, + SkShader::TileMode tm, const SkMatrix* localMatrix); }; #endif |