michael@0: michael@0: /* michael@0: * Copyright 2006 The Android Open Source Project michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: michael@0: #ifndef SkDrawGroup_DEFINED michael@0: #define SkDrawGroup_DEFINED michael@0: michael@0: #include "SkDrawable.h" michael@0: #include "SkIntArray.h" michael@0: #include "SkMemberInfo.h" michael@0: michael@0: class SkGroup : public SkDrawable { //interface for schema element michael@0: public: michael@0: DECLARE_MEMBER_INFO(Group); michael@0: SkGroup(); michael@0: virtual ~SkGroup(); michael@0: virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; michael@0: virtual bool contains(SkDisplayable* ); michael@0: SkGroup* copy(); michael@0: SkBool copySet(int index); michael@0: virtual SkDisplayable* deepCopy(SkAnimateMaker* ); michael@0: virtual bool doEvent(SkDisplayEvent::Kind , SkEventState* state ); michael@0: virtual bool draw(SkAnimateMaker& ); michael@0: #ifdef SK_DUMP_ENABLED michael@0: virtual void dump(SkAnimateMaker* ); michael@0: virtual void dumpDrawables(SkAnimateMaker* ); michael@0: virtual void dumpEvents(); michael@0: #endif michael@0: int findGroup(SkDrawable* drawable, SkTDDrawableArray** list, michael@0: SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); michael@0: virtual bool enable(SkAnimateMaker& ); michael@0: SkTDDrawableArray* getChildren() { return &fChildren; } michael@0: SkGroup* getOriginal() { return fOriginal; } michael@0: virtual bool hasEnable() const; michael@0: virtual void initialize(); michael@0: SkBool isACopy() { return fOriginal != NULL; } michael@0: void markCopyClear(int index); michael@0: void markCopySet(int index); michael@0: void markCopySize(int index); michael@0: bool markedForDelete(int index) const { return (fCopies[index >> 5] & 1 << (index & 0x1f)) == 0; } michael@0: void reset(); michael@0: bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); michael@0: virtual void setSteps(int steps); michael@0: #ifdef SK_DEBUG michael@0: virtual void validate(); michael@0: #endif michael@0: protected: michael@0: bool ifCondition(SkAnimateMaker& maker, SkDrawable* drawable, michael@0: SkString& conditionString); michael@0: SkString condition; michael@0: SkString enableCondition; michael@0: SkTDDrawableArray fChildren; michael@0: SkTDDrawableArray* fParentList; michael@0: SkTDIntArray fCopies; michael@0: SkGroup* fOriginal; michael@0: private: michael@0: typedef SkDrawable INHERITED; michael@0: }; michael@0: michael@0: class SkSave: public SkGroup { michael@0: DECLARE_MEMBER_INFO(Save); michael@0: virtual bool draw(SkAnimateMaker& ); michael@0: private: michael@0: typedef SkGroup INHERITED; michael@0: }; michael@0: michael@0: #endif // SkDrawGroup_DEFINED