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