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
14class GrGLRRectShadowGeoProc;
15
16/**
17 * The output color of this effect is a coverage mask for a rrect shadow,
18 * assuming circular corner geometry.
19 */
20class GrRRectShadowGeoProc : public GrGeometryProcessor {
21public:
22    static sk_sp<GrGeometryProcessor> Make() {
23        return sk_sp<GrGeometryProcessor>(new GrRRectShadowGeoProc());
24    }
25
26    const char* name() const override { return "RRectShadow"; }
27
28    const Attribute* inPosition() const { return fInPosition; }
29    const Attribute* inColor() const { return fInColor; }
30    const Attribute* inShadowParams() const { return fInShadowParams; }
31    GrColor color() const { return fColor; }
32
33    void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override {}
34
35    GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override;
36
37private:
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