180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkDrawGroup_DEFINED 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkDrawGroup_DEFINED 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkDrawable.h" 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkIntArray.h" 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkMemberInfo.h" 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkGroup : public SkDrawable { //interface for schema element <g> 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru DECLARE_MEMBER_INFO(Group); 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGroup(); 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual ~SkGroup(); 22363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool contains(SkDisplayable* ); 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGroup* copy(); 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBool copySet(int index); 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool doEvent(SkDisplayEvent::Kind , SkEventState* state ); 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool draw(SkAnimateMaker& ); 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DUMP_ENABLED 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void dump(SkAnimateMaker* ); 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void dumpDrawables(SkAnimateMaker* ); 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void dumpEvents(); 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int findGroup(SkDrawable* drawable, SkTDDrawableArray** list, 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool enable(SkAnimateMaker& ); 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTDDrawableArray* getChildren() { return &fChildren; } 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGroup* getOriginal() { return fOriginal; } 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool hasEnable() const; 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void initialize(); 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBool isACopy() { return fOriginal != NULL; } 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru void markCopyClear(int index); 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru void markCopySet(int index); 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru void markCopySize(int index); 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool markedForDelete(int index) const { return (fCopies[index >> 5] & 1 << (index & 0x1f)) == 0; } 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru void reset(); 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void setSteps(int steps); 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DEBUG 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void validate(); 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected: 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool ifCondition(SkAnimateMaker& maker, SkDrawable* drawable, 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkString& conditionString); 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkString condition; 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkString enableCondition; 5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTDDrawableArray fChildren; 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTDDrawableArray* fParentList; 5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTDIntArray fCopies; 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGroup* fOriginal; 6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru typedef SkDrawable INHERITED; 6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkSave: public SkGroup { 6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru DECLARE_MEMBER_INFO(Save); 6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool draw(SkAnimateMaker& ); 6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru typedef SkGroup INHERITED; 7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif // SkDrawGroup_DEFINED 73