blob: 0b4baf49b8b80867d17dd7381eb2e6538a095832 [file] [log] [blame]
Jim Van Verthc5903412016-11-17 15:27:09 -05001/*
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:
Brian Salomon05969092017-07-13 11:20:51 -040022 static sk_sp<GrGeometryProcessor> Make() {
23 return sk_sp<GrGeometryProcessor>(new GrRRectShadowGeoProc());
Jim Van Verthc5903412016-11-17 15:27:09 -050024 }
25
Jim Van Verthc5903412016-11-17 15:27:09 -050026 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; }
Jim Van Verthc5903412016-11-17 15:27:09 -050032
Brian Salomon05969092017-07-13 11:20:51 -040033 void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override {}
Jim Van Verthc5903412016-11-17 15:27:09 -050034
Brian Salomon94efbf52016-11-29 13:43:05 -050035 GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override;
Jim Van Verthc5903412016-11-17 15:27:09 -050036
37private:
Brian Salomon05969092017-07-13 11:20:51 -040038 GrRRectShadowGeoProc();
Jim Van Verthc5903412016-11-17 15:27:09 -050039
40 GrColor fColor;
Jim Van Verthc5903412016-11-17 15:27:09 -050041 const Attribute* fInPosition;
42 const Attribute* fInColor;
43 const Attribute* fInShadowParams;
44
Brian Salomon0c26a9d2017-07-06 10:09:38 -040045 GR_DECLARE_GEOMETRY_PROCESSOR_TEST
Jim Van Verthc5903412016-11-17 15:27:09 -050046
47 typedef GrGeometryProcessor INHERITED;
48};
49
50
51#endif