1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkDrawGroup_DEFINED 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkDrawGroup_DEFINED 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 13986ca61cf7be3ec590f8820e9b7ba042ac2948fereed#include "SkADrawable.h" 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkIntArray.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMemberInfo.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 17986ca61cf7be3ec590f8820e9b7ba042ac2948fereedclass SkGroup : public SkADrawable { //interface for schema element <g> 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic: 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com DECLARE_MEMBER_INFO(Group); 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkGroup(); 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual ~SkGroup(); 2236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool addChild(SkAnimateMaker& , SkDisplayable* child) override; 2336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool contains(SkDisplayable* ) override; 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkGroup* copy(); 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkBool copySet(int index); 2636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkDisplayable* deepCopy(SkAnimateMaker* ) override; 2736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool doEvent(SkDisplayEvent::Kind , SkEventState* state ) override; 2836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool draw(SkAnimateMaker& ) override; 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 3036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void dump(SkAnimateMaker* ) override; 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void dumpDrawables(SkAnimateMaker* ); 3236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void dumpEvents() override; 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 34986ca61cf7be3ec590f8820e9b7ba042ac2948fereed int findGroup(SkADrawable* drawable, SkTDDrawableArray** list, 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkGroup** parent, SkGroup** found, SkTDDrawableArray** grandList); 3636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool enable(SkAnimateMaker& ) override; 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDDrawableArray* getChildren() { return &fChildren; } 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkGroup* getOriginal() { return fOriginal; } 3936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool hasEnable() const override; 4036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void initialize() override; 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkBool isACopy() { return fOriginal != NULL; } 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void markCopyClear(int index); 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void markCopySet(int index); 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void markCopySize(int index); 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool markedForDelete(int index) const { return (fCopies[index >> 5] & 1 << (index & 0x1f)) == 0; } 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void reset(); 4736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ) override; 4836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void setSteps(int steps) override; 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG 5036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void validate() override; 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected: 53986ca61cf7be3ec590f8820e9b7ba042ac2948fereed bool ifCondition(SkAnimateMaker& maker, SkADrawable* drawable, 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString& conditionString); 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString condition; 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString enableCondition; 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDDrawableArray fChildren; 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDDrawableArray* fParentList; 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDIntArray fCopies; 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkGroup* fOriginal; 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 62986ca61cf7be3ec590f8820e9b7ba042ac2948fereed typedef SkADrawable INHERITED; 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkSave: public SkGroup { 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com DECLARE_MEMBER_INFO(Save); 6736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool draw(SkAnimateMaker& ) override; 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef SkGroup INHERITED; 708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkDrawGroup_DEFINED 73