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 SkRadialGradient_DEFINED
     10 #define SkRadialGradient_DEFINED
     11 
     12 #include "SkGradientShaderPriv.h"
     13 
     14 class SkRadialGradient : public SkGradientShaderBase {
     15 public:
     16     SkRadialGradient(const SkPoint& center, SkScalar radius, const Descriptor&);
     17 
     18     virtual size_t contextSize() const SK_OVERRIDE;
     19 
     20     class RadialGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
     21     public:
     22         RadialGradientContext(const SkRadialGradient&, const ContextRec&);
     23 
     24         virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) SK_OVERRIDE;
     25         virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count) SK_OVERRIDE;
     26 
     27     private:
     28         typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
     29     };
     30 
     31     virtual BitmapType asABitmap(SkBitmap* bitmap,
     32                                  SkMatrix* matrix,
     33                                  TileMode* xy) const SK_OVERRIDE;
     34     virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE;
     35     virtual bool asFragmentProcessor(GrContext*, const SkPaint&, const SkMatrix*, GrColor*,
     36                                      GrFragmentProcessor**) const SK_OVERRIDE;
     37 
     38     SK_TO_STRING_OVERRIDE()
     39     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkRadialGradient)
     40 
     41 protected:
     42     SkRadialGradient(SkReadBuffer& buffer);
     43     virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
     44     virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
     45 
     46 private:
     47     friend class SkGradientShader;
     48     typedef SkGradientShaderBase INHERITED;
     49     const SkPoint fCenter;
     50     const SkScalar fRadius;
     51 };
     52 
     53 #endif
     54