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                     const SkMatrix* localMatrix);
     18 
     19     virtual size_t contextSize() const SK_OVERRIDE;
     20 
     21     class SweepGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
     22     public:
     23         SweepGradientContext(const SkSweepGradient& shader, const ContextRec&);
     24 
     25         virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) SK_OVERRIDE;
     26         virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count) SK_OVERRIDE;
     27 
     28     private:
     29         typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
     30     };
     31 
     32     virtual BitmapType asABitmap(SkBitmap* bitmap,
     33                                  SkMatrix* matrix,
     34                                  TileMode* xy) const SK_OVERRIDE;
     35 
     36     virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE;
     37 
     38     virtual bool asNewEffect(GrContext*, const SkPaint&, const SkMatrix*, GrColor*, GrEffectRef**)
     39         const SK_OVERRIDE;
     40 
     41     SK_TO_STRING_OVERRIDE()
     42     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSweepGradient)
     43 
     44 protected:
     45     SkSweepGradient(SkReadBuffer& buffer);
     46     virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
     47     virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
     48 
     49 private:
     50     const SkPoint fCenter;
     51 
     52     typedef SkGradientShaderBase INHERITED;
     53 };
     54 
     55 #endif
     56