~ubuntu-branches/debian/stretch/assaultcube-data/stretch

« back to all changes in this revision

Viewing changes to source/include/SDL_events.h

  • Committer: Bazaar Package Importer
  • Author(s): Gonéri Le Bouder, Ansgar Burchardt, Gonéri Le Bouder
  • Date: 2010-04-02 23:37:55 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100402233755-kf74fxwlu634o6vg
Tags: 1.0.4+repack1-1
[ Ansgar Burchardt ]
* debian/control: fix typo in short description

[ Gonéri Le Bouder ]
* Upgrade to 1.0.4
* bump standards-version to 3.8.4
* Add Depends: ${misc:Depends} just to avoid a lintian warning
* Add a debian/source/format file for the same reason

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    SDL - Simple DirectMedia Layer
 
3
    Copyright (C) 1997-2006 Sam Lantinga
 
4
 
 
5
    This library is free software; you can redistribute it and/or
 
6
    modify it under the terms of the GNU Lesser General Public
 
7
    License as published by the Free Software Foundation; either
 
8
    version 2.1 of the License, or (at your option) any later version.
 
9
 
 
10
    This library is distributed in the hope that it will be useful,
 
11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
    Lesser General Public License for more details.
 
14
 
 
15
    You should have received a copy of the GNU Lesser General Public
 
16
    License along with this library; if not, write to the Free Software
 
17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
 
 
19
    Sam Lantinga
 
20
    slouken@libsdl.org
 
21
*/
 
22
 
 
23
/* Include file for SDL event handling */
 
24
 
 
25
#ifndef _SDL_events_h
 
26
#define _SDL_events_h
 
27
 
 
28
#include "SDL_stdinc.h"
 
29
#include "SDL_error.h"
 
30
#include "SDL_active.h"
 
31
#include "SDL_keyboard.h"
 
32
#include "SDL_mouse.h"
 
33
#include "SDL_joystick.h"
 
34
#include "SDL_quit.h"
 
35
 
 
36
#include "begin_code.h"
 
37
/* Set up for C function definitions, even when using C++ */
 
38
#ifdef __cplusplus
 
39
extern "C" {
 
40
#endif
 
41
 
 
42
/* General keyboard/mouse state definitions */
 
43
#define SDL_RELEASED    0
 
44
#define SDL_PRESSED     1
 
45
 
 
46
/* Event enumerations */
 
47
typedef enum {
 
48
       SDL_NOEVENT = 0,                 /* Unused (do not remove) */
 
49
       SDL_ACTIVEEVENT,                 /* Application loses/gains visibility */
 
50
       SDL_KEYDOWN,                     /* Keys pressed */
 
51
       SDL_KEYUP,                       /* Keys released */
 
52
       SDL_MOUSEMOTION,                 /* Mouse moved */
 
53
       SDL_MOUSEBUTTONDOWN,             /* Mouse button pressed */
 
54
       SDL_MOUSEBUTTONUP,               /* Mouse button released */
 
55
       SDL_JOYAXISMOTION,               /* Joystick axis motion */
 
56
       SDL_JOYBALLMOTION,               /* Joystick trackball motion */
 
57
       SDL_JOYHATMOTION,                /* Joystick hat position change */
 
58
       SDL_JOYBUTTONDOWN,               /* Joystick button pressed */
 
59
       SDL_JOYBUTTONUP,                 /* Joystick button released */
 
60
       SDL_QUIT,                        /* User-requested quit */
 
61
       SDL_SYSWMEVENT,                  /* System specific event */
 
62
       SDL_EVENT_RESERVEDA,             /* Reserved for future use.. */
 
63
       SDL_EVENT_RESERVEDB,             /* Reserved for future use.. */
 
64
       SDL_VIDEORESIZE,                 /* User resized video mode */
 
65
       SDL_VIDEOEXPOSE,                 /* Screen needs to be redrawn */
 
66
       SDL_EVENT_RESERVED2,             /* Reserved for future use.. */
 
67
       SDL_EVENT_RESERVED3,             /* Reserved for future use.. */
 
68
       SDL_EVENT_RESERVED4,             /* Reserved for future use.. */
 
69
       SDL_EVENT_RESERVED5,             /* Reserved for future use.. */
 
70
       SDL_EVENT_RESERVED6,             /* Reserved for future use.. */
 
71
       SDL_EVENT_RESERVED7,             /* Reserved for future use.. */
 
72
       /* Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */
 
73
       SDL_USEREVENT = 24,
 
74
       /* This last event is only for bounding internal arrays
 
75
          It is the number of bits in the event mask datatype -- Uint32
 
76
        */
 
77
       SDL_NUMEVENTS = 32
 
78
} SDL_EventType;
 
79
 
 
80
/* Predefined event masks */
 
81
#define SDL_EVENTMASK(X)        (1<<(X))
 
82
typedef enum {
 
83
        SDL_ACTIVEEVENTMASK     = SDL_EVENTMASK(SDL_ACTIVEEVENT),
 
84
        SDL_KEYDOWNMASK         = SDL_EVENTMASK(SDL_KEYDOWN),
 
85
        SDL_KEYUPMASK           = SDL_EVENTMASK(SDL_KEYUP),
 
86
        SDL_KEYEVENTMASK        = SDL_EVENTMASK(SDL_KEYDOWN)|
 
87
                                  SDL_EVENTMASK(SDL_KEYUP),
 
88
        SDL_MOUSEMOTIONMASK     = SDL_EVENTMASK(SDL_MOUSEMOTION),
 
89
        SDL_MOUSEBUTTONDOWNMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN),
 
90
        SDL_MOUSEBUTTONUPMASK   = SDL_EVENTMASK(SDL_MOUSEBUTTONUP),
 
91
        SDL_MOUSEEVENTMASK      = SDL_EVENTMASK(SDL_MOUSEMOTION)|
 
92
                                  SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)|
 
