1
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9#ifndef SkSweepGradient_DEFINED
10#define SkSweepGradient_DEFINED
11
12#include "SkGradientShaderPriv.h"
13
14class SkSweepGradient : public SkGradientShaderBase {
15public:
16    SkSweepGradient(SkScalar cx, SkScalar cy, const Descriptor&);
17
18    size_t contextSize(const ContextRec&) const override;
19
20    class SweepGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
21    public:
22        SweepGradientContext(const SkSweepGradient& shader, const ContextRec&);
23
24        void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
25
26    private:
27        typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
28    };
29
30    GradientType asAGradient(GradientInfo* info) const override;
31
32#if SK_SUPPORT_GPU
33    const GrFragmentProcessor* asFragmentProcessor(GrContext*,
34                                                   const SkMatrix& viewM,
35                                                   const SkMatrix*,
36                                                   SkFilterQuality) const override;
37#endif
38
39    SK_TO_STRING_OVERRIDE()
40    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSweepGradient)
41
42protected:
43    void flatten(SkWriteBuffer& buffer) const override;
44    Context* onCreateContext(const ContextRec&, void* storage) const override;
45
46private:
47    const SkPoint fCenter;
48
49    friend class SkGradientShader;
50    typedef SkGradientShaderBase INHERITED;
51};
52
53#endif
54