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 14class SkRadialGradient : public SkGradientShaderBase { 15public: 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 41protected: 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 46private: 47 friend class SkGradientShader; 48 typedef SkGradientShaderBase INHERITED; 49 const SkPoint fCenter; 50 const SkScalar fRadius; 51}; 52 53#endif 54