diff options
Diffstat (limited to 'src/effects/gradients')
-rw-r--r-- | src/effects/gradients/SkGradientShader.cpp | 1 | ||||
-rw-r--r-- | src/effects/gradients/SkGradientShaderPriv.h | 1 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.cpp | 11 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.cpp | 11 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.cpp | 13 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.cpp | 5 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp | 53 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient_gpu.h | 3 |
8 files changed, 65 insertions, 33 deletions
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp index 52731b395f..e7bc5277f0 100644 --- a/src/effects/gradients/SkGradientShader.cpp +++ b/src/effects/gradients/SkGradientShader.cpp @@ -1058,6 +1058,7 @@ void GrGLGradientEffect::emitColor(GrGLFPBuilder* builder, ///////////////////////////////////////////////////////////////////// GrGradientEffect::GrGradientEffect(GrContext* ctx, + GrShaderDataManager*, const SkGradientShaderBase& shader, const SkMatrix& matrix, SkShader::TileMode tileMode) { diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h index dff6983518..9cd573ae02 100644 --- a/src/effects/gradients/SkGradientShaderPriv.h +++ b/src/effects/gradients/SkGradientShaderPriv.h @@ -329,6 +329,7 @@ class GrGradientEffect : public GrFragmentProcessor { public: GrGradientEffect(GrContext* ctx, + GrShaderDataManager*, const SkGradientShaderBase& shader, const SkMatrix& matrix, SkShader::TileMode tileMode); diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp index 7b20b2deef..2fbe435d14 100644 --- a/src/effects/gradients/SkLinearGradient.cpp +++ b/src/effects/gradients/SkLinearGradient.cpp @@ -489,10 +489,11 @@ class GrLinearGradient : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkLinearGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm) { - return SkNEW_ARGS(GrLinearGradient, (ctx, shader, matrix, tm)); + return SkNEW_ARGS(GrLinearGradient, (ctx, shaderDataManager, shader, matrix, tm)); } virtual ~GrLinearGradient() { } @@ -510,10 +511,11 @@ public: private: GrLinearGradient(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkLinearGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm) - : INHERITED(ctx, shader, matrix, tm) { + : INHERITED(ctx, shaderDataManager, shader, matrix, tm) { this->initClassID<GrLinearGradient>(); } GR_DECLARE_FRAGMENT_PROCESSOR_TEST; @@ -569,7 +571,8 @@ void GrGLLinearGradient::emitCode(GrGLFPBuilder* builder, bool SkLinearGradient::asFragmentProcessor(GrContext* context, const SkPaint& paint, const SkMatrix& viewm, const SkMatrix* localMatrix, - GrColor* paintColor, GrShaderDataManager*, + GrColor* paintColor, + GrShaderDataManager* shaderDataManager, GrFragmentProcessor** fp) const { SkASSERT(context); @@ -587,7 +590,7 @@ bool SkLinearGradient::asFragmentProcessor(GrContext* context, const SkPaint& pa matrix.postConcat(fPtsToUnit); *paintColor = SkColor2GrColorJustAlpha(paint.getColor()); - *fp = GrLinearGradient::Create(context, *this, matrix, fTileMode); + *fp = GrLinearGradient::Create(context, shaderDataManager, *this, matrix, fTileMode); return true; } diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp index b2e9a11e64..b46a044214 100644 --- a/src/effects/gradients/SkRadialGradient.cpp +++ b/src/effects/gradients/SkRadialGradient.cpp @@ -462,10 +462,11 @@ private: class GrRadialGradient : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkRadialGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm) { - return SkNEW_ARGS(GrRadialGradient, (ctx, shader, matrix, tm)); + return SkNEW_ARGS(GrRadialGradient, (ctx, shaderDataManager, shader, matrix, tm)); } virtual ~GrRadialGradient() { } @@ -483,10 +484,11 @@ public: private: GrRadialGradient(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkRadialGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm) - : INHERITED(ctx, shader, matrix, tm) { + : INHERITED(ctx, shaderDataManager, shader, matrix, tm) { this->initClassID<GrRadialGradient>(); } @@ -545,7 +547,8 @@ void GrGLRadialGradient::emitCode(GrGLFPBuilder* builder, bool SkRadialGradient::asFragmentProcessor(GrContext* context, const SkPaint& paint, const SkMatrix& viewM, const SkMatrix* localMatrix, GrColor* paintColor, - GrShaderDataManager*, GrFragmentProcessor** fp) const { + GrShaderDataManager* shaderDataManager, + GrFragmentProcessor** fp) const { SkASSERT(context); SkMatrix matrix; @@ -562,7 +565,7 @@ bool SkRadialGradient::asFragmentProcessor(GrContext* context, const SkPaint& pa matrix.postConcat(fPtsToUnit); *paintColor = SkColor2GrColorJustAlpha(paint.getColor()); - *fp = GrRadialGradient::Create(context, *this, matrix, fTileMode); + *fp = GrRadialGradient::Create(context, shaderDataManager, *this, matrix, fTileMode); return true; } diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp index 24853ff76f..4bf80984fd 100644 --- a/src/effects/gradients/SkSweepGradient.cpp +++ b/src/effects/gradients/SkSweepGradient.cpp @@ -211,9 +211,9 @@ private: class GrSweepGradient : public GrGradientEffect { public: - static GrFragmentProcessor* Create(GrContext* ctx, const SkSweepGradient& shader, - const SkMatrix& m) { - return SkNEW_ARGS(GrSweepGradient, (ctx, shader, m)); + static GrFragmentProcessor* Create(GrContext* ctx, GrShaderDataManager* shaderDataManager, + const SkSweepGradient& shader, const SkMatrix& m) { + return SkNEW_ARGS(GrSweepGradient, (ctx, shaderDataManager, shader, m)); } virtual ~GrSweepGradient() { } @@ -230,9 +230,10 @@ public: private: GrSweepGradient(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkSweepGradient& shader, const SkMatrix& matrix) - : INHERITED(ctx, shader, matrix, SkShader::kClamp_TileMode) { + : INHERITED(ctx, shaderDataManager, shader, matrix, SkShader::kClamp_TileMode) { this->initClassID<GrSweepGradient>(); } GR_DECLARE_FRAGMENT_PROCESSOR_TEST; @@ -298,7 +299,7 @@ void GrGLSweepGradient::emitCode(GrGLFPBuilder* builder, bool SkSweepGradient::asFragmentProcessor(GrContext* context, const SkPaint& paint, const SkMatrix& viewM, const SkMatrix* localMatrix, GrColor* paintColor, - GrShaderDataManager*, + GrShaderDataManager* shaderDataManager, GrFragmentProcessor** effect) const { SkMatrix matrix; @@ -314,7 +315,7 @@ bool SkSweepGradient::asFragmentProcessor(GrContext* context, const SkPaint& pai } matrix.postConcat(fPtsToUnit); - *effect = GrSweepGradient::Create(context, *this, matrix); + *effect = GrSweepGradient::Create(context, shaderDataManager, *this, matrix); *paintColor = SkColor2GrColorJustAlpha(paint.getColor()); return true; diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp index ee531b271e..6e8fe4e2ab 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp @@ -394,12 +394,13 @@ bool SkTwoPointConicalGradient::asFragmentProcessor(GrContext* context, const SkMatrix& viewM, const SkMatrix* localMatrix, GrColor* paintColor, - GrShaderDataManager*, + GrShaderDataManager* shaderDataManager, GrFragmentProcessor** fp) const { SkASSERT(context); SkASSERT(fPtsToUnit.isIdentity()); - *fp = Gr2PtConicalGradientEffect::Create(context, *this, fTileMode, localMatrix); + *fp = Gr2PtConicalGradientEffect::Create(context, shaderDataManager, *this, fTileMode, + localMatrix); *paintColor = SkColor2GrColorJustAlpha(paint.getColor()); return true; } diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp index 357e39c3ad..07722e9724 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp @@ -59,10 +59,11 @@ class Edge2PtConicalEffect : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm) { - return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, shader, matrix, tm)); + return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, shaderDataManager, shader, matrix, tm)); } virtual ~Edge2PtConicalEffect() {} @@ -90,10 +91,11 @@ private: } Edge2PtConicalEffect(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm) - : INHERITED(ctx, shader, matrix, tm), + : INHERITED(ctx, shaderDataManager, shader, matrix, tm), fCenterX1(shader.getCenterX1()), fRadius0(shader.getStartRadius()), fDiffRadius(shader.getDiffRadius()){ @@ -381,11 +383,13 @@ class FocalOutside2PtConicalEffect : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, SkScalar focalX) { - return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, shader, matrix, tm, focalX)); + return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, shaderDataManager, shader, matrix, tm, + focalX)); } virtual ~FocalOutside2PtConicalEffect() { } @@ -410,11 +414,14 @@ private: } FocalOutside2PtConicalEffect(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, SkScalar focalX) - : INHERITED(ctx, shader, matrix, tm), fFocalX(focalX), fIsFlipped(shader.isFlippedGrad()) { + : INHERITED(ctx, shaderDataManager, shader, matrix, tm) + , fFocalX(focalX) + , fIsFlipped(shader.isFlippedGrad()) { this->initClassID<FocalOutside2PtConicalEffect>(); } @@ -604,11 +611,13 @@ class FocalInside2PtConicalEffect : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, SkScalar focalX) { - return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, shader, matrix, tm, focalX)); + return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, shaderDataManager, shader, matrix, tm, + focalX)); } virtual ~FocalInside2PtConicalEffect() {} @@ -633,11 +642,12 @@ private: } FocalInside2PtConicalEffect(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, SkScalar focalX) - : INHERITED(ctx, shader, matrix, tm), fFocalX(focalX) { + : INHERITED(ctx, shaderDataManager, shader, matrix, tm), fFocalX(focalX) { this->initClassID<FocalInside2PtConicalEffect>(); } @@ -852,11 +862,13 @@ class CircleInside2PtConicalEffect : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, const CircleConicalInfo& info) { - return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, shader, matrix, tm, info)); + return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, shaderDataManager, shader, matrix, tm, + info)); } virtual ~CircleInside2PtConicalEffect() {} @@ -885,11 +897,12 @@ private: } CircleInside2PtConicalEffect(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, const CircleConicalInfo& info) - : INHERITED(ctx, shader, matrix, tm), fInfo(info) { + : INHERITED(ctx, shaderDataManager, shader, matrix, tm), fInfo(info) { this->initClassID<CircleInside2PtConicalEffect>(); } @@ -1077,11 +1090,13 @@ class CircleOutside2PtConicalEffect : public GrGradientEffect { public: static GrFragmentProcessor* Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, const CircleConicalInfo& info) { - return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, shader, matrix, tm, info)); + return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, shaderDataManager, shader, matrix, + tm, info)); } virtual ~CircleOutside2PtConicalEffect() {} @@ -1113,11 +1128,12 @@ private: } CircleOutside2PtConicalEffect(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, const SkMatrix& matrix, SkShader::TileMode tm, const CircleConicalInfo& info) - : INHERITED(ctx, shader, matrix, tm), fInfo(info) { + : INHERITED(ctx, shaderDataManager, shader, matrix, tm), fInfo(info) { this->initClassID<CircleOutside2PtConicalEffect>(); if (shader.getStartRadius() != shader.getEndRadius()) { fTLimit = shader.getStartRadius() / (shader.getStartRadius() - shader.getEndRadius()); @@ -1341,6 +1357,7 @@ void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor, ////////////////////////////////////////////////////////////////////////////// GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, + GrShaderDataManager* shaderDataManager, const SkTwoPointConicalGradient& shader, SkShader::TileMode tm, const SkMatrix* localMatrix) { @@ -1360,12 +1377,14 @@ 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::Create(ctx, shaderDataManager, shader, matrix, tm, + focalX); } else if(type == kEdge_ConicalType) { set_matrix_edge_conical(shader, &matrix); - return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); + return Edge2PtConicalEffect::Create(ctx, shaderDataManager, shader, matrix, tm); } else { - return FocalOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, focalX); + return FocalOutside2PtConicalEffect::Create(ctx, shaderDataManager, shader, matrix, tm, + focalX); } } @@ -1373,12 +1392,14 @@ 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::Create(ctx, shaderDataManager, shader, matrix, tm, + info); } else if (type == kEdge_ConicalType) { set_matrix_edge_conical(shader, &matrix); - return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); + return Edge2PtConicalEffect::Create(ctx, shaderDataManager, shader, matrix, tm); } else { - return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, info); + return CircleOutside2PtConicalEffect::Create(ctx, shaderDataManager, shader, matrix, tm, + info); } } diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.h b/src/effects/gradients/SkTwoPointConicalGradient_gpu.h index 54937c6ffb..928e530501 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.h +++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.h @@ -18,7 +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, + GrFragmentProcessor* Create(GrContext* ctx,GrShaderDataManager* shaderDataManager, + const SkTwoPointConicalGradient& shader, SkShader::TileMode tm, const SkMatrix* localMatrix); }; |