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 "src/gpu/GrGeometryProcessor.h" 12 #include "src/gpu/GrProcessor.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 42 Attribute fInPosition; 43 Attribute fInColor; 44 Attribute fInShadowParams; 45 46 GR_DECLARE_GEOMETRY_PROCESSOR_TEST 47 48 typedef GrGeometryProcessor INHERITED; 49 }; 50 51 52 #endif 53