SkDisplayList.h revision e16efc1882ab34a0bb3ae361a2d37f840044cf87
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