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 SkDisplayList_DEFINED michael@0: #define SkDisplayList_DEFINED michael@0: michael@0: #include "SkOperand.h" michael@0: #include "SkIntArray.h" michael@0: #include "SkBounder.h" michael@0: #include "SkRect.h" michael@0: michael@0: class SkAnimateMaker; michael@0: class SkActive; michael@0: class SkApply; michael@0: class SkDrawable; michael@0: class SkGroup; michael@0: michael@0: class SkDisplayList : public SkBounder { michael@0: public: michael@0: SkDisplayList(); michael@0: virtual ~SkDisplayList(); michael@0: void append(SkActive* ); michael@0: void clear() { fDrawList.reset(); } michael@0: int count() { return fDrawList.count(); } michael@0: bool draw(SkAnimateMaker& , SkMSec time); michael@0: #ifdef SK_DUMP_ENABLED michael@0: void dump(SkAnimateMaker* maker); michael@0: void dumpInner(SkAnimateMaker* maker); michael@0: static int fIndent; michael@0: static int fDumpIndex; michael@0: #endif michael@0: int findGroup(SkDrawable* match, SkTDDrawableArray** list, michael@0: SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); michael@0: SkDrawable* get(int index) { return fDrawList[index]; } michael@0: SkMSec getTime() { return fInTime; } michael@0: SkTDDrawableArray* getDrawList() { return &fDrawList; } michael@0: void hardReset(); michael@0: virtual bool onIRect(const SkIRect& r); michael@0: void reset(); michael@0: void remove(SkActive* ); michael@0: #ifdef SK_DEBUG michael@0: void validate(); michael@0: #else michael@0: void validate() {} michael@0: #endif michael@0: static int SearchForMatch(SkDrawable* match, SkTDDrawableArray** list, michael@0: SkGroup** parent, SkGroup** found, SkTDDrawableArray**grandList); michael@0: static bool SearchGroupForMatch(SkDrawable* draw, SkDrawable* match, michael@0: SkTDDrawableArray** list, SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList, michael@0: int &index); michael@0: public: michael@0: SkIRect fBounds; michael@0: SkIRect fInvalBounds; michael@0: bool fDrawBounds; michael@0: bool fHasUnion; michael@0: bool fUnionBounds; michael@0: private: michael@0: SkTDDrawableArray fDrawList; michael@0: SkTDActiveArray fActiveList; michael@0: SkMSec fInTime; michael@0: friend class SkEvents; michael@0: }; michael@0: michael@0: #endif // SkDisplayList_DEFINED