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(const SkMatrix & localMatrix)22 static sk_sp<GrGeometryProcessor> Make(const SkMatrix& localMatrix) { 23 return sk_sp<GrGeometryProcessor>(new GrRRectShadowGeoProc(localMatrix)); 24 } 25 ~GrRRectShadowGeoProc()26 ~GrRRectShadowGeoProc() override {} 27 name()28 const char* name() const override { return "RRectShadow"; } 29 inPosition()30 const Attribute* inPosition() const { return fInPosition; } inColor()31 const Attribute* inColor() const { return fInColor; } inShadowParams()32 const Attribute* inShadowParams() const { return fInShadowParams; } color()33 GrColor color() const { return fColor; } localMatrix()34 const SkMatrix& localMatrix() const { return fLocalMatrix; } 35 36 void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override; 37 38 GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override; 39 40 private: 41 GrRRectShadowGeoProc(const SkMatrix& localMatrix); 42 43 GrColor fColor; 44 SkMatrix fLocalMatrix; 45 const Attribute* fInPosition; 46 const Attribute* fInColor; 47 const Attribute* fInShadowParams; 48 49 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 50 51 typedef GrGeometryProcessor INHERITED; 52 }; 53 54 55 #endif 56