Home | History | Annotate | Download | only in animator
      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