SGCT master (487fac4)
Simple Graphics Cluster Toolkit
Loading...
Searching...
No Matches
config.h
Go to the documentation of this file.
1/*****************************************************************************************
2 * SGCT *
3 * Simple Graphics Cluster Toolkit *
4 * *
5 * Copyright (c) 2012-2026 *
6 * For conditions of distribution and use, see copyright notice in LICENSE.md *
7 ****************************************************************************************/
8
9#ifndef __SGCT__CONFIG__H__
10#define __SGCT__CONFIG__H__
11
12#include <sgct/sgctexports.h>
13
14#include <sgct/math.h>
15#include <cstdint>
16#include <filesystem>
17#include <optional>
18#include <string>
19#include <string_view>
20#include <variant>
21#include <vector>
22
23namespace sgct::config {
24
25struct SGCT_EXPORT User {
26 struct Tracking {
27 std::string tracker;
28 std::string device;
29
30 bool operator==(const Tracking&) const noexcept = default;
31 };
32
33 std::optional<std::string> name;
34 std::optional<float> eyeSeparation;
35 std::optional<vec3> position;
36 std::optional<mat4> transformation;
37 std::optional<Tracking> tracking;
38
39 bool operator==(const User&) const noexcept = default;
40};
41SGCT_EXPORT void validateUser(const User& user);
42
43
44
45struct SGCT_EXPORT Capture {
47 int first = -1; // inclusive
48 int last = -1; // exclusive
49
50 bool operator==(const ScreenShotRange&) const noexcept = default;
51 };
52
53 std::optional<std::filesystem::path> path;
54 std::optional<ScreenShotRange> range;
55
56 bool operator==(const Capture&) const noexcept = default;
57};
58SGCT_EXPORT void validateCapture(const Capture& capture);
59
60
61
62struct SGCT_EXPORT Scene {
63 std::optional<vec3> offset;
64 std::optional<quat> orientation;
65 std::optional<float> scale;
66
67 bool operator==(const Scene&) const noexcept = default;
68};
69SGCT_EXPORT void validateScene(const Scene& scene);
70
71
72
73struct SGCT_EXPORT Settings {
74 enum class BufferFloatPrecision { Float16Bit, Float32Bit};
75
76 struct Display {
77 std::optional<int8_t> swapInterval;
78 std::optional<int> refreshRate;
79
80 bool operator==(const Display&) const noexcept = default;
81 };
82
83 std::optional<bool> useDepthTexture;
84 std::optional<bool> useNormalTexture;
85 std::optional<bool> usePositionTexture;
86 std::optional<BufferFloatPrecision> bufferFloatPrecision;
87 std::optional<Display> display;
88
89 bool operator==(const Settings&) const noexcept = default;
90};
91SGCT_EXPORT void validateSettings(const Settings& settings);
92
93
94
95struct SGCT_EXPORT Tracker {
96 struct Device {
97 struct Sensor {
98 std::string vrpnAddress;
99 int identifier = -1;
100
101 bool operator==(const Sensor&) const noexcept = default;
102 };
103 struct Button {
104 std::string vrpnAddress;
105 int count = 0;
106
107 bool operator==(const Button&) const noexcept = default;
108 };
109 struct Axis {
110 std::string vrpnAddress;
111 int count = 0;
112
113 bool operator==(const Axis&) const noexcept = default;
114 };
115
116 std::string name;
117 std::vector<Sensor> sensors;
118 std::vector<Button> buttons;
119 std::vector<Axis> axes;
120 std::optional<vec3> offset;
121 std::optional<mat4> transformation;
122
123 bool operator==(const Device&) const noexcept = default;
124 };
125
126 std::string name;
127 std::vector<Device> devices;
128 std::optional<vec3> offset;
129 std::optional<double> scale;
130 std::optional<mat4> transformation;
131
132 bool operator==(const Tracker&) const noexcept = default;
133};
134SGCT_EXPORT void validateTracker(const Tracker& tracker);
135
136
137
138struct SGCT_EXPORT NoProjection {
139 bool operator==(const NoProjection&) const noexcept = default;
140};
141
142
143
144struct SGCT_EXPORT CubemapProjection {
145 struct Channels {
146 bool right = true;
147 bool zLeft = true;
148 bool bottom = true;
149 bool top = true;
150 bool left = true;
151 bool zRight = true;
152
153 bool operator==(const Channels&) const noexcept = default;
154 };
155
156 struct Spout {
157 bool enabled = true;
158 std::optional<std::string> name;
159
160 bool operator==(const Spout&) const noexcept = default;
161 };
162
163 struct NDI {
164 bool enabled = true;
165 std::optional<std::string> name;
166 std::optional<std::string> groups;
167
168 bool operator==(const NDI&) const noexcept = default;
169 };
170
171 std::optional<int> quality;
172 std::optional<Spout> spout;
173 std::optional<NDI> ndi;
174 std::optional<Channels> channels;
175 std::optional<vec3> orientation;
176
177 bool operator==(const CubemapProjection&) const noexcept = default;
178};
179SGCT_EXPORT void validateProjection(const CubemapProjection& proj);
180
181
182
183struct SGCT_EXPORT CylindricalProjection {
184 std::optional<int> quality;
185 std::optional<float> rotation;
186 std::optional<float> heightOffset;
187 std::optional<float> radius;
188
189 bool operator==(const CylindricalProjection&) const noexcept = default;
190};
191SGCT_EXPORT void validateProjection(const CylindricalProjection& proj);
192
193
194
195struct SGCT_EXPORT EquirectangularProjection {
196 std::optional<int> quality;
197
198 bool operator==(const EquirectangularProjection&) const noexcept = default;
199};
200SGCT_EXPORT void validateProjection(const EquirectangularProjection& proj);
201
202
203
204struct SGCT_EXPORT FisheyeProjection {
205 enum class Interpolation { Linear, Cubic };
206 struct Crop {
207 // Crop values are measured as [0,1] from the respective side, which is why right
208 // and top are 0 and not 1 as one might expect
209 float left = 0.f;
210 float right = 0.f;
211 float bottom = 0.f;
212 float top = 0.f;
213
214 bool operator==(const Crop&) const noexcept = default;
215 };
216 std::optional<float> fov;
217 std::optional<int> quality;
218 std::optional<Interpolation> interpolation;
219 std::optional<float> tilt;
220 std::optional<float> diameter;
221 std::optional<Crop> crop;
222 std::optional<bool> keepAspectRatio;
223 std::optional<vec3> offset;
224 std::optional<vec4> background;
225
226 bool operator==(const FisheyeProjection&) const noexcept = default;
227};
228SGCT_EXPORT void validateProjection(const FisheyeProjection& proj);
229
230
231
232struct SGCT_EXPORT PlanarProjection {
233 struct FOV {
234 float down = 0.f;
235 float left = 0.f;
236 float right = 0.f;
237 float up = 0.f;
238 std::optional<float> distance;
239
240 bool operator==(const FOV&) const noexcept = default;
241 };
243 std::optional<quat> orientation;
244 std::optional<vec3> offset;
245
246 bool operator==(const PlanarProjection&) const noexcept = default;
247};
248SGCT_EXPORT void validateProjection(const PlanarProjection& proj);
249
250
251
252struct SGCT_EXPORT ProjectionPlane {
253 vec3 lowerLeft = vec3{ 0.f, 0.f, 0.f };
254 vec3 upperLeft = vec3{ 0.f, 0.f, 0.f };
255 vec3 upperRight = vec3{ 0.f, 0.f, 0.f };
256
257 bool operator==(const ProjectionPlane&) const noexcept = default;
258};
259SGCT_EXPORT void validateProjection(const ProjectionPlane& proj);
260
261
262
263struct SGCT_EXPORT SphericalMirrorProjection {
264 struct Mesh {
265 std::string bottom;
266 std::string left;
267 std::string right;
268 std::string top;
269
270 bool operator==(const Mesh&) const noexcept = default;
271 };
272 std::optional<int> quality;
273 std::optional<float> tilt;
274 std::optional<vec4> background;
276
277 bool operator==(const SphericalMirrorProjection&) const noexcept = default;
278};
279SGCT_EXPORT void validateProjection(const SphericalMirrorProjection& proj);
280
281
282
284};
285SGCT_EXPORT void validateProjection(const TextureMappedProjection& proj);
286
287
288
292
293
294
295struct SGCT_EXPORT Viewport {
296 enum class Eye { Mono, StereoLeft, StereoRight };
297
298 std::optional<vec2> position;
299 std::optional<vec2> size;
301 std::optional<std::filesystem::path> overlayTexture;
302 std::optional<std::filesystem::path> blendMaskTexture;
303 std::optional<std::filesystem::path> blackLevelMaskTexture;
304 std::optional<std::filesystem::path> correctionMeshTexture;
305 std::optional<bool> isTracked;
306 std::optional<Eye> eye;
307 std::optional<std::string> user;
308
309
310 bool operator==(const Viewport&) const noexcept = default;
311};
312SGCT_EXPORT void validateViewport(const Viewport& viewport);
313
314
315
316struct SGCT_EXPORT Window {
317 enum class ColorBitDepth {
318 Depth8,
319 Depth16,
320 Depth16Float,
321 Depth32Float,
322 Depth16Int,
323 Depth32Int,
324 Depth16UInt,
325 Depth32UInt
326 };
327
328 enum class StereoMode {
329 NoStereo = 0,
330 Active,
331 AnaglyphRedCyan,
332 AnaglyphAmberBlue,
333 AnaglyphRedCyanWimmer,
334 Checkerboard,
335 CheckerboardInverted,
336 VerticalInterlaced,
337 VerticalInterlacedInverted,
338 Dummy,
339 SideBySide,
340 SideBySideInverted,
341 TopBottom,
342 TopBottomInverted
343 };
344
345 struct Spout {
346 bool enabled = true;
347 std::optional<std::string> name;
348
349 bool operator==(const Spout&) const noexcept = default;
350 };
351
352 struct NDI {
353 bool enabled = true;
354 std::optional<std::string> name;
355 std::optional<std::string> groups;
356
357 bool operator==(const NDI&) const noexcept = default;
358 };
359
360 struct Scalable {
361 std::filesystem::path mesh;
362 std::optional<int> orthographicQuality;
363 std::optional<int> orthographicResolution;
364
365 bool operator==(const Scalable&) const noexcept = default;
366 };
367
368 struct OpenXR {
369 bool enabled = true;
370
371 bool operator==(const OpenXR&) const noexcept = default;
372 };
373
374 std::optional<ivec2> pos;
375 std::optional<ivec2> size;
376 std::optional<ivec2> resolution;
377 std::vector<Viewport> viewports;
378 int8_t id = 0;
379 std::optional<std::string> name;
380 std::vector<std::string> tags;
381 std::optional<ColorBitDepth> bufferBitDepth;
382 std::optional<bool> isFullScreen;
383 std::optional<bool> shouldAutoiconify;
384 std::optional<bool> hideMouseCursor;
385 std::optional<bool> isFloating;
386 std::optional<bool> alwaysRender;
387 std::optional<bool> isHidden;
388 std::optional<bool> takeScreenshot;
389 std::optional<bool> alpha;
390 std::optional<uint8_t> msaa;
391 std::optional<bool> useFxaa;
392 std::optional<bool> isDecorated;
393 std::optional<bool> isResizable;
394 std::optional<bool> draw2D;
395 std::optional<bool> draw3D;
396 std::optional<bool> noError;
397 std::optional<int8_t> blitWindowId;
398 std::optional<bool> mirrorX;
399 std::optional<bool> mirrorY;
400 std::optional<uint8_t> monitor;
401 std::optional<StereoMode> stereo;
402 std::optional<Spout> spout;
403 std::optional<NDI> ndi;
404 std::optional<Scalable> scalable;
405 std::optional<OpenXR> openxr;
406
407 bool operator==(const Window&) const noexcept = default;
408};
409SGCT_EXPORT void validateWindow(const Window& window);
410
411
412
413struct SGCT_EXPORT Node {
414 std::string address;
415 uint16_t port = 0;
416 std::optional<uint16_t> dataTransferPort;
417 std::optional<bool> swapLock;
418 std::vector<Window> windows;
419
420 bool operator==(const Node&) const noexcept = default;
421};
422SGCT_EXPORT void validateNode(const Node& node);
423
424
425
426struct SGCT_EXPORT GeneratorVersion {
427 std::string name;
428 int major = 0;
429 int minor = 0;
430
431 bool operator==(const GeneratorVersion&) const noexcept = default;
432
434
435 std::string versionString() const;
436};
437SGCT_EXPORT void validateGeneratorVersion(const GeneratorVersion& gVersion);
438
439
440
441struct SGCT_EXPORT Meta {
442 std::optional<std::string> author;
443 std::optional<std::string> description;
444 std::optional<std::string> license;
445 std::optional<std::string> name;
446 std::optional<std::string> version;
447
448 bool operator==(const Meta&) const noexcept = default;
449};
450
451
452
453struct SGCT_EXPORT Cluster {
454 bool success = false;
455
456 std::string masterAddress;
457 std::optional<bool> debugLog;
458 std::optional<int> threadAffinity;
459 std::optional<bool> firmSync;
460 std::optional<Scene> scene;
461 std::vector<Node> nodes;
462 std::vector<User> users;
463 std::optional<Capture> capture;
464 std::vector<Tracker> trackers;
465 std::optional<Settings> settings;
466
467 std::optional<GeneratorVersion> generator;
468 std::optional<Meta> meta;
469
470 bool operator==(const Cluster&) const noexcept = default;
471};
472SGCT_EXPORT void validateCluster(const Cluster& cluster);
473
474} // namespace sgct::config
475
476namespace sgct {
477
482SGCT_EXPORT [[nodiscard]] config::Cluster readConfig(
483 const std::filesystem::path& filename);
484
489SGCT_EXPORT [[nodiscard]] config::Cluster readJsonConfig(std::string_view configuration);
490
491SGCT_EXPORT [[nodiscard]] config::Cluster defaultCluster();
492
498SGCT_EXPORT [[nodiscard]] std::string serializeConfig(const config::Cluster& cluster,
499 std::optional<config::GeneratorVersion> genVersion = std::nullopt);
500
507SGCT_EXPORT [[nodiscard]] std::string validateConfigAgainstSchema(
508 std::string_view configuration, const std::filesystem::path& schema);
509
510
517SGCT_EXPORT [[nodiscard]] std::string validateConfigAgainstSchema(
518 const std::filesystem::path& configuration, const std::filesystem::path& schema);
519
520} // namespace sgct
521
522#endif // __SGCT__CONFIG__H__
Definition clustermanager.h:22
void validateCluster(const Cluster &cluster)
void validateGeneratorVersion(const GeneratorVersion &gVersion)
void validateTracker(const Tracker &tracker)
void validateNode(const Node &node)
void validateProjection(const CubemapProjection &proj)
void validateScene(const Scene &scene)
std::variant< NoProjection, CubemapProjection, CylindricalProjection, EquirectangularProjection, FisheyeProjection, PlanarProjection, ProjectionPlane, SphericalMirrorProjection, TextureMappedProjection > Projections
Definition config.h:289
void validateUser(const User &user)
void validateSettings(const Settings &settings)
void validateCapture(const Capture &capture)
void validateViewport(const Viewport &viewport)
void validateWindow(const Window &window)
Definition actions.h:16
config::Cluster readConfig(const std::filesystem::path &filename)
Reads a JSON configuration file from the provided filename.
std::string validateConfigAgainstSchema(std::string_view configuration, const std::filesystem::path &schema)
Validate the provided JSON-based string representation of a configuration against the schema file loc...
std::string serializeConfig(const config::Cluster &cluster, std::optional< config::GeneratorVersion > genVersion=std::nullopt)
Serialize the provided cluster into its JSON string representation such that parsing the serialized s...
config::Cluster readJsonConfig(std::string_view configuration)
Reads a JSON-formatted configuration direction from the provided configuration.
@ Mono
Definition definitions.h:24
@ StereoRight
Definition definitions.h:26
@ StereoLeft
Definition definitions.h:25
config::Cluster defaultCluster()
int last
Definition config.h:48
bool operator==(const ScreenShotRange &) const noexcept=default
int first
Definition config.h:47
Definition config.h:45
std::optional< ScreenShotRange > range
Definition config.h:54
bool operator==(const Capture &) const noexcept=default
std::optional< std::filesystem::path > path
Definition config.h:53
Definition config.h:453
std::optional< int > threadAffinity
Definition config.h:458
std::vector< User > users
Definition config.h:462
bool success
Definition config.h:454
std::string masterAddress
Definition config.h:456
bool operator==(const Cluster &) const noexcept=default
std::optional< Scene > scene
Definition config.h:460
std::optional< Meta > meta
Definition config.h:468
std::optional< Capture > capture
Definition config.h:463
std::optional< bool > firmSync
Definition config.h:459
std::optional< bool > debugLog
Definition config.h:457
std::vector< Node > nodes
Definition config.h:461
std::vector< Tracker > trackers
Definition config.h:464
std::optional< Settings > settings
Definition config.h:465
std::optional< GeneratorVersion > generator
Definition config.h:467
bool bottom
Definition config.h:148
bool zRight
Definition config.h:151
bool top
Definition config.h:149
bool left
Definition config.h:150
bool right
Definition config.h:146
bool zLeft
Definition config.h:147
bool operator==(const Channels &) const noexcept=default
std::optional< std::string > groups
Definition config.h:166
std::optional< std::string > name
Definition config.h:165
bool enabled
Definition config.h:164
bool operator==(const NDI &) const noexcept=default
std::optional< std::string > name
Definition config.h:158
bool enabled
Definition config.h:157
bool operator==(const Spout &) const noexcept=default
Definition config.h:144
std::optional< int > quality
Definition config.h:171
std::optional< NDI > ndi
Definition config.h:173
bool operator==(const CubemapProjection &) const noexcept=default
std::optional< Channels > channels
Definition config.h:174
std::optional< Spout > spout
Definition config.h:172
std::optional< vec3 > orientation
Definition config.h:175
std::optional< float > rotation
Definition config.h:185
std::optional< float > radius
Definition config.h:187
bool operator==(const CylindricalProjection &) const noexcept=default
std::optional< float > heightOffset
Definition config.h:186
std::optional< int > quality
Definition config.h:184
bool operator==(const EquirectangularProjection &) const noexcept=default
std::optional< int > quality
Definition config.h:196
bool operator==(const Crop &) const noexcept=default
float top
Definition config.h:212
float left
Definition config.h:209
float right
Definition config.h:210
float bottom
Definition config.h:211
Definition config.h:204
std::optional< float > tilt
Definition config.h:219
std::optional< int > quality
Definition config.h:217
std::optional< Interpolation > interpolation
Definition config.h:218
std::optional< Crop > crop
Definition config.h:221
bool operator==(const FisheyeProjection &) const noexcept=default
std::optional< float > fov
Definition config.h:216
std::optional< vec4 > background
Definition config.h:224
std::optional< bool > keepAspectRatio
Definition config.h:222
std::optional< vec3 > offset
Definition config.h:223
std::optional< float > diameter
Definition config.h:220
Interpolation
Definition config.h:205
Definition config.h:426
bool operator==(const GeneratorVersion &) const noexcept=default
int major
Definition config.h:428
int minor
Definition config.h:429
std::string name
Definition config.h:427
bool versionCheck(GeneratorVersion check) const
std::string versionString() const
Definition config.h:441
std::optional< std::string > author
Definition config.h:442
std::optional< std::string > description
Definition config.h:443
std::optional< std::string > license
Definition config.h:444
bool operator==(const Meta &) const noexcept=default
std::optional< std::string > name
Definition config.h:445
std::optional< std::string > version
Definition config.h:446
Definition config.h:138
bool operator==(const NoProjection &) const noexcept=default
Definition config.h:413
std::vector< Window > windows
Definition config.h:418
uint16_t port
Definition config.h:415
std::optional< uint16_t > dataTransferPort
Definition config.h:416
std::string address
Definition config.h:414
std::optional< bool > swapLock
Definition config.h:417
bool operator==(const Node &) const noexcept=default
float left
Definition config.h:235
std::optional< float > distance
Definition config.h:238
float up
Definition config.h:237
float down
Definition config.h:234
float right
Definition config.h:236
bool operator==(const FOV &) const noexcept=default
Definition config.h:232
FOV fov
Definition config.h:242
bool operator==(const PlanarProjection &) const noexcept=default
std::optional< quat > orientation
Definition config.h:243
std::optional< vec3 > offset
Definition config.h:244
Definition config.h:252
vec3 upperLeft
Definition config.h:254
vec3 lowerLeft
Definition config.h:253
bool operator==(const ProjectionPlane &) const noexcept=default
vec3 upperRight
Definition config.h:255
Definition config.h:62
std::optional< float > scale
Definition config.h:65
bool operator==(const Scene &) const noexcept=default
std::optional< quat > orientation
Definition config.h:64
std::optional< vec3 > offset
Definition config.h:63
Definition config.h:76
std::optional< int8_t > swapInterval
Definition config.h:77
std::optional< int > refreshRate
Definition config.h:78
bool operator==(const Display &) const noexcept=default
Definition config.h:73
std::optional< Display > display
Definition config.h:87
std::optional< BufferFloatPrecision > bufferFloatPrecision
Definition config.h:86
bool operator==(const Settings &) const noexcept=default
std::optional< bool > useNormalTexture
Definition config.h:84
BufferFloatPrecision
Definition config.h:74
std::optional< bool > useDepthTexture
Definition config.h:83
std::optional< bool > usePositionTexture
Definition config.h:85
bool operator==(const Mesh &) const noexcept=default
std::string left
Definition config.h:266
std::string top
Definition config.h:268
std::string right
Definition config.h:267
std::string bottom
Definition config.h:265
std::optional< int > quality
Definition config.h:272
Mesh mesh
Definition config.h:275
std::optional< float > tilt
Definition config.h:273
std::optional< vec4 > background
Definition config.h:274
bool operator==(const SphericalMirrorProjection &) const noexcept=default
int count
Definition config.h:111
std::string vrpnAddress
Definition config.h:110
bool operator==(const Axis &) const noexcept=default
std::string vrpnAddress
Definition config.h:104
bool operator==(const Button &) const noexcept=default
int count
Definition config.h:105
int identifier
Definition config.h:99
bool operator==(const Sensor &) const noexcept=default
std::string vrpnAddress
Definition config.h:98
Definition config.h:96
bool operator==(const Device &) const noexcept=default
std::optional< vec3 > offset
Definition config.h:120
std::vector< Button > buttons
Definition config.h:118
std::string name
Definition config.h:116
std::optional< mat4 > transformation
Definition config.h:121
std::vector< Sensor > sensors
Definition config.h:117
std::vector< Axis > axes
Definition config.h:119
Definition config.h:95
std::optional< vec3 > offset
Definition config.h:128
std::string name
Definition config.h:126
bool operator==(const Tracker &) const noexcept=default
std::optional< mat4 > transformation
Definition config.h:130
std::vector< Device > devices
Definition config.h:127
std::optional< double > scale
Definition config.h:129
Definition config.h:26
std::string tracker
Definition config.h:27
std::string device
Definition config.h:28
bool operator==(const Tracking &) const noexcept=default
Definition config.h:25
std::optional< Tracking > tracking
Definition config.h:37
std::optional< float > eyeSeparation
Definition config.h:34
std::optional< mat4 > transformation
Definition config.h:36
std::optional< vec3 > position
Definition config.h:35
bool operator==(const User &) const noexcept=default
std::optional< std::string > name
Definition config.h:33
Definition config.h:295
std::optional< Eye > eye
Definition config.h:306
std::optional< std::string > user
Definition config.h:307
bool operator==(const Viewport &) const noexcept=default
std::optional< bool > isTracked
Definition config.h:305
Projections projection
Definition config.h:300
std::optional< std::filesystem::path > blendMaskTexture
Definition config.h:302
std::optional< vec2 > position
Definition config.h:298
Eye
Definition config.h:296
std::optional< vec2 > size
Definition config.h:299
std::optional< std::filesystem::path > correctionMeshTexture
Definition config.h:304
std::optional< std::filesystem::path > overlayTexture
Definition config.h:301
std::optional< std::filesystem::path > blackLevelMaskTexture
Definition config.h:303
Definition config.h:352
std::optional< std::string > name
Definition config.h:354
std::optional< std::string > groups
Definition config.h:355
bool enabled
Definition config.h:353
bool operator==(const NDI &) const noexcept=default
Definition config.h:368
bool enabled
Definition config.h:369
bool operator==(const OpenXR &) const noexcept=default
Definition config.h:360
bool operator==(const Scalable &) const noexcept=default
std::filesystem::path mesh
Definition config.h:361
std::optional< int > orthographicQuality
Definition config.h:362
std::optional< int > orthographicResolution
Definition config.h:363
Definition config.h:345
bool enabled
Definition config.h:346
std::optional< std::string > name
Definition config.h:347
bool operator==(const Spout &) const noexcept=default
Definition config.h:316
std::optional< uint8_t > msaa
Definition config.h:390
std::optional< int8_t > blitWindowId
Definition config.h:397
std::optional< StereoMode > stereo
Definition config.h:401
std::optional< bool > isDecorated
Definition config.h:392
std::optional< bool > hideMouseCursor
Definition config.h:384
std::vector< Viewport > viewports
Definition config.h:377
std::optional< std::string > name
Definition config.h:379
std::optional< bool > noError
Definition config.h:396
std::optional< bool > shouldAutoiconify
Definition config.h:383
ColorBitDepth
Definition config.h:317
std::vector< std::string > tags
Definition config.h:380
std::optional< bool > draw3D
Definition config.h:395
std::optional< ivec2 > resolution
Definition config.h:376
std::optional< ivec2 > size
Definition config.h:375
std::optional< bool > isFloating
Definition config.h:385
std::optional< Spout > spout
Definition config.h:402
std::optional< bool > isResizable
Definition config.h:393
StereoMode
Definition config.h:328
bool operator==(const Window &) const noexcept=default
std::optional< bool > mirrorX
Definition config.h:398
std::optional< OpenXR > openxr
Definition config.h:405
std::optional< bool > takeScreenshot
Definition config.h:388
std::optional< NDI > ndi
Definition config.h:403
std::optional< ColorBitDepth > bufferBitDepth
Definition config.h:381
std::optional< bool > isFullScreen
Definition config.h:382
std::optional< uint8_t > monitor
Definition config.h:400
std::optional< bool > mirrorY
Definition config.h:399
std::optional< bool > draw2D
Definition config.h:394
std::optional< bool > useFxaa
Definition config.h:391
std::optional< Scalable > scalable
Definition config.h:404
std::optional< bool > alwaysRender
Definition config.h:386
std::optional< bool > isHidden
Definition config.h:387
std::optional< ivec2 > pos
Definition config.h:374
std::optional< bool > alpha
Definition config.h:389
Definition math.h:56