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