11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDisplayList_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDisplayList_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkOperand.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkIntArray.h"
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkBounder.h"
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkRect.h"
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkAnimateMaker;
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkActive;
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkApply;
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDrawable;
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkGroup;
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayList : public SkBounder {
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayList();
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual ~SkDisplayList();
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void append(SkActive* );
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void clear() { fDrawList.reset(); }
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int count() { return fDrawList.count(); }
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool draw(SkAnimateMaker& , SkMSec time);
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DUMP_ENABLED
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void dump(SkAnimateMaker* maker);
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void dumpInner(SkAnimateMaker* maker);
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static int fIndent;
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static int fDumpIndex;
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int findGroup(SkDrawable* match, SkTDDrawableArray** list,
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList);
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDrawable* get(int index) { return fDrawList[index]; }
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkMSec getTime() { return fInTime; }
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTDDrawableArray* getDrawList() { return &fDrawList; }
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void hardReset();
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool onIRect(const SkIRect& r);
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void reset();
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void remove(SkActive* );
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DEBUG
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void validate();
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#else
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void validate() {}
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static int SearchForMatch(SkDrawable* match, SkTDDrawableArray** list,
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        SkGroup** parent, SkGroup** found, SkTDDrawableArray**grandList);
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static bool SearchGroupForMatch(SkDrawable* draw, SkDrawable* match,
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        SkTDDrawableArray** list, SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList,
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        int &index);
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkIRect fBounds;
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkIRect fInvalBounds;
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool fDrawBounds;
610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool fHasUnion;
620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool fUnionBounds;
630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTDDrawableArray fDrawList;
650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTDActiveArray fActiveList;
660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkMSec fInTime;
670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkEvents;
680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkDisplayList_DEFINED
710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
72