3 #include <SDL/SDL_image.h>
4 #include <SDL/SDL_mixer.h>
5 #include "gacela_SDL.h"
8 gacela_SDL_Init (SCM flags)
10 return scm_from_int (SDL_Init (scm_to_int (flags)));
17 return SCM_UNSPECIFIED;
21 gacela_SDL_SetVideoMode (SCM width, SCM height, SCM bpp, SCM flags)
23 return scm_from_int ((int)SDL_SetVideoMode (scm_to_int (width), scm_to_int (height), \
24 scm_to_int (bpp), scm_to_int (flags)));
28 gacela_SDL_WM_SetCaption (SCM title, SCM icon)
30 SDL_WM_SetCaption (scm_to_locale_string(title), scm_to_locale_string(icon));
31 return SCM_UNSPECIFIED;
35 gacela_SDL_Flip (SCM screen)
37 return scm_from_int (SDL_Flip ((SDL_Surface *)scm_to_int (screen)));
41 gacela_SDL_FreeSurface (SCM surface)
43 SDL_FreeSurface ((SDL_Surface *)scm_to_int (surface));
44 return SCM_UNSPECIFIED;
48 gacela_SDL_Delay (SCM ms)
50 SDL_Delay (scm_to_int (ms));
51 return SCM_UNSPECIFIED;
55 gacela_SDL_GetTicks ()
57 return scm_from_int (SDL_GetTicks ());
61 gacela_SDL_DisplayFormat (SCM surface)
63 return scm_from_int ((int)SDL_DisplayFormat ((SDL_Surface *)scm_to_int (surface)));
67 gacela_SDL_MapRGB (SCM format, SCM r, SCM g, SCM b)
69 return scm_from_int (SDL_MapRGB ((SDL_PixelFormat *)scm_to_int (format), scm_to_int (r), scm_to_int (g), scm_to_int (b)));
73 gacela_SDL_SetColorKey (SCM surface, SCM flag, SCM key)
75 return scm_from_int (SDL_SetColorKey ((SDL_Surface *)scm_to_int (surface), scm_to_int (flag), scm_to_int (key)));
79 gacela_SDL_LoadBMP (SCM file)
81 return scm_from_int ((int)SDL_LoadBMP (scm_to_locale_string (file)));
85 gacela_IMG_Load (SCM filename)
87 return scm_from_int ((int)IMG_Load (scm_to_locale_string (filename)));
91 gacela_SDL_GetVideoInfo ()
93 const SDL_VideoInfo *info;
96 info = SDL_GetVideoInfo ();
97 vi = scm_list_n (SCM_UNDEFINED);
99 vi = scm_cons (scm_cons (scm_from_locale_symbol ("blit_hw"), scm_from_int (info->blit_hw)), vi);
100 vi = scm_cons (scm_cons (scm_from_locale_symbol ("hw_available"), scm_from_int (info->hw_available)), vi);
106 gacela_SDL_GL_SetAttribute (SCM attr, SCM value)
108 return scm_from_int (SDL_GL_SetAttribute (scm_to_int (attr), scm_to_int (value)));
112 gacela_SDL_PollEvent ()
117 event = scm_list_n (SCM_UNDEFINED);
119 if (SDL_PollEvent (&sdl_event)) {
120 switch (sdl_event.type) {
123 event = scm_cons (scm_cons (scm_from_locale_symbol ("key.keysym.sym"), scm_from_int (sdl_event.key.keysym.sym)), event);
126 event = scm_cons (scm_cons (scm_from_locale_symbol ("type"), scm_from_int (sdl_event.type)), event);
134 SDL_register_functions (void* data)
136 scm_c_define ("SDL_INIT_TIMER", scm_from_int(SDL_INIT_TIMER));
137 scm_c_define ("SDL_INIT_AUDIO", scm_from_int(SDL_INIT_AUDIO));
138 scm_c_define ("SDL_INIT_VIDEO", scm_from_int(SDL_INIT_VIDEO));
139 scm_c_define ("SDL_INIT_CDROM", scm_from_int(SDL_INIT_CDROM));
140 scm_c_define ("SDL_INIT_JOYSTICK", scm_from_int(SDL_INIT_JOYSTICK));
141 scm_c_define ("SDL_INIT_NOPARACHUTE", scm_from_int(SDL_INIT_NOPARACHUTE));
142 scm_c_define ("SDL_INIT_EVENTTHREAD", scm_from_int(SDL_INIT_EVENTTHREAD));
143 scm_c_define ("SDL_INIT_EVERYTHING", scm_from_int(SDL_INIT_EVERYTHING));
145 scm_c_define ("SDL_SWSURFACE", scm_from_int(SDL_SWSURFACE));
146 scm_c_define ("SDL_HWSURFACE", scm_from_int(SDL_HWSURFACE));
147 scm_c_define ("SDL_ASYNCBLIT", scm_from_int(SDL_ASYNCBLIT));
149 scm_c_define ("SDL_ANYFORMAT", scm_from_int(SDL_ANYFORMAT));
150 scm_c_define ("SDL_HWPALETTE", scm_from_int(SDL_HWPALETTE));
151 scm_c_define ("SDL_DOUBLEBUF", scm_from_int(SDL_DOUBLEBUF));
152 scm_c_define ("SDL_FULLSCREEN", scm_from_int(SDL_FULLSCREEN));
153 scm_c_define ("SDL_OPENGL", scm_from_int(SDL_OPENGL));
154 scm_c_define ("SDL_OPENGLBLIT", scm_from_int(SDL_OPENGLBLIT));
155 scm_c_define ("SDL_RESIZABLE", scm_from_int(SDL_RESIZABLE));
156 scm_c_define ("SDL_NOFRAME", scm_from_int(SDL_NOFRAME));
158 scm_c_define ("SDL_HWACCEL", scm_from_int(SDL_HWACCEL));
159 scm_c_define ("SDL_SRCCOLORKEY", scm_from_int(SDL_SRCCOLORKEY));
161 scm_c_define ("SDL_GL_DOUBLEBUFFER", scm_from_int(SDL_GL_DOUBLEBUFFER));
163 scm_c_define ("SDL_DEFAULT_REPEAT_DELAY", scm_from_int(SDL_DEFAULT_REPEAT_DELAY));
164 scm_c_define ("SDL_DEFAULT_REPEAT_INTERVAL", scm_from_int(SDL_DEFAULT_REPEAT_INTERVAL));
166 scm_c_define ("SDL_LIL_ENDIAN", scm_from_int(SDL_LIL_ENDIAN));
167 scm_c_define ("SDL_BIG_ENDIAN", scm_from_int(SDL_BIG_ENDIAN));
169 scm_c_define ("MIX_DEFAULT_FORMAT", scm_from_int(MIX_DEFAULT_FORMAT));
171 scm_c_define_gsubr ("SDL_Init", 1, 0, 0, gacela_SDL_Init);
172 scm_c_define_gsubr ("SDL_Quit", 0, 0, 0, gacela_SDL_Quit);
173 scm_c_define_gsubr ("SDL_SetVideoMode", 4, 0, 0, gacela_SDL_SetVideoMode);
174 scm_c_define_gsubr ("SDL_WM_SetCaption", 2, 0, 0, gacela_SDL_WM_SetCaption);
175 scm_c_define_gsubr ("SDL_Flip", 1, 0, 0, gacela_SDL_Flip);
176 scm_c_define_gsubr ("SDL_FreeSurface", 1, 0, 0, gacela_SDL_FreeSurface);
177 scm_c_define_gsubr ("SDL_Delay", 1, 0, 0, gacela_SDL_Delay);
178 scm_c_define_gsubr ("SDL_GetTicks", 0, 0, 0, gacela_SDL_GetTicks);
179 scm_c_define_gsubr ("SDL_DisplayFormat", 1, 0, 0, gacela_SDL_DisplayFormat);
180 scm_c_define_gsubr ("SDL_MapRGB", 4, 0, 0, gacela_SDL_MapRGB);
181 scm_c_define_gsubr ("SDL_SetColorKey", 3, 0, 0, gacela_SDL_SetColorKey);
182 scm_c_define_gsubr ("SDL_LoadBMP", 1, 0, 0, gacela_SDL_LoadBMP);
183 scm_c_define_gsubr ("IMG_Load", 1, 0, 0, gacela_IMG_Load);
184 scm_c_define_gsubr ("SDL_GetVideoInfo", 0, 0, 0, gacela_SDL_GetVideoInfo);
185 scm_c_define_gsubr ("SDL_GL_SetAttribute", 2, 0, 0, gacela_SDL_GL_SetAttribute);
186 scm_c_define_gsubr ("SDL_PollEvent", 0, 0, 0, gacela_SDL_PollEvent);