X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsdl.h;h=627617d245594db15017f4ae75d14e92dac3fdf8;hp=7cc3b459612f15556249ca3544657b7537f63b08;hb=eb201ff71896cf5291e3ad61ccc663d9cec1b825;hpb=d0ab5a10ecda925e8fd5641aef3fdd9e035492f8 diff --git a/src/libgame/sdl.h b/src/libgame/sdl.h index 7cc3b459..627617d2 100644 --- a/src/libgame/sdl.h +++ b/src/libgame/sdl.h @@ -21,50 +21,30 @@ #include #endif -/* definitions needed for "system.c" */ +// 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 */ +// system dependent definitions -#if defined(TARGET_SDL2) #define TARGET_STRING "SDL2" -#else -#define TARGET_STRING "SDL" -#endif #if defined(PLATFORM_ANDROID) #define WINDOW_SCALING_STATUS WINDOW_SCALING_NOT_AVAILABLE #define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE -#define USE_DESKTOP_FULLSCREEN TRUE -#elif defined(TARGET_SDL2) +#else #define WINDOW_SCALING_STATUS WINDOW_SCALING_AVAILABLE #define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE -#define USE_DESKTOP_FULLSCREEN TRUE -#else // SDL 1.2 -#define WINDOW_SCALING_STATUS WINDOW_SCALING_NOT_AVAILABLE -#define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE #endif -#define USE_FINAL_SCREEN_BITMAP FALSE - #define CURSOR_MAX_WIDTH 32 #define CURSOR_MAX_HEIGHT 32 -/* SDL type definitions */ +// SDL type definitions typedef struct SDLSurfaceInfo Bitmap; typedef struct SDLSurfaceInfo DrawBuffer; @@ -72,30 +52,21 @@ typedef struct SDLSurfaceInfo DrawWindow; typedef Uint32 Pixel; typedef SDL_Cursor *Cursor; -#if defined(TARGET_SDL2) typedef SDL_Keycode Key; typedef SDL_Keymod KeyMod; -#else -typedef SDLKey Key; -typedef unsigned int KeyMod; -#endif typedef SDL_Event Event; typedef SDL_MouseButtonEvent ButtonEvent; typedef SDL_MouseMotionEvent MotionEvent; -#if defined(TARGET_SDL2) +typedef SDL_MouseWheelEvent WheelEvent; typedef SDL_TouchFingerEvent FingerEvent; typedef SDL_TextInputEvent TextEvent; typedef SDL_Event PauseResumeEvent; typedef SDL_WindowEvent WindowEvent; -#endif typedef SDL_KeyboardEvent KeyEvent; -typedef SDL_Event ExposeEvent; -typedef SDL_Event FocusChangeEvent; -typedef SDL_Event ClientMessageEvent; -/* structure definitions */ +// structure definitions struct SDLSurfaceInfo { @@ -104,10 +75,8 @@ struct SDLSurfaceInfo int width, height; SDL_Surface *surface; SDL_Surface *surface_masked; -#if defined(TARGET_SDL2) SDL_Texture *texture; SDL_Texture *texture_masked; -#endif }; struct MouseCursorInfo @@ -120,7 +89,7 @@ struct MouseCursorInfo }; -/* SDL symbol definitions */ +// SDL symbol definitions #define None 0L @@ -130,20 +99,14 @@ struct MouseCursorInfo #define EVENT_BUTTONPRESS SDL_MOUSEBUTTONDOWN #define EVENT_BUTTONRELEASE SDL_MOUSEBUTTONUP #define EVENT_MOTIONNOTIFY SDL_MOUSEMOTION -#if defined(TARGET_SDL2) +#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 -#endif #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 @@ -174,20 +137,11 @@ struct MouseCursorInfo #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 @@ -200,9 +154,13 @@ struct MouseCursorInfo #define KSYM_Page_Up SDLK_PAGEUP #define KSYM_Page_Down SDLK_PAGEDOWN -#if defined(TARGET_SDL2) +#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 @@ -210,13 +168,7 @@ struct MouseCursorInfo #define KSYM_quotedbl SDLK_QUOTEDBL #define KSYM_numbersign SDLK_HASH #define KSYM_dollar SDLK_DOLLAR - -#if defined(TARGET_SDL2) #define KSYM_percent SDLK_PERCENT -#else -#define KSYM_percent 37 /* undefined in SDL */ -#endif - #define KSYM_ampersand SDLK_AMPERSAND #define KSYM_apostrophe SDLK_QUOTE #define KSYM_parenleft SDLK_LEFTPAREN @@ -243,13 +195,12 @@ struct MouseCursorInfo #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_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 -#if defined(TARGET_SDL2) #define KSYM_degree 176 #define KSYM_Adiaeresis 196 #define KSYM_Odiaeresis 214 @@ -258,16 +209,6 @@ struct MouseCursorInfo #define KSYM_odiaeresis 246 #define KSYM_udiaeresis 252 #define KSYM_ssharp 223 -#else -#define KSYM_degree SDLK_WORLD_16 -#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 -#endif #ifndef SDLK_A #define SDLK_A 65 @@ -363,7 +304,6 @@ struct MouseCursorInfo #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 @@ -374,18 +314,6 @@ struct MouseCursorInfo #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 -#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 -#endif #define KSYM_F1 SDLK_F1 #define KSYM_F2 SDLK_F2 @@ -409,15 +337,8 @@ struct MouseCursorInfo #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 @@ -426,36 +347,45 @@ struct MouseCursorInfo #define KMOD_Meta (KMOD_Meta_L | KMOD_Meta_R) #define KMOD_Alt (KMOD_Alt_L | KMOD_Alt_R) -#if defined(TARGET_SDL2) +// 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) -#endif -/* SDL function definitions */ +// SDL function definitions boolean SDLSetNativeSurface(SDL_Surface **); SDL_Surface *SDLGetNativeSurface(SDL_Surface *); void SDLCreateBitmapTextures(Bitmap *); +void SDLFreeBitmapTextures(Bitmap *); -#if defined(TARGET_SDL2) SDL_Surface *SDL_DisplayFormat(SDL_Surface *); void SDLSetWindowScaling(int); void SDLSetWindowScalingQuality(char *); void SDLSetWindowFullscreen(boolean); -void SDLRedrawWindow(); -#endif - +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(DrawBuffer **, DrawWindow **, boolean); -boolean SDLSetVideoMode(DrawBuffer **, boolean); +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(Bitmap *, int, int, int, int, int, int, int, +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); @@ -474,11 +404,18 @@ void SDLSetMouseCursor(struct MouseCursorInfo *); void SDLOpenAudio(void); void SDLCloseAudio(void); -void SDLNextEvent(Event *); -void SDLHandleWindowManagerEvent(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