diff options
Diffstat (limited to 'src/gpu/gl/GrGLVertexEffect.h')
-rw-r--r-- | src/gpu/gl/GrGLVertexEffect.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/gpu/gl/GrGLVertexEffect.h b/src/gpu/gl/GrGLVertexEffect.h new file mode 100644 index 0000000000..1b4c7444b4 --- /dev/null +++ b/src/gpu/gl/GrGLVertexEffect.h @@ -0,0 +1,52 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLVertexEffect_DEFINED +#define GrGLVertexEffect_DEFINED + +#include "GrGLEffect.h" + +/** + * If a GL effect needs a GrGLFullShaderBuilder* object to emit vertex code, then it must inherit + * from this class. Since paths don't have vertices, this class is only meant to be used internally + * by skia, for special cases. + */ +class GrGLVertexEffect : public GrGLEffect { +public: + GrGLVertexEffect(const GrBackendEffectFactory& factory) + : INHERITED(factory) { fIsVertexEffect = true; } + + /** + * This is similar to emitCode() in the base class, except it takes a full shader builder. + * This allows the effect subclass to emit vertex code. + */ + virtual void emitCode(GrGLFullShaderBuilder* builder, + const GrDrawEffect& drawEffect, + EffectKey key, + const char* outputColor, + const char* inputColor, + const TransformedCoordsArray& coords, + const TextureSamplerArray& samplers) = 0; + + /** + * Provide a default override for base class's emitCode() function. + */ + virtual void emitCode(GrGLShaderBuilder* builder, + const GrDrawEffect& drawEffect, + EffectKey key, + const char* outputColor, + const char* inputColor, + const TransformedCoordsArray& coords, + const TextureSamplerArray& samplers) SK_OVERRIDE { + GrCrash("GrGLVertexEffect requires GrGLFullShaderBuilder* overload for emitCode()."); + } + +private: + typedef GrGLEffect INHERITED; +}; + +#endif |