From 117c5d2702aadc26c4713448832cae59665c26dc Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Fri, 23 Feb 2024 20:50:56 -0500 Subject: [PATCH] Better HiDPI Support --- media-layer/core/src/media.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/media-layer/core/src/media.c b/media-layer/core/src/media.c index 68c5fd6b..33cfb83a 100644 --- a/media-layer/core/src/media.c +++ b/media-layer/core/src/media.c @@ -234,8 +234,27 @@ static double last_mouse_y = 0; // Ignore Relative Cursor Motion static int ignore_relative_motion = 0; +// Convert Screen Coordinates To Pixels +static void convert_to_pixels(GLFWwindow *window, double *xpos, double *ypos) { + // Get Window Size + int window_width; + int window_height; + glfwGetWindowSize(window, &window_width, &window_height); + // Get Framebuffer Size + int framebuffer_width; + int framebuffer_height; + glfwGetFramebufferSize(window, &framebuffer_width, &framebuffer_height); + // Calculate Ratios + double width_ratio = ((double) framebuffer_width) / ((double) window_width); + double height_ratio = ((double) framebuffer_height) / ((double) window_height); + // Multiply + *xpos *= width_ratio; + *ypos *= height_ratio; +} + // Pass Mouse Movement To SDL static void glfw_motion(__attribute__((unused)) GLFWwindow *window, double xpos, double ypos) { + convert_to_pixels(window, &xpos, &ypos); if (is_interactable) { SDL_Event event; event.type = SDL_MOUSEMOTION;