Home | History | Annotate | Download | only in gradients
      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