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