view src/EventHandler.cpp @ 2:0684158d38a8

Before cleanup. Still has experimental code in it.
author Eris Caffee <discordia@eldalin.com>
date Fri, 22 Oct 2010 02:21:52 -0500
parents 455406f5f021
children d691ce98f406
line source
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) 2010 Sarah Eris Horsley Caffee
4 //
5 // mandelbrot - A simple Mandelbrot Set viewer.
6 //
7 // EventHandler.cpp
8 // EventHandler class implementation.
9 //
10 ////////////////////////////////////////////////////////////////////////////////
11 #include <iostream>
13 #include "EventHandler.h"
16 ////////////////////////////////////////////////////////////////////////////////
17 EventHandler::EventHandler()
18 {
19 }
23 ////////////////////////////////////////////////////////////////////////////////
24 EventHandler::~EventHandler()
25 {
26 }
30 ////////////////////////////////////////////////////////////////////////////////
31 // Note: SDL 1.3 adds an official SDL_WaitEventTimeout function.
32 #ifndef USE_SDL_WAIEVENT
33 int EventHandler::wait_event_timeout(SDL_Event * event, Uint32 timeout)
34 {
35 Uint32 end = SDL_GetTicks() + timeout;
36 int i;
38 for (;;)
39 {
40 SDL_PumpEvents();
41 i = SDL_PeepEvents(event, 1, SDL_GETEVENT, SDL_ALLEVENTS);
42 switch (i)
43 {
44 case -1:
45 return 0;
46 case 1:
47 return 1;
48 case 0:
49 if (SDL_GetTicks() >= end)
50 {
51 return 0;
52 }
53 SDL_Delay(10);
54 break;
55 }
56 }
57 }
58 #endif
61 ////////////////////////////////////////////////////////////////////////////////
62 void EventHandler::on_event(SDL_Event * event)
63 {
64 switch(event->type)
65 {
66 case SDL_ACTIVEEVENT:
67 {
68 switch(event->active.state)
69 {
70 case SDL_APPMOUSEFOCUS:
71 {
72 if (event->active.gain) on_MouseFocus();
73 else on_MouseBlur();
74 break;
75 }
76 case SDL_APPINPUTFOCUS:
77 {
78 if (event->active.gain) on_InputFocus();
79 else on_InputBlur();
80 break;
81 }
82 case SDL_APPACTIVE:
83 {
84 if (event->active.gain) on_Restore();
85 else on_Minimize();
86 break;
87 }
88 }
89 break;
90 }
91 case SDL_KEYDOWN:
92 {
93 on_KeyDown(event->key.keysym.sym, event->key.keysym.mod,
94 event->key.keysym.unicode);
95 break;
96 }
97 case SDL_KEYUP:
98 {
99 on_KeyUp(event->key.keysym.sym, event->key.keysym.mod,
100 event->key.keysym.unicode);
101 break;
102 }
103 case SDL_MOUSEMOTION:
104 {
105 on_MouseMove(event->motion.x,
106 event->motion.y,
107 event->motion.xrel,
108 event->motion.yrel,
109 (event->motion.state & SDL_BUTTON(SDL_BUTTON_LEFT)) !=0,
110 (event->motion.state & SDL_BUTTON(SDL_BUTTON_RIGHT)) !=0,
111 (event->motion.state & SDL_BUTTON(SDL_BUTTON_MIDDLE))!=0);
112 break;
113 }
114 case SDL_MOUSEBUTTONDOWN:
115 {
116 switch (event->button.button)
117 {
118 case SDL_BUTTON_LEFT:
119 {
120 on_LButtonDown(event->button.x, event->button.y);
121 break;
122 }
123 case SDL_BUTTON_RIGHT:
124 {
125 on_RButtonDown(event->button.x, event->button.y);
126 break;
127 }
128 case SDL_BUTTON_MIDDLE:
129 {
130 on_MButtonDown(event->button.x, event->button.y);
131 break;
132 }
133 }
134 break;
135 }
136 case SDL_MOUSEBUTTONUP:
137 {
138 switch (event->button.button)
139 {
140 case SDL_BUTTON_LEFT:
141 {
142 on_LButtonUp(event->button.x, event->button.y);
143 break;
144 }
145 case SDL_BUTTON_RIGHT:
146 {
147 on_RButtonUp(event->button.x, event->button.y);
148 break;
149 }
150 case SDL_BUTTON_MIDDLE:
151 {
152 on_MButtonUp(event->button.x, event->button.y);
153 break;
154 }
155 }
156 break;
157 }
158 case SDL_JOYAXISMOTION:
159 {
160 on_JoyAxis(event->jaxis.which, event->jaxis.axis, event->jaxis.value);
161 break;
162 }
163 case SDL_JOYBALLMOTION:
164 {
165 on_JoyBall(event->jball.which, event->jball.ball,
166 event->jball.xrel, event->jball.yrel);
167 break;
168 }
169 case SDL_JOYHATMOTION:
170 {
171 on_JoyHat(event->jhat.which, event->jhat.hat, event->jhat.value);
172 break;
173 }
174 case SDL_JOYBUTTONDOWN:
175 {
176 on_JoyButtonDown(event->jbutton.which, event->jbutton.button);
177 break;
178 }
179 case SDL_JOYBUTTONUP:
180 {
181 on_JoyButtonUp(event->jbutton.which, event->jbutton.button);
182 break;
183 }
184 case SDL_QUIT:
185 {
186 on_Exit();
187 break;
188 }
189 case SDL_SYSWMEVENT:
190 {
191 // Ignore
192 break;
193 }
194 case SDL_VIDEORESIZE:
195 {
196 on_Resize(event->resize.w, event->resize.h);
197 break;
198 }
199 case SDL_VIDEOEXPOSE:
200 {
201 on_Expose();
202 break;
203 }
204 default:
205 {
206 on_User(event->user.type, event->user.code,
207 event->user.data1, event->user.data2);
208 break;
209 }
210 }
211 }
215 ////////////////////////////////////////////////////////////////////////////////
216 void EventHandler::on_InputFocus()
217 {
218 }
221 void EventHandler::on_InputBlur()
222 {
223 }
226 void EventHandler::on_KeyDown(SDLKey sym, SDLMod mod, Uint16 unicode)
227 {
228 }
231 void EventHandler::on_KeyUp(SDLKey sym, SDLMod mod, Uint16 unicode)
232 {
233 }
236 void EventHandler::on_MouseFocus()
237 {
238 }
241 void EventHandler::on_MouseBlur()
242 {
243 }
245 void EventHandler::on_MouseMove(int mx, int my,
246 int relx, int rely,
247 bool left, bool right, bool middle)
248 {
249 }
252 void EventHandler::on_MouseWheel(bool up, bool down)
253 {
254 }
257 void EventHandler::on_LButtonDown(int mx, int my)
258 {
259 }
262 void EventHandler::on_LButtonUp(int mx, int my)
263 {
264 }
267 void EventHandler::on_RButtonDown(int mx, int my)
268 {
269 }
272 void EventHandler::on_RButtonUp(int mx, int my)
273 {
274 }
277 void EventHandler::on_MButtonDown(int mx, int my)
278 {
279 }
282 void EventHandler::on_MButtonUp(int mx, int my)
283 {
284 }
287 void EventHandler::on_JoyAxis(Uint8 ehich, Uint8 axis, Sint16 value)
288 {
289 }
292 void EventHandler::on_JoyButtonDown(Uint8 which, Uint8 button)
293 {
294 }
297 void EventHandler::on_JoyButtonUp(Uint8 which, Uint8 button)
298 {
299 }
302 void EventHandler::on_JoyHat(Uint8 which, Uint8 hat, Uint8 value)
303 {
304 }
307 void EventHandler::on_JoyBall(Uint8 which, Uint8 ball, Sint16 xrel, Sint16 yrel)
308 {
309 }
312 void EventHandler::on_Minimize()
313 {
314 }
317 void EventHandler::on_Restore()
318 {
319 }
322 void EventHandler::on_Resize(int w, int h)
323 {
324 }
327 void EventHandler::on_Expose()
328 {
329 }
332 void EventHandler::on_Exit()
333 {
334 }
337 void EventHandler::on_User(Uint8 type, int code, void * data1, void * data2)
338 {
339 }