464 lines
28 KiB
Odin
464 lines
28 KiB
Odin
package sdl3
|
|
|
|
import "core:c"
|
|
|
|
DisplayID :: distinct Uint32
|
|
WindowID :: distinct Uint32
|
|
|
|
PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER :: "SDL.video.wayland.wl_display"
|
|
|
|
SystemTheme :: enum c.int {
|
|
UNKNOWN, /**< Unknown system theme */
|
|
LIGHT, /**< Light colored system theme */
|
|
DARK, /**< Dark colored system theme */
|
|
}
|
|
|
|
DisplayModeData :: struct {}
|
|
|
|
DisplayMode :: struct {
|
|
displayID: DisplayID, /**< the display this mode is associated with */
|
|
format: PixelFormat, /**< pixel format */
|
|
w: c.int, /**< width */
|
|
h: c.int, /**< height */
|
|
pixel_density: f32, /**< scale converting size to pixels (e.g. a 1920x1080 mode with 2.0 scale would have 3840x2160 pixels) */
|
|
refresh_rate: f32, /**< refresh rate (or 0.0f for unspecified) */
|
|
refresh_rate_numerator: c.int, /**< precise refresh rate numerator (or 0 for unspecified) */
|
|
refresh_rate_denominator: c.int, /**< precise refresh rate denominator */
|
|
|
|
internal: ^DisplayModeData, /**< Private */
|
|
}
|
|
|
|
DisplayOrientation :: enum c.int {
|
|
UNKNOWN, /**< The display orientation can't be determined */
|
|
LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */
|
|
LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */
|
|
PORTRAIT, /**< The display is in portrait mode */
|
|
PORTRAIT_FLIPPED, /**< The display is in portrait mode, upside down */
|
|
}
|
|
|
|
Window :: struct {}
|
|
|
|
WindowFlags :: distinct bit_set[WindowFlag; Uint64]
|
|
WindowFlag :: enum Uint64 {
|
|
FULLSCREEN = 0,
|
|
OPENGL = 1,
|
|
OCCLUDED = 2,
|
|
HIDDEN = 3,
|
|
BORDERLESS = 4,
|
|
RESIZABLE = 5,
|
|
MINIMIZED = 6,
|
|
MAXIMIZED = 7,
|
|
MOUSE_GRABBED = 8,
|
|
INPUT_FOCUS = 9,
|
|
MOUSE_FOCUS = 10,
|
|
EXTERNAL = 11,
|
|
MODAL = 12,
|
|
HIGH_PIXEL_DENSITY = 13,
|
|
MOUSE_CAPTURE = 14,
|
|
MOUSE_RELATIVE_MODE = 15,
|
|
ALWAYS_ON_TOP = 16,
|
|
UTILITY = 17,
|
|
TOOLTIP = 18,
|
|
POPUP_MENU = 19,
|
|
KEYBOARD_GRABBED = 20,
|
|
|
|
VULKAN = 28,
|
|
METAL = 29,
|
|
TRANSPARENT = 30,
|
|
NOT_FOCUSABLE = 31,
|
|
}
|
|
|
|
WINDOW_FULLSCREEN :: WindowFlags{.FULLSCREEN} /**< window is in fullscreen mode */
|
|
WINDOW_OPENGL :: WindowFlags{.OPENGL} /**< window usable with OpenGL context */
|
|
WINDOW_OCCLUDED :: WindowFlags{.OCCLUDED} /**< window is occluded */
|
|
WINDOW_HIDDEN :: WindowFlags{.HIDDEN} /**< window is neither mapped onto the desktop nor shown in the taskbar/dock/window list; SDL_ShowWindow() is required for it to become visible */
|
|
WINDOW_BORDERLESS :: WindowFlags{.BORDERLESS} /**< no window decoration */
|
|
WINDOW_RESIZABLE :: WindowFlags{.RESIZABLE} /**< window can be resized */
|
|
WINDOW_MINIMIZED :: WindowFlags{.MINIMIZED} /**< window is minimized */
|
|
WINDOW_MAXIMIZED :: WindowFlags{.MAXIMIZED} /**< window is maximized */
|
|
WINDOW_MOUSE_GRABBED :: WindowFlags{.MOUSE_GRABBED} /**< window has grabbed mouse input */
|
|
WINDOW_INPUT_FOCUS :: WindowFlags{.INPUT_FOCUS} /**< window has input focus */
|
|
WINDOW_MOUSE_FOCUS :: WindowFlags{.MOUSE_FOCUS} /**< window has mouse focus */
|
|
WINDOW_EXTERNAL :: WindowFlags{.EXTERNAL} /**< window not created by SDL */
|
|
WINDOW_MODAL :: WindowFlags{.MODAL} /**< window is modal */
|
|
WINDOW_HIGH_PIXEL_DENSITY :: WindowFlags{.HIGH_PIXEL_DENSITY} /**< window uses high pixel density back buffer if possible */
|
|
WINDOW_MOUSE_CAPTURE :: WindowFlags{.MOUSE_CAPTURE} /**< window has mouse captured (unrelated to MOUSE_GRABBED) */
|
|
WINDOW_MOUSE_RELATIVE_MODE :: WindowFlags{.MOUSE_RELATIVE_MODE} /**< window has relative mode enabled */
|
|
WINDOW_ALWAYS_ON_TOP :: WindowFlags{.ALWAYS_ON_TOP} /**< window should always be above others */
|
|
WINDOW_UTILITY :: WindowFlags{.UTILITY} /**< window should be treated as a utility window, not showing in the task bar and window list */
|
|
WINDOW_TOOLTIP :: WindowFlags{.TOOLTIP} /**< window should be treated as a tooltip and does not get mouse or keyboard focus, requires a parent window */
|
|
WINDOW_POPUP_MENU :: WindowFlags{.POPUP_MENU} /**< window should be treated as a popup menu, requires a parent window */
|
|
WINDOW_KEYBOARD_GRABBED :: WindowFlags{.KEYBOARD_GRABBED} /**< window has grabbed keyboard input */
|
|
WINDOW_VULKAN :: WindowFlags{.VULKAN} /**< window usable for Vulkan surface */
|
|
WINDOW_METAL :: WindowFlags{.METAL} /**< window usable for Metal view */
|
|
WINDOW_TRANSPARENT :: WindowFlags{.TRANSPARENT} /**< window with transparent buffer */
|
|
WINDOW_NOT_FOCUSABLE :: WindowFlags{.NOT_FOCUSABLE} /**< window should not be focusable */
|
|
|
|
|
|
WINDOWPOS_UNDEFINED_MASK :: 0x1FFF0000
|
|
|
|
|
|
@(require_results)
|
|
WINDOWPOS_UNDEFINED_DISPLAY :: proc "c" (X: c.int) -> c.int {
|
|
return WINDOWPOS_UNDEFINED_MASK|(X)
|
|
}
|
|
|
|
|
|
WINDOWPOS_UNDEFINED :: WINDOWPOS_UNDEFINED_MASK|0
|
|
|
|
@(require_results)
|
|
WINDOWPOS_ISUNDEFINED :: proc "c" (X: c.int) -> bool {
|
|
return (Uint32(X)&0xFFFF0000) == WINDOWPOS_UNDEFINED_MASK
|
|
}
|
|
|
|
WINDOWPOS_CENTERED_MASK :: 0x2FFF0000
|
|
|
|
|
|
@(require_results)
|
|
WINDOWPOS_CENTERED_DISPLAY :: proc "c" (X: c.int) -> c.int {
|
|
return WINDOWPOS_CENTERED_MASK|(X)
|
|
}
|
|
|
|
WINDOWPOS_CENTERED :: WINDOWPOS_CENTERED_MASK|0
|
|
|
|
@(require_results)
|
|
WINDOWPOS_ISCENTERED :: proc "c" (X: c.int) -> bool {
|
|
return (Uint32(X)&0xFFFF0000) == WINDOWPOS_CENTERED_MASK
|
|
}
|
|
|
|
|
|
FlashOperation :: enum c.int {
|
|
CANCEL, /**< Cancel any window flash state */
|
|
BRIEFLY, /**< Flash the window briefly to get attention */
|
|
UNTIL_FOCUSED, /**< Flash the window until it gets focus */
|
|
}
|
|
|
|
GLContextState :: struct {}
|
|
GLContext :: ^GLContextState
|
|
EGLDisplay :: distinct rawptr
|
|
EGLConfig :: distinct rawptr
|
|
EGLSurface :: distinct rawptr
|
|
EGLAttrib :: distinct uintptr
|
|
EGLint :: distinct c.int
|
|
|
|
EGLAttribArrayCallback :: #type proc "c" (userdata: rawptr) -> ^EGLint
|
|
EGLIntArrayCallback :: #type proc "c" (userdata: rawptr, display: EGLDisplay, config: EGLConfig) -> [^]EGLint
|
|
|
|
GLAttr :: enum c.int {
|
|
RED_SIZE, /**< the minimum number of bits for the red channel of the color buffer; defaults to 8. */
|
|
GREEN_SIZE, /**< the minimum number of bits for the green channel of the color buffer; defaults to 8. */
|
|
BLUE_SIZE, /**< the minimum number of bits for the blue channel of the color buffer; defaults to 8. */
|
|
ALPHA_SIZE, /**< the minimum number of bits for the alpha channel of the color buffer; defaults to 8. */
|
|
BUFFER_SIZE, /**< the minimum number of bits for frame buffer size; defaults to 0. */
|
|
DOUBLEBUFFER, /**< whether the output is single or double buffered; defaults to double buffering on. */
|
|
DEPTH_SIZE, /**< the minimum number of bits in the depth buffer; defaults to 16. */
|
|
STENCIL_SIZE, /**< the minimum number of bits in the stencil buffer; defaults to 0. */
|
|
ACCUM_RED_SIZE, /**< the minimum number of bits for the red channel of the accumulation buffer; defaults to 0. */
|
|
ACCUM_GREEN_SIZE, /**< the minimum number of bits for the green channel of the accumulation buffer; defaults to 0. */
|
|
ACCUM_BLUE_SIZE, /**< the minimum number of bits for the blue channel of the accumulation buffer; defaults to 0. */
|
|
ACCUM_ALPHA_SIZE, /**< the minimum number of bits for the alpha channel of the accumulation buffer; defaults to 0. */
|
|
STEREO, /**< whether the output is stereo 3D; defaults to off. */
|
|
MULTISAMPLEBUFFERS, /**< the number of buffers used for multisample anti-aliasing; defaults to 0. */
|
|
MULTISAMPLESAMPLES, /**< the number of samples used around the current pixel used for multisample anti-aliasing. */
|
|
ACCELERATED_VISUAL, /**< set to 1 to require hardware acceleration, set to 0 to force software rendering; defaults to allow either. */
|
|
RETAINED_BACKING, /**< not used (deprecated). */
|
|
CONTEXT_MAJOR_VERSION, /**< OpenGL context major version. */
|
|
CONTEXT_MINOR_VERSION, /**< OpenGL context minor version. */
|
|
CONTEXT_FLAGS, /**< some combination of 0 or more of elements of the SDL_GLContextFlag enumeration; defaults to 0. */
|
|
CONTEXT_PROFILE_MASK, /**< type of GL context (Core, Compatibility, ES). See SDL_GLProfile; default value depends on platform. */
|
|
SHARE_WITH_CURRENT_CONTEXT, /**< OpenGL context sharing; defaults to 0. */
|
|
FRAMEBUFFER_SRGB_CAPABLE, /**< requests sRGB capable visual; defaults to 0. */
|
|
CONTEXT_RELEASE_BEHAVIOR, /**< sets context the release behavior. See SDL_GLContextReleaseFlag; defaults to FLUSH. */
|
|
CONTEXT_RESET_NOTIFICATION, /**< set context reset notification. See SDL_GLContextResetNotification; defaults to NO_NOTIFICATION. */
|
|
CONTEXT_NO_ERROR,
|
|
FLOATBUFFERS,
|
|
EGL_PLATFORM,
|
|
}
|
|
GL_RED_SIZE :: GLAttr.RED_SIZE
|
|
GL_GREEN_SIZE :: GLAttr.GREEN_SIZE
|
|
GL_BLUE_SIZE :: GLAttr.BLUE_SIZE
|
|
GL_ALPHA_SIZE :: GLAttr.ALPHA_SIZE
|
|
GL_BUFFER_SIZE :: GLAttr.BUFFER_SIZE
|
|
GL_DOUBLEBUFFER :: GLAttr.DOUBLEBUFFER
|
|
GL_DEPTH_SIZE :: GLAttr.DEPTH_SIZE
|
|
GL_STENCIL_SIZE :: GLAttr.STENCIL_SIZE
|
|
GL_ACCUM_RED_SIZE :: GLAttr.ACCUM_RED_SIZE
|
|
GL_ACCUM_GREEN_SIZE :: GLAttr.ACCUM_GREEN_SIZE
|
|
GL_ACCUM_BLUE_SIZE :: GLAttr.ACCUM_BLUE_SIZE
|
|
GL_ACCUM_ALPHA_SIZE :: GLAttr.ACCUM_ALPHA_SIZE
|
|
GL_STEREO :: GLAttr.STEREO
|
|
GL_MULTISAMPLEBUFFERS :: GLAttr.MULTISAMPLEBUFFERS
|
|
GL_MULTISAMPLESAMPLES :: GLAttr.MULTISAMPLESAMPLES
|
|
GL_ACCELERATED_VISUAL :: GLAttr.ACCELERATED_VISUAL
|
|
GL_RETAINED_BACKING :: GLAttr.RETAINED_BACKING
|
|
GL_CONTEXT_MAJOR_VERSION :: GLAttr.CONTEXT_MAJOR_VERSION
|
|
GL_CONTEXT_MINOR_VERSION :: GLAttr.CONTEXT_MINOR_VERSION
|
|
GL_CONTEXT_FLAGS :: GLAttr.CONTEXT_FLAGS
|
|
GL_CONTEXT_PROFILE_MASK :: GLAttr.CONTEXT_PROFILE_MASK
|
|
GL_SHARE_WITH_CURRENT_CONTEXT :: GLAttr.SHARE_WITH_CURRENT_CONTEXT
|
|
GL_FRAMEBUFFER_SRGB_CAPABLE :: GLAttr.FRAMEBUFFER_SRGB_CAPABLE
|
|
GL_CONTEXT_RELEASE_BEHAVIOR :: GLAttr.CONTEXT_RELEASE_BEHAVIOR
|
|
GL_CONTEXT_RESET_NOTIFICATION :: GLAttr.CONTEXT_RESET_NOTIFICATION
|
|
GL_CONTEXT_NO_ERROR :: GLAttr.CONTEXT_NO_ERROR
|
|
GL_FLOATBUFFERS :: GLAttr.FLOATBUFFERS
|
|
GL_EGL_PLATFORM :: GLAttr.EGL_PLATFORM
|
|
|
|
|
|
GLProfile :: distinct bit_set[GLProfileFlag; Uint32]
|
|
GLProfileFlag :: enum Uint32 {
|
|
CORE = 0, /**< OpenGL Core Profile context */
|
|
COMPATIBILITY = 1, /**< OpenGL Compatibility Profile context */
|
|
ES = 2, /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
|
|
}
|
|
GL_CONTEXT_PROFILE_CORE :: GLProfile{.CORE} /**< OpenGL Core Profile context */
|
|
GL_CONTEXT_PROFILE_COMPATIBILITY :: GLProfile{.COMPATIBILITY} /**< OpenGL Compatibility Profile context */
|
|
GL_CONTEXT_PROFILE_ES :: GLProfile{.ES} /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
|
|
|
|
|
|
GLContextFlag :: distinct bit_set[GLContextFlagBit; Uint32]
|
|
GLContextFlagBit :: enum Uint32 {
|
|
DEBUG = 0,
|
|
FORWARD_COMPATIBLE = 1,
|
|
ROBUST_ACCESS = 2,
|
|
RESET_ISOLATION = 3,
|
|
}
|
|
GL_CONTEXT_DEBUG_FLAG :: GLContextFlag{.DEBUG}
|
|
GL_CONTEXT_FORWARD_COMPATIBLE_FLAG :: GLContextFlag{.FORWARD_COMPATIBLE}
|
|
GL_CONTEXT_ROBUST_ACCESS_FLAG :: GLContextFlag{.ROBUST_ACCESS}
|
|
GL_CONTEXT_RESET_ISOLATION_FLAG :: GLContextFlag{.RESET_ISOLATION}
|
|
|
|
|
|
GLContextReleaseFlag :: distinct bit_set[GLContextReleaseFlagBit; Uint32]
|
|
GLContextReleaseFlagBit :: enum Uint32 {
|
|
BEHAVIOR_FLUSH = 0,
|
|
}
|
|
GL_CONTEXT_RELEASE_BEHAVIOR_NONE :: GLContextReleaseFlag{}
|
|
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH :: GLContextReleaseFlag{.BEHAVIOR_FLUSH}
|
|
|
|
|
|
GLContextResetNotification :: distinct bit_set[GLContextResetNotificationFlag; Uint32]
|
|
GLContextResetNotificationFlag :: enum Uint32 {
|
|
LOSE_CONTEXT = 0,
|
|
}
|
|
GL_CONTEXT_RESET_NO_NOTIFICATION :: GLContextResetNotification{}
|
|
GL_CONTEXT_RESET_LOSE_CONTEXT :: GLContextResetNotification{.LOSE_CONTEXT}
|
|
|
|
|
|
PROP_DISPLAY_HDR_ENABLED_BOOLEAN :: "SDL.display.HDR_enabled"
|
|
PROP_DISPLAY_KMSDRM_PANEL_ORIENTATION_NUMBER :: "SDL.display.KMSDRM.panel_orientation"
|
|
|
|
PROP_WINDOW_CREATE_ALWAYS_ON_TOP_BOOLEAN :: "SDL.window.create.always_on_top"
|
|
PROP_WINDOW_CREATE_BORDERLESS_BOOLEAN :: "SDL.window.create.borderless"
|
|
PROP_WINDOW_CREATE_FOCUSABLE_BOOLEAN :: "SDL.window.create.focusable"
|
|
PROP_WINDOW_CREATE_EXTERNAL_GRAPHICS_CONTEXT_BOOLEAN :: "SDL.window.create.external_graphics_context"
|
|
PROP_WINDOW_CREATE_FLAGS_NUMBER :: "SDL.window.create.flags"
|
|
PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN :: "SDL.window.create.fullscreen"
|
|
PROP_WINDOW_CREATE_HEIGHT_NUMBER :: "SDL.window.create.height"
|
|
PROP_WINDOW_CREATE_HIDDEN_BOOLEAN :: "SDL.window.create.hidden"
|
|
PROP_WINDOW_CREATE_HIGH_PIXEL_DENSITY_BOOLEAN :: "SDL.window.create.high_pixel_density"
|
|
PROP_WINDOW_CREATE_MAXIMIZED_BOOLEAN :: "SDL.window.create.maximized"
|
|
PROP_WINDOW_CREATE_MENU_BOOLEAN :: "SDL.window.create.menu"
|
|
PROP_WINDOW_CREATE_METAL_BOOLEAN :: "SDL.window.create.metal"
|
|
PROP_WINDOW_CREATE_MINIMIZED_BOOLEAN :: "SDL.window.create.minimized"
|
|
PROP_WINDOW_CREATE_MODAL_BOOLEAN :: "SDL.window.create.modal"
|
|
PROP_WINDOW_CREATE_MOUSE_GRABBED_BOOLEAN :: "SDL.window.create.mouse_grabbed"
|
|
PROP_WINDOW_CREATE_OPENGL_BOOLEAN :: "SDL.window.create.opengl"
|
|
PROP_WINDOW_CREATE_PARENT_POINTER :: "SDL.window.create.parent"
|
|
PROP_WINDOW_CREATE_RESIZABLE_BOOLEAN :: "SDL.window.create.resizable"
|
|
PROP_WINDOW_CREATE_TITLE_STRING :: "SDL.window.create.title"
|
|
PROP_WINDOW_CREATE_TRANSPARENT_BOOLEAN :: "SDL.window.create.transparent"
|
|
PROP_WINDOW_CREATE_TOOLTIP_BOOLEAN :: "SDL.window.create.tooltip"
|
|
PROP_WINDOW_CREATE_UTILITY_BOOLEAN :: "SDL.window.create.utility"
|
|
PROP_WINDOW_CREATE_VULKAN_BOOLEAN :: "SDL.window.create.vulkan"
|
|
PROP_WINDOW_CREATE_WIDTH_NUMBER :: "SDL.window.create.width"
|
|
PROP_WINDOW_CREATE_X_NUMBER :: "SDL.window.create.x"
|
|
PROP_WINDOW_CREATE_Y_NUMBER :: "SDL.window.create.y"
|
|
PROP_WINDOW_CREATE_COCOA_WINDOW_POINTER :: "SDL.window.create.cocoa.window"
|
|
PROP_WINDOW_CREATE_COCOA_VIEW_POINTER :: "SDL.window.create.cocoa.view"
|
|
PROP_WINDOW_CREATE_WAYLAND_SURFACE_ROLE_CUSTOM_BOOLEAN :: "SDL.window.create.wayland.surface_role_custom"
|
|
PROP_WINDOW_CREATE_WAYLAND_CREATE_EGL_WINDOW_BOOLEAN :: "SDL.window.create.wayland.create_egl_window"
|
|
PROP_WINDOW_CREATE_WAYLAND_WL_SURFACE_POINTER :: "SDL.window.create.wayland.wl_surface"
|
|
PROP_WINDOW_CREATE_WIN32_HWND_POINTER :: "SDL.window.create.win32.hwnd"
|
|
PROP_WINDOW_CREATE_WIN32_PIXEL_FORMAT_HWND_POINTER :: "SDL.window.create.win32.pixel_format_hwnd"
|
|
PROP_WINDOW_CREATE_X11_WINDOW_NUMBER :: "SDL.window.create.x11.window"
|
|
|
|
PROP_WINDOW_SHAPE_POINTER :: "SDL.window.shape"
|
|
PROP_WINDOW_HDR_ENABLED_BOOLEAN :: "SDL.window.HDR_enabled"
|
|
PROP_WINDOW_SDR_WHITE_LEVEL_FLOAT :: "SDL.window.SDR_white_level"
|
|
PROP_WINDOW_HDR_HEADROOM_FLOAT :: "SDL.window.HDR_headroom"
|
|
PROP_WINDOW_ANDROID_WINDOW_POINTER :: "SDL.window.android.window"
|
|
PROP_WINDOW_ANDROID_SURFACE_POINTER :: "SDL.window.android.surface"
|
|
PROP_WINDOW_UIKIT_WINDOW_POINTER :: "SDL.window.uikit.window"
|
|
PROP_WINDOW_UIKIT_METAL_VIEW_TAG_NUMBER :: "SDL.window.uikit.metal_view_tag"
|
|
PROP_WINDOW_UIKIT_OPENGL_FRAMEBUFFER_NUMBER :: "SDL.window.uikit.opengl.framebuffer"
|
|
PROP_WINDOW_UIKIT_OPENGL_RENDERBUFFER_NUMBER :: "SDL.window.uikit.opengl.renderbuffer"
|
|
PROP_WINDOW_UIKIT_OPENGL_RESOLVE_FRAMEBUFFER_NUMBER :: "SDL.window.uikit.opengl.resolve_framebuffer"
|
|
PROP_WINDOW_KMSDRM_DEVICE_INDEX_NUMBER :: "SDL.window.kmsdrm.dev_index"
|
|
PROP_WINDOW_KMSDRM_DRM_FD_NUMBER :: "SDL.window.kmsdrm.drm_fd"
|
|
PROP_WINDOW_KMSDRM_GBM_DEVICE_POINTER :: "SDL.window.kmsdrm.gbm_dev"
|
|
PROP_WINDOW_COCOA_WINDOW_POINTER :: "SDL.window.cocoa.window"
|
|
PROP_WINDOW_COCOA_METAL_VIEW_TAG_NUMBER :: "SDL.window.cocoa.metal_view_tag"
|
|
PROP_WINDOW_OPENVR_OVERLAY_ID :: "SDL.window.openvr.overlay_id"
|
|
PROP_WINDOW_VIVANTE_DISPLAY_POINTER :: "SDL.window.vivante.display"
|
|
PROP_WINDOW_VIVANTE_WINDOW_POINTER :: "SDL.window.vivante.window"
|
|
PROP_WINDOW_VIVANTE_SURFACE_POINTER :: "SDL.window.vivante.surface"
|
|
PROP_WINDOW_WIN32_HWND_POINTER :: "SDL.window.win32.hwnd"
|
|
PROP_WINDOW_WIN32_HDC_POINTER :: "SDL.window.win32.hdc"
|
|
PROP_WINDOW_WIN32_INSTANCE_POINTER :: "SDL.window.win32.instance"
|
|
PROP_WINDOW_WAYLAND_DISPLAY_POINTER :: "SDL.window.wayland.display"
|
|
PROP_WINDOW_WAYLAND_SURFACE_POINTER :: "SDL.window.wayland.surface"
|
|
PROP_WINDOW_WAYLAND_VIEWPORT_POINTER :: "SDL.window.wayland.viewport"
|
|
PROP_WINDOW_WAYLAND_EGL_WINDOW_POINTER :: "SDL.window.wayland.egl_window"
|
|
PROP_WINDOW_WAYLAND_XDG_SURFACE_POINTER :: "SDL.window.wayland.xdg_surface"
|
|
PROP_WINDOW_WAYLAND_XDG_TOPLEVEL_POINTER :: "SDL.window.wayland.xdg_toplevel"
|
|
PROP_WINDOW_WAYLAND_XDG_TOPLEVEL_EXPORT_HANDLE_STRING :: "SDL.window.wayland.xdg_toplevel_export_handle"
|
|
PROP_WINDOW_WAYLAND_XDG_POPUP_POINTER :: "SDL.window.wayland.xdg_popup"
|
|
PROP_WINDOW_WAYLAND_XDG_POSITIONER_POINTER :: "SDL.window.wayland.xdg_positioner"
|
|
PROP_WINDOW_X11_DISPLAY_POINTER :: "SDL.window.x11.display"
|
|
PROP_WINDOW_X11_SCREEN_NUMBER :: "SDL.window.x11.screen"
|
|
PROP_WINDOW_X11_WINDOW_NUMBER :: "SDL.window.x11.window"
|
|
|
|
WINDOW_SURFACE_VSYNC_DISABLED :: 0
|
|
WINDOW_SURFACE_VSYNC_ADAPTIVE :: -1
|
|
|
|
@(default_calling_convention="c", link_prefix="SDL_")
|
|
foreign lib {
|
|
GetNumVideoDrivers :: proc() -> c.int ---
|
|
GetVideoDriver :: proc(index: c.int) -> cstring ---
|
|
GetCurrentVideoDriver :: proc() -> cstring ---
|
|
GetSystemTheme :: proc() -> SystemTheme ---
|
|
GetDisplays :: proc(count: ^c.int) -> [^]DisplayID ---
|
|
GetPrimaryDisplay :: proc() -> DisplayID ---
|
|
GetDisplayProperties :: proc(displayID: DisplayID) -> PropertiesID ---
|
|
GetDisplayName :: proc(displayID: DisplayID) -> cstring ---
|
|
GetDisplayBounds :: proc(displayID: DisplayID, rect: ^Rect) -> bool ---
|
|
GetDisplayUsableBounds :: proc(displayID: DisplayID, rect: ^Rect) -> bool ---
|
|
GetNaturalDisplayOrientation :: proc(displayID: DisplayID) -> DisplayOrientation ---
|
|
GetCurrentDisplayOrientation :: proc(displayID: DisplayID) -> DisplayOrientation ---
|
|
GetDisplayContentScale :: proc(displayID: DisplayID) -> f32 ---
|
|
GetFullscreenDisplayModes :: proc(displayID: DisplayID, count: ^c.int) -> [^]^DisplayMode ---
|
|
GetClosestFullscreenDisplayMode :: proc(displayID: DisplayID, w, h: c.int, refresh_rate: f32, include_high_density_modes: bool, closest: ^DisplayMode) -> bool ---
|
|
GetDesktopDisplayMode :: proc(displayID: DisplayID) -> ^DisplayMode ---
|
|
GetCurrentDisplayMode :: proc(displayID: DisplayID) -> ^DisplayMode ---
|
|
GetDisplayForPoint :: proc(#by_ptr point: Point) -> DisplayID ---
|
|
GetDisplayForRect :: proc(#by_ptr rect: Rect) -> DisplayID ---
|
|
GetDisplayForWindow :: proc(window: ^Window) -> DisplayID ---
|
|
GetWindowPixelDensity :: proc(window: ^Window) -> f32 ---
|
|
GetWindowDisplayScale :: proc(window: ^Window) -> f32 ---
|
|
SetWindowFullscreenMode :: proc(window: ^Window, #by_ptr mode: DisplayMode) -> bool ---
|
|
GetWindowFullscreenMode :: proc(window: ^Window) -> ^DisplayMode ---
|
|
GetWindowICCProfile :: proc(window: ^Window, size: ^uint) -> rawptr ---
|
|
GetWindowPixelFormat :: proc(window: ^Window) -> PixelFormat ---
|
|
GetWindows :: proc(count: ^c.int) -> [^]^Window ---
|
|
CreateWindow :: proc(title: cstring, w, h: c.int, flags: WindowFlags) -> ^Window ---
|
|
CreatePopupWindow :: proc(parent: ^Window, offset_x, offset_y: c.int, w, h: c.int, flags: WindowFlags) -> ^Window ---
|
|
CreateWindowWithProperties :: proc(props: PropertiesID) -> ^Window ---
|
|
GetWindowID :: proc(window: ^Window) -> WindowID ---
|
|
GetWindowFromID :: proc(id: WindowID) -> ^Window ---
|
|
GetWindowParent :: proc(window: ^Window) -> ^Window ---
|
|
GetWindowProperties :: proc(window: ^Window) -> PropertiesID ---
|
|
GetWindowFlags :: proc(window: ^Window) -> WindowFlags ---
|
|
SetWindowTitle :: proc(window: ^Window, title: cstring) -> bool ---
|
|
GetWindowTitle :: proc(window: ^Window) -> cstring ---
|
|
SetWindowIcon :: proc(window: ^Window, icon: ^Surface) -> bool ---
|
|
SetWindowPosition :: proc(window: ^Window, x, y: c.int) -> bool ---
|
|
GetWindowPosition :: proc(window: ^Window, x, y: ^c.int) -> bool ---
|
|
SetWindowSize :: proc(window: ^Window, w, h: c.int) -> bool ---
|
|
GetWindowSize :: proc(window: ^Window, w, h: ^c.int) -> bool ---
|
|
GetWindowSafeArea :: proc(window: ^Window, rect: ^Rect) -> bool ---
|
|
SetWindowAspectRatio :: proc(window: ^Window, min_aspect, max_aspect: f32) -> bool ---
|
|
GetWindowAspectRatio :: proc(window: ^Window, min_aspect, max_aspect: ^f32) -> bool ---
|
|
GetWindowBordersSize :: proc(window: ^Window, top, left, bottom, right: ^c.int) -> bool ---
|
|
GetWindowSizeInPixels :: proc(window: ^Window, w, h: ^c.int) -> bool ---
|
|
SetWindowMinimumSize :: proc(window: ^Window, min_w, min_h: c.int) -> bool ---
|
|
GetWindowMinimumSize :: proc(window: ^Window, w, h: ^c.int) -> bool ---
|
|
SetWindowMaximumSize :: proc(window: ^Window, max_w, max_h: c.int) -> bool ---
|
|
GetWindowMaximumSize :: proc(window: ^Window, w, h: ^c.int) -> bool ---
|
|
SetWindowBordered :: proc(window: ^Window, bordered: bool) -> bool ---
|
|
SetWindowResizable :: proc(window: ^Window, resizable: bool) -> bool ---
|
|
SetWindowAlwaysOnTop :: proc(window: ^Window, on_top: bool) -> bool ---
|
|
ShowWindow :: proc(window: ^Window) -> bool ---
|
|
HideWindow :: proc(window: ^Window) -> bool ---
|
|
RaiseWindow :: proc(window: ^Window) -> bool ---
|
|
MaximizeWindow :: proc(window: ^Window) -> bool ---
|
|
MinimizeWindow :: proc(window: ^Window) -> bool ---
|
|
RestoreWindow :: proc(window: ^Window) -> bool ---
|
|
SetWindowFullscreen :: proc(window: ^Window, fullscreen: bool) -> bool ---
|
|
SyncWindow :: proc(window: ^Window) -> bool ---
|
|
WindowHasSurface :: proc(window: ^Window) -> bool ---
|
|
GetWindowSurface :: proc(window: ^Window) -> ^Surface ---
|
|
SetWindowSurfaceVSync :: proc(window: ^Window, vsync: c.int) -> bool ---
|
|
GetWindowSurfaceVSync :: proc(window: ^Window, vsync: ^c.int) -> bool ---
|
|
UpdateWindowSurface :: proc(window: ^Window) -> bool ---
|
|
UpdateWindowSurfaceRects :: proc(window: ^Window, rects: [^]Rect, numrects: c.int) -> bool ---
|
|
DestroyWindowSurface :: proc(window: ^Window) -> bool ---
|
|
SetWindowKeyboardGrab :: proc(window: ^Window, grabbed: bool) -> bool ---
|
|
SetWindowMouseGrab :: proc(window: ^Window, grabbed: bool) -> bool ---
|
|
GetWindowKeyboardGrab :: proc(window: ^Window) -> bool ---
|
|
GetWindowMouseGrab :: proc(window: ^Window) -> bool ---
|
|
GetGrabbedWindow :: proc() -> ^Window ---
|
|
SetWindowMouseRect :: proc(window: ^Window, rect: ^Rect) -> bool ---
|
|
GetWindowMouseRect :: proc(window: ^Window) -> ^Rect ---
|
|
SetWindowOpacity :: proc(window: ^Window, opacity: f32) -> bool ---
|
|
GetWindowOpacity :: proc(window: ^Window) -> f32 ---
|
|
SetWindowParent :: proc(window: ^Window, parent: ^Window) -> bool ---
|
|
SetWindowModal :: proc(window: ^Window, modal: bool) -> bool ---
|
|
SetWindowFocusable :: proc(window: ^Window, focusable: bool) -> bool ---
|
|
ShowWindowSystemMenu :: proc(window: ^Window, x, y: c.int) -> bool ---
|
|
}
|
|
|
|
HitTestResult :: enum c.int {
|
|
NORMAL, /**< Region is normal. No special properties. */
|
|
DRAGGABLE, /**< Region can drag entire window. */
|
|
RESIZE_TOPLEFT, /**< Region is the resizable top-left corner border. */
|
|
RESIZE_TOP, /**< Region is the resizable top border. */
|
|
RESIZE_TOPRIGHT, /**< Region is the resizable top-right corner border. */
|
|
RESIZE_RIGHT, /**< Region is the resizable right border. */
|
|
RESIZE_BOTTOMRIGHT, /**< Region is the resizable bottom-right corner border. */
|
|
RESIZE_BOTTOM, /**< Region is the resizable bottom border. */
|
|
RESIZE_BOTTOMLEFT, /**< Region is the resizable bottom-left corner border. */
|
|
RESIZE_LEFT, /**< Region is the resizable left border. */
|
|
}
|
|
|
|
HitTest :: #type proc "c" (win: ^Window, area: ^Point, data: rawptr) -> HitTestResult
|
|
|
|
@(default_calling_convention="c", link_prefix="SDL_")
|
|
foreign lib {
|
|
SetWindowHitTest :: proc(window: ^Window, callback: HitTest, callback_data: rawptr) -> bool ---
|
|
SetWindowShape :: proc(window: ^Window, shape: ^Surface) -> bool ---
|
|
FlashWindow :: proc(window: ^Window, operation: FlashOperation) -> bool ---
|
|
DestroyWindow :: proc(window: ^Window) ---
|
|
ScreenSaverEnabled :: proc() -> bool ---
|
|
EnableScreenSaver :: proc() -> bool ---
|
|
DisableScreenSaver :: proc() -> bool ---
|
|
}
|
|
|
|
@(default_calling_convention="c", link_prefix="SDL_")
|
|
foreign lib {
|
|
GL_LoadLibrary :: proc(path: cstring) -> bool ---
|
|
GL_GetProcAddress :: proc(procName: cstring) -> FunctionPointer ---
|
|
EGL_GetProcAddress :: proc(procName: cstring) -> FunctionPointer ---
|
|
GL_UnloadLibrary :: proc() ---
|
|
GL_ExtensionSupported :: proc(extension: cstring) -> bool ---
|
|
GL_ResetAttributes :: proc() ---
|
|
GL_SetAttribute :: proc(attr: GLAttr, value: c.int) -> bool ---
|
|
GL_GetAttribute :: proc(attr: GLAttr, value: ^c.int) -> bool ---
|
|
GL_CreateContext :: proc(window: ^Window) -> GLContext ---
|
|
GL_MakeCurrent :: proc(window: ^Window, ctx: GLContext) -> bool ---
|
|
GL_GetCurrentWindow :: proc() -> ^Window ---
|
|
GL_GetCurrentContext :: proc() -> GLContext ---
|
|
EGL_GetCurrentDisplay :: proc() -> EGLDisplay ---
|
|
EGL_GetCurrentConfig :: proc() -> EGLConfig ---
|
|
EGL_GetWindowSurface :: proc(window: ^Window) -> EGLSurface ---
|
|
EGL_SetAttributeCallbacks :: proc(platformAttribCallback: EGLAttribArrayCallback, surfaceAttribCallback: EGLIntArrayCallback, contextAttribCallback: EGLIntArrayCallback, userdata: rawptr) ---
|
|
GL_SetSwapInterval :: proc(interval: c.int) -> bool ---
|
|
GL_GetSwapInterval :: proc(interval: ^c.int) -> bool ---
|
|
GL_SwapWindow :: proc(window: ^Window) -> bool ---
|
|
GL_DestroyContext :: proc(ctx: GLContext) -> bool ---
|
|
}
|
|
|
|
|
|
// Used by vendor:OpenGL
|
|
gl_set_proc_address :: proc(p: rawptr, name: cstring) {
|
|
(^FunctionPointer)(p)^ = GL_GetProcAddress(name)
|
|
} |