summaryrefslogtreecommitdiff
path: root/includes/interface/Component.h
blob: a4d02dbc79794ff9f80e335864de8794bc73d605 (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
/*
 * Component.h
 *
 *  Created on: Jan 8, 2012
 *      Author: Simon
 */

#ifndef COMPONENT_H_
#define COMPONENT_H_

namespace ui
{
    class State;

	class Component
	{
	public:
		Component(int x, int y, int width, int height);
		virtual ~Component();

		inline void LocalizePoint(int& x, int& y) { x -= X; y -= Y; } //convert a global point (point on the state) to a point based on component's position
		inline void GlobalizePoint(int& x, int& y) { x += X; y += Y; } //convert a local point based on component's position to a global point on the state

		bool Focused;
		bool Visible;
		bool Enabled;
		int Width;
		int Height;
		int X;
		int Y;

		virtual void Tick(float dt);
		virtual void Draw(void* userdata);

		virtual void OnMouseEnter(int localx, int localy, int dx, int dy);
		virtual void OnMouseLeave(int localx, int localy, int dx, int dy);
		virtual void OnMouseMoved(int localx, int localy, int dx, int dy);
		virtual void OnMouseMovedInside(int localx, int localy, int dx, int dy);
		virtual void OnMouseHover(int localx, int localy);
		virtual void OnMouseDown(int localx, int localy, unsigned int button);
		virtual void OnMouseUp(int localx, int localy, unsigned int button);
		virtual void OnMouseClick(int localx, int localy, unsigned int button);
		virtual void OnMouseUnclick(int localx, int localy, unsigned int button);
		virtual void OnMouseWheel(int localx, int localy, int d);
		virtual void OnMouseWheelInside(int localx, int localy, int d);
		virtual void OnMouseWheelFocused(int localx, int localy, int d);
		virtual void OnKeyPress(int key, bool shift, bool ctrl, bool alt);
		virtual void OnKeyRelease(int key, bool shift, bool ctrl, bool alt);

		State* Parent;
	};
}
#endif /* COMPONENT_H_ */