X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsdl.h;h=627617d245594db15017f4ae75d14e92dac3fdf8;hp=9c8e9b58ffbcf664adeb36578c257563e88a895d;hb=eb201ff71896cf5291e3ad61ccc663d9cec1b825;hpb=37a06df577bbfd00f4b361f92cacb0d97036ba93 diff --git a/src/libgame/sdl.h b/src/libgame/sdl.h index 9c8e9b58..627617d2 100644 --- a/src/libgame/sdl.h +++ b/src/libgame/sdl.h @@ -1,15 +1,13 @@ -/*********************************************************** -* Artsoft Retro-Game Library * -*----------------------------------------------------------* -* (c) 1994-2002 Artsoft Entertainment * -* Holger Schemel * -* Detmolder Strasse 189 * -* 33604 Bielefeld * -* Germany * -* e-mail: info@artsoft.org * -*----------------------------------------------------------* -* sdl.h * -***********************************************************/ +// ============================================================================ +// Artsoft Retro-Game Library +// ---------------------------------------------------------------------------- +// (c) 1995-2014 by Artsoft Entertainment +// Holger Schemel +// info@artsoft.org +// http://www.artsoft.org/ +// ---------------------------------------------------------------------------- +// sdl.h +// ============================================================================ #ifndef SDL_H #define SDL_H @@ -19,22 +17,34 @@ #include #include #include +#if defined(PLATFORM_WIN32) +#include +#endif + +// definitions needed for "system.c" +#define SURFACE_FLAGS (0) -/* definitions needed for "system.c" */ +#define SET_TRANSPARENT_PIXEL (SDL_TRUE) +#define UNSET_TRANSPARENT_PIXEL (SDL_FALSE) -#define SURFACE_FLAGS (SDL_SWSURFACE) +// system dependent definitions -/* system dependent definitions */ +#define TARGET_STRING "SDL2" -#define TARGET_STRING "SDL" +#if defined(PLATFORM_ANDROID) +#define WINDOW_SCALING_STATUS WINDOW_SCALING_NOT_AVAILABLE +#define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE +#else +#define WINDOW_SCALING_STATUS WINDOW_SCALING_AVAILABLE #define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE +#endif #define CURSOR_MAX_WIDTH 32 #define CURSOR_MAX_HEIGHT 32 -/* SDL type definitions */ +// SDL type definitions typedef struct SDLSurfaceInfo Bitmap; typedef struct SDLSurfaceInfo DrawBuffer; @@ -42,25 +52,21 @@ typedef struct SDLSurfaceInfo DrawWindow; typedef Uint32 Pixel; typedef SDL_Cursor *Cursor; -typedef SDLKey Key; -typedef unsigned int KeyMod; +typedef SDL_Keycode Key; +typedef SDL_Keymod KeyMod; typedef SDL_Event Event; typedef SDL_MouseButtonEvent ButtonEvent; typedef SDL_MouseMotionEvent MotionEvent; +typedef SDL_MouseWheelEvent WheelEvent; +typedef SDL_TouchFingerEvent FingerEvent; +typedef SDL_TextInputEvent TextEvent; +typedef SDL_Event PauseResumeEvent; +typedef SDL_WindowEvent WindowEvent; typedef SDL_KeyboardEvent KeyEvent; -typedef SDL_Event ExposeEvent; -typedef SDL_Event FocusChangeEvent; -typedef SDL_Event ClientMessageEvent; - -typedef int GC; -typedef int Pixmap; -typedef int Display; -typedef int Visual; -typedef int Colormap; -/* structure definitions */ +// structure definitions struct SDLSurfaceInfo { @@ -69,8 +75,8 @@ struct SDLSurfaceInfo int width, height; SDL_Surface *surface; SDL_Surface *surface_masked; - GC gc; - GC stored_clip_gc; + SDL_Texture *texture; + SDL_Texture *texture_masked; }; struct MouseCursorInfo @@ -78,17 +84,12 @@ 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]; }; -/* SDL symbol definitions */ +// SDL symbol definitions #define None 0L @@ -98,14 +99,14 @@ struct XY #define EVENT_BUTTONPRESS SDL_MOUSEBUTTONDOWN #define EVENT_BUTTONRELEASE SDL_MOUSEBUTTONUP #define EVENT_MOTIONNOTIFY SDL_MOUSEMOTION +#define EVENT_WHEELMOTION SDL_MOUSEWHEEL +#define EVENT_FINGERPRESS SDL_FINGERDOWN +#define EVENT_FINGERRELEASE SDL_FINGERUP +#define EVENT_FINGERMOTION SDL_FINGERMOTION +#define EVENT_TEXTINPUT SDL_TEXTINPUT #define EVENT_KEYPRESS SDL_KEYDOWN #define EVENT_KEYRELEASE SDL_KEYUP -#define EVENT_EXPOSE SDL_USEREVENT + 0 -#define EVENT_FOCUSIN SDL_USEREVENT + 1 -#define EVENT_FOCUSOUT SDL_USEREVENT + 2 -#define EVENT_CLIENTMESSAGE SDL_QUIT -#define EVENT_MAPNOTIFY SDL_USEREVENT + 4 -#define EVENT_UNMAPNOTIFY SDL_USEREVENT + 5 +#define EVENT_QUIT SDL_QUIT #define KSYM_UNDEFINED SDLK_UNKNOWN @@ -135,12 +136,12 @@ struct XY #define KSYM_Shift_R SDLK_RSHIFT #define KSYM_Control_L SDLK_LCTRL #define KSYM_Control_R SDLK_RCTRL -#define KSYM_Meta_L SDLK_LMETA -#define KSYM_Meta_R SDLK_RMETA + +#define KSYM_Meta_L SDLK_LGUI +#define KSYM_Meta_R SDLK_RGUI + #define KSYM_Alt_L SDLK_LALT #define KSYM_Alt_R SDLK_RALT -#define KSYM_Super_L SDLK_LSUPER -#define KSYM_Super_R SDLK_RSUPER #define KSYM_Mode_switch SDLK_MODE #define KSYM_Multi_key SDLK_RCTRL @@ -152,14 +153,22 @@ struct XY #define KSYM_End SDLK_END #define KSYM_Page_Up SDLK_PAGEUP #define KSYM_Page_Down SDLK_PAGEDOWN + +#define KSYM_Select SDLK_SELECT #define KSYM_Menu SDLK_MENU +#define KSYM_Back SDLK_AC_BACK +#define KSYM_PlayPause SDLK_AUDIOPLAY +#if defined(PLATFORM_ANDROID) +#define KSYM_Rewind SDLK_AUDIOREWIND +#define KSYM_FastForward SDLK_AUDIOFASTFORWARD +#endif #define KSYM_space SDLK_SPACE #define KSYM_exclam SDLK_EXCLAIM #define KSYM_quotedbl SDLK_QUOTEDBL #define KSYM_numbersign SDLK_HASH #define KSYM_dollar SDLK_DOLLAR -#define KSYM_percent KSYM_UNDEFINED /* undefined */ +#define KSYM_percent SDLK_PERCENT #define KSYM_ampersand SDLK_AMPERSAND #define KSYM_apostrophe SDLK_QUOTE #define KSYM_parenleft SDLK_LEFTPAREN @@ -186,19 +195,20 @@ struct XY #define KSYM_underscore SDLK_UNDERSCORE #define KSYM_grave SDLK_BACKQUOTE -#define KSYM_quoteleft KSYM_UNDEFINED /* undefined */ -#define KSYM_braceleft KSYM_UNDEFINED /* undefined */ -#define KSYM_bar KSYM_UNDEFINED /* undefined */ -#define KSYM_braceright KSYM_UNDEFINED /* undefined */ -#define KSYM_asciitilde KSYM_UNDEFINED /* undefined */ - -#define KSYM_Adiaeresis SDLK_WORLD_36 -#define KSYM_Odiaeresis SDLK_WORLD_54 -#define KSYM_Udiaeresis SDLK_WORLD_60 -#define KSYM_adiaeresis SDLK_WORLD_68 -#define KSYM_odiaeresis SDLK_WORLD_86 -#define KSYM_udiaeresis SDLK_WORLD_92 -#define KSYM_ssharp SDLK_WORLD_63 +#define KSYM_quoteleft KSYM_UNDEFINED // undefined +#define KSYM_braceleft KSYM_UNDEFINED // undefined +#define KSYM_bar KSYM_UNDEFINED // undefined +#define KSYM_braceright KSYM_UNDEFINED // undefined +#define KSYM_asciitilde KSYM_UNDEFINED // undefined + +#define KSYM_degree 176 +#define KSYM_Adiaeresis 196 +#define KSYM_Odiaeresis 214 +#define KSYM_Udiaeresis 220 +#define KSYM_adiaeresis 228 +#define KSYM_odiaeresis 246 +#define KSYM_udiaeresis 252 +#define KSYM_ssharp 223 #ifndef SDLK_A #define SDLK_A 65 @@ -294,16 +304,16 @@ struct XY #define KSYM_8 SDLK_8 #define KSYM_9 SDLK_9 -#define KSYM_KP_0 SDLK_KP0 -#define KSYM_KP_1 SDLK_KP1 -#define KSYM_KP_2 SDLK_KP2 -#define KSYM_KP_3 SDLK_KP3 -#define KSYM_KP_4 SDLK_KP4 -#define KSYM_KP_5 SDLK_KP5 -#define KSYM_KP_6 SDLK_KP6 -#define KSYM_KP_7 SDLK_KP7 -#define KSYM_KP_8 SDLK_KP8 -#define KSYM_KP_9 SDLK_KP9 +#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 #define KSYM_F1 SDLK_F1 #define KSYM_F2 SDLK_F2 @@ -317,30 +327,18 @@ struct XY #define KSYM_F10 SDLK_F10 #define KSYM_F11 SDLK_F11 #define KSYM_F12 SDLK_F12 -#define KSYM_F13 SDLK_F13 -#define KSYM_F14 SDLK_F14 -#define KSYM_F15 SDLK_F15 -#define KSYM_F16 KSYM_UNDEFINED -#define KSYM_F17 KSYM_UNDEFINED -#define KSYM_F18 KSYM_UNDEFINED -#define KSYM_F19 KSYM_UNDEFINED -#define KSYM_F20 KSYM_UNDEFINED -#define KSYM_F21 KSYM_UNDEFINED -#define KSYM_F22 KSYM_UNDEFINED -#define KSYM_F23 KSYM_UNDEFINED -#define KSYM_F24 KSYM_UNDEFINED #define KSYM_FKEY_FIRST KSYM_F1 -#define KSYM_FKEY_LAST KSYM_F15 +#define KSYM_FKEY_LAST KSYM_F12 #define KSYM_NUM_FKEYS (KSYM_FKEY_LAST - KSYM_FKEY_FIRST + 1) -#define KMOD_None None +#define KMOD_None KMOD_NONE #define KMOD_Shift_L KMOD_LSHIFT #define KMOD_Shift_R KMOD_RSHIFT #define KMOD_Control_L KMOD_LCTRL #define KMOD_Control_R KMOD_RCTRL -#define KMOD_Meta_L KMOD_LMETA -#define KMOD_Meta_R KMOD_RMETA +#define KMOD_Meta_L KMOD_LGUI +#define KMOD_Meta_R KMOD_RGUI #define KMOD_Alt_L KMOD_LALT #define KMOD_Alt_R KMOD_RALT @@ -349,38 +347,75 @@ struct XY #define KMOD_Meta (KMOD_Meta_L | KMOD_Meta_R) #define KMOD_Alt (KMOD_Alt_L | KMOD_Alt_R) - -/* 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); - -void SDLZoomBitmap(Bitmap *, Bitmap *); +// this only contains "valid" key modifiers (and ignores keys like "NumLock") +#define KMOD_Valid (KMOD_Shift | \ + KMOD_Control | \ + KMOD_Meta | \ + KMOD_Alt) + +#define KMOD_TextInput (KMOD_Shift | KMOD_Alt_R) + +// SDL function definitions + +boolean SDLSetNativeSurface(SDL_Surface **); +SDL_Surface *SDLGetNativeSurface(SDL_Surface *); +void SDLCreateBitmapTextures(Bitmap *); +void SDLFreeBitmapTextures(Bitmap *); + +SDL_Surface *SDL_DisplayFormat(SDL_Surface *); +void SDLSetWindowScaling(int); +void SDLSetWindowScalingQuality(char *); +void SDLSetWindowFullscreen(boolean); +void SDLSetDisplaySize(void); +void SDLSetScreenSizeAndOffsets(int, int); +void SDLSetScreenSizeForRenderer(int, int); +void SDLSetScreenProperties(void); + +void SDLSetScreenRenderingMode(char *); +void SDLSetScreenVsyncMode(char *); +void SDLRedrawWindow(void); +void SDLSetWindowTitle(void); + +void SDLLimitScreenUpdates(boolean); +void SDLInitVideoDisplay(void); +void SDLInitVideoBuffer(boolean); +boolean SDLSetVideoMode(boolean); +void SDLCreateBitmapContent(Bitmap *, int, int, int); +void SDLFreeBitmapPointers(Bitmap *); +void SDLCopyArea(Bitmap *, Bitmap *, int, int, int, int, int, int, int); +void SDLBlitTexture(Bitmap *, int, int, int, int, int, int, int); +void SDLFillRectangle(Bitmap *, int, int, int, int, Uint32); +void SDLFadeRectangle(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); + +Bitmap *SDLZoomBitmap(Bitmap *, int, int); 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 SDLWaitEvent(Event *); void HandleJoystickEvent(Event *); void SDLInitJoysticks(void); boolean SDLReadJoystick(int, int *, int *, boolean *, boolean *); +boolean SDLCheckJoystickOpened(int); +void SDLClearJoystickState(void); +boolean SDLOpenJoystick(int); +void SDLCloseJoystick(int); + +void PrepareFadeBitmap(int); + +void Delay_WithScreenUpdates(unsigned int); -#endif /* SDL_H */ +#endif // SDL_H