3Cogs::Monitor::List Cogs::Monitor::monitors;
5size_t Cogs::Monitor::getCount() {
6 return monitors.size();
13const Cogs::Monitor* Cogs::Monitor::findByName(
const std::string& name) {
14 for (
const Monitor& monitor : monitors) {
15 if (monitor.name == name) {
22const Cogs::Monitor* Cogs::Monitor::findFromPoint(
const glm::ivec2& point) {
23 for (
const Monitor& monitor : monitors) {
24 glm::ivec2 br = monitor.position + monitor.size;
26 if ((monitor.position.x <= point.x) && (point.x < br.x) && (monitor.position.y <= point.y) && (point.y < br.y)) {
33const Cogs::Monitor* Cogs::Monitor::findFromRect(
const glm::ivec2& tl,
const glm::ivec2& br) {
37 for (
int idx = 0, count =
static_cast<int>(monitors.size()); idx < count; ++idx) {
38 const Monitor& monitor = monitors[idx];
39 glm::ivec2 monitorTL = monitor.
position;
40 glm::ivec2 monitorBR = monitor.position + monitor.size;
41 int left = std::max(monitorTL.x, tl.x);
42 int top = std::max(monitorTL.y, tl.y);
43 int right = std::min(monitorBR.x, br.x);
44 int bottom = std::min(monitorBR.y, br.y);
45 int area = std::max(0, right - left) * std::max(0, bottom - top);
52 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.