1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkDisplayable_DEFINED 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkDisplayable_DEFINED 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkOperand.h" 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkString.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkIntArray.h" 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRect.h" 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTDArray.h" 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkAnimateMaker; 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkApply; 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkEvents; 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct SkMemberInfo; 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct SkScriptValue; 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkOpArray; // compiled scripting experiment 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comunion SkOperand2; // compiled scripting experiment 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkDisplayable { 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic: 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDisplayable(); 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual ~SkDisplayable(); 351d3c411f5e4d2ad31bc92b3a85957004329ac00dtfarina@chromium.org virtual bool addChild(SkAnimateMaker& , SkDisplayable* child); 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool canContainDependents() const; 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool childrenNeedDisposing() const; 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void clearBounder(); 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool contains(SkDisplayable* ); 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual SkDisplayable* contains(const SkString& ); 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void dirty(); 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void dump(SkAnimateMaker* ); 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void dumpAttrs(SkAnimateMaker* ); 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void dumpBase(SkAnimateMaker* ); 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void dumpChildren(SkAnimateMaker* maker, bool closedAngle = false ); 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void dumpEnd(SkAnimateMaker* ); 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void dumpEvents(); 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool enable( SkAnimateMaker& ); 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void enableBounder(); 53d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com virtual void executeFunction(SkDisplayable* , int functionIndex, 54d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com SkTDArray<SkScriptValue>& , SkDisplayTypes , SkScriptValue* ); 55d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com void executeFunction(SkDisplayable* , const SkMemberInfo* , 56d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com SkTypedArray* , SkScriptValue* ); 57d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com virtual void executeFunction2(SkDisplayable* , int functionIndex, 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkOpArray* params , SkDisplayTypes , SkOperand2* ); // compiled scripting experiment 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void getBounds(SkRect* ); 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual const SkFunctionParamType* getFunctionsParameters(); 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual const SkMemberInfo* getMember(int index); 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual const SkMemberInfo* getMember(const char name[]); 63d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com const SkFunctionParamType* getParameters(const SkMemberInfo* info, 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int* paramCount); 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual SkDisplayable* getParent() const; 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool getProperty(int index, SkScriptValue* value) const; 678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool getProperty2(int index, SkOperand2* value) const; // compiled scripting experiment 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual SkDisplayTypes getType() const; 698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool hasEnable() const; 70d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com bool isAnimate() const { 71d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com SkDisplayTypes type = getType(); 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return type == SkType_Animate || type == SkType_Set; } 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isApply() const { return getType() == SkType_Apply; } 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isColor() const { return getType() == SkType_Color; } 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool isDrawable() const; 76d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com bool isGroup() const { return getType() == SkType_Group || 778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com getType() == SkType_Save || getType() == SkType_DrawTo || 788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com getType() == SkType_SaveLayer; } 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isMatrix() const { return getType() == SkType_Matrix; } 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool isPaint() const { return getType() == SkType_Paint; } 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool isPath() const { return false; } 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isPost() const { return getType() == SkType_Post; } 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void onEndElement(SkAnimateMaker& ); 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual const SkMemberInfo* preferredChild(SkDisplayTypes type); 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void setChildHasID(); 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool setParent(SkDisplayable* ); 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool setProperty(int index, SkScriptValue& ); 898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void setReference(const SkMemberInfo* info, SkDisplayable* ref); 908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG 918d0b5770f8fcfdeb8ad9808e58c49116f14b6190reed@google.com bool isDataInput() const { return getType() == SkType_DataInput; }; 928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isEvent() const { return getType() == SkType_Event; } 938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool isMatrixPart() const { return false; } 948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isPatch() const { return getType() == SkType_3D_Patch; } 958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool isPaintPart() const { return false; } 968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool isPathPart() const { return false; } 978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void validate(); 988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString _id; 998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const char* id; 1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// static int fAllocationCount; 1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com static SkTDDisplayableArray fAllocations; 1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else 1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void validate() {} 1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void dumpValues(const SkMemberInfo* info, SkDisplayTypes type, SkOperand op, SkOperand blankOp, 1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkOperand op2, SkOperand blankOp2); 1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 1108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkDisplayable_DEFINED 113