package glfw import "core:c" import glfw "bindings" Init :: glfw.Init; Terminate :: glfw.Terminate; InitHint :: glfw.InitHint; GetVersion :: proc "c" () -> (major, minor, rev: c.int) { glfw.GetVersion(&major, &minor, &rev); return; } GetError :: proc "c" () -> (description: string, code: c.int) { desc: cstring; code = glfw.GetError(&desc); description = string(desc); return; } GetPrimaryMonitor :: glfw.GetPrimaryMonitor; GetMonitors :: proc "c" () -> []MonitorHandle { count: c.int; monitors := glfw.GetMonitors(&count); return monitors[:count]; } GetMonitorPos :: proc "c" (monitor: MonitorHandle) -> (xpos, ypos: c.int) { glfw.GetMonitorPos(monitor, &xpos, &ypos); return; } GetMonitorPhysicalSize :: proc "c" (monitor: MonitorHandle) -> (widthMM, heightMM: c.int) { glfw.GetMonitorPhysicalSize(monitor, &widthMM, &heightMM); return; } GetMonitorContentScale :: proc "c" (monitor: MonitorHandle) -> (xscale, yscale: f32) { glfw.GetMonitorContentScale(monitor, &xscale, &yscale); return; } SetMonitorUserPointer :: glfw.SetMonitorUserPointer; GetMonitorUserPointer :: glfw.GetMonitorUserPointer; GetVideoMode :: glfw.GetVideoMode; SetGamma :: glfw.SetGamma; GetGammaRamp :: glfw.GetGammaRamp; SetGammaRamp :: glfw.SetGammaRamp; CreateWindow :: glfw.CreateWindow; DestroyWindow :: glfw.DestroyWindow; WindowHint :: glfw.WindowHint; DefaultWindowHints :: glfw.DefaultWindowHints; WindowHintString :: glfw.WindowHintString; WindowShouldClose :: glfw.WindowShouldClose; SwapInterval :: glfw.SwapInterval; SwapBuffers :: glfw.SwapBuffers; SetWindowTitle :: glfw.SetWindowTitle; SetWindowIcon :: proc "c" (window: WindowHandle, images: []Image) { glfw.SetWindowIcon(window, c.int(len(images)), raw_data(images)); } SetWindowPos :: glfw.SetWindowPos; SetWindowSizeLimits :: glfw.SetWindowSizeLimits; SetWindowAspectRatio :: glfw.SetWindowAspectRatio; SetWindowSize :: glfw.SetWindowSize; GetWindowPos :: proc "c" (window: WindowHandle) -> (xpos, ypos: c.int) { glfw.GetWindowPos(window, &xpos, &ypos); return; } GetWindowSize :: proc "c" (window: WindowHandle) -> (width, height: c.int) { glfw.GetWindowSize(window, &width, &height); return; } GetFramebufferSize :: proc "c" (window: WindowHandle) -> (width, height: c.int) { glfw.GetFramebufferSize(window, &width, &height); return; } GetWindowFrameSize :: proc "c" (window: WindowHandle) -> (left, top, right, bottom: c.int) { glfw.GetWindowFrameSize(window, &left, &top, &right, &bottom); return; } GetWindowContentScale :: proc "c" (window: WindowHandle) -> (xscale, yscale: f32) { glfw.GetWindowContentScale(window, &xscale, &yscale); return; } GetWindowOpacity :: glfw.GetWindowOpacity; SetWindowOpacity :: glfw.SetWindowOpacity; GetVersionString :: proc "c" () -> string { return string(glfw.GetVersionString()); } GetMonitorName :: proc "c" (monitor: MonitorHandle) -> string { return string(glfw.GetMonitorName(monitor)); } GetClipboardString :: proc "c" (window: WindowHandle) -> string { return string(glfw.GetClipboardString(window)); } GetVideoModes :: proc "c" (monitor: MonitorHandle) -> []VidMode { count: c.int; modes := glfw.GetVideoModes(monitor, &count); return modes[:count]; } GetKey :: glfw.GetKey; GetKeyName :: proc "c" (key, scancode: c.int) -> string { return string(glfw.GetKeyName(key, scancode)); } SetWindowShouldClose :: glfw.SetWindowShouldClose; JoystickPresent :: glfw.JoystickPresent; GetJoystickName :: proc "c" (joy: c.int) -> string { return string(glfw.GetJoystickName(joy)); } GetKeyScancode :: glfw.GetKeyScancode; IconifyWindow :: glfw.IconifyWindow; RestoreWindow :: glfw.RestoreWindow; MaximizeWindow :: glfw.MaximizeWindow; ShowWindow :: glfw.ShowWindow; HideWindow :: glfw.HideWindow; FocusWindow :: glfw.FocusWindow; RequestWindowAttention :: glfw.RequestWindowAttention; GetWindowMonitor :: glfw.GetWindowMonitor; SetWindowMonitor :: glfw.SetWindowMonitor; GetWindowAttrib :: glfw.GetWindowAttrib; SetWindowUserPointer :: glfw.SetWindowUserPointer; GetWindowUserPointer :: glfw.GetWindowUserPointer; SetWindowAttrib :: glfw.SetWindowAttrib; PollEvents :: glfw.PollEvents; WaitEvents :: glfw.WaitEvents; WaitEventsTimeout :: glfw.WaitEventsTimeout; PostEmptyEvent :: glfw.PostEmptyEvent; GetInputMode :: glfw.GetInputMode; SetInputMode :: glfw.SetInputMode; GetMouseButton :: glfw.GetMouseButton; GetCursorPos :: proc "c" (window: WindowHandle) -> (xpos, ypos: f64) { glfw.GetCursorPos(window, &xpos, &ypos); return; } SetCursorPos :: glfw.SetCursorPos; CreateCursor :: glfw.CreateCursor; DestroyCursor :: glfw.DestroyCursor; SetCursor :: glfw.SetCursor; CreateStandardCursor :: glfw.CreateStandardCursor; GetJoystickAxes :: proc "c" (joy: c.int) -> []f32 { count: c.int; axes := glfw.GetJoystickAxes(joy, &count); return axes[:count]; } GetJoystickButtons :: proc "c" (joy: c.int) -> []u8 { count: c.int; buttons := glfw.GetJoystickButtons(joy, &count); return buttons[:count]; } GetJoystickHats :: proc "c" (jid: c.int) -> []u8 { count: c.int; hats := glfw.GetJoystickHats(jid, &count); return hats[:count]; } GetJoystickGUID :: proc "c" (jid: c.int) -> string { return string(glfw.GetJoystickGUID(jid)); } SetJoystickUserPointer :: glfw.SetJoystickUserPointer; GetJoystickUserPointer :: glfw.GetJoystickUserPointer; JoystickIsGamepad :: glfw.JoystickIsGamepad; UpdateGamepadMappings :: glfw.UpdateGamepadMappings; GetGamepadName :: proc "c" (jid: c.int) -> string { return string(glfw.GetGamepadName(jid)); } GetGamepadState :: glfw.GetGamepadState; SetClipboardString :: glfw.SetClipboardString; SetTime :: glfw.SetTime; GetTime :: glfw.GetTime; GetTimerValue :: glfw.GetTimerValue; GetTimerFrequency :: glfw.GetTimerFrequency; MakeContextCurrent :: glfw.MakeContextCurrent; GetCurrentContext :: glfw.GetCurrentContext; GetProcAddress :: glfw.GetProcAddress; ExtensionSupported :: glfw.ExtensionSupported; VulkanSupported :: glfw.VulkanSupported; GetRequiredInstanceExtensions :: proc "c" () -> []cstring { count: u32; exts := glfw.GetRequiredInstanceExtensions(&count); return exts[:count]; } GetInstanceProcAddress :: glfw.GetInstanceProcAddress; GetPhysicalDevicePresentationSupport :: glfw.GetPhysicalDevicePresentationSupport; CreateWindowSurface :: glfw.CreateWindowSurface; SetWindowIconifyCallback :: glfw.SetWindowIconifyCallback; SetWindowRefreshCallback :: glfw.SetWindowRefreshCallback; SetWindowFocusCallback :: glfw.SetWindowFocusCallback; SetWindowCloseCallback :: glfw.SetWindowCloseCallback; SetWindowSizeCallback :: glfw.SetWindowSizeCallback; SetWindowPosCallback :: glfw.SetWindowPosCallback; SetFramebufferSizeCallback :: glfw.SetFramebufferSizeCallback; SetDropCallback :: glfw.SetDropCallback; SetMonitorCallback :: glfw.SetMonitorCallback; SetWindowMaximizeCallback :: glfw.SetWindowMaximizeCallback; SetWindowContentScaleCallback :: glfw.SetWindowContentScaleCallback; SetKeyCallback :: glfw.SetKeyCallback; SetMouseButtonCallback :: glfw.SetMouseButtonCallback; SetCursorPosCallback :: glfw.SetCursorPosCallback; SetScrollCallback :: glfw.SetScrollCallback; SetCharCallback :: glfw.SetCharCallback; SetCharModsCallback :: glfw.SetCharModsCallback; SetCursorEnterCallback :: glfw.SetCursorEnterCallback; SetJoystickCallback :: glfw.SetJoystickCallback; SetErrorCallback :: glfw.SetErrorCallback; // Used by vendor:OpenGL gl_set_proc_address :: proc(p: rawptr, name: cstring) { (^rawptr)(p)^ = GetProcAddress(name); }