1 2/* 3 * Copyright 2006 The Android Open Source Project 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 10#ifndef SkDisplayAdd_DEFINED 11#define SkDisplayAdd_DEFINED 12 13#include "SkDrawable.h" 14#include "SkMemberInfo.h" 15 16class SkAdd : public SkDrawable { 17 DECLARE_MEMBER_INFO(Add); 18 SkAdd(); 19 20 enum Mode { 21 kMode_indirect, 22 kMode_immediate 23 }; 24 25 virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 26 virtual bool draw(SkAnimateMaker& ); 27#ifdef SK_DUMP_ENABLED 28 virtual void dump(SkAnimateMaker* ); 29#endif 30 virtual bool enable(SkAnimateMaker& ); 31 virtual bool hasEnable() const; 32 virtual void initialize(); 33 virtual bool isDrawable() const; 34protected: 35// struct _A { 36 Mode mode; 37 int32_t offset; 38 SkDrawable* use; 39 SkDrawable* where; // if NULL, offset becomes index 40// } A; 41private: 42 typedef SkDrawable INHERITED; 43}; 44 45class SkClear : public SkDisplayable { 46 virtual bool enable(SkAnimateMaker& ); 47}; 48 49class SkMove : public SkAdd { 50 DECLARE_MEMBER_INFO(Move); 51private: 52 typedef SkAdd INHERITED; 53}; 54 55class SkRemove : public SkAdd { 56 DECLARE_MEMBER_INFO(Remove); 57 SkRemove(); 58protected: 59 SkBool fDelete; 60private: 61 friend class SkAdd; 62 typedef SkAdd INHERITED; 63}; 64 65class SkReplace : public SkAdd { 66 DECLARE_MEMBER_INFO(Replace); 67private: 68 typedef SkAdd INHERITED; 69}; 70 71#endif // SkDisplayAdd_DEFINED 72