Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / gpu / effects / GrVertexEffect.h
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 GrVertexEffect_DEFINED
9 #define GrVertexEffect_DEFINED
10
11 #include "GrEffect.h"
12
13 /**
14  * If an effect needs specialized vertex shader code, then it must inherit from this class.
15  * Otherwise it won't be able to add vertex attribs, and it might be given a vertexless shader
16  * program in emitCode.
17  */
18 class GrVertexEffect : public GrEffect {
19 public:
20     GrVertexEffect() { fHasVertexCode = true; }
21
22 protected:
23     /**
24      * Subclasses call this from their constructor to register vertex attributes (at most
25      * kMaxVertexAttribs). This must only be called from the constructor because GrEffects are
26      * immutable.
27      */
28     void addVertexAttrib(GrSLType type) {
29         SkASSERT(fVertexAttribTypes.count() < kMaxVertexAttribs);
30         fVertexAttribTypes.push_back(type);
31     }
32
33 private:
34     typedef GrEffect INHERITED;
35 };
36
37 #endif