blob: 12cf6cee7a96438328f80e07d58e65bad0f26aa2 [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 SkDisplayApply_DEFINED
11#define SkDisplayApply_DEFINED
12
13#include "SkAnimateBase.h"
reed986ca612014-11-26 08:50:45 -080014#include "SkADrawable.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000015#include "SkIntArray.h"
16
17class SkActive;
18
reed986ca612014-11-26 08:50:45 -080019class SkApply : public SkADrawable {
reed@android.com8a1c16f2008-12-17 15:59:43 +000020 DECLARE_MEMBER_INFO(Apply);
21public:
22
23 SkApply();
24 virtual ~SkApply();
25
26 enum Transition {
27 kTransition_normal,
28 kTransition_reverse
29 };
rmistry@google.comd6176b02012-08-23 18:14:13 +000030
reed@android.com8a1c16f2008-12-17 15:59:43 +000031 enum Mode {
32 kMode_create,
33 kMode_immediate,
34 //kMode_once
35 };
36 void activate(SkAnimateMaker& );
37 void append(SkApply* apply);
38 void appendActive(SkActive* );
39 void applyValues(int animatorIndex, SkOperand* values, int count,
40 SkDisplayTypes , SkMSec time);
mtklein36352bf2015-03-25 18:17:31 -070041 bool contains(SkDisplayable*) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000042// void createActive(SkAnimateMaker& );
mtklein36352bf2015-03-25 18:17:31 -070043 SkDisplayable* deepCopy(SkAnimateMaker* ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000044 void disable();
mtklein36352bf2015-03-25 18:17:31 -070045 bool draw(SkAnimateMaker& ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000046#ifdef SK_DUMP_ENABLED
mtklein36352bf2015-03-25 18:17:31 -070047 void dump(SkAnimateMaker* ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000048#endif
mtklein36352bf2015-03-25 18:17:31 -070049 bool enable(SkAnimateMaker& ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000050 void enableCreate(SkAnimateMaker& );
51 void enableDynamic(SkAnimateMaker& );
52 void endSave(int index);
53 Mode getMode() { return mode; }
mtklein36352bf2015-03-25 18:17:31 -070054 bool getProperty(int index, SkScriptValue* value) const override;
reed986ca612014-11-26 08:50:45 -080055 SkADrawable* getScope() { return scope; }
reed@android.com8a1c16f2008-12-17 15:59:43 +000056 void getStep(SkScriptValue* );
reed986ca612014-11-26 08:50:45 -080057 SkADrawable* getTarget(SkAnimateBase* );
reed@android.com8a1c16f2008-12-17 15:59:43 +000058 bool hasDelayedAnimator() const;
mtklein36352bf2015-03-25 18:17:31 -070059 bool hasEnable() const override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000060 bool inactivate(SkAnimateMaker& maker);
mtklein36352bf2015-03-25 18:17:31 -070061 void initialize() override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000062 bool interpolate(SkAnimateMaker& , SkMSec time);
mtklein36352bf2015-03-25 18:17:31 -070063 void onEndElement(SkAnimateMaker& ) override;
64 const SkMemberInfo* preferredChild(SkDisplayTypes type) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000065 void refresh(SkAnimateMaker& );
66 void reset();
mtklein36352bf2015-03-25 18:17:31 -070067 bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000068 bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str);
69 void save(int index);
70 void setEmbedded() { fEmbedded = true; }
mtklein36352bf2015-03-25 18:17:31 -070071 bool setProperty(int index, SkScriptValue& ) override;
72 void setSteps(int _steps) override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000073// virtual void setTime(SkMSec time);
74#ifdef SK_DEBUG
mtklein36352bf2015-03-25 18:17:31 -070075 void validate() override;
reed@android.com8a1c16f2008-12-17 15:59:43 +000076#endif
77private:
78 SkMSec begin;
79 SkBool dontDraw;
80 SkString dynamicScope;
81 SkMSec interval;
82 Mode mode;
83#if 0
84 SkBool pickup;
85#endif
86 SkBool restore;
reed986ca612014-11-26 08:50:45 -080087 SkADrawable* scope;
reed@android.com8a1c16f2008-12-17 15:59:43 +000088 int32_t steps;
89 Transition transition;
90 SkActive* fActive;
91 SkTDAnimateArray fAnimators;
reed986ca612014-11-26 08:50:45 -080092// SkADrawable* fCurrentScope;
reed@android.com8a1c16f2008-12-17 15:59:43 +000093 SkMSec fLastTime; // used only to return script property time
94 SkTDDrawableArray fScopes;
95 SkBool fAppended : 1;
96 SkBool fContainsScope : 1;
97 SkBool fDeleteScope : 1;
98 SkBool fEmbedded : 1;
99 SkBool fEnabled : 1;
100 SkBool fEnabling : 1; // set if calling interpolate from enable
101 friend class SkActive;
102 friend class SkDisplayList;
reed986ca612014-11-26 08:50:45 -0800103 typedef SkADrawable INHERITED;
reed@android.com8a1c16f2008-12-17 15:59:43 +0000104};
105
106#endif // SkDisplayApply_DEFINED