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 SkDisplayTypes_DEFINED 11#define SkDisplayTypes_DEFINED 12 13#include "SkDisplayable.h" 14#include "SkMemberInfo.h" 15#include "SkTypedArray.h" 16 17class SkOpArray; // compiled script experiment 18 19 20class SkDisplayDepend : public SkDisplayable { 21public: 22 virtual bool canContainDependents() const; 23 void addDependent(SkDisplayable* displayable) { 24 if (fDependents.find(displayable) < 0) 25 *fDependents.append() = displayable; 26 } 27 virtual void dirty(); 28private: 29 SkTDDisplayableArray fDependents; 30 typedef SkDisplayable INHERITED; 31}; 32 33class SkDisplayBoolean : public SkDisplayDepend { 34 DECLARE_DISPLAY_MEMBER_INFO(Boolean); 35 SkDisplayBoolean(); 36#ifdef SK_DUMP_ENABLED 37 virtual void dump(SkAnimateMaker* ); 38#endif 39 SkBool value; 40 friend class SkAnimatorScript; 41 friend class SkAnimatorScript_Box; 42 friend class SkAnimatorScript_Unbox; 43 typedef SkDisplayDepend INHERITED; 44}; 45 46class SkDisplayInt : public SkDisplayDepend { 47 DECLARE_DISPLAY_MEMBER_INFO(Int); 48 SkDisplayInt(); 49#ifdef SK_DUMP_ENABLED 50 virtual void dump(SkAnimateMaker* ); 51#endif 52private: 53 int32_t value; 54 friend class SkAnimatorScript; 55 friend class SkAnimatorScript_Box; 56 friend class SkAnimatorScript_Unbox; 57 typedef SkDisplayDepend INHERITED; 58}; 59 60class SkDisplayFloat : public SkDisplayDepend { 61 DECLARE_DISPLAY_MEMBER_INFO(Float); 62 SkDisplayFloat(); 63#ifdef SK_DUMP_ENABLED 64 virtual void dump(SkAnimateMaker* ); 65#endif 66private: 67 SkScalar value; 68 friend class SkAnimatorScript; 69 friend class SkAnimatorScript_Box; 70 friend class SkAnimatorScript_Unbox; 71 typedef SkDisplayDepend INHERITED; 72}; 73 74class SkDisplayString : public SkDisplayDepend { 75 DECLARE_DISPLAY_MEMBER_INFO(String); 76 SkDisplayString(); 77 SkDisplayString(SkString& ); 78 virtual void executeFunction(SkDisplayable* , int index, 79 SkTDArray<SkScriptValue>& parameters, SkDisplayTypes type, 80 SkScriptValue* ); 81 virtual const SkFunctionParamType* getFunctionsParameters(); 82 virtual bool getProperty(int index, SkScriptValue* ) const; 83 SkString value; 84private: 85 static const SkFunctionParamType fFunctionParameters[]; 86}; 87 88class SkDisplayArray : public SkDisplayDepend { 89 DECLARE_DISPLAY_MEMBER_INFO(Array); 90 SkDisplayArray(); 91 SkDisplayArray(SkTypedArray& ); 92 SkDisplayArray(SkOpArray& ); // compiled script experiment 93 virtual ~SkDisplayArray(); 94 virtual bool getProperty(int index, SkScriptValue* ) const; 95private: 96 SkTypedArray values; 97 friend class SkAnimator; 98 friend class SkAnimatorScript; 99 friend class SkAnimatorScript2; 100 friend class SkAnimatorScript_Unbox; 101 friend class SkDisplayable; 102 friend struct SkMemberInfo; 103 friend class SkScriptEngine; 104}; 105 106#endif // SkDisplayTypes_DEFINED 107