add platform functions for querying monitor information

This commit is contained in:
jp9000 2013-12-16 00:06:13 -07:00
parent ed388fc82e
commit f27dfb6809
4 changed files with 41 additions and 0 deletions

View File

@ -23,3 +23,9 @@ bool GetDataFilePath(const char *data, string &output)
// TODO
return false;
}
void GetMonitors(vector<MonitorInfo> &monitors)
{
monitors.clear();
// TODO
}

View File

@ -27,3 +27,9 @@ bool GetDataFilePath(const char *data, string &output)
output = str.str();
return !access(output.c_str(), R_OK);
}
void GetMonitors(vector<MonitorInfo> &monitors)
{
monitors.clear();
// TODO
}

View File

@ -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<MonitorInfo> &monitors = *(vector<MonitorInfo> *)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<MonitorInfo> &monitors)
{
monitors.clear();
EnumDisplayMonitors(NULL, NULL, OBSMonitorEnumProc, (LPARAM)&monitors);
}

View File

@ -17,8 +17,17 @@
#pragma once
#include <util/c99defs.h>
#include <string>
#include <vector>
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<MonitorInfo> &monitors);