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 SkDisplayList_DEFINED 11#define SkDisplayList_DEFINED 12 13#include "SkOperand.h" 14#include "SkIntArray.h" 15#include "SkBounder.h" 16#include "SkRect.h" 17 18class SkAnimateMaker; 19class SkActive; 20class SkApply; 21class SkDrawable; 22class SkGroup; 23 24class SkDisplayList : public SkBounder { 25public: 26 SkDisplayList(); 27 virtual ~SkDisplayList(); 28 void append(SkActive* ); 29 void clear() { fDrawList.reset(); } 30 int count() { return fDrawList.count(); } 31 bool draw(SkAnimateMaker& , SkMSec time); 32#ifdef SK_DUMP_ENABLED 33 void dump(SkAnimateMaker* maker); 34 void dumpInner(SkAnimateMaker* maker); 35 static int fIndent; 36 static int fDumpIndex; 37#endif 38 int findGroup(SkDrawable* match, SkTDDrawableArray** list, 39 SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); 40 SkDrawable* get(int index) { return fDrawList[index]; } 41 SkMSec getTime() { return fInTime; } 42 SkTDDrawableArray* getDrawList() { return &fDrawList; } 43 void hardReset(); 44 virtual bool onIRect(const SkIRect& r); 45 void reset(); 46 void remove(SkActive* ); 47#ifdef SK_DEBUG 48 void validate(); 49#else 50 void validate() {} 51#endif 52 static int SearchForMatch(SkDrawable* match, SkTDDrawableArray** list, 53 SkGroup** parent, SkGroup** found, SkTDDrawableArray**grandList); 54 static bool SearchGroupForMatch(SkDrawable* draw, SkDrawable* match, 55 SkTDDrawableArray** list, SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList, 56 int &index); 57public: 58 SkIRect fBounds; 59 SkIRect fInvalBounds; 60 bool fDrawBounds; 61 bool fHasUnion; 62 bool fUnionBounds; 63private: 64 SkTDDrawableArray fDrawList; 65 SkTDActiveArray fActiveList; 66 SkMSec fInTime; 67 friend class SkEvents; 68}; 69 70#endif // SkDisplayList_DEFINED 71 72