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