blob: eb4610b39f5d2dd7f377522444bd308b48d2e006 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
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
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
10#ifndef SkDisplayAdd_DEFINED
11#define SkDisplayAdd_DEFINED
12
reed986ca612014-11-26 08:50:45 -080013#include "SkADrawable.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000014#include "SkMemberInfo.h"
15
reed986ca612014-11-26 08:50:45 -080016class SkAdd : public SkADrawable {
reed@android.com8a1c16f2008-12-17 15:59:43 +000017 DECLARE_MEMBER_INFO(Add);
18 SkAdd();
rmistry@google.comd6176b02012-08-23 18:14:13 +000019
reed@android.com8a1c16f2008-12-17 15:59:43 +000020 enum Mode {
21 kMode_indirect,
22 kMode_immediate
23 };
rmistry@google.comd6176b02012-08-23 18:14:13 +000024
mtklein36352bf2015-03-25 18:17:31 -070025 SkDisplayable* deepCopy(SkAnimateMaker* ) override;
26 bool draw(SkAnimateMaker& ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000027#ifdef SK_DUMP_ENABLED
mtklein36352bf2015-03-25 18:17:31 -070028 void dump(SkAnimateMaker* ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000029#endif
mtklein36352bf2015-03-25 18:17:31 -070030 bool enable(SkAnimateMaker& ) override;
31 bool hasEnable() const override;
32 void initialize() override;
33 bool isDrawable() const override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000034protected:
35// struct _A {
36 Mode mode;
37 int32_t offset;
reed986ca612014-11-26 08:50:45 -080038 SkADrawable* use;
halcanary96fcdcc2015-08-27 07:41:13 -070039 SkADrawable* where; // if nullptr, offset becomes index
reed@android.com8a1c16f2008-12-17 15:59:43 +000040// } A;
41private:
reed986ca612014-11-26 08:50:45 -080042 typedef SkADrawable INHERITED;
reed@android.com8a1c16f2008-12-17 15:59:43 +000043};
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