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 14class 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 */ 21class GrCustomCoordsTextureEffect : public GrGeometryProcessor { 22public: 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 39private: 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 53