aboutsummaryrefslogtreecommitdiffhomepage
path: root/libs/graphics/animator/SkDisplayEvent.h
blob: 4d5be0236fe8e22592d26c6c47e37ff92c1026b3 (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
#ifndef SkDisplayEvent_DEFINED
#define SkDisplayEvent_DEFINED

#include "SkDisplayable.h"
#include "SkMemberInfo.h"
#include "SkIntArray.h"
#include "SkKey.h"

class SkEvent;

class SkDisplayEvent : public SkDisplayable {
	DECLARE_DISPLAY_MEMBER_INFO(Event);
	enum Kind {
		kNo_kind,
		kKeyChar,
		kKeyPress,
        kKeyPressUp,    //i assume the order here is intended to match with skanimatorscript.cpp
		kMouseDown,
		kMouseDrag,
		kMouseMove,
		kMouseUp,
		kOnEnd,
		kOnload,
		kUser
	};
	SkDisplayEvent();
	virtual ~SkDisplayEvent();
	virtual bool add(SkAnimateMaker& , SkDisplayable* child);
	virtual bool contains(SkDisplayable*);
	virtual SkDisplayable* contains(const SkString& );
#ifdef SK_DEBUG
	void dumpEvent(SkAnimateMaker* );
#endif
	bool enableEvent(SkAnimateMaker& );
	virtual bool getProperty(int index, SkScriptValue* ) const;
	virtual void onEndElement(SkAnimateMaker& maker);
	void populateInput(SkAnimateMaker& , const SkEvent& fEvent);
	virtual bool setProperty(int index, SkScriptValue& );
protected:
	SkKey code;
	SkBool disable;
	Kind kind;
	SkString target;
	SkScalar x;
	SkScalar y;
	SkTDDisplayableArray fChildren;
    mutable SkString fKeyString;
	SkKey fLastCode; // last key to trigger this event
	SkKey fMax; // if the code expresses a range
	SkDisplayable* fTarget; // used by onEnd
private:
	void deleteMembers();
	friend class SkEvents;
	typedef SkDisplayable INHERITED;
};

#endif // SkDisplayEvent_DEFINED