Procházet zdrojové kódy

utility for getting monitor size from platform

John Jackson před 3 roky
rodič
revize
c3e310aa1f
2 změnil soubory, kde provedl 23 přidání a 1 odebrání
  1. 2 1
      gs.h
  2. 21 0
      impl/gs_platform_impl.h

+ 2 - 1
gs.h

@@ -4614,7 +4614,7 @@ typedef enum gs_platform_keycode
 #define GS_KEYCODE_LSHIFT   GS_KEYCODE_LEFT_SHIFT
 #define GS_KEYCODE_RSHIFT   GS_KEYCODE_RIGHT_SHIFT
 #define GS_KEYCODE_LALT     GS_KEYCODE_LEFT_ALT
-#define GS_KEYCCODE_RALT    GS_KEYCODE_RIGHT_ALT
+#define GS_KEYCODE_RALT     GS_KEYCODE_RIGHT_ALT
 
 typedef enum gs_platform_mouse_button_code
 {
@@ -5069,6 +5069,7 @@ GS_API_DECL gs_vec2  gs_platform_framebuffer_sizev(uint32_t handle);
 GS_API_DECL void     gs_platform_framebuffer_size(uint32_t handle, uint32_t* w, uint32_t* h);
 GS_API_DECL uint32_t gs_platform_framebuffer_width(uint32_t handle);
 GS_API_DECL uint32_t gs_platform_framebuffer_height(uint32_t handle);
+GS_API_DECL gs_vec2  gs_platform_monitor_sizev(uint32_t id);
 
 // Platform callbacks
 GS_API_DECL void     gs_platform_set_framebuffer_resize_callback(uint32_t handle, gs_framebuffer_resize_callback_t cb);

+ 21 - 0
impl/gs_platform_impl.h

@@ -1750,6 +1750,27 @@ uint32_t gs_platform_framebuffer_height(uint32_t handle)
     return h;
 }
 
+GS_API_DECL gs_vec2 gs_platform_monitor_sizev(uint32_t id)
+{
+    gs_vec2 ms = gs_v2s(0.f);
+    int32_t width, height, xpos, ypos;
+    int32_t count;
+    GLFWmonitor* monitor = NULL;
+    gs_platform_t* platform = gs_subsystem(platform);
+
+    GLFWmonitor** monitors = glfwGetMonitors(&count);
+    if (count && id < count) { 
+        monitor = monitors[id];
+    } 
+    else {
+        monitor = glfwGetPrimaryMonitor();
+    } 
+    glfwGetMonitorWorkarea(monitor, &xpos, &ypos, &width, &height);
+    ms.x = (float)width;
+    ms.y = (float)height;
+    return ms;
+}
+
 void gs_platform_set_cursor(uint32_t handle, gs_platform_cursor cursor)
 {
     gs_platform_t* platform = gs_subsystem(platform);