Cogs.Foundation
Loading...
Searching...
No Matches
Monitor.h
Go to the documentation of this file.
1#pragma once
2
3#if defined( _WIN32 )
4 #include <WinSock2.h>
5 #undef GetObject
6#endif
7
8#include "../FoundationBase.h"
9
10#include <glm/vec2.hpp>
11
12#include <string>
13#include <vector>
14
15namespace Cogs {
20 public:
21 static void enumerate();
22 static size_t getCount();
23 static const Monitor& get(size_t idx);
24 static const Monitor* findByName(const std::string& name);
25 static const Monitor* findFromPoint(const glm::ivec2& point);
26 static const Monitor* findFromRect(const glm::ivec2& tl, const glm::ivec2& br);
27
28 void* getIdentifier() const { return identifier; }
29 const std::string& getName() const { return name; }
30 const glm::ivec2& getPosition() const { return position; }
31 const glm::ivec2& getSize() const { return size; }
32 glm::ivec2 getCentre() const { return position + (size / 2); }
33
34 private:
35 using List = std::vector<Monitor>;
36
37 static List monitors;
38 void* identifier = nullptr;
39 std::string name;
40 glm::ivec2 position;
41 glm::ivec2 size;
42 bool primary = false;
43
44#if defined( _WIN32 )
45 static BOOL callback(HMONITOR monitor, HDC, RECT* coords, LPARAM);
46#endif
47 };
48}
#define COGSFOUNDATION_API
Definition: FoundationBase.h:31
Helper class for enumerating available displays on the host computer.
Definition: Monitor.h:19
const glm::ivec2 & getSize() const
Definition: Monitor.h:31
static List monitors
Definition: Monitor.h:37
glm::ivec2 size
Size of this monitor in desktop coordinates.
Definition: Monitor.h:41
const glm::ivec2 & getPosition() const
Definition: Monitor.h:30
std::vector< Monitor > List
Definition: Monitor.h:35
glm::ivec2 position
Position of this monitor in desktop coordinates.
Definition: Monitor.h:40
void * getIdentifier() const
Definition: Monitor.h:28
glm::ivec2 getCentre() const
Definition: Monitor.h:32
std::string name
User-friendly name for this monitor.
Definition: Monitor.h:39
const std::string & getName() const
Definition: Monitor.h:29
Main Cogs namespace.
Definition: MortonCode.h:5