| Index: src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
|
| diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
|
| index e638982d0c8b0a68ca2c03210a2acf3363f37a84..91b0a9326db84e52c7db5828155277d3ee3af0de 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);
|
| }
|
| }
|
|
|
|
|