Home | History | Annotate | Download | only in gradients
      1 /*
      2  * Copyright 2012 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkLinearGradient_DEFINED
      9 #define SkLinearGradient_DEFINED
     10 
     11 #include "SkGradientShaderPriv.h"
     12 
     13 class SkLinearGradient : public SkGradientShaderBase {
     14 public:
     15     SkLinearGradient(const SkPoint pts[2], const Descriptor&, const SkMatrix* localMatrix);
     16 
     17     virtual size_t contextSize() const SK_OVERRIDE;
     18 
     19     class LinearGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
     20     public:
     21         LinearGradientContext(const SkLinearGradient&, const ContextRec&);
     22         ~LinearGradientContext() {}
     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*, SkMatrix*, TileMode*) const SK_OVERRIDE;
     32     virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE;
     33     virtual bool asNewEffect(GrContext* context, const SkPaint& paint, const SkMatrix* localMatrix,
     34                              GrColor* grColor, GrEffectRef** grEffect) const SK_OVERRIDE;
     35 
     36     SK_TO_STRING_OVERRIDE()
     37     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLinearGradient)
     38 
     39 protected:
     40     SkLinearGradient(SkReadBuffer& buffer);
     41     virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
     42     virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
     43 
     44 private:
     45     typedef SkGradientShaderBase INHERITED;
     46     const SkPoint fStart;
     47     const SkPoint fEnd;
     48 };
     49 
     50 #endif
     51