blob: cbc96de30bb029b161da971d45db405b9730413d [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/* libs/graphics/animator/SkDisplayable.h
2**
3** Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9** http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#ifndef SkDisplayable_DEFINED
19#define SkDisplayable_DEFINED
20
21#include "SkOperand.h"
22#ifdef SK_DEBUG
23#include "SkString.h"
24#endif
25#include "SkIntArray.h"
26#include "SkRect.h"
27#include "SkTDArray.h"
28
29class SkAnimateMaker;
30class SkApply;
31class SkEvents;
32struct SkMemberInfo;
33struct SkScriptValue;
34class SkOpArray; // compiled scripting experiment
35union SkOperand2; // compiled scripting experiment
36
37class SkDisplayable {
38public:
39#ifdef SK_DEBUG
40 SkDisplayable();
41#endif
42 virtual ~SkDisplayable();
43 virtual bool add(SkAnimateMaker& , SkDisplayable* child);
44 virtual bool canContainDependents() const;
45 virtual bool childrenNeedDisposing() const;
46 virtual void clearBounder();
47 virtual bool contains(SkDisplayable* );
48 virtual SkDisplayable* contains(const SkString& );
49 virtual SkDisplayable* deepCopy(SkAnimateMaker* );
50 virtual void dirty();
51#ifdef SK_DUMP_ENABLED
52 virtual void dump(SkAnimateMaker* );
53 void dumpAttrs(SkAnimateMaker* );
54 void dumpBase(SkAnimateMaker* );
55 void dumpChildren(SkAnimateMaker* maker, bool closedAngle = false );
56 void dumpEnd(SkAnimateMaker* );
57 virtual void dumpEvents();
58#endif
59 virtual bool enable( SkAnimateMaker& );
60 virtual void enableBounder();
61 virtual void executeFunction(SkDisplayable* , int functionIndex,
62 SkTDArray<SkScriptValue>& , SkDisplayTypes , SkScriptValue* );
63 void executeFunction(SkDisplayable* , const SkMemberInfo* ,
64 SkTypedArray* , SkScriptValue* );
65 virtual void executeFunction2(SkDisplayable* , int functionIndex,
66 SkOpArray* params , SkDisplayTypes , SkOperand2* ); // compiled scripting experiment
67 virtual void getBounds(SkRect* );
68 virtual const SkFunctionParamType* getFunctionsParameters();
69 virtual const SkMemberInfo* getMember(int index);
70 virtual const SkMemberInfo* getMember(const char name[]);
71 const SkFunctionParamType* getParameters(const SkMemberInfo* info,
72 int* paramCount);
73 virtual SkDisplayable* getParent() const;
74 virtual bool getProperty(int index, SkScriptValue* value) const;
75 virtual bool getProperty2(int index, SkOperand2* value) const; // compiled scripting experiment
76 virtual SkDisplayTypes getType() const;
77 virtual bool hasEnable() const;
78 bool isAnimate() const {
79 SkDisplayTypes type = getType();
80 return type == SkType_Animate || type == SkType_Set; }
81 bool isApply() const { return getType() == SkType_Apply; }
82 bool isColor() const { return getType() == SkType_Color; }
83 virtual bool isDrawable() const;
84 bool isGroup() const { return getType() == SkType_Group ||
85 getType() == SkType_Save || getType() == SkType_DrawTo ||
86 getType() == SkType_SaveLayer; }
87 bool isMatrix() const { return getType() == SkType_Matrix; }
88 virtual bool isPaint() const { return getType() == SkType_Paint; }
89 virtual bool isPath() const { return false; }
90 bool isPost() const { return getType() == SkType_Post; }
91 virtual void onEndElement(SkAnimateMaker& );
92 virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
93 virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
94 virtual void setChildHasID();
95 virtual bool setParent(SkDisplayable* );
96 virtual bool setProperty(int index, SkScriptValue& );
97 void setReference(const SkMemberInfo* info, SkDisplayable* ref);
98#ifdef SK_DEBUG
99 bool isData() const { return getType() == SkType_Data; };
100 bool isEvent() const { return getType() == SkType_Event; }
101 virtual bool isMatrixPart() const { return false; }
102 bool isPatch() const { return getType() == SkType_3D_Patch; }
103 virtual bool isPaintPart() const { return false; }
104 virtual bool isPathPart() const { return false; }
105 virtual void validate();
106 SkString _id;
107 const char* id;
108// static int fAllocationCount;
109 static SkTDDisplayableArray fAllocations;
110#else
111 void validate() {}
112#endif
113#ifdef SK_DUMP_ENABLED
114private:
115 void dumpValues(const SkMemberInfo* info, SkDisplayTypes type, SkOperand op, SkOperand blankOp,
116 SkOperand op2, SkOperand blankOp2);
117#endif
118};
119
120#endif // SkDisplayable_DEFINED