aboutsummaryrefslogtreecommitdiffhomepage
path: root/libs/graphics/animator/SkDisplayApply.h
blob: 883323af83b4867a225cf33691d6becd00c01885 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#ifndef SkDisplayApply_DEFINED
#define SkDisplayApply_DEFINED

#include "SkAnimateBase.h"
#include "SkDrawable.h"
#include "SkIntArray.h"

class SkActive;

class SkApply : public SkDrawable {
	DECLARE_MEMBER_INFO(Apply);
public:

	SkApply();
	virtual ~SkApply();

	enum Transition {
		kTransition_normal,
		kTransition_reverse
	};
	
	enum Mode {
		kMode_create,
		kMode_immediate,
		//kMode_once
	};
	void activate(SkAnimateMaker& );
	void append(SkApply* apply);
	void appendActive(SkActive* );
	void applyValues(int animatorIndex, SkOperand* values, int count,
		SkDisplayTypes , SkMSec time);
	virtual bool contains(SkDisplayable*);
//	void createActive(SkAnimateMaker& );
	virtual SkDisplayable* deepCopy(SkAnimateMaker* );
	void disable();
	virtual bool draw(SkAnimateMaker& );
#ifdef SK_DUMP_ENABLED
	virtual void dump(SkAnimateMaker* );
#endif
	virtual bool enable(SkAnimateMaker& );
	void enableCreate(SkAnimateMaker& );
	void enableDynamic(SkAnimateMaker& );
	void endSave(int index);
	Mode getMode() { return mode; }
	virtual bool getProperty(int index, SkScriptValue* value) const;
	SkDrawable* getScope() { return scope; }
	void getStep(SkScriptValue* );
	SkDrawable* getTarget(SkAnimateBase* );
	bool hasDelayedAnimator() const;
	virtual bool hasEnable() const;
	bool inactivate(SkAnimateMaker& maker);
	virtual void initialize(); 
	bool interpolate(SkAnimateMaker& , SkMSec time);
	virtual void onEndElement(SkAnimateMaker& );
	virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
	void refresh(SkAnimateMaker& );
	void reset();
	virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
	bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str);
	void save(int index);
	void setEmbedded() { fEmbedded = true; }
	virtual bool setProperty(int index, SkScriptValue& );
	virtual void setSteps(int _steps);
//	virtual void setTime(SkMSec time);
#ifdef SK_DEBUG
	virtual void validate();
#endif
private:
	SkMSec begin;
	SkBool dontDraw;
	SkString dynamicScope;
	SkMSec interval;
	Mode mode;
#if 0
	SkBool pickup;
#endif
	SkBool restore;
	SkDrawable* scope;
	S32 steps;
	Transition transition;
	SkActive* fActive;
	SkTDAnimateArray fAnimators;
//	SkDrawable* fCurrentScope;
	SkMSec fLastTime;	// used only to return script property time
	SkTDDrawableArray fScopes;
	SkBool fAppended : 1;
	SkBool fContainsScope : 1;
	SkBool fDeleteScope : 1;
	SkBool fEmbedded : 1;
	SkBool fEnabled : 1;
	SkBool fEnabling : 1; // set if calling interpolate from enable
	friend class SkActive;
	friend class SkDisplayList;
	typedef SkDrawable INHERITED;
};

#endif // SkDisplayApply_DEFINED