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 SkDrawGroup_DEFINED 11 #define SkDrawGroup_DEFINED 12 13 #include "SkDrawable.h" 14 #include "SkIntArray.h" 15 #include "SkMemberInfo.h" 16 17 class SkGroup : public SkDrawable { //interface for schema element <g> 18 public: 19 DECLARE_MEMBER_INFO(Group); 20 SkGroup(); 21 virtual ~SkGroup(); 22 virtual bool add(SkAnimateMaker& , SkDisplayable* child); 23 virtual bool contains(SkDisplayable* ); 24 SkGroup* copy(); 25 SkBool copySet(int index); 26 virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 27 virtual bool doEvent(SkDisplayEvent::Kind , SkEventState* state ); 28 virtual bool draw(SkAnimateMaker& ); 29 #ifdef SK_DUMP_ENABLED 30 virtual void dump(SkAnimateMaker* ); 31 virtual void dumpDrawables(SkAnimateMaker* ); 32 virtual void dumpEvents(); 33 #endif 34 int findGroup(SkDrawable* drawable, SkTDDrawableArray** list, 35 SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); 36 virtual bool enable(SkAnimateMaker& ); getChildren()37 SkTDDrawableArray* getChildren() { return &fChildren; } getOriginal()38 SkGroup* getOriginal() { return fOriginal; } 39 virtual bool hasEnable() const; 40 virtual void initialize(); isACopy()41 SkBool isACopy() { return fOriginal != NULL; } 42 void markCopyClear(int index); 43 void markCopySet(int index); 44 void markCopySize(int index); markedForDelete(int index)45 bool markedForDelete(int index) const { return (fCopies[index >> 5] & 1 << (index & 0x1f)) == 0; } 46 void reset(); 47 bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); 48 virtual void setSteps(int steps); 49 #ifdef SK_DEBUG 50 virtual void validate(); 51 #endif 52 protected: 53 bool ifCondition(SkAnimateMaker& maker, SkDrawable* drawable, 54 SkString& conditionString); 55 SkString condition; 56 SkString enableCondition; 57 SkTDDrawableArray fChildren; 58 SkTDDrawableArray* fParentList; 59 SkTDIntArray fCopies; 60 SkGroup* fOriginal; 61 private: 62 typedef SkDrawable INHERITED; 63 }; 64 65 class SkSave: public SkGroup { 66 DECLARE_MEMBER_INFO(Save); 67 virtual bool draw(SkAnimateMaker& ); 68 private: 69 typedef SkGroup INHERITED; 70 }; 71 72 #endif // SkDrawGroup_DEFINED 73