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 
14 class SkSweepGradient : public SkGradientShaderBase {
15 public:
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 
42 protected:
43     void flatten(SkWriteBuffer& buffer) const override;
44     Context* onCreateContext(const ContextRec&, void* storage) const override;
45 
46 private:
47     const SkPoint fCenter;
48 
49     friend class SkGradientShader;
50     typedef SkGradientShaderBase INHERITED;
51 };
52 
53 #endif
54