VSF Documented
SDL.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_SDL2_H__
19#define __VSF_SDL2_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "../../vsf_sdl2_cfg.h"
24
25#if VSF_USE_SDL2 == ENABLED
26
27#include "vsf.h"
28
29/*============================ MACROS ========================================*/
30
31#ifndef VSF_SDL_CFG_V1_COMPATIBLE
32# define VSF_SDL_CFG_V1_COMPATIBLE ENABLED
33#endif
34
35/*============================ INCLUDES ======================================*/
36
37#include "SDL_cpuinfo.h"
38#include "SDL_endian.h"
39#include "SDL_stdinc.h"
40#include "SDL_version.h"
41
42#include "SDL_log.h"
43#include "SDL_rwops.h"
44#include "SDL_mutex.h"
45#include "SDL_thread.h"
46#include "SDL_timer.h"
47#include "SDL_error.h"
48
49#include "SDL_events.h"
50#include "SDL_keyboard.h"
51#include "SDL_mouse.h"
52#include "SDL_gamecontroller.h"
53#include "SDL_haptic.h"
54
55#include "SDL_audio.h"
56
57#include "SDL_surface.h"
58
59#ifdef __cplusplus
60extern "C" {
61#endif
62
63/*============================ MACROS ========================================*/
64/*============================ MACROFIED FUNCTIONS ===========================*/
65
66#if VSF_SDL_CFG_WRAPPER == ENABLED
67#define SDL_memset4 VSF_SDL_WRAPPER(SDL_memset4)
68
69#define SDL_Init VSF_SDL_WRAPPER(SDL_Init)
70#define SDL_InitSubSystem VSF_SDL_WRAPPER(SDL_InitSubSystem)
71#define SDL_QuitSubSystem VSF_SDL_WRAPPER(SDL_QuitSubSystem)
72#define SDL_Quit VSF_SDL_WRAPPER(SDL_Quit)
73#define SDL_GetPlatform VSF_SDL_WRAPPER(SDL_GetPlatform)
74
75#define SDL_SetError VSF_SDL_WRAPPER(SDL_SetError)
76#define SDL_GetError VSF_SDL_WRAPPER(SDL_GetError)
77
78#define SDL_CreateWindow VSF_SDL_WRAPPER(SDL_CreateWindow)
79#define SDL_DestroyWindow VSF_SDL_WRAPPER(SDL_DestroyWindow)
80#define SDL_GetWindowPosition VSF_SDL_WRAPPER(SDL_GetWindowPosition)
81#define SDL_GetWindowSurface VSF_SDL_WRAPPER(SDL_GetWindowSurface)
82#define SDL_GetWindowSize VSF_SDL_WRAPPER(SDL_GetWindowSize)
83#define SDL_UpdateWindowSurface VSF_SDL_WRAPPER(SDL_UpdateWindowSurface)
84#define SDL_UpdateWindowSurfaceRects VSF_SDL_WRAPPER(SDL_UpdateWindowSurfaceRects)
85#define SDL_ShowWindow VSF_SDL_WRAPPER(SDL_ShowWindow)
86#define SDL_SetWindowIcon VSF_SDL_WRAPPER(SDL_SetWindowIcon)
87#define SDL_SetWindowTitle VSF_SDL_WRAPPER(SDL_SetWindowTitle)
88#define SDL_SetWindowFullscreen VSF_SDL_WRAPPER(SDL_SetWindowFullscreen)
89#define SDL_RestoreWindow VSF_SDL_WRAPPER(SDL_RestoreWindow)
90#define SDL_MaximizeWindow VSF_SDL_WRAPPER(SDL_MaximizeWindow)
91#define SDL_MinimizeWindow VSF_SDL_WRAPPER(SDL_MinimizeWindow)
92#define SDL_GetWindowFlags VSF_SDL_WRAPPER(SDL_GetWindowFlags)
93#define SDL_SetWindowBordered VSF_SDL_WRAPPER(SDL_SetWindowBordered)
94#define SDL_SetWindowPosition VSF_SDL_WRAPPER(SDL_SetWindowPosition)
95#define SDL_SetWindowOpacity VSF_SDL_WRAPPER(SDL_SetWindowOpacity)
96
97#define SDL_GetDesktopDisplayMode VSF_SDL_WRAPPER(SDL_GetDesktopDisplayMode)
98#define SDL_GetCurrentDisplayMode VSF_SDL_WRAPPER(SDL_GetCurrentDisplayMode)
99
100#define SDL_CreateRGBSurface VSF_SDL_WRAPPER(SDL_CreateRGBSurface)
101#define SDL_CreateRGBSurfaceWithFormat VSF_SDL_WRAPPER(SDL_CreateRGBSurfaceWithFormat)
102#define SDL_CreateRGBSurfaceWithFormatFrom VSF_SDL_WRAPPER(SDL_CreateRGBSurfaceWithFormatFrom)
103#define SDL_CreateRGBSurfaceFrom VSF_SDL_WRAPPER(SDL_CreateRGBSurfaceFrom)
104#define SDL_FreeSurface VSF_SDL_WRAPPER(SDL_FreeSurface)
105#define SDL_LockSurface VSF_SDL_WRAPPER(SDL_LockSurface)
106#define SDL_UnlockSurface VSF_SDL_WRAPPER(SDL_UnlockSurface)
107#define SDL_SetSurfaceBlendMode VSF_SDL_WRAPPER(SDL_SetSurfaceBlendMode)
108#define SDL_SetColorKey VSF_SDL_WRAPPER(SDL_SetColorKey)
109#define SDL_FillRect VSF_SDL_WRAPPER(SDL_FillRect)
110#define SDL_BlitSurface VSF_SDL_WRAPPER(SDL_BlitSurface)
111#define SDL_ConvertSurfaceFormat VSF_SDL_WRAPPER(SDL_ConvertSurfaceFormat)
112#define SDL_ConvertSurface VSF_SDL_WRAPPER(SDL_ConvertSurface)
113#define SDL_SetClipRect VSF_SDL_WRAPPER(SDL_SetClipRect)
114#define SDL_GetClipRect VSF_SDL_WRAPPER(SDL_GetClipRect)
115
116#define SDL_CreateRenderer VSF_SDL_WRAPPER(SDL_CreateRenderer)
117#define SDL_DestroyRenderer VSF_SDL_WRAPPER(SDL_DestroyRenderer)
118#define SDL_RenderClear VSF_SDL_WRAPPER(SDL_RenderClear)
119#define SDL_RenderCopy VSF_SDL_WRAPPER(SDL_RenderCopy)
120#define SDL_RenderCopyEx VSF_SDL_WRAPPER(SDL_RenderCopyEx)
121#define SDL_RenderPresent VSF_SDL_WRAPPER(SDL_RenderPresent)
122#define SDL_SetRenderDrawColor VSF_SDL_WRAPPER(SDL_SetRenderDrawColor)
123#define SDL_RenderDrawPoint VSF_SDL_WRAPPER(SDL_RenderDrawPoint)
124#define SDL_RenderDrawRect VSF_SDL_WRAPPER(SDL_RenderDrawRect)
125#define SDL_RenderGetScale VSF_SDL_WRAPPER(SDL_RenderGetScale)
126#define SDL_RenderSetScale VSF_SDL_WRAPPER(SDL_RenderSetScale)
127#define SDL_RenderGetLogicalSize VSF_SDL_WRAPPER(SDL_RenderGetLogicalSize)
128#define SDL_RenderSetLogicalSize VSF_SDL_WRAPPER(SDL_RenderSetLogicalSize)
129#define SDL_RenderGetViewport VSF_SDL_WRAPPER(SDL_RenderGetViewport)
130#define SDL_RenderSetViewport VSF_SDL_WRAPPER(SDL_RenderSetViewport)
131#define SDL_SetRenderTarget VSF_SDL_WRAPPER(SDL_SetRenderTarget)
132#define SDL_GetRenderTarget VSF_SDL_WRAPPER(SDL_GetRenderTarget)
133#define SDL_SetRenderDrawBlendMode VSF_SDL_WRAPPER(SDL_SetRenderDrawBlendMode)
134#define SDL_GetRenderDrawBlendMode VSF_SDL_WRAPPER(SDL_GetRenderDrawBlendMode)
135#define SDL_RenderFillRect VSF_SDL_WRAPPER(SDL_RenderFillRect)
136#define SDL_IntersectRect VSF_SDL_WRAPPER(SDL_IntersectRect)
137
138#define SDL_CreateTexture VSF_SDL_WRAPPER(SDL_CreateTexture)
139#define SDL_CreateTextureFromSurface VSF_SDL_WRAPPER(SDL_CreateTextureFromSurface)
140#define SDL_UpdateTexture VSF_SDL_WRAPPER(SDL_UpdateTexture)
141#define SDL_DestroyTexture VSF_SDL_WRAPPER(SDL_DestroyTexture)
142#define SDL_LockTexture VSF_SDL_WRAPPER(SDL_LockTexture)
143#define SDL_UnlockTexture VSF_SDL_WRAPPER(SDL_UnlockTexture)
144#define SDL_SetTextureBlendMode VSF_SDL_WRAPPER(SDL_SetTextureBlendMode)
145#define SDL_GetTextureBlendMode VSF_SDL_WRAPPER(SDL_GetTextureBlendMode)
146#define SDL_SetTextureColorMod VSF_SDL_WRAPPER(SDL_SetTextureColorMod)
147#define SDL_GetTextureColorMod VSF_SDL_WRAPPER(SDL_GetTextureColorMod)
148#define SDL_SetTextureAlphaMod VSF_SDL_WRAPPER(SDL_SetTextureAlphaMod)
149#define SDL_GetTextureAlphaMod VSF_SDL_WRAPPER(SDL_GetTextureAlphaMod)
150
151#define SDL_MapRGBA VSF_SDL_WRAPPER(SDL_MapRGBA)
152#define SDL_MapRGB VSF_SDL_WRAPPER(SDL_MapRGB)
153#define SDL_AllocFormat VSF_SDL_WRAPPER(SDL_AllocFormat)
154#define SDL_FreeFormat VSF_SDL_WRAPPER(SDL_FreeFormat)
155
156#define SDL_CreateSemaphore VSF_SDL_WRAPPER(SDL_CreateSemaphore)
157#define SDL_DestroySemaphore VSF_SDL_WRAPPER(SDL_DestroySemaphore)
158#define SDL_SemPost VSF_SDL_WRAPPER(SDL_SemPost)
159
160#define SDL_GetDisplayDPI VSF_SDL_WRAPPER(SDL_GetDisplayDPI)
161#define SDL_EnableScreenSaver VSF_SDL_WRAPPER(SDL_EnableScreenSaver)
162#define SDL_HasClipboardText VSF_SDL_WRAPPER(SDL_HasClipboardText)
163#define SDL_GetClipboardText VSF_SDL_WRAPPER(SDL_GetClipboardText)
164#define SDL_SetClipboardText VSF_SDL_WRAPPER(SDL_SetClipboardText)
165#define SDL_GetPerformanceCounter VSF_SDL_WRAPPER(SDL_GetPerformanceCounter)
166#define SDL_GetPerformanceFrequency VSF_SDL_WRAPPER(SDL_GetPerformanceFrequency)
167
168#define SDL_CreateCursor VSF_SDL_WRAPPER(SDL_CreateCursor)
169#define SDL_CreateColorCursor VSF_SDL_WRAPPER(SDL_CreateColorCursor)
170#define SDL_CreateSystemCursor VSF_SDL_WRAPPER(SDL_CreateSystemCursor)
171#define SDL_SetCursor VSF_SDL_WRAPPER(SDL_SetCursor)
172#define SDL_GetCursor VSF_SDL_WRAPPER(SDL_GetCursor)
173#define SDL_GetDefaultCursor VSF_SDL_WRAPPER(SDL_GetDefaultCursor)
174#define SDL_FreeCursor VSF_SDL_WRAPPER(SDL_FreeCursor)
175#define SDL_ShowCursor VSF_SDL_WRAPPER(SDL_ShowCursor)
176
177#define SDL_GetScancodeName VSF_SDL_WRAPPER(SDL_GetScancodeName)
178#define SDL_GetKeyName VSF_SDL_WRAPPER(SDL_GetKeyName)
179
180#define SDL_NumJoysticks VSF_SDL_WRAPPER(SDL_NumJoysticks)
181#define SDL_JoystickOpen VSF_SDL_WRAPPER(SDL_JoystickOpen)
182#define SDL_JoystickClose VSF_SDL_WRAPPER(SDL_JoystickClose)
183#define SDL_JoystickNumButtons VSF_SDL_WRAPPER(SDL_JoystickNumButtons)
184#define SDL_JoystickNumAxes VSF_SDL_WRAPPER(SDL_JoystickNumAxes)
185#define SDL_JoystickNumBalls VSF_SDL_WRAPPER(SDL_JoystickNumBalls)
186#define SDL_JoystickNumHats VSF_SDL_WRAPPER(SDL_JoystickNumHats)
187#define SDL_JoystickEventState VSF_SDL_WRAPPER(SDL_JoystickEventState)
188
189#define SDL_CaptureMouse VSF_SDL_WRAPPER(SDL_CaptureMouse)
190#define SDL_GetGlobalMouseState VSF_SDL_WRAPPER(SDL_GetGlobalMouseState)
191
192#define SDL_SetWindowHitTest VSF_SDL_WRAPPER(SDL_SetWindowHitTest)
193
194#if VSF_SDL_CFG_V1_COMPATIBLE == ENABLED
195#define SDL_CreateYUVOverlay VSF_SDL_WRAPPER(SDL_CreateYUVOverlay)
196#define SDL_FreeYUVOverlay VSF_SDL_WRAPPER(SDL_FreeYUVOverlay)
197#define SDL_LockYUVOverlay VSF_SDL_WRAPPER(SDL_LockYUVOverlay)
198#define SDL_UnlockYUVOverlay VSF_SDL_WRAPPER(SDL_UnlockYUVOverlay)
199#define SDL_DisplayYUVOverlay VSF_SDL_WRAPPER(SDL_DisplayYUVOverlay)
200
201#define SDL_SetVideoMode VSF_SDL_WRAPPER(SDL_SetVideoMode)
202#define SDL_Flip VSF_SDL_WRAPPER(SDL_Flip)
203
204#define SDL_EnableUNICODE VSF_SDL_WRAPPER(SDL_EnableUNICODE)
205#define SDL_EnableKeyRepeat VSF_SDL_WRAPPER(SDL_EnableKeyRepeat)
206
207#define SDL_WM_SetCaption VSF_SDL_WRAPPER(SDL_WM_SetCaption)
208#endif
209#endif // VSF_SDL_CFG_WRAPPER
210
211#define SDL_SemWait(__sem) __vsf_sdl2_sem_wait((__sem), -1)
212#define SDL_SemWaitTimeout(__sem, __ms) __vsf_sdl2_sem_wait((__sem), (__ms))
213#define SDL_SemTryWait(__sem) __vsf_sdl2_sem_wait((__sem), 0)
214
215#define SDL_SetHint(...)
216#define SDL_ShowSimpleMessageBox(...)
217#define SDL_SaveBMP(...)
218
219#define SDL_SetWindowSize(...)
220#define SDL_SetWindowMinimumSize(...)
221#define SDL_SetWindowMaximumSize(...)
222#define SDL_GetRendererInfo(__renderer, __info) \
223 ({ \
224 SDL_memset((__info), 0, sizeof(*(__info))); \
225 (__info)->name = "vsf"; \
226 0; \
227 })
228
229/*============================ MACROS ========================================*/
230
231#define SDL_INIT_TIMER (1 << 0)
232#define SDL_INIT_AUDIO (1 << 1)
233#define SDL_INIT_VIDEO (1 << 2)
234#define SDL_INIT_JOYSTICK (1 << 3)
235#define SDL_INIT_HAPTIC (1 << 4)
236#define SDL_INIT_GAMECONTROLLER (1 << 5)
237#define SDL_INIT_EVENTS (1 << 6)
238#define SDL_INIT_NOPARACHUTE (1 << 7)
239#define SDL_INIT_EVERYTHING (0xFFFFFFFF)
240
241#define SDL_ALPHA_OPAQUE 255
242#define SDL_ALPHA_TRANSPARENT 0
243
244/*============================ TYPES =========================================*/
245
246// basic types
247typedef union SDL_Color {
248 struct {
250 };
253
254typedef struct SDL_Rect {
255 int x, y;
256 int w, h;
258
259typedef struct SDL_Point {
260 int x, y;
262
263enum {
266};
267
268typedef enum SDL_WindowFlags {
282
290 SDL_WINDOW_VULKAN = (1 << 20),
292
293typedef struct SDL_Window SDL_Window;
294
295typedef enum {
300
301typedef enum {
302 SDL_PIXELFORMAT_UNKNOWN = VSF_DISP_COLOR_INVALID,
304
306
307 SDL_PIXELFORMAT_RGBA8888 = VSF_DISP_COLOR_RGBA8888,
309 SDL_PIXELFORMAT_ABGR8888 = VSF_DISP_COLOR_ABGR8888,
310
311 SDL_PIXELFORMAT_ARGB8888 = VSF_DISP_COLOR_ARGB8888,
312 SDL_PIXELFORMAT_RGB565 = VSF_DISP_COLOR_RGB565,
313 SDL_PIXELFORMAT_RGB332 = VSF_DISP_COLOR_RGB332,
314
315 SDL_PIXELFORMAT_RGB666 = VSF_DISP_COLOR_RGB666_32,
316
317 SDL_PIXELFORMAT_RGB888 = VSF_DISP_COLOR_RGB888_32,
318 SDL_PIXELFORMAT_BGR888 = VSF_DISP_COLOR_BGR888_32,
319
320 SDL_PIXELFORMAT_RGB24 = VSF_DISP_COLOR_RGB888_24,
321 SDL_PIXELFORMAT_BGR24 = VSF_DISP_COLOR_BGR888_24,
322
324 VSF_DISP_COLOR_DEF(INDEX8, 8, 1, 0),
325 SDL_PIXELFORMAT_INDEX8 = VSF_DISP_COLOR_INDEX8,
327
328typedef enum SDL_BlendMode {
334
336
337typedef struct SDL_Palette {
341
342typedef struct SDL_PixelFormat {
344
361typedef struct SDL_Surface {
364 int w, h;
365 int pitch;
366
367 enum {
368 SDL_PREALLOC = 1 << 0,
372
374 void *pixels;
375
376 uint32_t __pixels[0] VSF_CAL_ALIGN(4);
378
379typedef struct SDL_DisplayMode {
381 int w, h;
383
384#if VSF_SDL_CFG_V1_COMPATIBLE == ENABLED
385enum {
386 SDL_YV12_OVERLAY = 0x32315659,
387 SDL_IYUV_OVERLAY = 0x56555949,
388 SDL_YUY2_OVERLAY = 0x32595559,
389 SDL_UYVY_OVERLAY = 0x59565955,
390 SDL_YVYU_OVERLAY = 0x55595659,
391};
392typedef struct SDL_Overlay {
396 int w, h;
400
401// parameter for SDL_SetVideoMode
402enum {
403 SDL_SWSURFACE = 0 << 0, // Just here for compatibility
408};
409#endif
410
411typedef enum {
417typedef enum {
422
423typedef struct SDL_RendererInfo {
424 const char *name;
427
429
430
431// semaphore
433
434// SDL_video.h
435typedef enum {
447typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, const SDL_Point *area, void *data);
448
449typedef struct vsf_sdl2_cfg_t {
451#if VSF_USE_AUDIO == ENABLED
453#endif
455
456/*============================ GLOBAL VARIABLES ==============================*/
457/*============================ LOCAL VARIABLES ===============================*/
458/*============================ PROTOTYPES ====================================*/
459
460extern void vsf_sdl2_init(vsf_sdl2_cfg_t *cfg);
461
462extern int SDL_Init(uint32_t flags);
463extern int SDL_InitSubSystem(uint32_t flags);
464extern void SDL_QuitSubSystem(uint32_t flags);
465extern void SDL_Quit(void);
466extern const char * SDL_GetPlatform(void);
467
468extern void SDL_memset4(void *dst, int val, size_t dwords);
469extern const char * SDL_GetError(void);
470extern int SDL_SetError(const char* fmt, ...);
471
472extern SDL_bool SDL_IntersectRect(const SDL_Rect * rect0, const SDL_Rect * rect1, SDL_Rect * rect_out);
473
474extern SDL_Window * SDL_CreateWindow(const char * title, int x, int y, int w, int h, uint32_t flags);
475extern void SDL_DestroyWindow(SDL_Window * window);
476extern void SDL_GetWindowPosition(SDL_Window * window, int * x, int * y);
478extern void SDL_GetWindowSize(SDL_Window* window, int *w, int *h);
479extern int SDL_UpdateWindowSurface(SDL_Window * window);
480extern int SDL_UpdateWindowSurfaceRects(SDL_Window * window, const SDL_Rect * rects, int numrects);
481extern void SDL_ShowWindow(SDL_Window *window);
482extern void SDL_SetWindowIcon(SDL_Window * window, SDL_Surface * icon);
483extern void SDL_SetWindowTitle(SDL_Window * window, const char * title);
484extern int SDL_SetWindowFullscreen(SDL_Window * window, uint32_t flags);
485extern void SDL_RestoreWindow(SDL_Window * window);
486extern void SDL_MaximizeWindow(SDL_Window * window);
487extern void SDL_MinimizeWindow(SDL_Window * window);
488extern uint32_t SDL_GetWindowFlags(SDL_Window * window);
489extern void SDL_SetWindowBordered(SDL_Window * window, SDL_bool bordered);
490extern void SDL_SetWindowPosition(SDL_Window * window, int x, int y);
491extern int SDL_SetWindowOpacity(SDL_Window * window, float opacity);
492
493extern int SDL_GetDesktopDisplayMode(int display_index, SDL_DisplayMode * mode);
494extern int SDL_GetCurrentDisplayMode(int display_index, SDL_DisplayMode * mode);
495
496extern SDL_Surface * SDL_CreateRGBSurface(uint32_t flags, int w, int h, int depth, uint32_t Rmask, uint32_t Gmask, uint32_t Bmask, uint32_t Amask);
497extern SDL_Surface * SDL_CreateRGBSurfaceWithFormat(uint32_t flags, int w, int h, int depth, uint32_t format);
498extern SDL_Surface * SDL_CreateRGBSurfaceWithFormatFrom(void * pixels, int w, int h, int depth, int pitch, uint32_t format);
499extern SDL_Surface * SDL_CreateRGBSurfaceFrom(void *pixels, int w, int h, int depth, int pitch, uint32_t Rmask, uint32_t Gmask, uint32_t Bmask, uint32_t Amask);
500extern void SDL_FreeSurface(SDL_Surface *surface);
501extern int SDL_LockSurface(SDL_Surface * surface);
502extern void SDL_UnlockSurface(SDL_Surface * surface);
503extern int SDL_SetSurfaceBlendMode(SDL_Surface * surface, SDL_BlendMode blendMode);
504extern int SDL_SetColorKey(SDL_Surface * surface, int flag, uint32_t key);
505extern int SDL_FillRect(SDL_Surface * surface, const SDL_Rect * rect, uint32_t color);
506extern int SDL_BlitSurface(SDL_Surface * src, const SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect);
509extern SDL_bool SDL_SetClipRect(SDL_Surface * surface, const SDL_Rect * rect);
510extern void SDL_GetClipRect(SDL_Surface * surface, SDL_Rect * rect);
511
512extern SDL_Renderer * SDL_CreateRenderer(SDL_Window * window, int index, uint32_t flags);
513extern void SDL_DestroyRenderer(SDL_Renderer * renderer);
514extern int SDL_RenderClear(SDL_Renderer * renderer);
515extern int SDL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_Rect * dstrect);
516extern int SDL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_Rect * dstrect,
517 const double angle, const SDL_Point *center, const SDL_RendererFlip flip);
518extern void SDL_RenderPresent(SDL_Renderer * renderer);
519extern int SDL_SetRenderDrawColor(SDL_Renderer * renderer, uint8_t r, uint8_t g, uint8_t b, uint8_t a);
520extern int SDL_RenderDrawPoint(SDL_Renderer * renderer, int x, int y);
521extern int SDL_RenderDrawRect(SDL_Renderer * renderer, const SDL_Rect * rect);
522extern void SDL_RenderGetScale(SDL_Renderer * renderer, float *scaleX, float *scaleY);
523extern int SDL_RenderSetScale(SDL_Renderer * renderer, float scaleX, float scaleY);
524extern void SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
525extern int SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
526extern void SDL_RenderGetViewport(SDL_Renderer * renderer, SDL_Rect * rect);
527extern int SDL_RenderSetViewport(SDL_Renderer * renderer, const SDL_Rect * rect);
528extern int SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture);
530extern int SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, SDL_BlendMode blendMode);
531extern int SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, SDL_BlendMode *blendMode);
532extern int SDL_RenderFillRect(SDL_Renderer * renderer, const SDL_Rect * rect);
533
534extern SDL_Texture * SDL_CreateTexture(SDL_Renderer * renderer, uint32_t format, int access, int w, int h);
536extern void SDL_DestroyTexture(SDL_Texture * texture);
537extern int SDL_UpdateTexture(SDL_Texture * texture, const SDL_Rect * rect, const void * pixels, int pitch);
538extern int SDL_LockTexture(SDL_Texture * texture, const SDL_Rect * rect, void **pixels, int *pitch);
539extern void SDL_UnlockTexture(SDL_Texture * texture);
540extern int SDL_SetTextureBlendMode(SDL_Texture * texture, SDL_BlendMode blendMode);
541extern int SDL_GetTextureBlendMode(SDL_Texture * texture, SDL_BlendMode *blendMode);
542extern int SDL_SetTextureColorMod(SDL_Texture * texture, uint8_t r, uint8_t g, uint8_t b);
543extern int SDL_GetTextureColorMod(SDL_Texture * texture, uint8_t * r, uint8_t * g, uint8_t * b);
544extern int SDL_SetTextureAlphaMod(SDL_Texture * texture, uint8_t alpha);
545extern int SDL_GetTextureAlphaMod(SDL_Texture * texture, uint8_t * alpha);
546
551
552extern SDL_sem * SDL_CreateSemaphore(uint32_t initial_value);
553extern void SDL_DestroySemaphore(SDL_sem * sem);
554extern int __vsf_sdl2_sem_wait(SDL_sem * sem, int32_t ms);
555extern int SDL_SemPost(SDL_sem * sem);
556
557extern int SDL_GetDisplayDPI(int display_index, float * ddpi, float * hdpi, float * vdpi);
558extern void SDL_EnableScreenSaver(void);
559extern SDL_bool SDL_HasClipboardText(void);
560extern char * SDL_GetClipboardText(void);
561extern int SDL_SetClipboardText(const char * text);
564
565extern const char * SDL_GetScancodeName(SDL_Scancode scancode);
566extern const char * SDL_GetKeyName(SDL_Keycode key);
567
568extern SDL_Cursor * SDL_CreateCursor(const uint8_t * data, const uint8_t * mask,
569 int w, int h, int hot_x, int hot_y);
570extern SDL_Cursor * SDL_CreateColorCursor(SDL_Surface * surface, int hot_x, int hot_y);
572extern void SDL_SetCursor(SDL_Cursor * cursor);
573extern SDL_Cursor * SDL_GetCursor(void);
574extern SDL_Cursor * SDL_GetDefaultCursor(void);
575extern void SDL_FreeCursor(SDL_Cursor * cursor);
576extern int SDL_ShowCursor(int toggle);
577
578extern int SDL_NumJoysticks(void);
579extern SDL_Joystick * SDL_JoystickOpen(int device_index);
580extern void SDL_JoystickClose(SDL_Joystick *joystick);
581extern int SDL_JoystickEventState(int state);
582extern int SDL_JoystickNumButtons(SDL_Joystick * joystick);
583extern int SDL_JoystickNumAxes(SDL_Joystick * joystick);
584extern int SDL_JoystickNumBalls(SDL_Joystick * joystick);
585extern int SDL_JoystickNumHats(SDL_Joystick * joystick);
586
587extern int SDL_CaptureMouse(SDL_bool enabled);
588extern uint32_t SDL_GetGlobalMouseState(int * x, int * y);
589
590// SDL_video.h
591extern int SDL_SetWindowHitTest(SDL_Window * window, SDL_HitTest callback, void *callback_data);
592
593#if VSF_SDL_CFG_V1_COMPATIBLE == ENABLED
594extern SDL_Overlay * SDL_CreateYUVOverlay(int width, int height, uint32_t format, SDL_Surface *display);
595extern void SDL_FreeYUVOverlay(SDL_Overlay * overlay);
596extern int SDL_LockYUVOverlay(SDL_Overlay * overlay);
597extern void SDL_UnlockYUVOverlay(SDL_Overlay * overlay);
598extern int SDL_DisplayYUVOverlay(SDL_Overlay * overlay, SDL_Rect * dstrect);
599
600extern SDL_Surface * SDL_SetVideoMode(int width, int height, int bpp, uint32_t flags);
601extern int SDL_Flip(SDL_Surface * screen);
602
603extern int SDL_EnableUNICODE(int enable);
604extern int SDL_EnableKeyRepeat(int delay, int interval);
605
606extern void SDL_WM_SetCaption(const char * title, const char * icon);
607#endif
608
609#ifdef __cplusplus
610}
611#endif
612
613#endif // VSF_USE_SDL
614#endif // __VSF_SDL2_H__
@ SDL_DOUBLEBUF
Definition SDL.h:406
@ SDL_ANYFORMAT
Definition SDL.h:404
@ SDL_SWSURFACE
Definition SDL.h:403
@ SDL_FULLSCREEN
Definition SDL.h:407
@ SDL_HWSURFACE
Definition SDL.h:405
#define SDL_SetError
Definition SDL.h:75
SDL_HitTestResult
Definition SDL.h:435
@ SDL_HITTEST_DRAGGABLE
Definition SDL.h:437
@ SDL_HITTEST_RESIZE_LEFT
Definition SDL.h:445
@ SDL_HITTEST_RESIZE_TOP
Definition SDL.h:439
@ SDL_HITTEST_RESIZE_TOPRIGHT
Definition SDL.h:440
@ SDL_HITTEST_NORMAL
Definition SDL.h:436
@ SDL_HITTEST_RESIZE_BOTTOM
Definition SDL.h:443
@ SDL_HITTEST_RESIZE_BOTTOMRIGHT
Definition SDL.h:442
@ SDL_HITTEST_RESIZE_BOTTOMLEFT
Definition SDL.h:444
@ SDL_HITTEST_RESIZE_RIGHT
Definition SDL.h:441
@ SDL_HITTEST_RESIZE_TOPLEFT
Definition SDL.h:438
#define SDL_SetTextureAlphaMod
Definition SDL.h:148
#define SDL_RenderPresent
Definition SDL.h:121
#define SDL_InitSubSystem
Definition SDL.h:70
#define SDL_SetColorKey
Definition SDL.h:108
#define SDL_GetWindowSize
Definition SDL.h:82
#define SDL_CreateCursor
Definition SDL.h:168
#define SDL_RenderGetViewport
Definition SDL.h:129
#define SDL_DestroyWindow
Definition SDL.h:79
#define SDL_SetWindowHitTest
Definition SDL.h:192
#define SDL_JoystickNumAxes
Definition SDL.h:184
#define SDL_SetWindowOpacity
Definition SDL.h:95
#define SDL_MaximizeWindow
Definition SDL.h:90
#define SDL_memset4
Definition SDL.h:67
#define SDL_RenderFillRect
Definition SDL.h:135
#define SDL_DestroyRenderer
Definition SDL.h:117
#define SDL_DestroyTexture
Definition SDL.h:141
#define SDL_FreeFormat
Definition SDL.h:154
#define SDL_GetTextureAlphaMod
Definition SDL.h:149
SDL_HitTestResult(SDLCALL * SDL_HitTest)(SDL_Window *win, const SDL_Point *area, void *data)
Definition SDL.h:447
#define SDL_SetRenderDrawColor
Definition SDL.h:122
#define SDL_CreateTextureFromSurface
Definition SDL.h:139
#define SDL_SetVideoMode
Definition SDL.h:201
#define SDL_SetWindowFullscreen
Definition SDL.h:88
#define SDL_GetPerformanceCounter
Definition SDL.h:165
#define SDL_CreateSystemCursor
Definition SDL.h:170
#define SDL_EnableKeyRepeat
Definition SDL.h:205
#define SDL_UpdateWindowSurfaceRects
Definition SDL.h:84
#define SDL_ShowCursor
Definition SDL.h:175
#define SDL_CreateWindow
Definition SDL.h:78
@ SDL_WINDOWPOS_UNDEFINED
Definition SDL.h:265
@ SDL_WINDOWPOS_CENTERED
Definition SDL.h:264
#define SDL_RestoreWindow
Definition SDL.h:89
#define SDL_JoystickNumHats
Definition SDL.h:186
int __vsf_sdl2_sem_wait(SDL_sem *sem, int32_t ms)
Definition vsf_sdl2.c:1297
#define SDL_CreateTexture
Definition SDL.h:138
#define SDL_GetWindowFlags
Definition SDL.h:92
#define SDL_GetScancodeName
Definition SDL.h:177
SDL_RendererFlags
Definition SDL.h:411
@ SDL_RENDERER_SOFTWARE
Definition SDL.h:412
@ SDL_RENDERER_ACCELERATED
Definition SDL.h:413
@ SDL_RENDERER_PRESENTVSYNC
Definition SDL.h:414
@ SDL_RENDERER_TARGETTEXTURE
Definition SDL.h:415
#define SDL_SetClipboardText
Definition SDL.h:164
#define SDL_EnableUNICODE
Definition SDL.h:204
#define SDL_CaptureMouse
Definition SDL.h:189
#define SDL_RenderCopyEx
Definition SDL.h:120
#define SDL_UnlockYUVOverlay
Definition SDL.h:198
#define SDL_GetTextureBlendMode
Definition SDL.h:145
#define SDL_SetWindowPosition
Definition SDL.h:94
#define SDL_JoystickClose
Definition SDL.h:182
#define SDL_RenderSetLogicalSize
Definition SDL.h:128
#define SDL_GetRenderDrawBlendMode
Definition SDL.h:134
#define SDL_MapRGB
Definition SDL.h:152
#define SDL_GetPerformanceFrequency
Definition SDL.h:166
#define SDL_SetRenderDrawBlendMode
Definition SDL.h:133
#define SDL_GetRenderTarget
Definition SDL.h:132
#define SDL_GetCursor
Definition SDL.h:172
#define SDL_SemPost
Definition SDL.h:158
#define SDL_LockYUVOverlay
Definition SDL.h:197
#define SDL_ShowWindow
Definition SDL.h:85
#define SDL_JoystickOpen
Definition SDL.h:181
SDL_RendererFlip
Definition SDL.h:417
@ SDL_FLIP_VERTICAL
Definition SDL.h:420
@ SDL_FLIP_NONE
Definition SDL.h:418
@ SDL_FLIP_HORIZONTAL
Definition SDL.h:419
#define SDL_MapRGBA
Definition SDL.h:151
#define SDL_GetTextureColorMod
Definition SDL.h:147
#define SDL_AllocFormat
Definition SDL.h:153
#define SDL_GetDisplayDPI
Definition SDL.h:160
SDL_TextureAccess
Definition SDL.h:295
@ SDL_TEXTUREACCESS_STATIC
Definition SDL.h:296
@ SDL_TEXTUREACCESS_STREAMING
Definition SDL.h:297
@ SDL_TEXTUREACCESS_TARGET
Definition SDL.h:298
#define SDL_LockTexture
Definition SDL.h:142
#define SDL_RenderDrawRect
Definition SDL.h:124
#define SDL_CreateYUVOverlay
Definition SDL.h:195
#define SDL_RenderSetScale
Definition SDL.h:126
#define SDL_NumJoysticks
Definition SDL.h:180
#define SDL_SetRenderTarget
Definition SDL.h:131
#define SDL_CreateRenderer
Definition SDL.h:116
#define SDL_SetSurfaceBlendMode
Definition SDL.h:107
#define SDL_Quit
Definition SDL.h:72
#define SDL_JoystickNumButtons
Definition SDL.h:183
#define SDL_RenderDrawPoint
Definition SDL.h:123
SDL_BlendMode
Definition SDL.h:328
@ SDL_BLENDMODE_NONE
Definition SDL.h:329
@ SDL_BLENDMODE_ADD
Definition SDL.h:331
@ SDL_BLENDMODE_BLEND
Definition SDL.h:330
@ SDL_BLENDMODE_MOD
Definition SDL.h:332
#define SDL_DestroySemaphore
Definition SDL.h:157
#define SDL_SetTextureBlendMode
Definition SDL.h:144
#define SDL_UpdateTexture
Definition SDL.h:140
#define SDL_SetWindowIcon
Definition SDL.h:86
#define SDL_UpdateWindowSurface
Definition SDL.h:83
#define SDL_GetDefaultCursor
Definition SDL.h:173
#define SDL_GetError
Definition SDL.h:76
#define SDL_DisplayYUVOverlay
Definition SDL.h:199
#define SDL_RenderClear
Definition SDL.h:118
#define SDL_CreateColorCursor
Definition SDL.h:169
SDL_PixelFormatEnum
Definition SDL.h:301
@ SDL_PIXELFORMAT_RGB332
Definition SDL.h:313
@ SDL_PIXELFORMAT_BGR24
Definition SDL.h:321
@ SDL_PIXELFORMAT_RGBA8888
Definition SDL.h:307
@ VSF_DISP_COLOR_DEF
Definition SDL.h:324
@ SDL_PIXELFORMAT_INDEX8
Definition SDL.h:325
@ SDL_PIXELFORMAT_BGR888
Definition SDL.h:318
@ SDL_PIXELFORMAT_RGB24
Definition SDL.h:320
@ SDL_PIXELFORMAT_RGB888
Definition SDL.h:317
@ SDL_PIXELFORMAT_ABGR8888
Definition SDL.h:309
@ SDL_PIXELFORMAT_ARGB8888
Definition SDL.h:311
@ SDL_PIXELFORMAT_PALETTE
Definition SDL.h:305
@ SDL_PIXELFORMAT_BYMASK_IDX
Definition SDL.h:303
@ SDL_PIXELFORMAT_RGBA32
Definition SDL.h:308
@ SDL_PIXELFORMAT_RGB666
Definition SDL.h:315
@ SDL_PIXELFORMAT_RGB565
Definition SDL.h:312
@ SDL_PIXELFORMAT_UNKNOWN
Definition SDL.h:302
@ VSF_DISP_COLOR_IDX_DEF
Definition SDL.h:323
void vsf_sdl2_init(vsf_sdl2_cfg_t *cfg)
Definition vsf_sdl2.c:426
#define SDL_UnlockSurface
Definition SDL.h:106
#define SDL_ConvertSurfaceFormat
Definition SDL.h:111
#define SDL_HasClipboardText
Definition SDL.h:162
#define SDL_CreateSemaphore
Definition SDL.h:156
#define SDL_RenderGetScale
Definition SDL.h:125
#define SDL_SetWindowBordered
Definition SDL.h:93
#define SDL_SetCursor
Definition SDL.h:171
#define SDL_CreateRGBSurfaceFrom
Definition SDL.h:103
#define SDL_SetClipRect
Definition SDL.h:113
#define SDL_BlitSurface
Definition SDL.h:110
#define SDL_JoystickNumBalls
Definition SDL.h:185
SDL_WindowFlags
Definition SDL.h:268
@ SDL_WINDOW_ALLOW_HIGHDPI
Definition SDL.h:283
@ SDL_WINDOW_TOOLTIP
Definition SDL.h:288
@ SDL_WINDOW_ALWAYS_ON_TOP
Definition SDL.h:285
@ SDL_WINDOW_DESKTOP
Definition SDL.h:280
@ SDL_WINDOW_SHOWN
Definition SDL.h:271
@ SDL_WINDOW_SKIP_TASKBAR
Definition SDL.h:286
@ SDL_WINDOW_MOUSE_CAPTURE
Definition SDL.h:284
@ SDL_WINDOW_VULKAN
Definition SDL.h:290
@ SDL_WINDOW_OPENGL
Definition SDL.h:270
@ SDL_WINDOW_MINIMIZED
Definition SDL.h:275
@ SDL_WINDOW_UTILITY
Definition SDL.h:287
@ SDL_WINDOW_MOUSE_FOCUS
Definition SDL.h:279
@ SDL_WINDOW_INPUT_GRABBED
Definition SDL.h:277
@ SDL_WINDOW_RESIZABLE
Definition SDL.h:274
@ SDL_WINDOW_FULLSCREEN_DESKTOP
Definition SDL.h:281
@ SDL_WINDOW_FULLSCREEN
Definition SDL.h:269
@ SDL_WINDOW_MAXIMIZED
Definition SDL.h:276
@ SDL_WINDOW_HIDDEN
Definition SDL.h:272
@ SDL_WINDOW_POPUP_MENU
Definition SDL.h:289
@ SDL_WINDOW_BORDERLESS
Definition SDL.h:273
@ SDL_WINDOW_INPUT_FOCUS
Definition SDL.h:278
#define SDL_GetClipRect
Definition SDL.h:114
#define SDL_FreeYUVOverlay
Definition SDL.h:196
#define SDL_FreeCursor
Definition SDL.h:174
@ SDL_UYVY_OVERLAY
Definition SDL.h:389
@ SDL_YVYU_OVERLAY
Definition SDL.h:390
@ SDL_IYUV_OVERLAY
Definition SDL.h:387
@ SDL_YUY2_OVERLAY
Definition SDL.h:388
@ SDL_YV12_OVERLAY
Definition SDL.h:386
#define SDL_GetWindowPosition
Definition SDL.h:80
#define SDL_LockSurface
Definition SDL.h:105
#define SDL_RenderCopy
Definition SDL.h:119
#define SDL_JoystickEventState
Definition SDL.h:187
vsf_sem_t SDL_sem
Definition SDL.h:432
#define SDL_CreateRGBSurfaceWithFormat
Definition SDL.h:101
#define SDL_CreateRGBSurface
Definition SDL.h:100
#define SDL_FreeSurface
Definition SDL.h:104
#define SDL_GetDesktopDisplayMode
Definition SDL.h:97
#define SDL_GetCurrentDisplayMode
Definition SDL.h:98
#define SDL_Init
Definition SDL.h:69
#define SDL_EnableScreenSaver
Definition SDL.h:161
#define SDL_SetTextureColorMod
Definition SDL.h:146
#define SDL_MinimizeWindow
Definition SDL.h:91
#define SDL_GetKeyName
Definition SDL.h:178
#define SDL_GetWindowSurface
Definition SDL.h:81
#define SDL_GetPlatform
Definition SDL.h:73
#define SDL_UnlockTexture
Definition SDL.h:143
#define SDL_QuitSubSystem
Definition SDL.h:71
#define SDL_WM_SetCaption
Definition SDL.h:207
#define SDL_GetGlobalMouseState
Definition SDL.h:190
#define SDL_RenderGetLogicalSize
Definition SDL.h:127
#define SDL_IntersectRect
Definition SDL.h:136
#define SDL_CreateRGBSurfaceWithFormatFrom
Definition SDL.h:102
#define SDL_GetClipboardText
Definition SDL.h:163
#define SDL_Flip
Definition SDL.h:202
#define SDL_FillRect
Definition SDL.h:109
#define SDL_ConvertSurface
Definition SDL.h:112
#define SDL_RenderSetViewport
Definition SDL.h:130
#define SDL_SetWindowTitle
Definition SDL.h:87
SDL_SystemCursor
Definition SDL_events.h:299
struct SDL_Cursor SDL_Cursor
Definition SDL_events.h:298
struct SDL_Joystick SDL_Joystick
Definition SDL_events.h:141
SDL_Scancode
Definition SDL_keycode.h:38
int32_t SDL_Keycode
Definition SDL_keycode.h:188
SDL_bool
Definition SDL_stdinc.h:96
#define SDLCALL
Definition begin_code.h:39
Definition vsf_audio.h:158
Definition vsf_disp.h:173
Definition vsf_eda.h:864
struct ieee80211_ext_chansw_ie data
Definition ieee80211.h:80
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
int int32_t
Definition stdint.h:8
unsigned long long uint64_t
Definition stdint.h:11
unsigned char uint8_t
Definition stdint.h:5
Definition SDL.h:379
int h
Definition SDL.h:381
int w
Definition SDL.h:381
uint32_t format
Definition SDL.h:380
Definition SDL.h:392
uint32_t format
Definition SDL.h:393
int w
Definition SDL.h:396
uint16_t pitches[4]
Definition SDL.h:397
uint8_t ** pixels
Definition SDL.h:398
uint8_t planes
Definition SDL.h:394
bool hw_overlay
Definition SDL.h:395
int h
Definition SDL.h:396
Definition SDL.h:337
int ncolors
Definition SDL.h:338
SDL_Color * colors
Definition SDL.h:339
Definition SDL.h:342
uint32_t Amask
Definition SDL.h:349
uint32_t Bmask
Definition SDL.h:348
uint8_t Bloss
Definition SDL.h:356
uint8_t BitsPerPixel
Definition SDL.h:358
uint8_t Bshift
Definition SDL.h:352
uint8_t Rloss
Definition SDL.h:354
uint8_t Rshift
Definition SDL.h:350
uint8_t Aloss
Definition SDL.h:357
uint8_t Ashift
Definition SDL.h:353
uint32_t Rmask
Definition SDL.h:346
uint32_t Gmask
Definition SDL.h:347
uint8_t Gshift
Definition SDL.h:351
SDL_Palette * palette
Definition SDL.h:345
uint32_t format
Definition SDL.h:343
uint8_t Gloss
Definition SDL.h:355
uint8_t BytesPerPixel
Definition SDL.h:359
Definition SDL.h:259
int x
Definition SDL.h:260
int y
Definition SDL.h:260
Definition SDL.h:254
int h
Definition SDL.h:256
int w
Definition SDL.h:256
int y
Definition SDL.h:255
int x
Definition SDL.h:255
Definition vsf_sdl2.c:82
Definition SDL.h:423
uint32_t flags
Definition SDL.h:425
const char * name
Definition SDL.h:424
Definition SDL.h:361
SDL_PixelFormat * format
Definition SDL.h:362
enum SDL_Surface::@801 flags
SDL_BlendMode blend
Definition SDL.h:371
SDL_PixelFormat __format
Definition SDL.h:373
int pitch
Definition SDL.h:365
int w
Definition SDL.h:364
SDL_Rect clip_rect
Definition SDL.h:363
uint32_t __pixels[0] VSF_CAL_ALIGN(4)
void * pixels
Definition SDL.h:374
@ SDL_PREALLOC
Definition SDL.h:368
@ SDL_SIMD_ALIGNED
Definition SDL.h:369
int h
Definition SDL.h:364
Definition vsf_sdl2.c:95
Definition vsf_sdl2.c:73
Definition SDL.h:449
vk_audio_dev_t * audio_dev
Definition SDL.h:452
vk_disp_t * disp_dev
Definition SDL.h:450
Definition SDL.h:247
uint8_t a
Definition SDL.h:249
uint8_t r
Definition SDL.h:249
uint8_t g
Definition SDL.h:249
uint8_t b
Definition SDL.h:249
uint32_t value
Definition SDL.h:251
#define access
Definition unistd.h:113
#define VSF_DISP_COLOR_VALUE(__INDEX, __BITLEN, __BYTELEN, __HAS_ALPHA)
Definition vsf_disp.h:50
uint8_t state
Definition vsf_msg_tree.h:247
SDL_PixelFormat format
Definition vsf_sdl2_pixelformat.c:32
uint32_t color
Definition vsf_sdl2_pixelformat.c:31