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 17 class SkUnitMapper; 18 19 class 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& ); 28 protected: 29 SkTDScalarArray offsets; 30 SkString unitMapper; 31 SkTDColorArray fColors; 32 SkTDDrawColorArray fDrawColors; 33 SkUnitMapper* fUnitMapper; 34 int addPrelude(); 35 private: 36 typedef SkDrawShader INHERITED; 37 }; 38 39 class 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(); 47 protected: 48 SkTDScalarArray points; 49 private: 50 typedef SkDrawGradient INHERITED; 51 }; 52 53 class 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(); 60 protected: 61 SkPoint center; 62 SkScalar radius; 63 private: 64 typedef SkDrawGradient INHERITED; 65 }; 66 67 #endif // SkDrawGradient_DEFINED 68