diff options
author | 2012-07-27 14:00:39 +0000 | |
---|---|---|
committer | 2012-07-27 14:00:39 +0000 | |
commit | d7cc651b8da11d52ae90e910b948f5e2d15daaf9 (patch) | |
tree | e62c6ceffa62c8773e62aa82f35d1e2655a70959 /src/effects/gradients/SkSweepGradient.cpp | |
parent | c84b8335ee4fd864c30a4703afc643cf4b5010d9 (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/SkSweepGradient.cpp')
-rw-r--r-- | src/effects/gradients/SkSweepGradient.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp index 0ef957f3b4..7f504948fe 100644 --- a/src/effects/gradients/SkSweepGradient.cpp +++ b/src/effects/gradients/SkSweepGradient.cpp @@ -387,3 +387,58 @@ void SkSweepGradient::shadeSpan16(int x, int y, uint16_t* SK_RESTRICT dstC, } } +///////////////////////////////////////////////////////////////////// + +class GrGLSweepGradient : public GrGLGradientStage { + +public: + + GrGLSweepGradient(const GrProgramStageFactory& factory, + const GrCustomStage&) : INHERITED (factory) { } + virtual ~GrGLSweepGradient() { } + + 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 GrGLSweepGradient::emitFS(GrGLShaderBuilder* builder, + const char* outputColor, + const char* inputColor, + const char* samplerName) { + SkString t; + t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5", + builder->fSampleCoords.c_str(), builder->fSampleCoords.c_str()); + this->emitColorLookup(builder, t.c_str(), outputColor, samplerName); +} + +///////////////////////////////////////////////////////////////////// + +GrSweepGradient::GrSweepGradient(GrTexture* texture) + : INHERITED(texture) { + +} + +GrSweepGradient::GrSweepGradient(GrContext* ctx, const SkShader& shader, + GrSamplerState* sampler) + : INHERITED(ctx, shader, sampler) { +} + +GrSweepGradient::~GrSweepGradient() { + +} + +const GrProgramStageFactory& GrSweepGradient::getFactory() const { + return GrTProgramStageFactory<GrSweepGradient>::getInstance(); +} + |