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 SkDisplayAdd_DEFINED
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkDisplayAdd_DEFINED
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawable.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMemberInfo.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkAdd : public SkDrawable {
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Add);
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkAdd();
19d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    enum Mode {
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMode_indirect,
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMode_immediate
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    };
24d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual SkDisplayable* deepCopy(SkAnimateMaker* );
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool draw(SkAnimateMaker& );
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void dump(SkAnimateMaker* );
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool enable(SkAnimateMaker& );
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool hasEnable() const;
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void initialize();
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool isDrawable() const;
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  struct _A {
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        Mode mode;
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int32_t offset;
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkDrawable* use;
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkDrawable* where;  // if NULL, offset becomes index
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  } A;
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkDrawable INHERITED;
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkClear : public SkDisplayable {
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool enable(SkAnimateMaker& );
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkMove : public SkAdd {
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Move);
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkAdd INHERITED;
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkRemove : public SkAdd {
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Remove);
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkRemove();
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fDelete;
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    friend class SkAdd;
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkAdd INHERITED;
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkReplace : public SkAdd {
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Replace);
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkAdd INHERITED;
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkDisplayAdd_DEFINED
72