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