3Cogs::Monitor::List Cogs::Monitor::monitors;
5Cogs::Monitor::Monitor(
const glm::ivec2& p,
const glm::ivec2& s) : position(p), size(s) {
8size_t Cogs::Monitor::getCount() {
9 return monitors.size();
13 static Monitor dummy(glm::ivec2(40, 40), glm::ivec2(1200, 675));
15 if (idx < monitors.size()) {
21const Cogs::Monitor* Cogs::Monitor::findByName(
const std::string& name) {
22 for (
const Monitor& monitor : monitors) {
23 if (monitor.name == name) {
30const Cogs::Monitor* Cogs::Monitor::findFromPoint(
const glm::ivec2& point) {
31 for (
const Monitor& monitor : monitors) {
32 glm::ivec2 br = monitor.position + monitor.size;
34 if ((monitor.position.x <= point.x) && (point.x < br.x) && (monitor.position.y <= point.y) && (point.y < br.y)) {
41const Cogs::Monitor* Cogs::Monitor::findFromRect(
const glm::ivec2& tl,
const glm::ivec2& br) {
45 for (
int idx = 0, count =
static_cast<int>(monitors.size()); idx < count; ++idx) {
46 const Monitor& monitor = monitors[idx];
47 glm::ivec2 monitorTL = monitor.
position;
48 glm::ivec2 monitorBR = monitor.position + monitor.size;
49 int left = std::max(monitorTL.x, tl.x);
50 int top = std::max(monitorTL.y, tl.y);
51 int right = std::min(monitorBR.x, br.x);
52 int bottom = std::min(monitorBR.y, br.y);
53 int area = std::max(0, right - left) * std::max(0, bottom - top);
60 return (bestIdx >= 0) ? &monitors[bestIdx] :
nullptr;
Helper class for enumerating available displays on the host computer.
glm::ivec2 position
Position of this monitor in desktop coordinates.