2015-06-21 09:33:46 -06:00
/*
Simple DirectMedia Layer
2023-01-09 10:41:41 -07:00
Copyright ( C ) 1997 - 2023 Sam Lantinga < slouken @ libsdl . org >
2015-06-21 09:33:46 -06:00
This software is provided ' as - is ' , without any express or implied
warranty . In no event will the authors be held liable for any damages
arising from the use of this software .
Permission is granted to anyone to use this software for any purpose ,
including commercial applications , and to alter it and redistribute it
freely , subject to the following restrictions :
1. The origin of this software must not be misrepresented ; you must not
claim that you wrote the original software . If you use this software
in a product , an acknowledgment in the product documentation would be
appreciated but is not required .
2. Altered source versions must be plainly marked as such , and must not be
misrepresented as being the original software .
3. This notice may not be removed or altered from any source distribution .
*/
/**
* \ file SDL_video . h
*
* Header file for SDL video functions .
*/
2016-11-20 22:34:54 -07:00
# ifndef SDL_video_h_
# define SDL_video_h_
2015-06-21 09:33:46 -06:00
2022-11-26 21:43:38 -07:00
# include <SDL3/SDL_stdinc.h>
# include <SDL3/SDL_pixels.h>
# include <SDL3/SDL_rect.h>
# include <SDL3/SDL_surface.h>
2015-06-21 09:33:46 -06:00
2022-12-22 09:38:59 -07:00
# include <SDL3/SDL_begin_code.h>
2015-06-21 09:33:46 -06:00
/* Set up for C function definitions, even when using C++ */
# ifdef __cplusplus
extern " C " {
# endif
2023-01-04 02:27:28 -07:00
typedef Uint32 SDL_WindowID ;
2015-06-21 09:33:46 -06:00
/**
* \ brief The structure that defines a display mode
*
* \ sa SDL_GetNumDisplayModes ( )
* \ sa SDL_GetDisplayMode ( )
* \ sa SDL_GetDesktopDisplayMode ( )
* \ sa SDL_GetCurrentDisplayMode ( )
* \ sa SDL_GetClosestDisplayMode ( )
* \ sa SDL_SetWindowDisplayMode ( )
* \ sa SDL_GetWindowDisplayMode ( )
*/
typedef struct
{
Uint32 format ; /**< pixel format */
2023-01-27 11:46:51 -07:00
int pixel_w ; /**< width in pixels (used for creating back buffers) */
int pixel_h ; /**< height in pixels (used for creating back buffers) */
int screen_w ; /**< width in screen coordinates (used for creating windows) */
int screen_h ; /**< height in screen coordinates (used for creating windows) */
float display_scale ; /**< scale converting screen coordinates to pixels (e.g. a 2560x1440 screen size mode with 1.5 scale would have 3840x2160 pixels) */
2023-01-02 16:47:19 -07:00
float refresh_rate ; /**< refresh rate (or zero for unspecified) */
2015-06-21 09:33:46 -06:00
void * driverdata ; /**< driver-specific data, initialize to 0 */
} SDL_DisplayMode ;
/**
* \ brief The type used to identify a window
*
* \ sa SDL_CreateWindow ( )
* \ sa SDL_CreateWindowFrom ( )
* \ sa SDL_DestroyWindow ( )
2021-06-04 11:55:30 -06:00
* \ sa SDL_FlashWindow ( )
2015-06-21 09:33:46 -06:00
* \ sa SDL_GetWindowData ( )
* \ sa SDL_GetWindowFlags ( )
* \ sa SDL_GetWindowGrab ( )
2021-01-26 18:16:17 -07:00
* \ sa SDL_GetWindowKeyboardGrab ( )
* \ sa SDL_GetWindowMouseGrab ( )
2015-06-21 09:33:46 -06:00
* \ sa SDL_GetWindowPosition ( )
* \ sa SDL_GetWindowSize ( )
* \ sa SDL_GetWindowTitle ( )
* \ sa SDL_HideWindow ( )
* \ sa SDL_MaximizeWindow ( )
* \ sa SDL_MinimizeWindow ( )
* \ sa SDL_RaiseWindow ( )
* \ sa SDL_RestoreWindow ( )
* \ sa SDL_SetWindowData ( )
* \ sa SDL_SetWindowFullscreen ( )
* \ sa SDL_SetWindowGrab ( )
2021-01-26 18:16:17 -07:00
* \ sa SDL_SetWindowKeyboardGrab ( )
* \ sa SDL_SetWindowMouseGrab ( )
2015-06-21 09:33:46 -06:00
* \ sa SDL_SetWindowIcon ( )
* \ sa SDL_SetWindowPosition ( )
* \ sa SDL_SetWindowSize ( )
* \ sa SDL_SetWindowBordered ( )
2016-09-29 20:52:41 -06:00
* \ sa SDL_SetWindowResizable ( )
2015-06-21 09:33:46 -06:00
* \ sa SDL_SetWindowTitle ( )
* \ sa SDL_ShowWindow ( )
*/
typedef struct SDL_Window SDL_Window ;
/**
* \ brief The flags on a window
*
* \ sa SDL_GetWindowFlags ( )
*/
typedef enum
{
2023-01-28 10:52:31 -07:00
SDL_WINDOW_FULLSCREEN_EXCLUSIVE = 0x00000001 , /**< window is in fullscreen exclusive mode */
SDL_WINDOW_OPENGL = 0x00000002 , /**< window usable with OpenGL context */
2023-01-25 02:23:17 -07:00
/* 0x00000004 was SDL_WINDOW_SHOWN in SDL2, please reserve this bit for sdl2-compat. */
2023-01-28 10:52:31 -07:00
SDL_WINDOW_HIDDEN = 0x00000008 , /**< window is not visible */
SDL_WINDOW_BORDERLESS = 0x00000010 , /**< no window decoration */
SDL_WINDOW_RESIZABLE = 0x00000020 , /**< window can be resized */
SDL_WINDOW_MINIMIZED = 0x00000040 , /**< window is minimized */
SDL_WINDOW_MAXIMIZED = 0x00000080 , /**< window is maximized */
SDL_WINDOW_MOUSE_GRABBED = 0x00000100 , /**< window has grabbed mouse input */
SDL_WINDOW_INPUT_FOCUS = 0x00000200 , /**< window has input focus */
SDL_WINDOW_MOUSE_FOCUS = 0x00000400 , /**< window has mouse focus */
SDL_WINDOW_FULLSCREEN_DESKTOP = 0x00001000 , /**< window is in fullscreen desktop mode */
SDL_WINDOW_FOREIGN = 0x00000800 , /**< window not created by SDL */
2023-01-25 02:23:17 -07:00
/* 0x00002000 was SDL_WINDOW_ALLOW_HIGHDPI in SDL2, please reserve this bit for sdl2-compat. */
2023-01-28 10:52:31 -07:00
SDL_WINDOW_MOUSE_CAPTURE = 0x00004000 , /**< window has mouse captured (unrelated to MOUSE_GRABBED) */
SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000 , /**< window should always be above others */
SDL_WINDOW_SKIP_TASKBAR = 0x00010000 , /**< window should not be added to the taskbar */
SDL_WINDOW_UTILITY = 0x00020000 , /**< window should be treated as a utility window */
SDL_WINDOW_TOOLTIP = 0x00040000 , /**< window should be treated as a tooltip */
SDL_WINDOW_POPUP_MENU = 0x00080000 , /**< window should be treated as a popup menu */
SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000 , /**< window has grabbed keyboard input */
SDL_WINDOW_VULKAN = 0x10000000 , /**< window usable for Vulkan surface */
SDL_WINDOW_METAL = 0x20000000 , /**< window usable for Metal view */
2021-01-26 18:16:17 -07:00
2015-06-21 09:33:46 -06:00
} SDL_WindowFlags ;
2023-01-28 10:52:31 -07:00
# define SDL_WINDOW_FULLSCREEN_MASK (SDL_WINDOW_FULLSCREEN_EXCLUSIVE | SDL_WINDOW_FULLSCREEN_DESKTOP)
2015-06-21 09:33:46 -06:00
/**
* \ brief Used to indicate that you don ' t care what the window position is .
*/
2016-10-01 14:35:36 -06:00
# define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u
2015-06-21 09:33:46 -06:00
# define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
# define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
# define SDL_WINDOWPOS_ISUNDEFINED(X) \
( ( ( X ) & 0xFFFF0000 ) = = SDL_WINDOWPOS_UNDEFINED_MASK )
/**
* \ brief Used to indicate that the window position should be centered .
*/
2016-10-01 14:35:36 -06:00
# define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u
2015-06-21 09:33:46 -06:00
# define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X))
# define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0)
# define SDL_WINDOWPOS_ISCENTERED(X) \
( ( ( X ) & 0xFFFF0000 ) = = SDL_WINDOWPOS_CENTERED_MASK )
2021-07-24 14:41:55 -06:00
/**
* \ brief Display orientation
*/
2018-08-22 22:48:28 -06:00
typedef enum
{
SDL_ORIENTATION_UNKNOWN , /**< The display orientation can't be determined */
SDL_ORIENTATION_LANDSCAPE , /**< The display is in landscape mode, with the right side up, relative to portrait mode */
SDL_ORIENTATION_LANDSCAPE_FLIPPED , /**< The display is in landscape mode, with the left side up, relative to portrait mode */
SDL_ORIENTATION_PORTRAIT , /**< The display is in portrait mode */
2018-09-07 01:47:50 -06:00
SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */
2018-08-22 22:48:28 -06:00
} SDL_DisplayOrientation ;
2021-07-24 14:41:55 -06:00
/**
* \ brief Window flash operation
*/
typedef enum
{
SDL_FLASH_CANCEL , /**< Cancel any window flash state */
SDL_FLASH_BRIEFLY , /**< Flash the window briefly to get attention */
2021-08-15 22:43:37 -06:00
SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */
2021-07-24 14:41:55 -06:00
} SDL_FlashOperation ;
2015-06-21 09:33:46 -06:00
/**
* \ brief An opaque handle to an OpenGL context .
*/
typedef void * SDL_GLContext ;
2022-08-25 20:44:35 -06:00
/**
* \ brief Opaque EGL types .
*/
typedef void * SDL_EGLDisplay ;
typedef void * SDL_EGLConfig ;
typedef void * SDL_EGLSurface ;
2022-08-25 23:41:06 -06:00
typedef intptr_t SDL_EGLAttrib ;
typedef int SDL_EGLint ;
/**
* \ brief EGL attribute initialization callback types .
*/
typedef SDL_EGLAttrib * ( SDLCALL * SDL_EGLAttribArrayCallback ) ( void ) ;
typedef SDL_EGLint * ( SDLCALL * SDL_EGLIntArrayCallback ) ( void ) ;
2022-08-25 20:44:35 -06:00
2015-06-21 09:33:46 -06:00
/**
* \ brief OpenGL configuration attributes
*/
typedef enum
{
SDL_GL_RED_SIZE ,
SDL_GL_GREEN_SIZE ,
SDL_GL_BLUE_SIZE ,
SDL_GL_ALPHA_SIZE ,
SDL_GL_BUFFER_SIZE ,
SDL_GL_DOUBLEBUFFER ,
SDL_GL_DEPTH_SIZE ,
SDL_GL_STENCIL_SIZE ,
SDL_GL_ACCUM_RED_SIZE ,
SDL_GL_ACCUM_GREEN_SIZE ,
SDL_GL_ACCUM_BLUE_SIZE ,
SDL_GL_ACCUM_ALPHA_SIZE ,
SDL_GL_STEREO ,
SDL_GL_MULTISAMPLEBUFFERS ,
SDL_GL_MULTISAMPLESAMPLES ,
SDL_GL_ACCELERATED_VISUAL ,
SDL_GL_RETAINED_BACKING ,
SDL_GL_CONTEXT_MAJOR_VERSION ,
SDL_GL_CONTEXT_MINOR_VERSION ,
SDL_GL_CONTEXT_FLAGS ,
SDL_GL_CONTEXT_PROFILE_MASK ,
SDL_GL_SHARE_WITH_CURRENT_CONTEXT ,
SDL_GL_FRAMEBUFFER_SRGB_CAPABLE ,
2017-08-19 13:02:03 -06:00
SDL_GL_CONTEXT_RELEASE_BEHAVIOR ,
2017-08-24 19:30:53 -06:00
SDL_GL_CONTEXT_RESET_NOTIFICATION ,
2022-07-06 13:12:30 -06:00
SDL_GL_CONTEXT_NO_ERROR ,
2022-08-25 21:29:41 -06:00
SDL_GL_FLOATBUFFERS ,
SDL_GL_EGL_PLATFORM
2015-06-21 09:33:46 -06:00
} SDL_GLattr ;
typedef enum
{
SDL_GL_CONTEXT_PROFILE_CORE = 0x0001 ,
SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002 ,
2017-06-04 15:15:39 -06:00
SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
2015-06-21 09:33:46 -06:00
} SDL_GLprofile ;
typedef enum
{
SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001 ,
SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002 ,
SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004 ,
SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
} SDL_GLcontextFlag ;
typedef enum
{
SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000 ,
SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001
} SDL_GLcontextReleaseFlag ;
2017-08-19 13:02:03 -06:00
typedef enum
{
SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000 ,
SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001
} SDL_GLContextResetNotification ;
2015-06-21 09:33:46 -06:00
/* Function prototypes */
/**
2021-03-21 12:18:39 -06:00
* Get the number of video drivers compiled into SDL .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ returns a number > = 1 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetVideoDriver
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers ( void ) ;
/**
2021-03-21 12:18:39 -06:00
* Get the name of a built in video driver .
*
* The video drivers are presented in the order in which they are normally
* checked during initialization .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param index the index of a video driver
* \ returns the name of the video driver with the given * * index * * .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetNumVideoDrivers
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC const char * SDLCALL SDL_GetVideoDriver ( int index ) ;
/**
2021-03-21 12:18:39 -06:00
* Get the name of the currently initialized video driver .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ returns the name of the current video driver or NULL if no driver has been
* initialized .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetNumVideoDrivers
* \ sa SDL_GetVideoDriver
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC const char * SDLCALL SDL_GetCurrentVideoDriver ( void ) ;
/**
2021-03-21 12:18:39 -06:00
* Get the number of available video displays .
*
* \ returns a number > = 1 or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetDisplayBounds
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays ( void ) ;
/**
2021-03-21 12:18:39 -06:00
* Get the name of a display in UTF - 8 encoding .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param displayIndex the index of display from which the name should be
* queried
* \ returns the name of a display or NULL for an invalid display index or
* failure ; call SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetNumVideoDisplays
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC const char * SDLCALL SDL_GetDisplayName ( int displayIndex ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 04:36:35 -07:00
* Get the desktop area represented by a display , in screen coordinates .
2021-03-21 12:18:39 -06:00
*
* The primary display ( ` displayIndex ` zero ) is always located at 0 , 0.
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param displayIndex the index of the display to query
* \ param rect the SDL_Rect structure filled in with the display bounds
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetNumVideoDisplays
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDisplayBounds ( int displayIndex , SDL_Rect * rect ) ;
2015-06-21 09:33:46 -06:00
2016-01-04 21:52:40 -07:00
/**
2023-01-25 10:58:29 -07:00
* Get the usable desktop area represented by a display , in screen
* coordinates .
2021-03-21 12:18:39 -06:00
*
* The primary display ( ` displayIndex ` zero ) is always located at 0 , 0.
*
* This is the same area as SDL_GetDisplayBounds ( ) reports , but with portions
* reserved by the system removed . For example , on Apple ' s macOS , this
* subtracts the area occupied by the menu bar and dock .
*
* Setting a window to be fullscreen generally bypasses these unusable areas ,
* so these are good guidelines for the maximum space available to a
* non - fullscreen window .
*
* The parameter ` rect ` is ignored if it is NULL .
2016-01-04 21:52:40 -07:00
*
2021-03-21 12:18:39 -06:00
* This function also returns - 1 if the parameter ` displayIndex ` is out of
* range .
2016-01-04 21:52:40 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param displayIndex the index of the display to query the usable bounds
* from
* \ param rect the SDL_Rect structure filled in with the display bounds
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2016-01-04 21:52:40 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2016-01-04 21:52:40 -07:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetDisplayBounds
* \ sa SDL_GetNumVideoDisplays
2016-01-04 21:52:40 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds ( int displayIndex , SDL_Rect * rect ) ;
2016-01-04 21:52:40 -07:00
2018-08-22 22:48:28 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the dots / pixels - per - inch for a display .
2018-08-22 22:48:28 -06:00
*
2021-03-21 12:18:39 -06:00
* Diagonal , horizontal and vertical DPI can all be optionally returned if the
* appropriate parameter is non - NULL .
2018-08-22 22:48:28 -06:00
*
2021-03-21 12:18:39 -06:00
* A failure of this function usually means that either no DPI information is
* available or the ` displayIndex ` is out of range .
2018-08-22 22:48:28 -06:00
*
2022-08-02 08:50:51 -06:00
* * * WARNING * * : This reports the DPI that the hardware reports , and it is not
* always reliable ! It is almost always better to use SDL_GetWindowSize ( ) to
* find the window size , which might be in logical points instead of pixels ,
2022-12-28 12:17:55 -07:00
* and then SDL_GetWindowSizeInPixels ( ) , SDL_GL_GetDrawableSize ( ) ,
* SDL_Vulkan_GetDrawableSize ( ) , SDL_Metal_GetDrawableSize ( ) , or
2022-11-27 09:27:00 -07:00
* SDL_GetRendererOutputSize ( ) , and compare the two values to get an actual
2022-12-28 12:17:55 -07:00
* scaling value between the two . We will be rethinking how high - dpi details
2023-01-25 10:58:29 -07:00
* should be managed in SDL3 to make things more consistent , reliable , and
* clear .
2022-08-02 08:50:51 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param displayIndex the index of the display from which DPI information
* should be queried
* \ param ddpi a pointer filled in with the diagonal DPI of the display ; may
* be NULL
* \ param hdpi a pointer filled in with the horizontal DPI of the display ; may
* be NULL
* \ param vdpi a pointer filled in with the vertical DPI of the display ; may
* be NULL
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetNumVideoDisplays
2018-08-22 22:48:28 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDisplayPhysicalDPI ( int displayIndex , float * ddpi , float * hdpi , float * vdpi ) ;
2018-08-22 22:48:28 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the orientation of a display .
2018-08-22 22:48:28 -06:00
*
2021-03-26 15:34:58 -06:00
* \ param displayIndex the index of the display to query
2021-03-21 12:18:39 -06:00
* \ returns The SDL_DisplayOrientation enum value of the display , or
* ` SDL_ORIENTATION_UNKNOWN ` if it isn ' t available .
2018-08-22 22:48:28 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-07-14 15:07:04 -06:00
* \ sa SDL_GetNumVideoDisplays
2018-08-22 22:48:28 -06:00
*/
extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation ( int displayIndex ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the number of available display modes .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* The ` displayIndex ` needs to be in the range from 0 to
* SDL_GetNumVideoDisplays ( ) - 1.
*
* \ param displayIndex the index of the display to query
* \ returns a number > = 1 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetDisplayMode
* \ sa SDL_GetNumVideoDisplays
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes ( int displayIndex ) ;
/**
2021-03-21 12:18:39 -06:00
* Get information about a specific display mode .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* The display modes are sorted in this priority :
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* - width - > largest to smallest
* - height - > largest to smallest
2023-01-25 04:36:35 -07:00
* - display_scale - > smallest to largest
2021-03-21 12:18:39 -06:00
* - bits per pixel - > more colors to fewer colors
* - packed pixel layout - > largest to smallest
* - refresh rate - > highest to lowest
*
* \ param displayIndex the index of the display to query
* \ param modeIndex the index of the display mode to query
* \ param mode an SDL_DisplayMode structure filled in with the mode at
* ` modeIndex `
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetNumDisplayModes
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDisplayMode ( int displayIndex , int modeIndex , SDL_DisplayMode * mode ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get information about the desktop ' s display mode .
*
* There ' s a difference between this function and SDL_GetCurrentDisplayMode ( )
* when SDL runs fullscreen and has changed the resolution . In that case this
* function will return the previous native display mode , and not the current
* display mode .
*
* \ param displayIndex the index of the display to query
* \ param mode an SDL_DisplayMode structure filled in with the current display
* mode
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetCurrentDisplayMode
* \ sa SDL_GetDisplayMode
* \ sa SDL_SetWindowDisplayMode
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode ( int displayIndex , SDL_DisplayMode * mode ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get information about the current display mode .
*
* There ' s a difference between this function and SDL_GetDesktopDisplayMode ( )
* when SDL runs fullscreen and has changed the resolution . In that case this
* function will return the current display mode , and not the previous native
* display mode .
*
* \ param displayIndex the index of the display to query
* \ param mode an SDL_DisplayMode structure filled in with the current display
* mode
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetDesktopDisplayMode
* \ sa SDL_GetDisplayMode
* \ sa SDL_GetNumVideoDisplays
* \ sa SDL_SetWindowDisplayMode
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode ( int displayIndex , SDL_DisplayMode * mode ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the closest match to the requested display mode .
2015-06-21 09:33:46 -06:00
*
2021-07-14 15:07:04 -06:00
* The available display modes are scanned and ` closest ` is filled in with the
* closest mode matching the requested mode and returned . The mode format and
* refresh rate default to the desktop mode if they are set to 0. The modes
* are scanned with size being first priority , format being second priority ,
* and finally checking the refresh rate . If all the available modes are too
* small , then NULL is returned .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param displayIndex the index of the display to query
* \ param mode an SDL_DisplayMode structure containing the desired display
* mode
* \ param closest an SDL_DisplayMode structure filled in with the closest
* match of the available display modes
* \ returns the passed in value ` closest ` or NULL if no matching video mode
* was available ; call SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-07-14 15:07:04 -06:00
* \ sa SDL_GetDisplayMode
* \ sa SDL_GetNumDisplayModes
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode ( int displayIndex , const SDL_DisplayMode * mode , SDL_DisplayMode * closest ) ;
2015-06-21 09:33:46 -06:00
2022-08-08 12:26:52 -06:00
/**
* Get the index of the display containing a point
*
* \ param point the point to query
2022-08-08 14:07:31 -06:00
* \ returns the index of the display containing the point or a negative error
* code on failure ; call SDL_GetError ( ) for more information .
2022-08-08 12:26:52 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2022-08-09 07:05:08 -06:00
*
2022-08-08 12:26:52 -06:00
* \ sa SDL_GetDisplayBounds
* \ sa SDL_GetNumVideoDisplays
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDisplayIndexForPoint ( const SDL_Point * point ) ;
2022-08-08 12:26:52 -06:00
/**
* Get the index of the display primarily containing a rect
*
* \ param rect the rect to query
* \ returns the index of the display entirely containing the rect or closest
* to the center of the rect on success or a negative error code on
* failure ; call SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2022-08-09 07:05:08 -06:00
*
2022-08-08 12:26:52 -06:00
* \ sa SDL_GetDisplayBounds
* \ sa SDL_GetNumVideoDisplays
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetDisplayIndexForRect ( const SDL_Rect * rect ) ;
2022-08-08 12:26:52 -06:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the index of the display associated with a window .
*
* \ param window the window to query
* \ returns the index of the display containing the center of the window on
* success or a negative error code on failure ; call SDL_GetError ( )
* for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetDisplayBounds
* \ sa SDL_GetNumVideoDisplays
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the display mode to use when a window is visible at fullscreen .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This only affects the display mode used when the window is fullscreen . To
* change the window size when the window is not fullscreen , use
* SDL_SetWindowSize ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to affect
* \ param mode the SDL_DisplayMode structure representing the mode to use , or
* NULL to use the window ' s dimensions and the desktop ' s format
* and refresh rate
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowDisplayMode
* \ sa SDL_SetWindowFullscreen
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode ( SDL_Window * window , const SDL_DisplayMode * mode ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Query the display mode to use when a window is visible at fullscreen .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ param mode an SDL_DisplayMode structure filled in with the fullscreen
* display mode
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowDisplayMode
* \ sa SDL_SetWindowFullscreen
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode ( SDL_Window * window , SDL_DisplayMode * mode ) ;
2015-06-21 09:33:46 -06:00
2021-10-21 18:37:20 -06:00
/**
* Get the raw ICC profile data for the screen the window is currently on .
2021-10-21 18:39:04 -06:00
*
2021-10-21 18:37:20 -06:00
* Data returned should be freed with SDL_free .
2021-10-21 18:39:04 -06:00
*
2021-10-21 18:37:20 -06:00
* \ param window the window to query
* \ param size the size of the ICC profile
2021-10-21 18:39:04 -06:00
* \ returns the raw ICC profile data on success or NULL on failure ; call
* SDL_GetError ( ) for more information .
2021-10-26 19:36:05 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-21 18:37:20 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void * SDLCALL SDL_GetWindowICCProfile ( SDL_Window * window , size_t * size ) ;
2021-10-21 18:37:20 -06:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the pixel format associated with the window .
*
* \ param window the window to query
* \ returns the pixel format of the window on success or
* SDL_PIXELFORMAT_UNKNOWN on failure ; call SDL_GetError ( ) for more
* information .
2021-10-26 19:36:05 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Create a window with the specified position , dimensions , and flags .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* ` flags ` may be any of the following OR ' d together :
2015-06-21 09:33:46 -06:00
*
2023-01-28 11:57:14 -07:00
* - ` SDL_WINDOW_FULLSCREEN_EXCLUSIVE ` : fullscreen window , switching display
* mode to the closest fullscreen resolution
2021-03-24 08:47:03 -06:00
* - ` SDL_WINDOW_FULLSCREEN_DESKTOP ` : fullscreen window at desktop resolution
2021-03-21 12:18:39 -06:00
* - ` SDL_WINDOW_OPENGL ` : window usable with an OpenGL context
* - ` SDL_WINDOW_VULKAN ` : window usable with a Vulkan instance
* - ` SDL_WINDOW_METAL ` : window usable with a Metal instance
* - ` SDL_WINDOW_HIDDEN ` : window is not visible
* - ` SDL_WINDOW_BORDERLESS ` : no window decoration
* - ` SDL_WINDOW_RESIZABLE ` : window can be resized
* - ` SDL_WINDOW_MINIMIZED ` : window is minimized
* - ` SDL_WINDOW_MAXIMIZED ` : window is maximized
2023-01-28 10:55:27 -07:00
* - ` SDL_WINDOW_MOUSE_GRABBED ` : window has grabbed mouse focus
2021-03-21 12:18:39 -06:00
*
2022-12-28 12:17:55 -07:00
* The SDL_Window is implicitly shown if SDL_WINDOW_HIDDEN is not set .
2021-03-21 12:18:39 -06:00
*
* On Apple ' s macOS , you * * must * * set the NSHighResolutionCapable Info . plist
* property to YES , otherwise you will not receive a High - DPI OpenGL canvas .
*
2023-01-25 11:02:19 -07:00
* The window size in pixels may differ from its size in screen coordinates if
* the window is on a high density display ( one with an OS scaling factor ) .
2023-01-25 10:58:29 -07:00
* Use SDL_GetWindowSize ( ) to query the client area ' s size in screen
* coordinates , and SDL_GetWindowSizeInPixels ( ) or SDL_GetRendererOutputSize ( )
* to query the drawable size in pixels . Note that the drawable size can vary
* after the window is created and should be queried again when the window is
* resized or moved between displays .
2021-03-21 12:18:39 -06:00
*
* If the window is set fullscreen , the width and height parameters ` w ` and
2021-07-14 15:07:04 -06:00
* ` h ` will not be used . However , invalid size parameters ( e . g . too large ) may
* still fail . Window size is actually limited to 16384 x 16384 for all
2021-03-21 12:18:39 -06:00
* platforms at window creation .
*
* If the window is created with any of the SDL_WINDOW_OPENGL or
* SDL_WINDOW_VULKAN flags , then the corresponding LoadLibrary function
* ( SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary ) is called and the
* corresponding UnloadLibrary function is called by SDL_DestroyWindow ( ) .
*
* If SDL_WINDOW_VULKAN is specified and there isn ' t a working Vulkan driver ,
* SDL_CreateWindow ( ) will fail because SDL_Vulkan_LoadLibrary ( ) will fail .
*
* If SDL_WINDOW_METAL is specified on an OS that does not support Metal ,
* SDL_CreateWindow ( ) will fail .
*
* On non - Apple devices , SDL requires you to either not link to the Vulkan
* loader or link to a dynamic library version . This limitation may be removed
* in a future version of SDL .
*
* \ param title the title of the window , in UTF - 8 encoding
* \ param x the x position of the window , ` SDL_WINDOWPOS_CENTERED ` , or
* ` SDL_WINDOWPOS_UNDEFINED `
* \ param y the y position of the window , ` SDL_WINDOWPOS_CENTERED ` , or
* ` SDL_WINDOWPOS_UNDEFINED `
* \ param w the width of the window , in screen coordinates
* \ param h the height of the window , in screen coordinates
* \ param flags 0 , or one or more SDL_WindowFlags OR ' d together
* \ returns the window that was created or NULL on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_CreateWindowFrom
* \ sa SDL_DestroyWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow ( const char * title , int x , int y , int w , int h , Uint32 flags ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Create an SDL window from an existing native window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* In some cases ( e . g . OpenGL ) and on some platforms ( e . g . Microsoft Windows )
* the hint ` SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT ` needs to be configured
* before using SDL_CreateWindowFrom ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param data a pointer to driver - dependent window creation data , typically
* your native window cast to a void *
* \ returns the window that was created or NULL on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_CreateWindow
* \ sa SDL_DestroyWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom ( const void * data ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the numeric ID of a window .
*
* The numeric ID is what SDL_WindowEvent references , and is necessary to map
* these events to specific SDL_Window objects .
*
* \ param window the window to query
* \ returns the ID of the window on success or 0 on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowFromID
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_WindowID SDLCALL SDL_GetWindowID ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get a window from a stored ID .
*
* The numeric ID is what SDL_WindowEvent references , and is necessary to map
* these events to specific SDL_Window objects .
*
* \ param id the ID of the window
2021-07-14 15:07:04 -06:00
* \ returns the window associated with ` id ` or NULL if it doesn ' t exist ; call
* SDL_GetError ( ) for more information .
2021-03-21 12:18:39 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowID
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID ( SDL_WindowID id ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the window flags .
*
* \ param window the window to query
* \ returns a mask of the SDL_WindowFlags associated with ` window `
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_CreateWindow
* \ sa SDL_HideWindow
* \ sa SDL_MaximizeWindow
* \ sa SDL_MinimizeWindow
* \ sa SDL_SetWindowFullscreen
* \ sa SDL_SetWindowGrab
* \ sa SDL_ShowWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the title of a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This string is expected to be in UTF - 8 encoding .
*
* \ param window the window to change
* \ param title the desired window title in UTF - 8 format
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowTitle
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowTitle ( SDL_Window * window , const char * title ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the title of a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ returns the title of the window in UTF - 8 format or " " if there is no
* title .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowTitle
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC const char * SDLCALL SDL_GetWindowTitle ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the icon for a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to change
* \ param icon an SDL_Surface structure containing the icon for the window
2021-10-26 19:36:05 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowIcon ( SDL_Window * window , SDL_Surface * icon ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Associate an arbitrary named pointer with a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* ` name ` is case - sensitive .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to associate with the pointer
* \ param name the name of the pointer
* \ param userdata the associated pointer
* \ returns the previous value associated with ` name ` .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowData
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void * SDLCALL SDL_SetWindowData ( SDL_Window * window , const char * name , void * userdata ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Retrieve the data pointer associated with a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ param name the name of the pointer
* \ returns the value associated with ` name ` .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowData
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void * SDLCALL SDL_GetWindowData ( SDL_Window * window , const char * name ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Set the position of a window , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to reposition
2023-01-25 10:58:29 -07:00
* \ param x the x coordinate of the window , or ` SDL_WINDOWPOS_CENTERED ` or
* ` SDL_WINDOWPOS_UNDEFINED `
* \ param y the y coordinate of the window , or ` SDL_WINDOWPOS_CENTERED ` or
* ` SDL_WINDOWPOS_UNDEFINED `
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowPosition
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowPosition ( SDL_Window * window , int x , int y ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Get the position of a window , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* If you do not need the value for one of the positions a NULL may be passed
* in the ` x ` or ` y ` parameter .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
2023-01-25 02:23:17 -07:00
* \ param x a pointer filled in with the x position of the window , may be NULL
* \ param y a pointer filled in with the y position of the window , may be NULL
2021-03-21 12:18:39 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowPosition
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_GetWindowPosition ( SDL_Window * window , int * x , int * y ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Set the size of a window ' s client area , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2023-01-25 02:23:17 -07:00
* The window size in screen coordinates may differ from the size in pixels if
* the window is on a high density display ( one with an OS scaling factor ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Fullscreen windows automatically match the size of the display mode , and
* you should use SDL_SetWindowDisplayMode ( ) to change their size .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to change
2023-01-25 02:23:17 -07:00
* \ param w the width of the window , must be > 0
* \ param h the height of the window , must be > 0
2015-12-31 18:16:43 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowSize
* \ sa SDL_SetWindowDisplayMode
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowSize ( SDL_Window * window , int w , int h ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Get the size of a window ' s client area , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* NULL can safely be passed as the ` w ` or ` h ` parameter if the width or
* height value is not desired .
2015-12-31 18:16:43 -07:00
*
2023-01-25 02:23:17 -07:00
* The window size in screen coordinates may differ from the size in pixels if
* the window is on a high density display ( one with an OS scaling factor ) .
* Use SDL_GetWindowSizeInPixels ( ) , SDL_GL_GetDrawableSize ( ) ,
* SDL_Vulkan_GetDrawableSize ( ) , or SDL_GetRendererOutputSize ( ) to get the
* real client area size in pixels .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query the width and height from
2023-01-25 02:23:17 -07:00
* \ param w a pointer filled in with the width of the window , may be NULL
* \ param h a pointer filled in with the height of the window , may be NULL
2021-03-21 12:18:39 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2023-01-25 02:23:17 -07:00
* \ sa SDL_GetWindowSizeInPixels
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_GetDrawableSize
* \ sa SDL_Vulkan_GetDrawableSize
2023-01-25 02:23:17 -07:00
* \ sa SDL_GetRendererOutputSize
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowSize
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_GetWindowSize ( SDL_Window * window , int * w , int * h ) ;
2015-06-21 09:33:46 -06:00
2016-01-05 00:29:06 -07:00
/**
2023-01-25 10:58:29 -07:00
* Get the size of a window ' s borders ( decorations ) around the client area , in
* screen coordinates .
2016-01-05 00:29:06 -07:00
*
2021-03-21 12:18:39 -06:00
* Note : If this function fails ( returns - 1 ) , the size values will be
* initialized to 0 , 0 , 0 , 0 ( if a non - NULL pointer is provided ) , as if the
* window in question was borderless .
2016-01-05 00:29:06 -07:00
*
2021-05-04 09:23:54 -06:00
* Note : This function may fail on systems where the window has not yet been
* decorated by the display server ( for example , immediately after calling
* SDL_CreateWindow ) . It is recommended that you wait at least until the
* window has been presented and composited , so that the window system has a
* chance to decorate the window and provide the border dimensions to SDL .
*
2021-03-21 12:18:39 -06:00
* This function also returns - 1 if getting the information is not supported .
2016-01-05 00:29:06 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query the size values of the border
* ( decorations ) from
* \ param top pointer to variable for storing the size of the top border ; NULL
* is permitted
* \ param left pointer to variable for storing the size of the left border ;
* NULL is permitted
* \ param bottom pointer to variable for storing the size of the bottom
* border ; NULL is permitted
* \ param right pointer to variable for storing the size of the right border ;
* NULL is permitted
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowSize
2016-01-05 00:29:06 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize ( SDL_Window * window , int * top , int * left , int * bottom , int * right ) ;
2016-01-05 00:29:06 -07:00
2022-08-24 12:25:13 -06:00
/**
2023-01-25 02:23:17 -07:00
* Get the size of a window ' s client area , in pixels .
2022-08-24 12:25:13 -06:00
*
2023-01-25 02:23:17 -07:00
* The window size in pixels may differ from the size in screen coordinates if
* the window is on a high density display ( one with an OS scaling factor ) .
2022-08-24 12:25:13 -06:00
*
* \ param window the window from which the drawable size should be queried
* \ param w a pointer to variable for storing the width in pixels , may be NULL
* \ param h a pointer to variable for storing the height in pixels , may be
* NULL
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2022-08-24 12:25:13 -06:00
*
* \ sa SDL_CreateWindow
* \ sa SDL_GetWindowSize
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels ( SDL_Window * window , int * w , int * h ) ;
2022-08-24 12:25:13 -06:00
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Set the minimum size of a window ' s client area , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to change
2023-01-25 02:23:17 -07:00
* \ param min_w the minimum width of the window
* \ param min_h the minimum height of the window
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowMinimumSize
* \ sa SDL_SetWindowMaximumSize
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize ( SDL_Window * window , int min_w , int min_h ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Get the minimum size of a window ' s client area , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ param w a pointer filled in with the minimum width of the window , may be
* NULL
* \ param h a pointer filled in with the minimum height of the window , may be
* NULL
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowMaximumSize
* \ sa SDL_SetWindowMinimumSize
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize ( SDL_Window * window , int * w , int * h ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Set the maximum size of a window ' s client area , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to change
2023-01-25 02:23:17 -07:00
* \ param max_w the maximum width of the window
* \ param max_h the maximum height of the window
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowMaximumSize
* \ sa SDL_SetWindowMinimumSize
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize ( SDL_Window * window , int max_w , int max_h ) ;
2015-06-21 09:33:46 -06:00
/**
2023-01-25 02:23:17 -07:00
* Get the maximum size of a window ' s client area , in screen coordinates .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ param w a pointer filled in with the maximum width of the window , may be
* NULL
* \ param h a pointer filled in with the maximum height of the window , may be
* NULL
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowMinimumSize
* \ sa SDL_SetWindowMaximumSize
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize ( SDL_Window * window , int * w , int * h ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the border state of a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This will add or remove the window ' s ` SDL_WINDOW_BORDERLESS ` flag and add
* or remove the border from the actual window . This is a no - op if the
* window ' s border already matches the requested state .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* You can ' t change the border state of a fullscreen window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window of which to change the border state
* \ param bordered SDL_FALSE to remove border , SDL_TRUE to add border
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowFlags
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowBordered ( SDL_Window * window , SDL_bool bordered ) ;
2015-06-21 09:33:46 -06:00
2016-09-29 20:52:41 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the user - resizable state of a window .
2016-09-29 20:52:41 -06:00
*
2021-03-21 12:18:39 -06:00
* This will add or remove the window ' s ` SDL_WINDOW_RESIZABLE ` flag and
* allow / disallow user resizing of the window . This is a no - op if the window ' s
* resizable state already matches the requested state .
2016-09-29 20:52:41 -06:00
*
2021-03-21 12:18:39 -06:00
* You can ' t change the resizable state of a fullscreen window .
2016-09-29 20:52:41 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window of which to change the resizable state
* \ param resizable SDL_TRUE to allow resizing , SDL_FALSE to disallow
2016-09-29 20:52:41 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowFlags
2016-09-29 20:52:41 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowResizable ( SDL_Window * window , SDL_bool resizable ) ;
2016-09-29 20:52:41 -06:00
2021-04-19 05:13:38 -06:00
/**
2021-09-17 13:24:10 -06:00
* Set the window to always be above the others .
2021-04-19 05:13:38 -06:00
*
2021-09-18 08:19:04 -06:00
* This will add or remove the window ' s ` SDL_WINDOW_ALWAYS_ON_TOP ` flag . This
* will bring the window to the front and keep the window above the rest .
2021-04-19 05:13:38 -06:00
*
2021-09-17 13:24:10 -06:00
* \ param window The window of which to change the always on top state
2021-09-18 08:19:04 -06:00
* \ param on_top SDL_TRUE to set the window always on top , SDL_FALSE to
* disable
2021-04-19 05:13:38 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-09-17 13:24:10 -06:00
*
* \ sa SDL_GetWindowFlags
2021-04-19 05:13:38 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop ( SDL_Window * window , SDL_bool on_top ) ;
2021-10-08 18:22:48 -06:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Show a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to show
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_HideWindow
* \ sa SDL_RaiseWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_ShowWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Hide a window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to hide
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_ShowWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_HideWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Raise a window above other windows and set the input focus .
*
* \ param window the window to raise
2021-10-26 19:36:05 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_RaiseWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Make a window as large as possible .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to maximize
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_MinimizeWindow
* \ sa SDL_RestoreWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_MaximizeWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Minimize a window to an iconic representation .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to minimize
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_MaximizeWindow
* \ sa SDL_RestoreWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_MinimizeWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Restore the size and position of a minimized or maximized window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to restore
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-07-14 15:07:04 -06:00
* \ sa SDL_MaximizeWindow
* \ sa SDL_MinimizeWindow
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_RestoreWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set a window ' s fullscreen state .
2015-06-21 09:33:46 -06:00
*
2023-01-28 11:57:14 -07:00
* ` flags ` may be ` SDL_WINDOW_FULLSCREEN_EXCLUSIVE ` , for " real " fullscreen
* with a videomode change ; ` SDL_WINDOW_FULLSCREEN_DESKTOP ` for " fake "
* fullscreen that takes the size of the desktop ; and 0 for windowed mode .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to change
2023-01-28 11:57:14 -07:00
* \ param flags ` SDL_WINDOW_FULLSCREEN_EXCLUSIVE ` ,
* ` SDL_WINDOW_FULLSCREEN_DESKTOP ` or 0
2021-03-21 12:18:39 -06:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowDisplayMode
* \ sa SDL_SetWindowDisplayMode
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen ( SDL_Window * window , Uint32 flags ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the SDL surface associated with the window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* A new surface will be created with the optimal format for the window , if
* necessary . This surface will be freed when the window is destroyed . Do not
* free this surface .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This surface will be invalidated if the window is resized . After resizing a
* window this function must be called again to return a valid surface .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* You may not combine this with 3 D or the rendering API on this window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This function is affected by ` SDL_HINT_FRAMEBUFFER_ACCELERATION ` .
*
* \ param window the window to query
* \ returns the surface associated with the window , or NULL on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_UpdateWindowSurface
* \ sa SDL_UpdateWindowSurfaceRects
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Copy the window surface to the screen .
*
* This is the function you use to reflect any changes to the surface on the
* screen .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This function is equivalent to the SDL 1.2 API SDL_Flip ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to update
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowSurface
* \ sa SDL_UpdateWindowSurfaceRects
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Copy areas of the window surface to the screen .
*
* This is the function you use to reflect changes to portions of the surface
* on the screen .
*
* This function is equivalent to the SDL 1.2 API SDL_UpdateRects ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to update
* \ param rects an array of SDL_Rect structures representing areas of the
2023-01-11 19:45:01 -07:00
* surface to copy , in pixels
2021-03-21 12:18:39 -06:00
* \ param numrects the number of rectangles
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowSurface
* \ sa SDL_UpdateWindowSurface
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects ( SDL_Window * window , const SDL_Rect * rects , int numrects ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set a window ' s input grab mode .
2015-06-21 09:33:46 -06:00
*
2021-11-25 06:49:57 -07:00
* When input is grabbed , the mouse is confined to the window . This function
* will also grab the keyboard if ` SDL_HINT_GRAB_KEYBOARD ` is set . To grab the
* keyboard without also grabbing the mouse , use SDL_SetWindowKeyboardGrab ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* If the caller enables a grab while another window is currently grabbed , the
* other window loses its grab in favor of the caller ' s window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window for which the input grab mode should be set
* \ param grabbed SDL_TRUE to grab input or SDL_FALSE to release input
2021-01-26 18:16:17 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetGrabbedWindow
* \ sa SDL_GetWindowGrab
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowGrab ( SDL_Window * window , SDL_bool grabbed ) ;
2015-06-21 09:33:46 -06:00
2021-01-26 18:16:17 -07:00
/**
2021-03-21 12:18:39 -06:00
* Set a window ' s keyboard grab mode .
2021-01-26 18:16:17 -07:00
*
2021-11-25 06:49:57 -07:00
* Keyboard grab enables capture of system keyboard shortcuts like Alt + Tab or
* the Meta / Super key . Note that not all system keyboard shortcuts can be
* captured by applications ( one example is Ctrl + Alt + Del on Windows ) .
*
* This is primarily intended for specialized applications such as VNC clients
* or VM frontends . Normal games should not use keyboard grab .
*
* When keyboard grab is enabled , SDL will continue to handle Alt + Tab when the
2021-11-25 06:53:04 -07:00
* window is full - screen to ensure the user is not trapped in your
* application . If you have a custom keyboard shortcut to exit fullscreen
* mode , you may suppress this behavior with
* ` SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED ` .
2021-11-25 06:49:57 -07:00
*
2021-07-14 15:07:04 -06:00
* If the caller enables a grab while another window is currently grabbed , the
* other window loses its grab in favor of the caller ' s window .
2021-01-26 18:16:17 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window The window for which the keyboard grab mode should be set .
* \ param grabbed This is SDL_TRUE to grab keyboard , and SDL_FALSE to release .
2021-01-26 18:16:17 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-09-17 13:12:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowKeyboardGrab
* \ sa SDL_SetWindowMouseGrab
* \ sa SDL_SetWindowGrab
2021-01-26 18:16:17 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab ( SDL_Window * window , SDL_bool grabbed ) ;
2021-01-26 18:16:17 -07:00
/**
2021-03-21 12:18:39 -06:00
* Set a window ' s mouse grab mode .
2021-01-26 18:16:17 -07:00
*
2021-11-25 06:49:57 -07:00
* Mouse grab confines the mouse cursor to the window .
*
2021-03-21 12:18:39 -06:00
* \ param window The window for which the mouse grab mode should be set .
2022-03-27 11:11:05 -06:00
* \ param grabbed This is SDL_TRUE to grab mouse , and SDL_FALSE to release .
2021-01-26 18:16:17 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GetWindowMouseGrab
* \ sa SDL_SetWindowKeyboardGrab
* \ sa SDL_SetWindowGrab
2021-01-26 18:16:17 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab ( SDL_Window * window , SDL_bool grabbed ) ;
2021-01-26 18:16:17 -07:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get a window ' s input grab mode .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ returns SDL_TRUE if input is grabbed , SDL_FALSE otherwise .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowGrab
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
2021-01-26 18:16:17 -07:00
/**
2021-03-21 12:18:39 -06:00
* Get a window ' s keyboard grab mode .
2021-01-26 18:16:17 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
* \ returns SDL_TRUE if keyboard is grabbed , and SDL_FALSE otherwise .
2021-01-26 18:16:17 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowKeyboardGrab
* \ sa SDL_GetWindowGrab
2021-01-26 18:16:17 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab ( SDL_Window * window ) ;
2021-01-26 18:16:17 -07:00
/**
2021-03-21 12:18:39 -06:00
* Get a window ' s mouse grab mode .
2021-01-26 18:16:17 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to query
2021-07-14 12:15:30 -06:00
* \ returns SDL_TRUE if mouse is grabbed , and SDL_FALSE otherwise .
2021-01-26 18:16:17 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowKeyboardGrab
* \ sa SDL_GetWindowGrab
2021-01-26 18:16:17 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab ( SDL_Window * window ) ;
2021-01-26 18:16:17 -07:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the window that currently has an input grab enabled .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ returns the window if input is grabbed or NULL otherwise .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowGrab
* \ sa SDL_SetWindowGrab
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow ( void ) ;
2015-06-21 09:33:46 -06:00
2021-11-08 22:34:48 -07:00
/**
* Confines the cursor to the specified area of a window .
*
* Note that this does NOT grab the cursor , it only defines the area a cursor
* is restricted to when the window has mouse focus .
*
* \ param window The window that will be associated with the barrier .
* \ param rect A rectangle area in window - relative coordinates . If NULL the
2021-11-10 13:21:01 -07:00
* barrier for the specified window will be destroyed .
2021-11-08 22:34:48 -07:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-11-10 14:05:03 -07:00
*
2021-11-08 22:34:48 -07:00
* \ sa SDL_GetWindowMouseRect
2021-11-25 06:49:57 -07:00
* \ sa SDL_SetWindowMouseGrab
2021-11-08 22:34:48 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect ( SDL_Window * window , const SDL_Rect * rect ) ;
2021-11-08 22:34:48 -07:00
/**
* Get the mouse confinement rectangle of a window .
*
* \ param window The window to query
2021-11-10 13:21:01 -07:00
* \ returns A pointer to the mouse confinement rectangle of a window , or NULL
* if there isn ' t one .
2021-11-08 22:34:48 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-11-10 14:05:03 -07:00
*
2021-11-08 22:34:48 -07:00
* \ sa SDL_SetWindowMouseRect
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect ( SDL_Window * window ) ;
2021-11-08 22:34:48 -07:00
2016-01-05 00:46:10 -07:00
/**
2021-03-21 12:18:39 -06:00
* Set the opacity for a window .
2016-01-05 00:46:10 -07:00
*
2021-03-21 12:18:39 -06:00
* The parameter ` opacity ` will be clamped internally between 0.0f
* ( transparent ) and 1.0f ( opaque ) .
2017-08-27 20:15:57 -06:00
*
2021-03-21 12:18:39 -06:00
* This function also returns - 1 if setting the opacity isn ' t supported .
2016-01-05 00:46:10 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window which will be made transparent or opaque
* \ param opacity the opacity value ( 0.0f - transparent , 1.0f - opaque )
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GetWindowOpacity
2016-01-05 00:46:10 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowOpacity ( SDL_Window * window , float opacity ) ;
2016-01-05 00:46:10 -07:00
/**
2021-03-21 12:18:39 -06:00
* Get the opacity of a window .
*
* If transparency isn ' t supported on this platform , opacity will be reported
* as 1.0f without error .
2016-01-05 00:46:10 -07:00
*
2021-03-21 12:18:39 -06:00
* The parameter ` opacity ` is ignored if it is NULL .
2016-01-05 00:46:10 -07:00
*
2021-03-21 12:18:39 -06:00
* This function also returns - 1 if an invalid window was provided .
2016-01-05 00:46:10 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to get the current opacity value from
2021-03-26 15:34:58 -06:00
* \ param out_opacity the float filled in ( 0.0f - transparent , 1.0f - opaque )
2021-03-21 12:18:39 -06:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2016-01-05 00:46:10 -07:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_SetWindowOpacity
2016-01-05 00:46:10 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GetWindowOpacity ( SDL_Window * window , float * out_opacity ) ;
2016-01-05 00:46:10 -07:00
2015-04-21 07:45:58 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the window as a modal for another window .
2015-04-21 07:45:58 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param modal_window the window that should be set modal
* \ param parent_window the parent window for the modal window
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2017-08-27 20:15:57 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-04-21 07:45:58 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowModalFor ( SDL_Window * modal_window , SDL_Window * parent_window ) ;
2015-04-21 07:45:58 -06:00
2016-01-05 00:28:56 -07:00
/**
2021-03-21 12:18:39 -06:00
* Explicitly set input focus to the window .
2016-01-05 00:28:56 -07:00
*
2021-03-21 12:18:39 -06:00
* You almost certainly want SDL_RaiseWindow ( ) instead of this function . Use
* this with caution , as you might give focus to a window that is completely
* obscured by other windows .
2016-01-05 00:28:56 -07:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window that should get the input focus
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2017-08-27 20:15:57 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_RaiseWindow
2016-01-05 00:28:56 -07:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus ( SDL_Window * window ) ;
2016-01-05 00:28:56 -07:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Possible return values from the SDL_HitTest callback .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_HitTest
2015-06-21 09:33:46 -06:00
*/
typedef enum
{
SDL_HITTEST_NORMAL , /**< Region is normal. No special properties. */
SDL_HITTEST_DRAGGABLE , /**< Region can drag entire window. */
SDL_HITTEST_RESIZE_TOPLEFT ,
SDL_HITTEST_RESIZE_TOP ,
SDL_HITTEST_RESIZE_TOPRIGHT ,
SDL_HITTEST_RESIZE_RIGHT ,
SDL_HITTEST_RESIZE_BOTTOMRIGHT ,
SDL_HITTEST_RESIZE_BOTTOM ,
SDL_HITTEST_RESIZE_BOTTOMLEFT ,
SDL_HITTEST_RESIZE_LEFT
} SDL_HitTestResult ;
/**
2021-03-21 12:18:39 -06:00
* Callback used for hit - testing .
*
* \ param win the SDL_Window where hit - testing was set on
* \ param area an SDL_Point which should be hit - tested
* \ param data what was passed as ` callback_data ` to SDL_SetWindowHitTest ( )
* \ return an SDL_HitTestResult value .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_SetWindowHitTest
2015-06-21 09:33:46 -06:00
*/
typedef SDL_HitTestResult ( SDLCALL * SDL_HitTest ) ( SDL_Window * win ,
const SDL_Point * area ,
void * data ) ;
/**
2021-03-21 12:18:39 -06:00
* Provide a callback that decides if a window region has special properties .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Normally windows are dragged and resized by decorations provided by the
* system window manager ( a title bar , borders , etc ) , but for some apps , it
* makes sense to drag them from somewhere else inside the window itself ; for
* example , one might have a borderless window that wants to be draggable from
* any part , or simulate its own title bar , etc .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This function lets the app provide a callback that designates pieces of a
* given window as special . This callback is run during event processing if we
* need to tell the OS to treat a region of the window specially ; the use of
* this callback is known as " hit testing. "
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Mouse input may not be delivered to your application if it is within a
* special area ; the OS will often apply that input to moving the window or
* resizing the window and not deliver it to the application .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Specifying NULL for a callback disables hit - testing . Hit - testing is
* disabled by default .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Platforms that don ' t support this functionality will return - 1
* unconditionally , even if you ' re attempting to disable hit - testing .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Your callback may fire at any time , and its firing does not indicate any
* specific behavior ( for example , on Windows , this certainly might fire when
* the OS is deciding whether to drag your window , but it fires for lots of
* other reasons , too , some unrelated to anything you probably care about _and
* when the mouse isn ' t actually at the location it is testing_ ) . Since this
* can fire at any time , you should try to keep your callback efficient ,
* devoid of allocations , etc .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to set hit - testing on
* \ param callback the function to call when doing a hit - test
* \ param callback_data an app - defined void pointer passed to * * callback * *
* \ returns 0 on success or - 1 on error ( including unsupported ) ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_SetWindowHitTest ( SDL_Window * window , SDL_HitTest callback , void * callback_data ) ;
2015-06-21 09:33:46 -06:00
2021-06-04 11:55:30 -06:00
/**
2021-07-14 06:01:55 -06:00
* Request a window to demand attention from the user .
2021-06-04 11:55:30 -06:00
*
2021-07-24 13:11:27 -06:00
* \ param window the window to be flashed
2021-07-27 15:23:40 -06:00
* \ param operation the flash operation
2021-06-04 11:55:30 -06:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2021-09-17 13:10:07 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-06-04 11:55:30 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_FlashWindow ( SDL_Window * window , SDL_FlashOperation operation ) ;
2021-06-04 11:55:30 -06:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Destroy a window .
*
* If ` window ` is NULL , this function will return immediately after setting
* the SDL error message to " Invalid window " . See SDL_GetError ( ) .
*
* \ param window the window to destroy
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_CreateWindow
* \ sa SDL_CreateWindowFrom
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_DestroyWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Check whether the screensaver is currently enabled .
*
* The screensaver is disabled by default since SDL 2.0 .2 . Before SDL 2.0 .2
* the screensaver was enabled by default .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* The default can also be changed using ` SDL_HINT_VIDEO_ALLOW_SCREENSAVER ` .
*
* \ returns SDL_TRUE if the screensaver is enabled , SDL_FALSE if it is
* disabled .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_DisableScreenSaver
* \ sa SDL_EnableScreenSaver
2015-06-21 09:33:46 -06:00
*/
2022-12-28 20:34:01 -07:00
extern DECLSPEC SDL_bool SDLCALL SDL_ScreenSaverEnabled ( void ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Allow the screen to be blanked by a screen saver .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_DisableScreenSaver
2022-12-28 20:34:01 -07:00
* \ sa SDL_ScreenSaverEnabled
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC void SDLCALL SDL_EnableScreenSaver ( void ) ;
/**
2021-03-21 12:18:39 -06:00
* Prevent the screen from being blanked by a screen saver .
*
* If you disable the screensaver , it is automatically re - enabled when SDL
* quits .
*
2022-10-09 09:44:07 -06:00
* The screensaver is disabled by default since SDL 2.0 .2 . Before SDL 2.0 .2
* the screensaver was enabled by default .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_EnableScreenSaver
2022-12-28 20:34:01 -07:00
* \ sa SDL_ScreenSaverEnabled
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC void SDLCALL SDL_DisableScreenSaver ( void ) ;
/**
* \ name OpenGL support functions
*/
/* @{ */
/**
2021-03-21 12:18:39 -06:00
* Dynamically load an OpenGL library .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This should be done after initializing the video driver , but before
* creating any OpenGL windows . If no OpenGL library is loaded , the default
* library will be loaded upon creation of the first OpenGL window .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* If you do this , you need to retrieve all of the GL functions used in your
* program from the dynamic library using SDL_GL_GetProcAddress ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param path the platform dependent OpenGL library name , or NULL to open the
* default OpenGL library
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_GetProcAddress
* \ sa SDL_GL_UnloadLibrary
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary ( const char * path ) ;
/**
2021-03-21 12:18:39 -06:00
* Get an OpenGL function by name .
*
* If the GL library is loaded at runtime with SDL_GL_LoadLibrary ( ) , then all
* GL functions must be retrieved this way . Usually this is used to retrieve
* function pointers to OpenGL extensions .
*
* There are some quirks to looking up OpenGL functions that require some
* extra care from the application . If you code carefully , you can handle
* these quirks without any platform - specific code , though :
2021-03-24 08:47:03 -06:00
*
2021-03-21 12:18:39 -06:00
* - On Windows , function pointers are specific to the current GL context ;
2021-07-14 15:07:04 -06:00
* this means you need to have created a GL context and made it current
* before calling SDL_GL_GetProcAddress ( ) . If you recreate your context or
* create a second context , you should assume that any existing function
* pointers aren ' t valid to use with it . This is ( currently ) a
* Windows - specific limitation , and in practice lots of drivers don ' t suffer
* this limitation , but it is still the way the wgl API is documented to
* work and you should expect crashes if you don ' t respect it . Store a copy
* of the function pointers that comes and goes with context lifespan .
2021-03-21 12:18:39 -06:00
* - On X11 , function pointers returned by this function are valid for any
2021-07-14 15:07:04 -06:00
* context , and can even be looked up before a context is created at all .
* This means that , for at least some common OpenGL implementations , if you
* look up a function that doesn ' t exist , you ' ll get a non - NULL result that
* is _NOT_ safe to call . You must always make sure the function is actually
* available for a given GL context before calling it , by checking for the
* existence of the appropriate extension with SDL_GL_ExtensionSupported ( ) ,
* or verifying that the version of OpenGL you ' re using offers the function
* as core functionality .
2021-03-21 12:18:39 -06:00
* - Some OpenGL drivers , on all platforms , * will * return NULL if a function
2021-07-14 15:07:04 -06:00
* isn ' t supported , but you can ' t count on this behavior . Check for
* extensions you use , and if you get a NULL anyway , act as if that
* extension wasn ' t available . This is probably a bug in the driver , but you
* can code defensively for this scenario anyhow .
2021-03-21 12:18:39 -06:00
* - Just because you ' re on Linux / Unix , don ' t assume you ' ll be using X11 .
2021-07-14 15:07:04 -06:00
* Next - gen display servers are waiting to replace it , and may or may not
* make the same promises about function pointers .
2021-03-21 12:18:39 -06:00
* - OpenGL function pointers must be declared ` APIENTRY ` as in the example
2021-07-14 15:07:04 -06:00
* code . This will ensure the proper calling convention is followed on
* platforms where this matters ( Win32 ) thereby avoiding stack corruption .
2021-03-21 12:18:39 -06:00
*
* \ param proc the name of an OpenGL function
* \ returns a pointer to the named OpenGL function . The returned pointer
* should be cast to the appropriate function signature .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_ExtensionSupported
* \ sa SDL_GL_LoadLibrary
* \ sa SDL_GL_UnloadLibrary
2015-06-21 09:33:46 -06:00
*/
2023-01-09 15:55:12 -07:00
extern DECLSPEC SDL_FunctionPointer SDLCALL SDL_GL_GetProcAddress ( const char * proc ) ;
2015-06-21 09:33:46 -06:00
2022-08-25 20:44:35 -06:00
/**
* Get an EGL library function by name .
*
* If an EGL library is loaded , this function allows applications to get entry
* points for EGL functions . This is useful to provide to an EGL API and
* extension loader .
*
* \ param proc the name of an EGL function
2022-11-23 12:03:15 -07:00
* \ returns a pointer to the named EGL function . The returned pointer should
* be cast to the appropriate function signature .
2022-08-25 20:44:35 -06:00
*
2022-11-23 12:59:15 -07:00
* \ since This function is available since SDL 3.0 .0 .
*
2022-08-25 20:44:35 -06:00
* \ sa SDL_GL_GetCurrentEGLDisplay
*/
2023-01-09 15:55:12 -07:00
extern DECLSPEC SDL_FunctionPointer SDLCALL SDL_EGL_GetProcAddress ( const char * proc ) ;
2022-08-25 20:44:35 -06:00
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary ( ) .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_LoadLibrary
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary ( void ) ;
/**
2021-03-21 12:18:39 -06:00
* Check if an OpenGL extension is supported for the current context .
*
* This function operates on the current GL context ; you must have created a
* context and it must be current before calling this function . Do not assume
* that all contexts you create will have the same set of extensions
* available , or that recreating an existing context will offer the same
* extensions again .
*
* While it ' s probably not a massive overhead , this function is not an O ( 1 )
* operation . Check the extensions you care about after creating the GL
* context and save that information somewhere instead of calling the function
* every time you need to know .
*
* \ param extension the name of the extension to check
* \ returns SDL_TRUE if the extension is supported , SDL_FALSE otherwise .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported ( const char * extension ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Reset all previously set OpenGL context attributes to their default values .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GL_GetAttribute
* \ sa SDL_GL_SetAttribute
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes ( void ) ;
/**
2021-03-21 12:18:39 -06:00
* Set an OpenGL window attribute before window creation .
*
2021-07-14 15:07:04 -06:00
* This function sets the OpenGL attribute ` attr ` to ` value ` . The requested
* attributes should be set before creating an OpenGL window . You should use
* SDL_GL_GetAttribute ( ) to check the values after creating the OpenGL
* context , since the values obtained can differ from the requested ones .
2021-03-21 12:18:39 -06:00
*
* \ param attr an SDL_GLattr enum value specifying the OpenGL attribute to set
* \ param value the desired value for the attribute
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2017-07-31 13:57:15 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_GetAttribute
* \ sa SDL_GL_ResetAttributes
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GL_SetAttribute ( SDL_GLattr attr , int value ) ;
/**
2021-03-21 12:18:39 -06:00
* Get the actual value for an attribute from the current context .
2017-07-31 13:57:15 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param attr an SDL_GLattr enum value specifying the OpenGL attribute to get
* \ param value a pointer filled in with the current value of ` attr `
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_ResetAttributes
* \ sa SDL_GL_SetAttribute
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GL_GetAttribute ( SDL_GLattr attr , int * value ) ;
/**
2021-03-21 12:18:39 -06:00
* Create an OpenGL context for an OpenGL window , and make it current .
*
* Windows users new to OpenGL should note that , for historical reasons , GL
* functions added after OpenGL version 1.1 are not available by default .
* Those functions must be loaded at run - time , either with an OpenGL
* extension - handling library or with SDL_GL_GetProcAddress ( ) and its related
* functions .
*
* SDL_GLContext is an alias for ` void * ` . It ' s opaque to the application .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window to associate with the context
2021-07-14 15:07:04 -06:00
* \ returns the OpenGL context associated with ` window ` or NULL on error ; call
* SDL_GetError ( ) for more details .
2021-03-21 12:18:39 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_DeleteContext
* \ sa SDL_GL_MakeCurrent
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set up an OpenGL context for rendering into an OpenGL window .
*
* The context must have been created with a compatible window .
*
* \ param window the window to associate with the context
* \ param context the OpenGL context to associate with the window
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_CreateContext
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent ( SDL_Window * window , SDL_GLContext context ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the currently active OpenGL window .
*
* \ returns the currently active OpenGL window on success or NULL on failure ;
* call SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_Window * SDLCALL SDL_GL_GetCurrentWindow ( void ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the currently active OpenGL context .
*
* \ returns the currently active OpenGL context or NULL on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GL_MakeCurrent
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext ( void ) ;
2022-08-25 20:44:35 -06:00
/**
* Get the currently active EGL display .
*
* \ returns the currently active EGL display or NULL on failure ; call
* SDL_GetError ( ) for more information .
2022-11-23 12:59:15 -07:00
*
* \ since This function is available since SDL 3.0 .0 .
2022-08-25 20:44:35 -06:00
*/
extern DECLSPEC SDL_EGLDisplay SDLCALL SDL_EGL_GetCurrentEGLDisplay ( void ) ;
/**
* Get the currently active EGL config .
*
* \ returns the currently active EGL config or NULL on failure ; call
* SDL_GetError ( ) for more information .
2022-11-23 12:59:15 -07:00
*
* \ since This function is available since SDL 3.0 .0 .
2022-08-25 20:44:35 -06:00
*/
extern DECLSPEC SDL_EGLConfig SDLCALL SDL_EGL_GetCurrentEGLConfig ( void ) ;
/**
* Get the EGL surface associated with the window .
*
* \ returns the EGLSurface pointer associated with the window , or NULL on
* failure .
2022-11-23 12:59:15 -07:00
*
* \ since This function is available since SDL 3.0 .0 .
2022-08-25 20:44:35 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC SDL_EGLSurface SDLCALL SDL_EGL_GetWindowEGLSurface ( SDL_Window * window ) ;
2022-08-25 20:44:35 -06:00
2022-08-25 23:41:06 -06:00
/**
* Sets the callbacks for defining custom EGLAttrib arrays for EGL
* initialization .
*
* Each callback should return a pointer to an EGL attribute array terminated
* with EGL_NONE . Callbacks may return NULL pointers to signal an error , which
* will cause the SDL_CreateWindow process to fail gracefully .
*
* The arrays returned by each callback will be appended to the existing
* attribute arrays defined by SDL .
*
* NOTE : These callback pointers will be reset after SDL_GL_ResetAttributes .
*
* \ param platformAttribCallback Callback for attributes to pass to
* eglGetPlatformDisplay .
* \ param surfaceAttribCallback Callback for attributes to pass to
* eglCreateSurface .
* \ param contextAttribCallback Callback for attributes to pass to
* eglCreateContext .
2022-11-23 12:59:15 -07:00
*
* \ since This function is available since SDL 3.0 .0 .
2022-08-25 23:41:06 -06:00
*/
extern DECLSPEC void SDLCALL SDL_EGL_SetEGLAttributeCallbacks ( SDL_EGLAttribArrayCallback platformAttribCallback ,
SDL_EGLIntArrayCallback surfaceAttribCallback ,
SDL_EGLIntArrayCallback contextAttribCallback ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Get the size of a window ' s underlying drawable in pixels .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* This returns info useful for calling glViewport ( ) .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ param window the window from which the drawable size should be queried
* \ param w a pointer to variable for storing the width in pixels , may be NULL
* \ param h a pointer to variable for storing the height in pixels , may be
* NULL
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_CreateWindow
* \ sa SDL_GetWindowSize
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize ( SDL_Window * window , int * w , int * h ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Set the swap interval for the current OpenGL context .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Some systems allow specifying - 1 for the interval , to enable adaptive
* vsync . Adaptive vsync works the same as vsync , but if you ' ve already missed
* the vertical retrace for a given frame , it swaps buffers immediately , which
2021-07-14 15:07:04 -06:00
* might be less jarring for the user during occasional framerate drops . If an
* application requests adaptive vsync and the system does not support it ,
2021-03-21 12:18:39 -06:00
* this function will fail and return - 1. In such a case , you should probably
* retry the call with 1 for the interval .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* Adaptive vsync is implemented for some glX drivers with
2022-05-25 08:46:06 -06:00
* GLX_EXT_swap_control_tear , and for some Windows drivers with
* WGL_EXT_swap_control_tear .
2021-03-21 12:18:39 -06:00
*
* Read more on the Khronos wiki :
* https : //www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync
*
* \ param interval 0 for immediate updates , 1 for updates synchronized with
* the vertical retrace , - 1 for adaptive vsync
* \ returns 0 on success or - 1 if setting the swap interval is not supported ;
* call SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-03-21 12:18:39 -06:00
*
* \ sa SDL_GL_GetSwapInterval
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval ( int interval ) ;
/**
2021-03-21 12:18:39 -06:00
* Get the swap interval for the current OpenGL context .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* If the system can ' t determine the swap interval , or there isn ' t a valid
2023-01-01 09:20:41 -07:00
* current context , this function will set * interval to 0 as a safe default .
2021-03-21 12:18:39 -06:00
*
2023-01-25 10:58:29 -07:00
* \ param interval Output interval value . 0 if there is no vertical retrace
* synchronization , 1 if the buffer swap is synchronized with
* the vertical retrace , and - 1 if late swaps happen
* immediately instead of waiting for the next retrace
* \ returns 0 on success or - 1 error . call SDL_GetError ( ) for more
* information .
2021-03-21 12:18:39 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_SetSwapInterval
2015-06-21 09:33:46 -06:00
*/
2023-01-01 09:20:41 -07:00
extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval ( int * interval ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Update a window with OpenGL rendering .
*
* This is used with double - buffered OpenGL contexts , which are the default .
*
2021-07-14 15:07:04 -06:00
* On macOS , make sure you bind 0 to the draw framebuffer before swapping the
* window , otherwise nothing will happen . If you aren ' t using
2021-03-21 12:18:39 -06:00
* glBindFramebuffer ( ) , this is the default and you won ' t have to do anything
* extra .
*
* \ param window the window to change
2022-12-29 08:27:42 -07:00
* \ returns 0 on success or a negative error code on failure ; call
* SDL_GetError ( ) for more information .
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2015-06-21 09:33:46 -06:00
*/
2023-01-25 02:23:17 -07:00
extern DECLSPEC int SDLCALL SDL_GL_SwapWindow ( SDL_Window * window ) ;
2015-06-21 09:33:46 -06:00
/**
2021-03-21 12:18:39 -06:00
* Delete an OpenGL context .
*
* \ param context the OpenGL context to be deleted
2015-06-21 09:33:46 -06:00
*
2022-11-22 15:40:14 -07:00
* \ since This function is available since SDL 3.0 .0 .
2021-10-26 19:36:05 -06:00
*
2021-03-21 12:18:39 -06:00
* \ sa SDL_GL_CreateContext
2015-06-21 09:33:46 -06:00
*/
extern DECLSPEC void SDLCALL SDL_GL_DeleteContext ( SDL_GLContext context ) ;
/* @} */ /* OpenGL support functions */
/* Ends C function definitions when using C++ */
# ifdef __cplusplus
}
# endif
2022-12-22 09:38:59 -07:00
# include <SDL3/SDL_close_code.h>
2015-06-21 09:33:46 -06:00
2016-11-20 22:34:54 -07:00
# endif /* SDL_video_h_ */