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
13986ca61cf7be3ec590f8820e9b7ba042ac2948fereed#include "SkADrawable.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMemberInfo.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
16986ca61cf7be3ec590f8820e9b7ba042ac2948fereedclass SkAdd : public SkADrawable {
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
2536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    SkDisplayable* deepCopy(SkAnimateMaker* ) override;
2636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool draw(SkAnimateMaker& ) override;
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED
2836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void dump(SkAnimateMaker* ) override;
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
3036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool enable(SkAnimateMaker& ) override;
3136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool hasEnable() const override;
3236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void initialize() override;
3336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool isDrawable() const override;
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  struct _A {
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        Mode mode;
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int32_t offset;
38986ca61cf7be3ec590f8820e9b7ba042ac2948fereed        SkADrawable* use;
39986ca61cf7be3ec590f8820e9b7ba042ac2948fereed        SkADrawable* where;  // if NULL, offset becomes index
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  } A;
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
42986ca61cf7be3ec590f8820e9b7ba042ac2948fereed    typedef SkADrawable 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