1 /* 2 * Copyright 2016 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 GrShadowGeoProc_DEFINED 9 #define GrShadowGeoProc_DEFINED 10 11 #include "GrProcessor.h" 12 #include "GrGeometryProcessor.h" 13 14 class GrGLRRectShadowGeoProc; 15 16 /** 17 * The output color of this effect is a coverage mask for a rrect shadow, 18 * assuming circular corner geometry. 19 */ 20 class GrRRectShadowGeoProc : public GrGeometryProcessor { 21 public: Make()22 static sk_sp<GrGeometryProcessor> Make() { 23 return sk_sp<GrGeometryProcessor>(new GrRRectShadowGeoProc()); 24 } 25 name()26 const char* name() const override { return "RRectShadow"; } 27 inPosition()28 const Attribute* inPosition() const { return fInPosition; } inColor()29 const Attribute* inColor() const { return fInColor; } inShadowParams()30 const Attribute* inShadowParams() const { return fInShadowParams; } color()31 GrColor color() const { return fColor; } 32 getGLSLProcessorKey(const GrShaderCaps & caps,GrProcessorKeyBuilder * b)33 void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override {} 34 35 GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override; 36 37 private: 38 GrRRectShadowGeoProc(); 39 40 GrColor fColor; 41 const Attribute* fInPosition; 42 const Attribute* fInColor; 43 const Attribute* fInShadowParams; 44 45 GR_DECLARE_GEOMETRY_PROCESSOR_TEST 46 47 typedef GrGeometryProcessor INHERITED; 48 }; 49 50 51 #endif 52