Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / gpu / effects / GrCustomCoordsTextureEffect.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 GrCustomCoordsTextureEffect_DEFINED
9 #define GrCustomCoordsTextureEffect_DEFINED
10
11 #include "GrProcessor.h"
12 #include "GrGeometryProcessor.h"
13
14 class GrGLCustomCoordsTextureEffect;
15
16 /**
17  * The output color of this effect is a modulation of the input color and a sample from a texture.
18  * It allows explicit specification of the filtering and wrap modes (GrTextureParams). The input
19  * coords are a custom attribute.
20  */
21 class GrCustomCoordsTextureEffect : public GrGeometryProcessor {
22 public:
23     static GrGeometryProcessor* Create(GrTexture* tex, const GrTextureParams& p) {
24         return SkNEW_ARGS(GrCustomCoordsTextureEffect, (tex, p));
25     }
26
27     virtual ~GrCustomCoordsTextureEffect() {}
28
29     static const char* Name() { return "Texture"; }
30
31     virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE;
32
33     const GrShaderVar& inTextureCoords() const { return fInTextureCoords; }
34
35     typedef GrGLCustomCoordsTextureEffect GLProcessor;
36
37     virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERRIDE;
38
39 private:
40     GrCustomCoordsTextureEffect(GrTexture* texture, const GrTextureParams& params);
41
42     virtual bool onIsEqual(const GrProcessor& other) const SK_OVERRIDE;
43
44     GrTextureAccess    fTextureAccess;
45     const GrShaderVar& fInTextureCoords;
46
47     GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
48
49     typedef GrGeometryProcessor INHERITED;
50 };
51
52 #endif