1/* 2 * Copyright 2017 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/************************************************************************************************** 9 *** This file was autogenerated from GrEllipseEffect.fp; do not modify. 10 **************************************************************************************************/ 11#ifndef GrEllipseEffect_DEFINED 12#define GrEllipseEffect_DEFINED 13#include "SkTypes.h" 14#if SK_SUPPORT_GPU 15 16#include "GrShaderCaps.h" 17#include "GrFragmentProcessor.h" 18#include "GrCoordTransform.h" 19class GrEllipseEffect : public GrFragmentProcessor { 20public: 21 GrClipEdgeType edgeType() const { return fEdgeType; } 22 SkPoint center() const { return fCenter; } 23 SkPoint radii() const { return fRadii; } 24 25 static std::unique_ptr<GrFragmentProcessor> Make(GrClipEdgeType edgeType, SkPoint center, 26 SkPoint radii, const GrShaderCaps& caps) { 27 // Small radii produce bad results on devices without full float. 28 if (!caps.floatIs32Bits() && (radii.fX < 0.5f || radii.fY < 0.5f)) { 29 return nullptr; 30 } 31 return std::unique_ptr<GrFragmentProcessor>(new GrEllipseEffect(edgeType, center, radii)); 32 } 33 GrEllipseEffect(const GrEllipseEffect& src); 34 std::unique_ptr<GrFragmentProcessor> clone() const override; 35 const char* name() const override { return "EllipseEffect"; } 36 37private: 38 GrEllipseEffect(GrClipEdgeType edgeType, SkPoint center, SkPoint radii) 39 : INHERITED(kGrEllipseEffect_ClassID, 40 (OptimizationFlags)kCompatibleWithCoverageAsAlpha_OptimizationFlag) 41 , fEdgeType(edgeType) 42 , fCenter(center) 43 , fRadii(radii) {} 44 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; 45 void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; 46 bool onIsEqual(const GrFragmentProcessor&) const override; 47 GR_DECLARE_FRAGMENT_PROCESSOR_TEST 48 GrClipEdgeType fEdgeType; 49 SkPoint fCenter; 50 SkPoint fRadii; 51 typedef GrFragmentProcessor INHERITED; 52}; 53#endif 54#endif 55