X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsdl.h;h=5cc375c8e134aa3ca48ea6a434b43cf9818a8213;hp=fc05cb7063ad22ebbe4d8c88c66ab51b8a7d62d9;hb=a8816d6e5319f9ec26a45346b08250f61e95c011;hpb=98cdb3fce945485772ccc49741fa29051338ce0d diff --git a/src/libgame/sdl.h b/src/libgame/sdl.h index fc05cb70..5cc375c8 100644 --- a/src/libgame/sdl.h +++ b/src/libgame/sdl.h @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2002 Artsoft Entertainment * +* (c) 1994-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -14,20 +14,39 @@ #ifndef SDL_H #define SDL_H -#include "SDL.h" -#include "SDL_image.h" -#include "SDL_mixer.h" -#include "SDL_net.h" -#include "SDL_thread.h" - +#include +#include +#include +#include +#include +#if defined(PLATFORM_WIN32) +#include +#endif /* definitions needed for "system.c" */ +#if defined(TARGET_SDL2) +#define SURFACE_FLAGS (0) +#else #define SURFACE_FLAGS (SDL_SWSURFACE) +#endif + +#if defined(TARGET_SDL2) +#define SET_TRANSPARENT_PIXEL (SDL_TRUE) +#define UNSET_TRANSPARENT_PIXEL (SDL_FALSE) +#else +#define SET_TRANSPARENT_PIXEL (SDL_SRCCOLORKEY) +#define UNSET_TRANSPARENT_PIXEL (0) +#endif /* system dependent definitions */ +#if defined(TARGET_SDL2) +#define TARGET_STRING "SDL2" +#else #define TARGET_STRING "SDL" +#endif + #define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE #define CURSOR_MAX_WIDTH 32 @@ -42,12 +61,19 @@ typedef struct SDLSurfaceInfo DrawWindow; typedef Uint32 Pixel; typedef SDL_Cursor *Cursor; +#if defined(TARGET_SDL2) +typedef SDL_Keycode Key; +#else typedef SDLKey Key; +#endif typedef unsigned int KeyMod; typedef SDL_Event Event; typedef SDL_MouseButtonEvent ButtonEvent; typedef SDL_MouseMotionEvent MotionEvent; +#if defined(TARGET_SDL2) +typedef SDL_TouchFingerEvent FingerEvent; +#endif typedef SDL_KeyboardEvent KeyEvent; typedef SDL_Event ExposeEvent; typedef SDL_Event FocusChangeEvent; @@ -78,13 +104,8 @@ struct MouseCursorInfo int width, height; int hot_x, hot_y; - char data[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8]; - char mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8]; -}; - -struct XY -{ - short x, y; + byte data[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8]; + byte mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8]; }; @@ -98,6 +119,11 @@ struct XY #define EVENT_BUTTONPRESS SDL_MOUSEBUTTONDOWN #define EVENT_BUTTONRELEASE SDL_MOUSEBUTTONUP #define EVENT_MOTIONNOTIFY SDL_MOUSEMOTION +#if defined(TARGET_SDL2) +#define EVENT_FINGERPRESS SDL_FINGERDOWN +#define EVENT_FINGERRELEASE SDL_FINGERUP +#define EVENT_FINGERMOTION SDL_FINGERMOTION +#endif #define EVENT_KEYPRESS SDL_KEYDOWN #define EVENT_KEYRELEASE SDL_KEYUP #define EVENT_EXPOSE SDL_USEREVENT + 0 @@ -135,12 +161,19 @@ struct XY #define KSYM_Shift_R SDLK_RSHIFT #define KSYM_Control_L SDLK_LCTRL #define KSYM_Control_R SDLK_RCTRL +#if defined(TARGET_SDL2) +#define KSYM_Meta_L SDLK_LGUI +#define KSYM_Meta_R SDLK_RGUI +#else #define KSYM_Meta_L SDLK_LMETA #define KSYM_Meta_R SDLK_RMETA +#endif #define KSYM_Alt_L SDLK_LALT #define KSYM_Alt_R SDLK_RALT +#if !defined(TARGET_SDL2) #define KSYM_Super_L SDLK_LSUPER #define KSYM_Super_R SDLK_RSUPER +#endif #define KSYM_Mode_switch SDLK_MODE #define KSYM_Multi_key SDLK_RCTRL @@ -192,6 +225,8 @@ struct XY #define KSYM_braceright KSYM_UNDEFINED /* undefined */ #define KSYM_asciitilde KSYM_UNDEFINED /* undefined */ +#if !defined(TARGET_SDL2) +#define KSYM_degree SDLK_WORLD_16 #define KSYM_Adiaeresis SDLK_WORLD_36 #define KSYM_Odiaeresis SDLK_WORLD_54 #define KSYM_Udiaeresis SDLK_WORLD_60 @@ -199,6 +234,7 @@ struct XY #define KSYM_odiaeresis SDLK_WORLD_86 #define KSYM_udiaeresis SDLK_WORLD_92 #define KSYM_ssharp SDLK_WORLD_63 +#endif #ifndef SDLK_A #define SDLK_A 65 @@ -294,6 +330,18 @@ struct XY #define KSYM_8 SDLK_8 #define KSYM_9 SDLK_9 +#if defined(TARGET_SDL2) +#define KSYM_KP_0 SDLK_KP_0 +#define KSYM_KP_1 SDLK_KP_1 +#define KSYM_KP_2 SDLK_KP_2 +#define KSYM_KP_3 SDLK_KP_3 +#define KSYM_KP_4 SDLK_KP_4 +#define KSYM_KP_5 SDLK_KP_5 +#define KSYM_KP_6 SDLK_KP_6 +#define KSYM_KP_7 SDLK_KP_7 +#define KSYM_KP_8 SDLK_KP_8 +#define KSYM_KP_9 SDLK_KP_9 +#else #define KSYM_KP_0 SDLK_KP0 #define KSYM_KP_1 SDLK_KP1 #define KSYM_KP_2 SDLK_KP2 @@ -304,6 +352,7 @@ struct XY #define KSYM_KP_7 SDLK_KP7 #define KSYM_KP_8 SDLK_KP8 #define KSYM_KP_9 SDLK_KP9 +#endif #define KSYM_F1 SDLK_F1 #define KSYM_F2 SDLK_F2 @@ -339,8 +388,13 @@ struct XY #define KMOD_Shift_R KMOD_RSHIFT #define KMOD_Control_L KMOD_LCTRL #define KMOD_Control_R KMOD_RCTRL +#if defined(TARGET_SDL2) +#define KMOD_Meta_L KMOD_LGUI +#define KMOD_Meta_R KMOD_RGUI +#else #define KMOD_Meta_L KMOD_LMETA #define KMOD_Meta_R KMOD_RMETA +#endif #define KMOD_Alt_L KMOD_LALT #define KMOD_Alt_R KMOD_RALT @@ -352,21 +406,26 @@ struct XY /* SDL function definitions */ -inline void SDLInitVideoDisplay(void); -inline void SDLInitVideoBuffer(DrawBuffer **, DrawWindow **, boolean); -inline boolean SDLSetVideoMode(DrawBuffer **, boolean); -inline void SDLCreateBitmapContent(Bitmap *, int, int, int); -inline void SDLFreeBitmapPointers(Bitmap *); -inline void SDLCopyArea(Bitmap *, Bitmap *, int, int, int, int, int, int, int); -inline void SDLFillRectangle(Bitmap *, int, int, int, int, Uint32); -inline void SDLDrawSimpleLine(Bitmap *, int, int, int, int, Uint32); -inline void SDLDrawLine(Bitmap *, int, int, int, int, Uint32); -inline Pixel SDLGetPixel(Bitmap *, int, int); -inline void SDLPutPixel(Bitmap *, int, int, Pixel); - -inline void SDLInvertArea(Bitmap *, int, int, int, int, Uint32); -inline void SDLCopyInverseMasked(Bitmap *, Bitmap *, int, int, int, int, - int, int); +#if defined(TARGET_SDL2) +SDL_Surface *SDL_DisplayFormat(SDL_Surface *); +#endif + +void SDLInitVideoDisplay(void); +void SDLInitVideoBuffer(DrawBuffer **, DrawWindow **, boolean); +boolean SDLSetVideoMode(DrawBuffer **, boolean); +void SDLCreateBitmapContent(Bitmap *, int, int, int); +void SDLFreeBitmapPointers(Bitmap *); +void SDLCopyArea(Bitmap *, Bitmap *, int, int, int, int, int, int, int); +void SDLFillRectangle(Bitmap *, int, int, int, int, Uint32); +void SDLFadeRectangle(Bitmap *, int, int, int, int, int, int, int, + void (*draw_border_function)(void)); +void SDLDrawSimpleLine(Bitmap *, int, int, int, int, Uint32); +void SDLDrawLine(Bitmap *, int, int, int, int, Uint32); +Pixel SDLGetPixel(Bitmap *, int, int); +void SDLPutPixel(Bitmap *, int, int, Pixel); + +void SDLInvertArea(Bitmap *, int, int, int, int, Uint32); +void SDLCopyInverseMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); void SDLZoomBitmap(Bitmap *, Bitmap *); @@ -374,10 +433,11 @@ Bitmap *SDLLoadImage(char *); void SDLSetMouseCursor(struct MouseCursorInfo *); -inline void SDLOpenAudio(void); -inline void SDLCloseAudio(void); +void SDLOpenAudio(void); +void SDLCloseAudio(void); -inline void SDLNextEvent(Event *); +void SDLNextEvent(Event *); +void SDLHandleWindowManagerEvent(Event *); void HandleJoystickEvent(Event *); void SDLInitJoysticks(void);