Home | History | Annotate | Download | only in animator
      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 SkDisplayable_DEFINED
     11 #define SkDisplayable_DEFINED
     12 
     13 #include "SkOperand.h"
     14 #ifdef SK_DEBUG
     15 #include "SkString.h"
     16 #endif
     17 #include "SkIntArray.h"
     18 #include "SkRect.h"
     19 #include "SkTDArray.h"
     20 
     21 class SkAnimateMaker;
     22 class SkApply;
     23 class SkEvents;
     24 struct SkMemberInfo;
     25 struct SkScriptValue;
     26 class SkOpArray; // compiled scripting experiment
     27 union SkOperand2; // compiled scripting experiment
     28 
     29 class SkDisplayable {
     30 public:
     31 #ifdef SK_DEBUG
     32     SkDisplayable();
     33 #endif
     34     virtual ~SkDisplayable();
     35     virtual bool addChild(SkAnimateMaker& , SkDisplayable* child);
     36     virtual bool canContainDependents() const;
     37     virtual bool childrenNeedDisposing() const;
     38     virtual void clearBounder();
     39     virtual bool contains(SkDisplayable* );
     40     virtual SkDisplayable* contains(const SkString& );
     41     virtual SkDisplayable* deepCopy(SkAnimateMaker* );
     42     virtual void dirty();
     43 #ifdef SK_DUMP_ENABLED
     44     virtual void dump(SkAnimateMaker* );
     45     void dumpAttrs(SkAnimateMaker* );
     46     void dumpBase(SkAnimateMaker* );
     47     void dumpChildren(SkAnimateMaker* maker, bool closedAngle = false );
     48     void dumpEnd(SkAnimateMaker* );
     49     virtual void dumpEvents();
     50 #endif
     51     virtual bool enable( SkAnimateMaker& );
     52     virtual void enableBounder();
     53     virtual void executeFunction(SkDisplayable* , int functionIndex,
     54         SkTDArray<SkScriptValue>& , SkDisplayTypes , SkScriptValue* );
     55     void executeFunction(SkDisplayable* , const SkMemberInfo* ,
     56         SkTypedArray* , SkScriptValue* );
     57     virtual void executeFunction2(SkDisplayable* , int functionIndex,
     58         SkOpArray* params , SkDisplayTypes , SkOperand2* ); // compiled scripting experiment
     59     virtual void getBounds(SkRect* );
     60     virtual const SkFunctionParamType* getFunctionsParameters();
     61     virtual const SkMemberInfo* getMember(int index);
     62     virtual const SkMemberInfo* getMember(const char name[]);
     63     const SkFunctionParamType* getParameters(const SkMemberInfo* info,
     64         int* paramCount);
     65     virtual SkDisplayable* getParent() const;
     66     virtual bool getProperty(int index, SkScriptValue* value) const;
     67     virtual bool getProperty2(int index, SkOperand2* value) const;    // compiled scripting experiment
     68     virtual SkDisplayTypes getType() const;
     69     virtual bool hasEnable() const;
     70     bool isAnimate() const {
     71         SkDisplayTypes type = getType();
     72         return type == SkType_Animate || type == SkType_Set; }
     73     bool isApply() const { return getType() == SkType_Apply; }
     74     bool isColor() const { return getType() == SkType_Color; }
     75     virtual bool isDrawable() const;
     76     bool isGroup() const { return getType() == SkType_Group ||
     77         getType() == SkType_Save || getType() == SkType_DrawTo ||
     78         getType() == SkType_SaveLayer; }
     79     bool isMatrix() const { return getType() == SkType_Matrix; }
     80     virtual bool isPaint() const { return getType() == SkType_Paint; }
     81     virtual bool isPath() const { return false; }
     82     bool isPost() const { return getType() == SkType_Post; }
     83     virtual void onEndElement(SkAnimateMaker& );
     84     virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
     85     virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
     86     virtual void setChildHasID();
     87     virtual bool setParent(SkDisplayable* );
     88     virtual bool setProperty(int index, SkScriptValue& );
     89     void setReference(const SkMemberInfo* info, SkDisplayable* ref);
     90 #ifdef SK_DEBUG
     91     bool isDataInput() const { return getType() == SkType_DataInput; };
     92     bool isEvent() const { return getType() == SkType_Event; }
     93     virtual bool isMatrixPart() const { return false; }
     94     bool isPatch() const { return getType() == SkType_3D_Patch; }
     95     virtual bool isPaintPart() const { return false; }
     96     virtual bool isPathPart() const { return false; }
     97     virtual void validate();
     98     SkString _id;
     99     const char* id;
    100 //  static int fAllocationCount;
    101     static SkTDDisplayableArray fAllocations;
    102 #else
    103     void validate() {}
    104 #endif
    105 #ifdef SK_DUMP_ENABLED
    106 private:
    107     void dumpValues(const SkMemberInfo* info, SkDisplayTypes type, SkOperand op, SkOperand blankOp,
    108         SkOperand op2, SkOperand blankOp2);
    109 #endif
    110 };
    111 
    112 #endif // SkDisplayable_DEFINED
    113