rnd-20001125-3-src
[rocksndiamonds.git] / src / sdl.h
1 /***********************************************************
2 *  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
3 *----------------------------------------------------------*
4 *  ©1995 Artsoft Development                               *
5 *        Holger Schemel                                    *
6 *        33659 Bielefeld-Senne                             *
7 *        Telefon: (0521) 493245                            *
8 *        eMail: aeglos@valinor.owl.de                      *
9 *               aeglos@uni-paderborn.de                    *
10 *               q99492@pbhrzx.uni-paderborn.de             *
11 *----------------------------------------------------------*
12 *  sdl.h                                                   *
13 ***********************************************************/
14
15 #ifndef SDL_H
16 #define SDL_H
17
18 #include "SDL.h"
19
20 #if SDL_MAJOR_VERSION >= 1 && SDL_MINOR_VERSION >= 1
21 #include "SDL_image.h"
22 #include "SDL_mixer.h"
23 #define USE_SDL_JOYSTICK
24 #else
25 #include "IMG.h"
26 #include "mixer.h"
27 #endif
28
29
30 /* definitions needed for "system.c" */
31
32 #define SURFACE_FLAGS           (SDL_SWSURFACE)
33
34
35 /* system dependent definitions */
36
37 #define PLATFORM_STRING         "SDL"
38 #define FULLSCREEN_STATUS       FULLSCREEN_AVAILABLE
39
40
41 /* SDL type definitions */
42
43 typedef SDL_Surface            *Bitmap;
44 typedef SDL_Surface            *DrawWindow;
45 typedef SDL_Surface            *DrawBuffer;
46
47 typedef SDLKey                  Key;
48
49 typedef SDL_Event               Event;
50 typedef SDL_MouseButtonEvent    ButtonEvent;
51 typedef SDL_MouseMotionEvent    MotionEvent;
52 typedef SDL_KeyboardEvent       KeyEvent;
53 typedef SDL_Event               ExposeEvent;
54 typedef SDL_Event               FocusChangeEvent;
55 typedef SDL_Event               ClientMessageEvent;
56
57 typedef int                     GC;
58 typedef int                     Pixmap;
59 typedef int                     Display;
60 typedef int                     Visual;
61 typedef int                     Colormap;
62
63
64 /* SDL symbol definitions */
65
66 #define None                    0L
67
68 #define EVENT_BUTTONPRESS       SDL_MOUSEBUTTONDOWN
69 #define EVENT_BUTTONRELEASE     SDL_MOUSEBUTTONUP
70 #define EVENT_MOTIONNOTIFY      SDL_MOUSEMOTION
71 #define EVENT_KEYPRESS          SDL_KEYDOWN
72 #define EVENT_KEYRELEASE        SDL_KEYUP
73 #define EVENT_EXPOSE            SDL_USEREVENT + 0
74 #define EVENT_FOCUSIN           SDL_USEREVENT + 1
75 #define EVENT_FOCUSOUT          SDL_USEREVENT + 2
76 #define EVENT_CLIENTMESSAGE     SDL_QUIT
77 #define EVENT_MAPNOTIFY         SDL_USEREVENT + 4
78 #define EVENT_UNMAPNOTIFY       SDL_USEREVENT + 5
79
80 #define KEY_UNDEFINED           SDLK_UNKNOWN
81
82 #define KEY_Return              SDLK_RETURN
83 #define KEY_Escape              SDLK_ESCAPE
84
85 #define KEY_Left                SDLK_LEFT
86 #define KEY_Right               SDLK_RIGHT
87 #define KEY_Up                  SDLK_UP
88 #define KEY_Down                SDLK_DOWN
89
90 #ifdef SDLK_KP_LEFT
91 #define KEY_KP_Left             SDLK_KP_LEFT
92 #define KEY_KP_Right            SDLK_KP_RIGHT
93 #define KEY_KP_Up               SDLK_KP_UP
94 #define KEY_KP_Down             SDLK_KP_DOWN
95 #endif
96
97 #define KEY_KP_Enter            SDLK_KP_ENTER
98 #define KEY_KP_Add              SDLK_KP_PLUS
99 #define KEY_KP_Subtract         SDLK_KP_MINUS
100 #define KEY_KP_Multiply         SDLK_KP_MULTIPLY
101 #define KEY_KP_Divide           SDLK_KP_DIVIDE
102 #define KEY_KP_Separator        SDLK_KP_PERIOD
103
104 #define KEY_Shift_L             SDLK_LSHIFT
105 #define KEY_Shift_R             SDLK_RSHIFT
106 #define KEY_Control_L           SDLK_LCTRL
107 #define KEY_Control_R           SDLK_RCTRL
108 #define KEY_Meta_L              SDLK_LMETA
109 #define KEY_Meta_R              SDLK_RMETA
110 #define KEY_Alt_L               SDLK_LALT
111 #define KEY_Alt_R               SDLK_RALT
112 #define KEY_Super_L             SDLK_LSUPER
113 #define KEY_Super_R             SDLK_RSUPER
114 #define KEY_Mode_switch         SDLK_MODE
115 #define KEY_Multi_key           SDLK_RCTRL
116
117 #define KEY_BackSpace           SDLK_BACKSPACE
118 #define KEY_Delete              SDLK_DELETE
119 #define KEY_Insert              SDLK_INSERT
120 #define KEY_Tab                 SDLK_TAB
121 #define KEY_Home                SDLK_HOME
122 #define KEY_End                 SDLK_END
123 #define KEY_Page_Up             SDLK_PAGEUP
124 #define KEY_Page_Down           SDLK_PAGEDOWN
125 #define KEY_Menu                SDLK_MENU
126
127 #define KEY_space               SDLK_SPACE
128 #define KEY_exclam              SDLK_EXCLAIM
129 #define KEY_quotedbl            SDLK_QUOTEDBL
130 #define KEY_numbersign          SDLK_HASH
131 #define KEY_dollar              SDLK_DOLLAR
132 #define KEY_percent             KEY_UNDEFINED           /* undefined */
133 #define KEY_ampersand           SDLK_AMPERSAND
134 #define KEY_apostrophe          SDLK_QUOTE
135 #define KEY_parenleft           SDLK_LEFTPAREN
136 #define KEY_parenright          SDLK_RIGHTPAREN
137 #define KEY_asterisk            SDLK_ASTERISK
138 #define KEY_plus                SDLK_PLUS
139 #define KEY_comma               SDLK_COMMA
140 #define KEY_minus               SDLK_MINUS
141 #define KEY_period              SDLK_PERIOD
142 #define KEY_slash               SDLK_SLASH
143
144 #define KEY_colon               SDLK_COLON
145 #define KEY_semicolon           SDLK_SEMICOLON
146 #define KEY_less                SDLK_LESS
147 #define KEY_equal               SDLK_EQUALS
148 #define KEY_greater             SDLK_GREATER
149 #define KEY_question            SDLK_QUESTION
150 #define KEY_at                  SDLK_AT
151
152 #define KEY_bracketleft         SDLK_LEFTBRACKET
153 #define KEY_backslash           SDLK_BACKSLASH
154 #define KEY_bracketright        SDLK_RIGHTBRACKET
155 #define KEY_asciicircum         SDLK_CARET
156 #define KEY_underscore          SDLK_UNDERSCORE
157 #define KEY_grave               SDLK_BACKQUOTE
158
159 #define KEY_quoteleft           KEY_UNDEFINED           /* undefined */
160 #define KEY_braceleft           KEY_UNDEFINED           /* undefined */
161 #define KEY_bar                 KEY_UNDEFINED           /* undefined */
162 #define KEY_braceright          KEY_UNDEFINED           /* undefined */
163 #define KEY_asciitilde          KEY_UNDEFINED           /* undefined */
164
165 #define KEY_Adiaeresis          SDLK_WORLD_36
166 #define KEY_Odiaeresis          SDLK_WORLD_54
167 #define KEY_Udiaeresis          SDLK_WORLD_60
168 #define KEY_adiaeresis          SDLK_WORLD_68
169 #define KEY_odiaeresis          SDLK_WORLD_86
170 #define KEY_udiaeresis          SDLK_WORLD_92
171 #define KEY_ssharp              SDLK_WORLD_63
172
173 #ifndef SDLK_A
174 #define SDLK_A                  65
175 #define SDLK_B                  66
176 #define SDLK_C                  67
177 #define SDLK_D                  68
178 #define SDLK_E                  69
179 #define SDLK_F                  70
180 #define SDLK_G                  71
181 #define SDLK_H                  72
182 #define SDLK_I                  73
183 #define SDLK_J                  74
184 #define SDLK_K                  75
185 #define SDLK_L                  76
186 #define SDLK_M                  77
187 #define SDLK_N                  78
188 #define SDLK_O                  79
189 #define SDLK_P                  80
190 #define SDLK_Q                  81
191 #define SDLK_R                  82
192 #define SDLK_S                  83
193 #define SDLK_T                  84
194 #define SDLK_U                  85
195 #define SDLK_V                  86
196 #define SDLK_W                  87
197 #define SDLK_X                  88
198 #define SDLK_Y                  89
199 #define SDLK_Z                  90
200 #endif
201
202 #define KEY_A                   SDLK_A
203 #define KEY_B                   SDLK_B
204 #define KEY_C                   SDLK_C
205 #define KEY_D                   SDLK_D
206 #define KEY_E                   SDLK_E
207 #define KEY_F                   SDLK_F
208 #define KEY_G                   SDLK_G
209 #define KEY_H                   SDLK_H
210 #define KEY_I                   SDLK_I
211 #define KEY_J                   SDLK_J
212 #define KEY_K                   SDLK_K
213 #define KEY_L                   SDLK_L
214 #define KEY_M                   SDLK_M
215 #define KEY_N                   SDLK_N
216 #define KEY_O                   SDLK_O
217 #define KEY_P                   SDLK_P
218 #define KEY_Q                   SDLK_Q
219 #define KEY_R                   SDLK_R
220 #define KEY_S                   SDLK_S
221 #define KEY_T                   SDLK_T
222 #define KEY_U                   SDLK_U
223 #define KEY_V                   SDLK_V
224 #define KEY_W                   SDLK_W
225 #define KEY_X                   SDLK_X
226 #define KEY_Y                   SDLK_Y
227 #define KEY_Z                   SDLK_Z
228
229 #define KEY_a                   SDLK_a
230 #define KEY_b                   SDLK_b
231 #define KEY_c                   SDLK_c
232 #define KEY_d                   SDLK_d
233 #define KEY_e                   SDLK_e
234 #define KEY_f                   SDLK_f
235 #define KEY_g                   SDLK_g
236 #define KEY_h                   SDLK_h
237 #define KEY_i                   SDLK_i
238 #define KEY_j                   SDLK_j
239 #define KEY_k                   SDLK_k
240 #define KEY_l                   SDLK_l
241 #define KEY_m                   SDLK_m
242 #define KEY_n                   SDLK_n
243 #define KEY_o                   SDLK_o
244 #define KEY_p                   SDLK_p
245 #define KEY_q                   SDLK_q
246 #define KEY_r                   SDLK_r
247 #define KEY_s                   SDLK_s
248 #define KEY_t                   SDLK_t
249 #define KEY_u                   SDLK_u
250 #define KEY_v                   SDLK_v
251 #define KEY_w                   SDLK_w
252 #define KEY_x                   SDLK_x
253 #define KEY_y                   SDLK_y
254 #define KEY_z                   SDLK_z
255
256 #define KEY_0                   SDLK_0
257 #define KEY_1                   SDLK_1
258 #define KEY_2                   SDLK_2
259 #define KEY_3                   SDLK_3
260 #define KEY_4                   SDLK_4
261 #define KEY_5                   SDLK_5
262 #define KEY_6                   SDLK_6
263 #define KEY_7                   SDLK_7
264 #define KEY_8                   SDLK_8
265 #define KEY_9                   SDLK_9
266
267 #define KEY_KP_0                SDLK_KP0
268 #define KEY_KP_1                SDLK_KP1
269 #define KEY_KP_2                SDLK_KP2
270 #define KEY_KP_3                SDLK_KP3
271 #define KEY_KP_4                SDLK_KP4
272 #define KEY_KP_5                SDLK_KP5
273 #define KEY_KP_6                SDLK_KP6
274 #define KEY_KP_7                SDLK_KP7
275 #define KEY_KP_8                SDLK_KP8
276 #define KEY_KP_9                SDLK_KP9
277
278 #define KEY_F1                  SDLK_F1
279 #define KEY_F2                  SDLK_F2
280 #define KEY_F3                  SDLK_F3
281 #define KEY_F4                  SDLK_F4
282 #define KEY_F5                  SDLK_F5
283 #define KEY_F6                  SDLK_F6
284 #define KEY_F7                  SDLK_F7
285 #define KEY_F8                  SDLK_F8
286 #define KEY_F9                  SDLK_F9
287 #define KEY_F10                 SDLK_F10
288 #define KEY_F11                 SDLK_F11
289 #define KEY_F12                 SDLK_F12
290 #define KEY_F13                 SDLK_F13
291 #define KEY_F14                 SDLK_F14
292 #define KEY_F15                 SDLK_F15
293 #define KEY_F16                 KEY_UNDEFINED
294 #define KEY_F17                 KEY_UNDEFINED
295 #define KEY_F18                 KEY_UNDEFINED
296 #define KEY_F19                 KEY_UNDEFINED
297 #define KEY_F20                 KEY_UNDEFINED
298 #define KEY_F21                 KEY_UNDEFINED
299 #define KEY_F22                 KEY_UNDEFINED
300 #define KEY_F23                 KEY_UNDEFINED
301 #define KEY_F24                 KEY_UNDEFINED
302
303
304 /* SDL function definitions */
305
306 inline void SDLInitBufferedDisplay(DrawBuffer *, DrawWindow *);
307 inline boolean SDLSetVideoMode(DrawBuffer *);
308 inline void SDLCopyArea(SDL_Surface *, SDL_Surface *,
309                         int, int, int, int, int, int);
310 inline void SDLFillRectangle(SDL_Surface *, int, int, int, int, unsigned int);
311 inline void SDLDrawSimpleLine(SDL_Surface *, int, int, int, int, unsigned int);
312
313 inline boolean SDLInitAudio(void);
314
315 #endif /* SDL_H */