Browse Source

Changed monitor functions to use a index

- Using same idea as SetWindowMonitor to take in a index with 0 being the primary monitor.
ChrisDill 7 years ago
parent
commit
67dc50ef00
2 changed files with 64 additions and 39 deletions
  1. 59 34
      src/core.c
  2. 5 5
      src/raylib.h

+ 59 - 34
src/core.c

@@ -783,64 +783,89 @@ int GetMonitorCount(void)
 }
 
 // Get primary monitor width
-int GetMonitorWidth(void)
+int GetMonitorWidth(int monitor)
 {   
 #if defined(PLATFORM_DESKTOP)
-    GLFWmonitor *monitor = glfwGetPrimaryMonitor();
-    const GLFWvidmode * mode = glfwGetVideoMode(monitor);
-    return mode->width;
-#else
-    return GetScreenWidth();
+    int monitorCount;
+    GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
+    
+    if ((monitor >= 0) && (monitor < monitorCount)) 
+    {
+        const GLFWvidmode *mode = glfwGetVideoMode(monitors[monitor]);
+        return mode->width;
+    }
+    else TraceLog(LOG_WARNING, "Selected monitor not found");
 #endif
+    return 0;
 }
 
-// Get primary monitor height
-int GetMonitorHeight(void)
-{
+// Get primary monitor width
+int GetMonitorHeight(int monitor)
+{   
 #if defined(PLATFORM_DESKTOP)
-    GLFWmonitor *monitor = glfwGetPrimaryMonitor();
-    const GLFWvidmode * mode = glfwGetVideoMode(monitor);
-    return mode->height;
-#else
-    return GetScreenHeight();
+    int monitorCount;
+    GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
+    
+    if ((monitor >= 0) && (monitor < monitorCount)) 
+    {
+        const GLFWvidmode *mode = glfwGetVideoMode(monitors[monitor]);
+        return mode->height;
+    }
+    else TraceLog(LOG_WARNING, "Selected monitor not found");
 #endif
+    return 0;
 }
 
 // Get primary montior physical width in millimetres
-int GetMonitorPhysicalWidth(void)
+int GetMonitorPhysicalWidth(int monitor)
 {
 #if defined(PLATFORM_DESKTOP)
-    int physicalWidth;
-    GLFWmonitor *monitor = glfwGetPrimaryMonitor();
-    glfwGetMonitorPhysicalSize(monitor, &physicalWidth, NULL);
-    return physicalWidth;
-#else
-    return 0;
+    int monitorCount;
+    GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
+    
+    if ((monitor >= 0) && (monitor < monitorCount)) 
+    {
+        int physicalWidth;
+        glfwGetMonitorPhysicalSize(monitors[monitor], &physicalWidth, NULL);
+        return physicalWidth;
+    }
+    else TraceLog(LOG_WARNING, "Selected monitor not found");
 #endif
+    return 0;
 }
 
 // Get primary monitor physical height in millimetres
-int GetMonitorPhysicalHeight(void)
+int GetMonitorPhysicalHeight(int monitor)
 {
-#if defined(PLATFORM_DESKTOP)    
-    int physicalHeight;
-    GLFWmonitor *monitor = glfwGetPrimaryMonitor();
-    glfwGetMonitorPhysicalSize(monitor, NULL, &physicalHeight);
-    return physicalHeight;
-#else
-    return 0;
+#if defined(PLATFORM_DESKTOP)
+    int monitorCount;
+    GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
+    
+    if ((monitor >= 0) && (monitor < monitorCount)) 
+    {
+        int physicalHeight;
+        glfwGetMonitorPhysicalSize(monitors[monitor], NULL, &physicalHeight);
+        return physicalHeight;
+    }
+    else TraceLog(LOG_WARNING, "Selected monitor not found");
 #endif
+    return 0;
 }
 
 // Get the human-readable, UTF-8 encoded name of the primary monitor
-const char *GetMonitorName(void)
+const char *GetMonitorName(int monitor)
 {
 #if defined(PLATFORM_DESKTOP) 
-    GLFWmonitor *monitor = glfwGetPrimaryMonitor();
-    return glfwGetMonitorName(monitor);
-#else
-    return "";
+    int monitorCount;
+    GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
+    
+    if ((monitor >= 0) && (monitor < monitorCount)) 
+    {
+        return glfwGetMonitorName(monitors[monitor]);
+    }
+    else TraceLog(LOG_WARNING, "Selected monitor not found");
 #endif
+    return "";
 }
 
 // Show mouse cursor

+ 5 - 5
src/raylib.h

@@ -815,11 +815,11 @@ RLAPI void SetWindowSize(int width, int height);                  // Set window
 RLAPI int GetScreenWidth(void);                                   // Get current screen width
 RLAPI int GetScreenHeight(void);                                  // Get current screen height
 RLAPI int GetMonitorCount(void);                                  // Get number of connected monitors
-RLAPI int GetMonitorWidth(void);                                  // Get primary monitor width
-RLAPI int GetMonitorHeight(void);                                 // Get primary monitor height
-RLAPI int GetMonitorPhysicalWidth(void);                          // Get primary monitor physical width in millimetres
-RLAPI int GetMonitorPhysicalHeight(void);                         // Get primary monitor physical height in millimetres
-RLAPI const char *GetMonitorName(void);                           // Get the human-readable, UTF-8 encoded name of the primary monitor
+RLAPI int GetMonitorWidth(int monitor);                           // Get primary monitor width
+RLAPI int GetMonitorHeight(int monitor);                          // Get primary monitor height
+RLAPI int GetMonitorPhysicalWidth(int monitor);                   // Get primary monitor physical width in millimetres
+RLAPI int GetMonitorPhysicalHeight(int monitor);                  // Get primary monitor physical height in millimetres
+RLAPI const char *GetMonitorName(int monitor);                    // Get the human-readable, UTF-8 encoded name of the primary monitor
 
 // Cursor-related functions
 RLAPI void ShowCursor(void);                                      // Shows cursor