mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-08 00:28:49 +00:00
Add vendor:glfw
This commit is contained in:
Vendored
+159
@@ -0,0 +1,159 @@
|
||||
package glfw_bindings
|
||||
|
||||
import "core:c"
|
||||
import vk "vendor:vulkan"
|
||||
|
||||
when ODIN_OS == "linux" do foreign import glfw "system:glfw" // TODO: Add the billion-or-so static libs to link to in linux
|
||||
when ODIN_OS == "windows" do foreign import glfw { "lib/glfw3.lib", "system:user32.lib", "system:gdi32.lib", "system:shell32.lib" }
|
||||
|
||||
#assert(size_of(c.int) == size_of(b32));
|
||||
|
||||
/*** Functions ***/
|
||||
@(default_calling_convention="c", link_prefix="glfw")
|
||||
foreign glfw {
|
||||
Init :: proc() -> c.int ---
|
||||
Terminate :: proc() ---
|
||||
|
||||
InitHint :: proc(hint, value: c.int) ---
|
||||
|
||||
GetVersion :: proc(major, minor, rev: ^c.int) ---
|
||||
GetError :: proc(description: ^cstring) -> c.int ---
|
||||
|
||||
GetPrimaryMonitor :: proc() -> MonitorHandle ---
|
||||
GetMonitors :: proc(count: ^c.int) -> [^]MonitorHandle ---
|
||||
GetMonitorPos :: proc(monitor: MonitorHandle, xpos, ypos: ^c.int) ---
|
||||
GetMonitorPhysicalSize :: proc(monitor: MonitorHandle, widthMM, heightMM: ^c.int) ---
|
||||
GetMonitorContentScale :: proc(monitor: MonitorHandle, xscale, yscale: ^f32) ---
|
||||
|
||||
SetMonitorUserPointer :: proc(monitor: MonitorHandle, pointer: rawptr) ---
|
||||
GetMonitorUserPointer :: proc(monitor: MonitorHandle) -> rawptr ---
|
||||
|
||||
GetVideoMode :: proc(monitor: MonitorHandle) -> ^VidMode ---
|
||||
SetGamma :: proc(monitor: MonitorHandle, gamma: f32) ---
|
||||
GetGammaRamp :: proc(monitor: MonitorHandle) -> ^GammaRamp ---
|
||||
SetGammaRamp :: proc(monitor: MonitorHandle, ramp: ^GammaRamp) ---
|
||||
|
||||
CreateWindow :: proc(width, height: c.int, title: cstring, monitor: MonitorHandle, share: WindowHandle) -> WindowHandle ---
|
||||
DestroyWindow :: proc(window: WindowHandle) ---
|
||||
|
||||
WindowHint :: proc(hint, value: c.int) ---
|
||||
DefaultWindowHints :: proc() ---
|
||||
WindowHintString :: proc(hint: c.int, value: cstring) ---
|
||||
WindowShouldClose :: proc(window: WindowHandle) -> c.int ---
|
||||
|
||||
SwapInterval :: proc(interval: c.int) ---
|
||||
SwapBuffers :: proc(window: WindowHandle) ---
|
||||
|
||||
SetWindowTitle :: proc(window: WindowHandle, title: cstring) ---
|
||||
SetWindowIcon :: proc(window: WindowHandle, count: c.int, images: [^]Image) ---
|
||||
SetWindowPos :: proc(window: WindowHandle, xpos, ypos: c.int) ---
|
||||
SetWindowSizeLimits :: proc(window: WindowHandle, minwidth, minheight, maxwidth, maxheight: c.int) ---
|
||||
SetWindowAspectRatio :: proc(window: WindowHandle, numer, denom: c.int) ---
|
||||
SetWindowSize :: proc(window: WindowHandle, width, height: c.int) ---
|
||||
GetWindowPos :: proc(window: WindowHandle, xpos, ypos: ^c.int) ---
|
||||
GetWindowSize :: proc(window: WindowHandle, width, height: ^c.int) ---
|
||||
GetFramebufferSize :: proc(window: WindowHandle, width, height: ^c.int) ---
|
||||
GetWindowFrameSize :: proc(window: WindowHandle, left, top, right, bottom: ^c.int) ---
|
||||
|
||||
GetWindowContentScale :: proc(window: WindowHandle, xscale, yscale: ^f32) ---
|
||||
GetWindowOpacity :: proc(window: WindowHandle) -> f32 ---
|
||||
SetWindowOpacity :: proc(window: WindowHandle, opacity: f32) ---
|
||||
|
||||
GetVersionString :: proc() -> cstring ---
|
||||
GetMonitorName :: proc(monitor: MonitorHandle) -> cstring ---
|
||||
GetClipboardString :: proc(window: WindowHandle) -> cstring ---
|
||||
GetVideoModes :: proc(monitor: MonitorHandle, count: ^c.int) -> [^]VidMode ---
|
||||
GetKey :: proc(window: WindowHandle, key: c.int) -> c.int ---
|
||||
GetKeyName :: proc(key, scancode: c.int) -> cstring ---
|
||||
SetWindowShouldClose :: proc(window: WindowHandle, value: b32) ---
|
||||
JoystickPresent :: proc(joy: c.int) -> b32 ---
|
||||
GetJoystickName :: proc(joy: c.int) -> cstring ---
|
||||
GetKeyScancode :: proc(key: c.int) -> c.int ---
|
||||
|
||||
IconifyWindow :: proc(window: WindowHandle) ---
|
||||
RestoreWindow :: proc(window: WindowHandle) ---
|
||||
MaximizeWindow :: proc(window: WindowHandle) ---
|
||||
ShowWindow :: proc(window: WindowHandle) ---
|
||||
HideWindow :: proc(window: WindowHandle) ---
|
||||
FocusWindow :: proc(window: WindowHandle) ---
|
||||
|
||||
RequestWindowAttention :: proc(window: WindowHandle) ---
|
||||
|
||||
GetWindowMonitor :: proc(window: WindowHandle) -> MonitorHandle ---
|
||||
SetWindowMonitor :: proc(window: WindowHandle, monitor: MonitorHandle, xpos, ypos, width, height, refresh_rate: c.int) ---
|
||||
GetWindowAttrib :: proc(window: WindowHandle, attrib: c.int) -> c.int ---
|
||||
SetWindowUserPointer :: proc(window: WindowHandle, pointer: rawptr) ---
|
||||
GetWindowUserPointer :: proc(window: WindowHandle) -> rawptr ---
|
||||
|
||||
SetWindowAttrib :: proc(window: WindowHandle, attrib, value: c.int) ---
|
||||
|
||||
PollEvents :: proc() ---
|
||||
WaitEvents :: proc() ---
|
||||
WaitEventsTimeout :: proc(timeout: f64) ---
|
||||
PostEmptyEvent :: proc() ---
|
||||
|
||||
GetInputMode :: proc(window: WindowHandle, mode: c.int) -> c.int ---
|
||||
SetInputMode :: proc(window: WindowHandle, mode, value: c.int) ---
|
||||
|
||||
GetMouseButton :: proc(window: WindowHandle, button: c.int) -> c.int ---
|
||||
GetCursorPos :: proc(window: WindowHandle, xpos, ypos: ^f64) ---
|
||||
SetCursorPos :: proc(window: WindowHandle, xpos, ypos: f64) ---
|
||||
|
||||
CreateCursor :: proc(image: ^Image, xhot, yhot: c.int) -> CursorHandle ---
|
||||
DestroyCursor :: proc(cursor: CursorHandle) ---
|
||||
SetCursor :: proc(window: WindowHandle, cursor: CursorHandle) ---
|
||||
CreateStandardCursor :: proc(shape: c.int) -> CursorHandle ---
|
||||
|
||||
GetJoystickAxes :: proc(joy: c.int, count: ^c.int) -> [^]f32 ---
|
||||
GetJoystickButtons :: proc(joy: c.int, count: ^c.int) -> [^]u8 ---
|
||||
GetJoystickHats :: proc(jid: c.int, count: ^c.int) -> [^]u8 ---
|
||||
GetJoystickGUID :: proc(jid: c.int) -> cstring ---
|
||||
SetJoystickUserPointer :: proc(jid: c.int, pointer: rawptr) ---
|
||||
GetJoystickUserPointer :: proc(jid: c.int) -> rawptr ---
|
||||
JoystickIsGamepad :: proc(jid: c.int) -> b32 ---
|
||||
UpdateGamepadMappings :: proc(str: cstring) -> c.int ---
|
||||
GetGamepadName :: proc(jid: c.int) -> cstring ---
|
||||
GetGamepadState :: proc(jid: c.int, state: ^GamepadState) -> c.int ---
|
||||
|
||||
SetClipboardString :: proc(window: WindowHandle, str: cstring) ---
|
||||
|
||||
SetTime :: proc(time: f64) ---
|
||||
GetTime :: proc() -> f64 ---
|
||||
GetTimerValue :: proc() -> u64 ---
|
||||
GetTimerFrequency :: proc() -> u64 ---
|
||||
|
||||
MakeContextCurrent :: proc(window: WindowHandle) ---
|
||||
GetCurrentContext :: proc() -> WindowHandle ---
|
||||
GetProcAddress :: proc(name: cstring) -> rawptr ---
|
||||
ExtensionSupported :: proc(extension: cstring) -> c.int ---
|
||||
|
||||
VulkanSupported :: proc() -> b32 ---
|
||||
GetRequiredInstanceExtensions :: proc(count: ^u32) -> [^]cstring ---
|
||||
GetInstanceProcAddress :: proc(instance: vk.Instance, procname: cstring) -> rawptr ---
|
||||
GetPhysicalDevicePresentationSupport :: proc(instance: vk.Instance, device: vk.PhysicalDevice, queuefamily: u32) -> c.int ---
|
||||
CreateWindowSurface :: proc(instance: vk.Instance, window: WindowHandle, allocator: ^vk.AllocationCallbacks, surface: ^vk.SurfaceKHR) -> vk.Result ---
|
||||
|
||||
SetWindowIconifyCallback :: proc(window: WindowHandle, cbfun: WindowIconifyProc) -> WindowIconifyProc ---
|
||||
SetWindowRefreshCallback :: proc(window: WindowHandle, cbfun: WindowRefreshProc) -> WindowRefreshProc ---
|
||||
SetWindowFocusCallback :: proc(window: WindowHandle, cbfun: WindowFocusProc) -> WindowFocusProc ---
|
||||
SetWindowCloseCallback :: proc(window: WindowHandle, cbfun: WindowCloseProc) -> WindowCloseProc ---
|
||||
SetWindowSizeCallback :: proc(window: WindowHandle, cbfun: WindowSizeProc) -> WindowSizeProc ---
|
||||
SetWindowPosCallback :: proc(window: WindowHandle, cbfun: WindowPosProc) -> WindowPosProc ---
|
||||
SetFramebufferSizeCallback :: proc(window: WindowHandle, cbfun: FramebufferSizeProc) -> FramebufferSizeProc ---
|
||||
SetDropCallback :: proc(window: WindowHandle, cbfun: DropProc) -> DropProc ---
|
||||
SetMonitorCallback :: proc(window: WindowHandle, cbfun: MonitorProc) -> MonitorProc ---
|
||||
SetWindowMaximizeCallback :: proc(window: WindowHandle, cbfun: WindowMaximizeProc) -> WindowMaximizeProc ---
|
||||
SetWindowContentScaleCallback :: proc(window: WindowHandle, cbfun: WindowContentScaleProc) -> WindowContentScaleProc ---
|
||||
|
||||
SetKeyCallback :: proc(window: WindowHandle, cbfun: KeyProc) -> KeyProc ---
|
||||
SetMouseButtonCallback :: proc(window: WindowHandle, cbfun: MouseButtonProc) -> MouseButtonProc ---
|
||||
SetCursorPosCallback :: proc(window: WindowHandle, cbfun: CursorPosProc) -> CursorPosProc ---
|
||||
SetScrollCallback :: proc(window: WindowHandle, cbfun: ScrollProc) -> ScrollProc ---
|
||||
SetCharCallback :: proc(window: WindowHandle, cbfun: CharProc) -> CharProc ---
|
||||
SetCharModsCallback :: proc(window: WindowHandle, cbfun: CharModsProc) -> CharModsProc ---
|
||||
SetCursorEnterCallback :: proc(window: WindowHandle, cbfun: CursorEnterProc) -> CursorEnterProc ---
|
||||
SetJoystickCallback :: proc(window: WindowHandle, cbfun: JoystickProc) -> JoystickProc ---
|
||||
|
||||
SetErrorCallback :: proc(cbfun: ErrorProc) -> ErrorProc ---
|
||||
}
|
||||
|
||||
Vendored
+55
@@ -0,0 +1,55 @@
|
||||
package glfw_bindings
|
||||
|
||||
import "core:c"
|
||||
|
||||
WindowHandle :: distinct rawptr;
|
||||
MonitorHandle :: distinct rawptr;
|
||||
CursorHandle :: distinct rawptr;
|
||||
|
||||
VidMode :: struct {
|
||||
width: c.int,
|
||||
height: c.int,
|
||||
red_bits: c.int,
|
||||
green_bits: c.int,
|
||||
blue_bits: c.int,
|
||||
refresh_rate: c.int,
|
||||
};
|
||||
|
||||
GammaRamp :: struct {
|
||||
red, green, blue: [^]c.ushort,
|
||||
size: c.uint,
|
||||
}
|
||||
|
||||
Image :: struct {
|
||||
width, height: c.int,
|
||||
pixels: [^]u8,
|
||||
}
|
||||
|
||||
GamepadState :: struct {
|
||||
buttons: [15]u8,
|
||||
axes: [6]f32,
|
||||
}
|
||||
|
||||
/*** Procedure type declarations ***/
|
||||
WindowIconifyProc :: #type proc "c" (window: WindowHandle, iconified: c.int);
|
||||
WindowRefreshProc :: #type proc "c" (window: WindowHandle);
|
||||
WindowFocusProc :: #type proc "c" (window: WindowHandle, focused: c.int);
|
||||
WindowCloseProc :: #type proc "c" (window: WindowHandle);
|
||||
WindowSizeProc :: #type proc "c" (window: WindowHandle, width, height: c.int);
|
||||
WindowPosProc :: #type proc "c" (window: WindowHandle, xpos, ypos: c.int);
|
||||
WindowMaximizeProc :: #type proc "c" (window: WindowHandle, iconified: c.int);
|
||||
WindowContentScaleProc :: #type proc "c" (window: WindowHandle, xscale, yscale: f32);
|
||||
FramebufferSizeProc :: #type proc "c" (window: WindowHandle, width, height: c.int);
|
||||
DropProc :: #type proc "c" (window: WindowHandle, count: c.int, paths: [^]cstring);
|
||||
MonitorProc :: #type proc "c" (window: WindowHandle);
|
||||
|
||||
KeyProc :: #type proc "c" (window: WindowHandle, key, scancode, action, mods: c.int);
|
||||
MouseButtonProc :: #type proc "c" (window: WindowHandle, button, action, mods: c.int);
|
||||
CursorPosProc :: #type proc "c" (window: WindowHandle, xpos, ypos: f64);
|
||||
ScrollProc :: #type proc "c" (window: WindowHandle, xoffset, yoffset: f64);
|
||||
CharProc :: #type proc "c" (window: WindowHandle, codepoint: rune);
|
||||
CharModsProc :: #type proc "c" (window: WindowHandle, codepoint: rune, mods: c.int);
|
||||
CursorEnterProc :: #type proc "c" (window: WindowHandle, entered: c.int);
|
||||
JoystickProc :: #type proc "c" (joy, event: c.int);
|
||||
|
||||
ErrorProc :: #type proc "c" (error: c.int, description: cstring);
|
||||
Reference in New Issue
Block a user