93
                                  SDL_EVENTMASK(SDL_MOUSEBUTTONUP),
 
94
        SDL_JOYAXISMOTIONMASK   = SDL_EVENTMASK(SDL_JOYAXISMOTION),
 
95
        SDL_JOYBALLMOTIONMASK   = SDL_EVENTMASK(SDL_JOYBALLMOTION),
 
96
        SDL_JOYHATMOTIONMASK    = SDL_EVENTMASK(SDL_JOYHATMOTION),
 
97
        SDL_JOYBUTTONDOWNMASK   = SDL_EVENTMASK(SDL_JOYBUTTONDOWN),
 
98
        SDL_JOYBUTTONUPMASK     = SDL_EVENTMASK(SDL_JOYBUTTONUP),
 
99
        SDL_JOYEVENTMASK        = SDL_EVENTMASK(SDL_JOYAXISMOTION)|
 
100
                                  SDL_EVENTMASK(SDL_JOYBALLMOTION)|
 
101
                                  SDL_EVENTMASK(SDL_JOYHATMOTION)|
 
102
                                  SDL_EVENTMASK(SDL_JOYBUTTONDOWN)|
 
103
                                  SDL_EVENTMASK(SDL_JOYBUTTONUP),
 
104
        SDL_VIDEORESIZEMASK     = SDL_EVENTMASK(SDL_VIDEORESIZE),
 
105
        SDL_VIDEOEXPOSEMASK     = SDL_EVENTMASK(SDL_VIDEOEXPOSE),
 
106
        SDL_QUITMASK            = SDL_EVENTMASK(SDL_QUIT),
 
107
        SDL_SYSWMEVENTMASK      = SDL_EVENTMASK(SDL_SYSWMEVENT)
 
108
} SDL_EventMask ;
 
109
#define SDL_ALLEVENTS           0xFFFFFFFF
 
110
 
 
111
/* Application visibility event structure */
 
112
typedef struct SDL_ActiveEvent {
 
113
        Uint8 type;     /* SDL_ACTIVEEVENT */
 
114
        Uint8 gain;     /* Whether given states were gained or lost (1/0) */
 
115
        Uint8 state;    /* A mask of the focus states */
 
116
} SDL_ActiveEvent;
 
117
 
 
118
/* Keyboard event structure */
 
119
typedef struct SDL_KeyboardEvent {
 
120
        Uint8 type;     /* SDL_KEYDOWN or SDL_KEYUP */
 
121
        Uint8 which;    /* The keyboard device index */
 
122
        Uint8 state;    /* SDL_PRESSED or SDL_RELEASED */
 
123
        SDL_keysym keysym;
 
124
} SDL_KeyboardEvent;
 
125
 
 
126
/* Mouse motion event structure */
 
127
typedef struct SDL_MouseMotionEvent {
 
128
        Uint8 type;     /* SDL_MOUSEMOTION */
 
129
        Uint8 which;    /* The mouse device index */
 
130
        Uint8 state;    /* The current button state */
 
131
        Uint16 x, y;    /* The X/Y coordinates of the mouse */
 
132
        Sint16 xrel;    /* The relative motion in the X direction */
 
133
        Sint16 yrel;    /* The relative motion in the Y direction */
 
134
} SDL_MouseMotionEvent;
 
135
 
 
136
/* Mouse button event structure */
 
