Home | History | Annotate | Download | only in animator
      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& );
     45     SkTDDrawableArray* getChildren() { return &fChildren; }
     46     SkGroup* getOriginal() { return fOriginal; }
     47     virtual bool hasEnable() const;
     48     virtual void initialize();
     49     SkBool isACopy() { return fOriginal != NULL; }
     50     void markCopyClear(int index);
     51     void markCopySet(int index);
     52     void markCopySize(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