1 2/* 3 * Copyright 2006 The Android Open Source Project 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 10#ifndef SkDrawGradient_DEFINED 11#define SkDrawGradient_DEFINED 12 13#include "SkDrawColor.h" 14#include "SkDrawShader.h" 15#include "SkIntArray.h" 16 17class SkUnitMapper; 18 19class SkDrawGradient : public SkDrawShader { 20 DECLARE_PRIVATE_MEMBER_INFO(DrawGradient); 21 SkDrawGradient(); 22 virtual ~SkDrawGradient(); 23 virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; 24#ifdef SK_DUMP_ENABLED 25 virtual void dumpRest(SkAnimateMaker*); 26#endif 27 virtual void onEndElement(SkAnimateMaker& ); 28protected: 29 SkTDScalarArray offsets; 30 SkString unitMapper; 31 SkTDColorArray fColors; 32 SkTDDrawColorArray fDrawColors; 33 SkUnitMapper* fUnitMapper; 34 int addPrelude(); 35private: 36 typedef SkDrawShader INHERITED; 37}; 38 39class SkDrawLinearGradient : public SkDrawGradient { 40 DECLARE_MEMBER_INFO(DrawLinearGradient); 41 SkDrawLinearGradient(); 42 virtual void onEndElement(SkAnimateMaker& ); 43#ifdef SK_DUMP_ENABLED 44 virtual void dump(SkAnimateMaker*); 45#endif 46 virtual SkShader* getShader(); 47protected: 48 SkTDScalarArray points; 49private: 50 typedef SkDrawGradient INHERITED; 51}; 52 53class SkDrawRadialGradient : public SkDrawGradient { 54 DECLARE_MEMBER_INFO(DrawRadialGradient); 55 SkDrawRadialGradient(); 56#ifdef SK_DUMP_ENABLED 57 virtual void dump(SkAnimateMaker*); 58#endif 59 virtual SkShader* getShader(); 60protected: 61 SkPoint center; 62 SkScalar radius; 63private: 64 typedef SkDrawGradient INHERITED; 65}; 66 67#endif // SkDrawGradient_DEFINED 68