137
typedef struct SDL_MouseButtonEvent {
 
138
        Uint8 type;     /* SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */
 
139
        Uint8 which;    /* The mouse device index */
 
140
        Uint8 button;   /* The mouse button index */
 
141
        Uint8 state;    /* SDL_PRESSED or SDL_RELEASED */
 
142
        Uint16 x, y;    /* The X/Y coordinates of the mouse at press time */
 
143
} SDL_MouseButtonEvent;
 
144
 
 
145
/* Joystick axis motion event structure */
 
146
typedef struct SDL_JoyAxisEvent {
 
147
        Uint8 type;     /* SDL_JOYAXISMOTION */
 
148
        Uint8 which;    /* The joystick device index */
 
149
        Uint8 axis;     /* The joystick axis index */
 
150
        Sint16 value;   /* The axis value (range: -32768 to 32767) */
 
151
} SDL_JoyAxisEvent;
 
152
 
 
153
/* Joystick trackball motion event structure */
 
154
typedef struct SDL_JoyBallEvent {
 
155
        Uint8 type;     /* SDL_JOYBALLMOTION */
 
156
        Uint8 which;    /* The joystick device index */
 
157
        Uint8 ball;     /* The joystick trackball index */
 
158
        Sint16 xrel;    /* The relative motion in the X direction */
 
159
        Sint16 yrel;    /* The relative motion in the Y direction */
 
160
} SDL_JoyBallEvent;
 
161
 
 
162
/* Joystick hat position change event structure */
 
163
typedef struct SDL_JoyHatEvent {
 
164
        Uint8 type;     /* SDL_JOYHATMOTION */
 
165
        Uint8 which;    /* The joystick device index */
 
166
        Uint8 hat;      /* The joystick hat index */
 
167
        Uint8 value;    /* The hat position value:
 
168
                            SDL_HAT_LEFTUP   SDL_HAT_UP       SDL_HAT_RIGHTUP
 
169
                            SDL_HAT_LEFT     SDL_HAT_CENTERED SDL_HAT_RIGHT
 
170
                            SDL_HAT_LEFTDOWN SDL_HAT_DOWN     SDL_HAT_RIGHTDOWN
 
171
                           Note that zero means the POV is centered.
 
172
                        */
 
173
} SDL_JoyHatEvent;
 
174
 
 
175
/* Joystick button event structure */
 
176
typedef struct SDL_JoyButtonEvent {
 
177
        Uint8 type;     /* SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */
 
178
        Uint8 which;    /* The joystick device index */
 
179
        Uint8 button;   /* The joystick button index */
 
180
        Uint8 state;    /* SDL_PRESSED or SDL_RELEASED */
 
181
} SDL_JoyButtonEvent;
 
182
 
 
183
/* The "window resized" event
 
184
   When you get this event, you are responsible for setting a new video
 
185
   mode with the new width and height.
 
186
 */
 
187
typedef struct SDL_ResizeEvent {
 
188
        Uint8 type;     /* SDL_VIDEORESIZE */
 
189
        int w;          /* New width */
 
190
        int h;          /* New height */
 
191
} SDL_ResizeEvent;
 
192
 
 
193
/* The "screen redraw" event */
 
194
typedef struct SDL_ExposeEvent {
 
195
        Uint8 type;     /* SDL_VIDEOEXPOSE */
 
196
} SDL_ExposeEvent;
 
197
 
 
198
/* The "quit requested" event */
 
199
typedef struct SDL_QuitEvent {
 
200
        Uint8 type;     /* SDL_QUIT */
 
201
} SDL_QuitEvent;
 
202
 
 
203
/* A user-defined event type */
 
204
typedef struct SDL_UserEvent {
 
205
        Uint8 type;     /* SDL_USEREVENT through SDL_NUMEVENTS-1 */
 
206
        int code;       /* User defined event code */
 
207
        void *data1;    /* User defined data pointer */
 
208
        void *data2;    /* User defined data pointer */
 
209
} SDL_UserEvent;
 
210
 
 
211
/* If you want to use this event, you should include SDL_syswm.h */
 
212
struct SDL_SysWMmsg;
 
213
typedef struct SDL_SysWMmsg SDL_SysWMmsg;
 
214
typedef struct SDL_SysWMEvent {
 
215
        Uint8 type;
 
216
        SDL_SysWMmsg *msg;
 
217
} SDL_SysWMEvent;
 
218
 
 
219
/* General event structure */
 
