|
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: |
|
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 */ |
|
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 GrCrash("GrGLVertexEffect requires GrGLFullShaderBuilder* overload for emitCode()."); |
|
46 } |
|
47 |
|
48 private: |
|
49 typedef GrGLEffect INHERITED; |
|
50 }; |
|
51 |
|
52 #endif |