util_os_ui.c (1933B)
1 /* See LICENSE for license details. */ 2 3 // NOTE(rnp): functions which require platform layer support but 4 // otherwise share implementation 5 // TODO(rnp): replace all this with platform specific functions 6 7 void *GetPlatformWindowHandle(void); 8 9 // see: external/raylib/src/external/glfw/include/GLFW/glfw3.h 10 typedef void glfw_window_resize_fn(void *window, i32 width, i32 height); 11 12 glfw_window_resize_fn *glfwSetWindowSizeCallback(void *window, glfw_window_resize_fn *callback); 13 14 global BeamformerInput *beamformer_input; 15 global glfw_window_resize_fn *raylib_window_resize; 16 17 function void 18 os_push_input_event(BeamformerInput *input, BeamformerInputEvent event) 19 { 20 assert(input->event_count < countof(input->event_queue)); 21 if (input->event_count < countof(input->event_queue)) 22 input->event_queue[input->event_count++] = event; 23 } 24 25 function void 26 os_window_equip_common(BeamformerInput *input, void *window) 27 { 28 beamformer_input = input; 29 } 30 31 function void 32 os_build_frame_input(BeamformerInput *input) 33 { 34 Vector2 new_mouse = {-1, -1}; 35 if (IsWindowFocused()) new_mouse = GetMousePosition(); 36 input->mouse_x = new_mouse.x; 37 input->mouse_y = new_mouse.y; 38 39 input->input_modifiers = 0; 40 input->input_modifiers |= BeamformerInputModifier_LeftAlt * IsKeyDown(KEY_LEFT_ALT); 41 input->input_modifiers |= BeamformerInputModifier_RightAlt * IsKeyDown(KEY_RIGHT_ALT); 42 input->input_modifiers |= BeamformerInputModifier_LeftControl * IsKeyDown(KEY_LEFT_CONTROL); 43 input->input_modifiers |= BeamformerInputModifier_RightControl * IsKeyDown(KEY_RIGHT_CONTROL); 44 input->input_modifiers |= BeamformerInputModifier_LeftShift * IsKeyDown(KEY_LEFT_SHIFT); 45 input->input_modifiers |= BeamformerInputModifier_RightShift * IsKeyDown(KEY_RIGHT_SHIFT); 46 input->input_modifiers |= BeamformerInputModifier_LeftMeta * IsKeyDown(KEY_LEFT_SUPER); 47 input->input_modifiers |= BeamformerInputModifier_RightMeta * IsKeyDown(KEY_RIGHT_SUPER); 48 }