Linux multi-monitor fullscreen support
[ryzomcore.git] / ryzom / tools / client / client_config_qt / src / system.h
blob1cc25a4bf72bdd6c638ac82f4f67ecf264f73a95
1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef SYSTEM_H
18 #define SYSTEM_H
20 #include <nel/misc/system_info.h>
21 #include "config.h"
23 namespace NL3D
25 class IDriver;
28 struct CVideoMode
30 uint16 width;
31 uint16 height;
32 uint8 depth;
33 uint8 frequency;
35 CVideoMode()
37 width = 0;
38 height = 0;
39 depth = 0;
40 frequency = 0;
43 bool operator== (const CVideoMode &o)
45 if ((o.width == width) && (o.height == height) && (o.depth == depth) && (o.frequency == frequency))
46 return true;
47 else
48 return false;
52 /**
53 @brief Singleton class that holds the system information, configs, etc
55 class CSystem
57 public:
58 CSystem();
59 ~CSystem();
61 static CSystem &GetInstance()
63 static CSystem sInstance;
64 return sInstance;
67 struct CSysInfo
69 std::string videoDevice;
70 std::string videoDriverVersion;
71 std::string osName;
72 std::string cpuName;
73 uint64 totalRAM;
75 sysInfo;
77 #ifdef Q_OS_WIN32
78 struct CD3DInfo
80 std::string device;
81 std::string driver;
82 std::string driverVersion;
83 std::vector< CVideoMode > modes;
85 d3dInfo;
86 #endif
88 struct COpenGLInfo
90 std::string vendor;
91 std::string renderer;
92 std::string driverVersion;
93 std::string extensions;
94 std::vector< CVideoMode > modes;
96 openglInfo;
98 CConfig config;
100 private:
101 void GatherSysInfo();
102 #ifdef Q_OS_WIN32
103 void GatherD3DInfo();
104 #endif
105 void GatherOpenGLInfo();
107 void GetVideoModes(std::vector<CVideoMode> &dst, NL3D::IDriver *driver) const;
109 static bool parseDriverVersion(const std::string &device, uint64 driver, std::string &version);
112 #endif // SYSTEM_H