• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef GrGLVertexEffect_DEFINED
9 #define GrGLVertexEffect_DEFINED
10 
11 #include "GrGLEffect.h"
12 
13 /**
14  * If a GL effect needs a GrGLFullShaderBuilder* object to emit vertex code, then it must inherit
15  * from this class. Since paths don't have vertices, this class is only meant to be used internally
16  * by skia, for special cases.
17  */
18 class GrGLVertexEffect : public GrGLEffect {
19 public:
GrGLVertexEffect(const GrBackendEffectFactory & factory)20     GrGLVertexEffect(const GrBackendEffectFactory& factory)
21         : INHERITED(factory) { fIsVertexEffect = true; }
22 
23     /**
24      * This is similar to emitCode() in the base class, except it takes a full shader builder.
25      * This allows the effect subclass to emit vertex code.
26      */
27     virtual void emitCode(GrGLFullShaderBuilder* builder,
28                           const GrDrawEffect& drawEffect,
29                           EffectKey key,
30                           const char* outputColor,
31                           const char* inputColor,
32                           const TransformedCoordsArray& coords,
33                           const TextureSamplerArray& samplers) = 0;
34 
35     /**
36      * Provide a default override for base class's emitCode() function.
37      */
emitCode(GrGLShaderBuilder * builder,const GrDrawEffect & drawEffect,EffectKey key,const char * outputColor,const char * inputColor,const TransformedCoordsArray & coords,const TextureSamplerArray & samplers)38     virtual void emitCode(GrGLShaderBuilder* builder,
39                           const GrDrawEffect& drawEffect,
40                           EffectKey key,
41                           const char* outputColor,
42                           const char* inputColor,
43                           const TransformedCoordsArray& coords,
44                           const TextureSamplerArray& samplers) SK_OVERRIDE {
45         SkFAIL("GrGLVertexEffect requires GrGLFullShaderBuilder* overload for emitCode().");
46     }
47 
48 private:
49     typedef GrGLEffect INHERITED;
50 };
51 
52 #endif
53