| |
| /* |
| * Copyright 2006 The Android Open Source Project |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| #ifndef SkDisplayable_DEFINED |
| #define SkDisplayable_DEFINED |
| |
| #include "SkOperand.h" |
| #ifdef SK_DEBUG |
| #include "SkString.h" |
| #endif |
| #include "SkIntArray.h" |
| #include "SkRect.h" |
| #include "SkTDArray.h" |
| |
| class SkAnimateMaker; |
| class SkApply; |
| class SkEvents; |
| struct SkMemberInfo; |
| struct SkScriptValue; |
| class SkOpArray; // compiled scripting experiment |
| union SkOperand2; // compiled scripting experiment |
| |
| class SkDisplayable { |
| public: |
| #ifdef SK_DEBUG |
| SkDisplayable(); |
| #endif |
| virtual ~SkDisplayable(); |
| virtual bool addChild(SkAnimateMaker& , SkDisplayable* child); |
| virtual bool canContainDependents() const; |
| virtual bool childrenNeedDisposing() const; |
| virtual void clearBounder(); |
| virtual bool contains(SkDisplayable* ); |
| virtual SkDisplayable* contains(const SkString& ); |
| virtual SkDisplayable* deepCopy(SkAnimateMaker* ); |
| virtual void dirty(); |
| #ifdef SK_DUMP_ENABLED |
| virtual void dump(SkAnimateMaker* ); |
| void dumpAttrs(SkAnimateMaker* ); |
| void dumpBase(SkAnimateMaker* ); |
| void dumpChildren(SkAnimateMaker* maker, bool closedAngle = false ); |
| void dumpEnd(SkAnimateMaker* ); |
| virtual void dumpEvents(); |
| #endif |
| virtual bool enable( SkAnimateMaker& ); |
| virtual void enableBounder(); |
| virtual void executeFunction(SkDisplayable* , int functionIndex, |
| SkTDArray<SkScriptValue>& , SkDisplayTypes , SkScriptValue* ); |
| void executeFunction(SkDisplayable* , const SkMemberInfo* , |
| SkTypedArray* , SkScriptValue* ); |
| virtual void executeFunction2(SkDisplayable* , int functionIndex, |
| SkOpArray* params , SkDisplayTypes , SkOperand2* ); // compiled scripting experiment |
| virtual void getBounds(SkRect* ); |
| virtual const SkFunctionParamType* getFunctionsParameters(); |
| virtual const SkMemberInfo* getMember(int index); |
| virtual const SkMemberInfo* getMember(const char name[]); |
| const SkFunctionParamType* getParameters(const SkMemberInfo* info, |
| int* paramCount); |
| virtual SkDisplayable* getParent() const; |
| virtual bool getProperty(int index, SkScriptValue* value) const; |
| virtual bool getProperty2(int index, SkOperand2* value) const; // compiled scripting experiment |
| virtual SkDisplayTypes getType() const; |
| virtual bool hasEnable() const; |
| bool isAnimate() const { |
| SkDisplayTypes type = getType(); |
| return type == SkType_Animate || type == SkType_Set; } |
| bool isApply() const { return getType() == SkType_Apply; } |
| bool isColor() const { return getType() == SkType_Color; } |
| virtual bool isDrawable() const; |
| bool isGroup() const { return getType() == SkType_Group || |
| getType() == SkType_Save || getType() == SkType_DrawTo || |
| getType() == SkType_SaveLayer; } |
| bool isMatrix() const { return getType() == SkType_Matrix; } |
| virtual bool isPaint() const { return getType() == SkType_Paint; } |
| virtual bool isPath() const { return false; } |
| bool isPost() const { return getType() == SkType_Post; } |
| virtual void onEndElement(SkAnimateMaker& ); |
| virtual const SkMemberInfo* preferredChild(SkDisplayTypes type); |
| virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); |
| virtual void setChildHasID(); |
| virtual bool setParent(SkDisplayable* ); |
| virtual bool setProperty(int index, SkScriptValue& ); |
| void setReference(const SkMemberInfo* info, SkDisplayable* ref); |
| #ifdef SK_DEBUG |
| bool isDataInput() const { return getType() == SkType_DataInput; }; |
| bool isEvent() const { return getType() == SkType_Event; } |
| virtual bool isMatrixPart() const { return false; } |
| bool isPatch() const { return getType() == SkType_3D_Patch; } |
| virtual bool isPaintPart() const { return false; } |
| virtual bool isPathPart() const { return false; } |
| virtual void validate(); |
| SkString _id; |
| const char* id; |
| // static int fAllocationCount; |
| static SkTDDisplayableArray fAllocations; |
| #else |
| void validate() {} |
| #endif |
| #ifdef SK_DUMP_ENABLED |
| private: |
| void dumpValues(const SkMemberInfo* info, SkDisplayTypes type, SkOperand op, SkOperand blankOp, |
| SkOperand op2, SkOperand blankOp2); |
| #endif |
| }; |
| |
| #endif // SkDisplayable_DEFINED |