1 /* libs/graphics/animator/SkDisplayList.h 2 ** 3 ** Copyright 2006, The Android Open Source Project 4 ** 5 ** Licensed under the Apache License, Version 2.0 (the "License"); 6 ** you may not use this file except in compliance with the License. 7 ** You may obtain a copy of the License at 8 ** 9 ** http://www.apache.org/licenses/LICENSE-2.0 10 ** 11 ** Unless required by applicable law or agreed to in writing, software 12 ** distributed under the License is distributed on an "AS IS" BASIS, 13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ** See the License for the specific language governing permissions and 15 ** limitations under the License. 16 */ 17 18 #ifndef SkDisplayList_DEFINED 19 #define SkDisplayList_DEFINED 20 21 #include "SkOperand.h" 22 #include "SkIntArray.h" 23 #include "SkBounder.h" 24 #include "SkRect.h" 25 26 class SkAnimateMaker; 27 class SkActive; 28 class SkApply; 29 class SkDrawable; 30 class SkGroup; 31 32 class SkDisplayList : public SkBounder { 33 public: 34 SkDisplayList(); 35 virtual ~SkDisplayList(); 36 void append(SkActive* ); 37 void clear() { fDrawList.reset(); } 38 int count() { return fDrawList.count(); } 39 bool draw(SkAnimateMaker& , SkMSec time); 40 #ifdef SK_DUMP_ENABLED 41 void dump(SkAnimateMaker* maker); 42 void dumpInner(SkAnimateMaker* maker); 43 static int fIndent; 44 static int fDumpIndex; 45 #endif 46 int findGroup(SkDrawable* match, SkTDDrawableArray** list, 47 SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); 48 SkDrawable* get(int index) { return fDrawList[index]; } 49 SkMSec getTime() { return fInTime; } 50 SkTDDrawableArray* getDrawList() { return &fDrawList; } 51 void hardReset(); 52 virtual bool onIRect(const SkIRect& r); 53 void reset(); 54 void remove(SkActive* ); 55 #ifdef SK_DEBUG 56 void validate(); 57 #else 58 void validate() {} 59 #endif 60 static int SearchForMatch(SkDrawable* match, SkTDDrawableArray** list, 61 SkGroup** parent, SkGroup** found, SkTDDrawableArray**grandList); 62 static bool SearchGroupForMatch(SkDrawable* draw, SkDrawable* match, 63 SkTDDrawableArray** list, SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList, 64 int &index); 65 public: 66 SkIRect fBounds; 67 SkIRect fInvalBounds; 68 bool fDrawBounds; 69 bool fHasUnion; 70 bool fUnionBounds; 71 private: 72 SkTDDrawableArray fDrawList; 73 SkTDActiveArray fActiveList; 74 SkMSec fInTime; 75 friend class SkEvents; 76 }; 77 78 #endif // SkDisplayList_DEFINED 79 80