diff --git a/obs/platform-nix.cpp b/obs/platform-nix.cpp index 88dd77cbd..20bbc94e4 100644 --- a/obs/platform-nix.cpp +++ b/obs/platform-nix.cpp @@ -23,3 +23,9 @@ bool GetDataFilePath(const char *data, string &output) // TODO return false; } + +void GetMonitors(vector &monitors) +{ + monitors.clear(); + // TODO +} diff --git a/obs/platform-osx.cpp b/obs/platform-osx.cpp index ef425f90d..9153b45d7 100644 --- a/obs/platform-osx.cpp +++ b/obs/platform-osx.cpp @@ -27,3 +27,9 @@ bool GetDataFilePath(const char *data, string &output) output = str.str(); return !access(output.c_str(), R_OK); } + +void GetMonitors(vector &monitors) +{ + monitors.clear(); + // TODO +} diff --git a/obs/platform-windows.cpp b/obs/platform-windows.cpp index 85f2a3854..e5af5ae42 100644 --- a/obs/platform-windows.cpp +++ b/obs/platform-windows.cpp @@ -30,3 +30,23 @@ bool GetDataFilePath(const char *data, string &output) output = str.str(); return os_file_exists(output.c_str()); } + +static BOOL CALLBACK OBSMonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, + LPRECT rect, LPARAM param) +{ + vector &monitors = *(vector *)param; + + MonitorInfo monitor; + monitor.x = rect->left; + monitor.y = rect->top; + monitor.cx = rect->right - rect->left; + monitor.cy = rect->bottom - rect->top; + monitors.push_back(monitor); + return true; +} + +void GetMonitors(vector &monitors) +{ + monitors.clear(); + EnumDisplayMonitors(NULL, NULL, OBSMonitorEnumProc, (LPARAM)&monitors); +} diff --git a/obs/platform.hpp b/obs/platform.hpp index 478ca9dc7..050c3aeb9 100644 --- a/obs/platform.hpp +++ b/obs/platform.hpp @@ -17,8 +17,17 @@ #pragma once +#include + #include +#include using namespace std; +struct MonitorInfo { + int32_t x, y; + uint32_t cx, cy; +}; + /* Gets the path of obs-studio specific data files (such as locale) */ bool GetDataFilePath(const char *data, string &path); +void GetMonitors(vector &monitors);