summaryrefslogtreecommitdiffstats
path: root/src/control.h
blob: d40b3a1426a7c1f159d1b6eb6b8071a2fb4d41f3 (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// control.h

#ifndef _CONTROL_H_
#define	_CONTROL_H_


class CInstanceManager;
class CEvent;
class CD3DEngine;
class CRobotMain;
class CParticule;
class CSound;

enum FontType;


#define STATE_ENABLE	(1<<0)	// actif
#define STATE_CHECK		(1<<1)	// enfonc�
#define STATE_HILIGHT	(1<<2)	// survol� par la souris
#define STATE_PRESS		(1<<3)	// press� par la souris
#define STATE_VISIBLE	(1<<4)	// visible
#define STATE_DEAD		(1<<5)	// inaccessible (x)
#define STATE_DEFAULT	(1<<6)	// actionn� par RETURN
#define STATE_OKAY		(1<<7)	// point vert en bas � droite
#define STATE_SHADOW	(1<<8)	// ombre
#define STATE_GLINT		(1<<9)	// reflet dynamique
#define STATE_CARD		(1<<10)	// onglet
#define STATE_EXTEND	(1<<11)	// mode �tendu
#define STATE_SIMPLY	(1<<12)	// sans ornements
#define STATE_FRAME		(1<<13)	// cadre de mise en �vidence
#define STATE_WARNING	(1<<14)	// cadre hachur� jaune/noir
#define STATE_VALUE		(1<<15)	// affiche la valeur
#define STATE_RUN		(1<<16)	// programme en cours



class CControl
{
public:
	CControl(CInstanceManager* iMan);
	virtual ~CControl();

	virtual BOOL	Create(FPOINT pos, FPOINT dim, int icon, EventMsg eventMsg);

	virtual BOOL	EventProcess(const Event &event);

	virtual void	SetPos(FPOINT pos);
	virtual FPOINT	RetPos();
	virtual void	SetDim(FPOINT dim);
	virtual FPOINT	RetDim();
	virtual BOOL	SetState(int state, BOOL bState);
	virtual BOOL	SetState(int state);
	virtual BOOL	ClearState(int state);
	virtual BOOL	TestState(int state);
	virtual	int		RetState();
	virtual void	SetIcon(int icon);
	virtual int		RetIcon();
	virtual void	SetName(char* name, BOOL bTooltip=TRUE);
	virtual char*	RetName();
	virtual void	SetJustif(int mode);
	virtual int		RetJustif();
	virtual	void	SetFontSize(float size);
	virtual	float	RetFontSize();
	virtual	void	SetFontStretch(float stretch);
	virtual	float	RetFontStretch();
	virtual void	SetFontType(FontType font);
	virtual FontType RetFontType();
	virtual BOOL	SetTooltip(char* name);
	virtual BOOL	GetTooltip(FPOINT pos, char* name);
	virtual void	SetFocus(BOOL bFocus);
	virtual BOOL	RetFocus();

	virtual EventMsg RetEventMsg();

	virtual void	Draw();

protected:
			void	GlintDelete();
			void	GlintCreate(FPOINT ref, BOOL bLeft=TRUE, BOOL bUp=TRUE);
			void	GlintFrame(const Event &event);
			void	DrawPart(int icon, float zoom, float ex);
			void	DrawIcon(FPOINT pos, FPOINT dim, FPOINT uv1, FPOINT uv2, float ex=0.0f);
			void	DrawIcon(FPOINT pos, FPOINT dim, FPOINT uv1, FPOINT uv2, FPOINT corner, float ex);
			void	DrawWarning(FPOINT pos, FPOINT dim);
			void	DrawShadow(FPOINT pos, FPOINT dim, float deep=1.0f);
	virtual	BOOL	Detect(FPOINT pos);

protected:
	CInstanceManager* m_iMan;
	CD3DEngine*	m_engine;
	CEvent*		m_event;
	CRobotMain*	m_main;
	CParticule*	m_particule;
	CSound*		m_sound;

	FPOINT		m_pos;			// coin sup/gauche
	FPOINT		m_dim;			// dimensions
	int			m_icon;
	EventMsg	m_eventMsg;		// message � envoyer si clic
	int			m_state;		// �tats (STATE_*)
	float		m_fontSize;		// taille du nom du bouton
	float		m_fontStretch;	// stretch de la fonte
	FontType	m_fontType;		// type de la fonte
	int			m_justif;		// type de justification (-1,0,1)
	char		m_name[100];	// nom du bouton
	char		m_tooltip[100];	// nom du tooltip
	BOOL		m_bFocus;
	BOOL		m_bCapture;

	BOOL		m_bGlint;
	FPOINT		m_glintCorner1;
	FPOINT		m_glintCorner2;
	float		m_glintProgress;
	FPOINT		m_glintMouse;
};


#endif //_CONTROL_H_