• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* libs/graphics/animator/SkDrawGroup.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 SkDrawGroup_DEFINED
19 #define SkDrawGroup_DEFINED
20 
21 #include "SkDrawable.h"
22 #include "SkIntArray.h"
23 #include "SkMemberInfo.h"
24 
25 class SkGroup : public SkDrawable { //interface for schema element <g>
26 public:
27     DECLARE_MEMBER_INFO(Group);
28     SkGroup();
29     virtual ~SkGroup();
30     virtual bool add(SkAnimateMaker& , SkDisplayable* child);
31     virtual bool contains(SkDisplayable* );
32     SkGroup* copy();
33     SkBool copySet(int index);
34     virtual SkDisplayable* deepCopy(SkAnimateMaker* );
35     virtual bool doEvent(SkDisplayEvent::Kind , SkEventState* state );
36     virtual bool draw(SkAnimateMaker& );
37 #ifdef SK_DUMP_ENABLED
38     virtual void dump(SkAnimateMaker* );
39     virtual void dumpDrawables(SkAnimateMaker* );
40     virtual void dumpEvents();
41 #endif
42     int findGroup(SkDrawable* drawable,  SkTDDrawableArray** list,
43         SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList);
44     virtual bool enable(SkAnimateMaker& );
getChildren()45     SkTDDrawableArray* getChildren() { return &fChildren; }
getOriginal()46     SkGroup* getOriginal() { return fOriginal; }
47     virtual bool hasEnable() const;
48     virtual void initialize();
isACopy()49     SkBool isACopy() { return fOriginal != NULL; }
50     void markCopyClear(int index);
51     void markCopySet(int index);
52     void markCopySize(int index);
markedForDelete(int index)53     bool markedForDelete(int index) const { return (fCopies[index >> 5] & 1 << (index & 0x1f)) == 0; }
54     void reset();
55     bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
56     virtual void setSteps(int steps);
57 #ifdef SK_DEBUG
58     virtual void validate();
59 #endif
60 protected:
61     bool ifCondition(SkAnimateMaker& maker, SkDrawable* drawable,
62         SkString& conditionString);
63     SkString condition;
64     SkString enableCondition;
65     SkTDDrawableArray fChildren;
66     SkTDDrawableArray* fParentList;
67     SkTDIntArray fCopies;
68     SkGroup* fOriginal;
69 private:
70     typedef SkDrawable INHERITED;
71 };
72 
73 class SkSave: public SkGroup {
74     DECLARE_MEMBER_INFO(Save);
75     virtual bool draw(SkAnimateMaker& );
76 private:
77     typedef SkGroup INHERITED;
78 };
79 
80 #endif // SkDrawGroup_DEFINED
81