220
typedef union SDL_Event {
 
221
        Uint8 type;
 
222
        SDL_ActiveEvent active;
 
223
        SDL_KeyboardEvent key;
 
224
        SDL_MouseMotionEvent motion;
 
225
        SDL_MouseButtonEvent button;
 
226
        SDL_JoyAxisEvent jaxis;
 
227
        SDL_JoyBallEvent jball;
 
228
        SDL_JoyHatEvent jhat;
 
229
        SDL_JoyButtonEvent jbutton;
 
230
        SDL_ResizeEvent resize;
 
231
        SDL_ExposeEvent expose;
 
232
        SDL_QuitEvent quit;
 
233
        SDL_UserEvent user;
 
234
        SDL_SysWMEvent syswm;
 
235
} SDL_Event;
 
236
 
 
237
 
 
238
/* Function prototypes */
 
239
 
 
240
/* Pumps the event loop, gathering events from the input devices.
 
241
   This function updates the event queue and internal input device state.
 
242
   This should only be run in the thread that sets the video mode.
 
243
*/
 
244
extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
 
245
 
 
246
/* Checks the event queue for messages and optionally returns them.
 
247
   If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to
 
248
   the back of the event queue.
 
249
   If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front
 
250
   of the event queue, matching 'mask', will be returned and will not
 
251
   be removed from the queue.
 
252
   If 'action' is SDL_GETEVENT, up to 'numevents' events at the front 
 
253
   of the event queue, matching 'mask', will be returned and will be
 
254
   removed from the queue.
 
255
   This function returns the number of events actually stored, or -1
 
256
   if there was an error.  This function is thread-safe.
 
257
*/
 
258
typedef enum {
 
259
        SDL_ADDEVENT,
 
260
        SDL_PEEKEVENT,
 
261
        SDL_GETEVENT
 
262
} SDL_eventaction;
 
263
/* */
 
264
extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event *events, int numevents,
 
265
                                SDL_eventaction action, Uint32 mask);
 
266
 
 
267
/* Polls for currently pending events, and returns 1 if there are any pending
 
268
   events, or 0 if there are none available.  If 'event' is not NULL, the next
 
269
   event is removed from the queue and stored in that area.
 
270
 */
 
271
extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event *event);
 
272
 
 
273
/* Waits indefinitely for the next available event, returning 1, or 0 if there
 
274
   was an error while waiting for events.  If 'event' is not NULL, the next
 
275
   event is removed from the queue and stored in that area.
 
276
 */
 
277
extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event *event);
 
278
 
 
279
/* Add an event to the event queue.
 
280
   This function returns 0 on success, or -1 if the event queue was full
 
281
   or there was some other error.
 
282
 */
 
283
extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event *event);
 
284
 
 
285
/*
 
286
  This function sets up a filter to process all events before they
 
287
  change internal state and are posted to the internal event queue.
 
288
 
 
289
  The filter is protypted as:
 
290
*/
 
291
typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event);
 
292
/*
 
293
  If the filter returns 1, then the event will be added to the internal queue.
 
294
  If it returns 0, then the event will be dropped from the queue, but the 
 
295
  internal state will still be updated.  This allows selective filtering of
 
296
  dynamically arriving events.
 
297
 
 
298
  WARNING:  Be very careful of what you do in the event filter function, as 
 
299
            it may run in a different thread!
 
300
 
 
301
  There is one caveat when dealing with the SDL_QUITEVENT event type.  The
 
302
  event filter is only called when the window manager desires to close the
 
303
  application window.  If the event filter returns 1, then the window will
 
304
  be closed, otherwise the window will remain open if possible.
 
305
  If the quit event is generated by an interrupt signal, it will bypass the
 
306
  internal queue and be delivered to the application at the next event poll.
 
307
*/
 
308
extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter);
 
309
 
 
310
/*
 
311
  Return the current event filter - can be used to "chain" filters.
 
312
  If there is no event filter set, this function returns NULL.
 
313
*/
 
314
extern DECLSPEC SDL_EventFilter SDLCALL SDL_GetEventFilter(void);
 
315
 
 
316
/*
 
317
  This function allows you to set the state of processing certain events.
 
318
  If 'state' is set to SDL_IGNORE, that event will be automatically dropped
 
319
  from the event queue and will not event be filtered.
 
320
  If 'state' is set to SDL_ENABLE, that event will be processed normally.
 
321
  If 'state' is set to SDL_QUERY, SDL_EventState() will return the 
 
322
  current processing state of the specified event.
 
323
*/
 
324
#define SDL_QUERY       -1
 
325
#define SDL_IGNORE       0
 
326
#define SDL_DISABLE      0
 
327
#define SDL_ENABLE       1
 
328
extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint8 type, int state);
 
329
 
 
330
 
 
331
/* Ends C function definitions when using C++ */
 
332
#ifdef __cplusplus
 
333
}
 
334
#endif
 
335
#include "close_code.h"
 
336
 
 
337
#endif /* _SDL_events_h */