aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/gradients/SkRadialGradient.cpp
diff options
context:
space:
mode:
authorGravatar rileya@google.com <rileya@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-27 14:00:39 +0000
committerGravatar rileya@google.com <rileya@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-27 14:00:39 +0000
commitd7cc651b8da11d52ae90e910b948f5e2d15daaf9 (patch)
treee62c6ceffa62c8773e62aa82f35d1e2655a70959 /src/effects/gradients/SkRadialGradient.cpp
parentc84b8335ee4fd864c30a4703afc643cf4b5010d9 (diff)
Move GPU gradients into src/effects/gradients.
Review URL: https://codereview.appspot.com/6453055 git-svn-id: http://skia.googlecode.com/svn/trunk@4805 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/effects/gradients/SkRadialGradient.cpp')
-rw-r--r--src/effects/gradients/SkRadialGradient.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp
index 4ac93d7b59..8feeff5313 100644
--- a/src/effects/gradients/SkRadialGradient.cpp
+++ b/src/effects/gradients/SkRadialGradient.cpp
@@ -477,3 +477,59 @@ void SkRadialGradient::shadeSpan(int x, int y,
}
}
+/////////////////////////////////////////////////////////////////////
+
+class GrGLRadialGradient : public GrGLGradientStage {
+
+public:
+
+ GrGLRadialGradient(const GrProgramStageFactory& factory,
+ const GrCustomStage&) : INHERITED (factory) { }
+ virtual ~GrGLRadialGradient() { }
+
+ virtual void emitVS(GrGLShaderBuilder* builder,
+ const char* vertexCoords) SK_OVERRIDE { }
+ virtual void emitFS(GrGLShaderBuilder* builder,
+ const char* outputColor,
+ const char* inputColor,
+ const char* samplerName) SK_OVERRIDE;
+
+ static StageKey GenKey(const GrCustomStage& s) { return 0; }
+
+private:
+
+ typedef GrGLGradientStage INHERITED;
+
+};
+
+void GrGLRadialGradient::emitFS(GrGLShaderBuilder* builder,
+ const char* outputColor,
+ const char* inputColor,
+ const char* samplerName) {
+ SkString t;
+ t.printf("length(%s.xy)", builder->fSampleCoords.c_str());
+ this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+
+
+GrRadialGradient::GrRadialGradient(GrTexture* texture)
+ : INHERITED(texture) {
+
+}
+
+GrRadialGradient::GrRadialGradient(GrContext* ctx, const SkShader& shader,
+ GrSamplerState* sampler)
+ : INHERITED(ctx, shader, sampler) {
+}
+
+GrRadialGradient::~GrRadialGradient() {
+
+}
+
+const GrProgramStageFactory& GrRadialGradient::getFactory() const {
+ return GrTProgramStageFactory<GrRadialGradient>::getInstance();
+}
+