1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
Copyright (c) 1997-2006, Destroyer Studios LLC.
AUTHOR: John DiCamillo
OVERVIEW
========
Video Settings class
*/
#ifndef VideoSettings_h
#define VideoSettings_h
#include "Types.h"
#include "Video.h"
// +--------------------------------------------------------------------+
struct VideoMode
{
enum Format {
FMT_NONE = 0,
FMT_R5G5B5 = 24,
FMT_R5G6B5 = 23,
FMT_R8G8B8 = 20,
FMT_X8R8G8B8 = 22
};
VideoMode() : width(0), height(0), refresh(0), format(0) { }
VideoMode(int w, int h, Format f, int r=0) : width(w), height(h), refresh(r), format(f) { }
int operator == (const VideoMode& m) const { return m.width == width &&
m.height == height &&
m.format == format; }
int operator != (const VideoMode& m) const { return m.width != width ||
m.height != height ||
m.format != format; }
const char* GetDescription() const;
int width;
int height;
int refresh;
int format;
};
// +--------------------------------------------------------------------+
struct VideoDeviceInfo
{
VideoDeviceInfo();
~VideoDeviceInfo();
int vertex_processing;
int depth_buffer_bits;
int adapter_index;
int device_index;
DWORD device_type;
DWORD depth_stencil_format;
DWORD back_buffer_format;
DWORD multisample_type;
DWORD multisample_qual;
char adapter_desc[128];
char device_desc[128];
};
// +--------------------------------------------------------------------+
class VideoSettings
{
public:
enum VertexProcessing {
VTX_SOFTWARE,
VTX_MIXED,
VTX_HARDWARE,
VTX_PURE
};
VideoSettings();
~VideoSettings();
// accessor methods
bool IsWindowed() const;
bool UseEffects() const;
int GetWidth() const;
int GetHeight() const;
int GetDepth() const;
int GetPixSize() const;
int GetRefreshRate() const;
const char* GetModeDescription() const;
int GetVertexProcessing() const;
int GetDepthBufferBits() const;
int GetAdapterIndex() const;
int GetDeviceIndex() const;
DWORD GetDeviceType() const;
DWORD GetDepthStencilFormat() const;
DWORD GetBackBufferFormat() const;
const char* GetAdapterDesc() const;
const char* GetDeviceDesc() const;
// properties
bool is_windowed;
bool use_effects;
VideoMode fullscreen_mode;
VideoMode windowed_mode;
int window_width;
int window_height;
VideoDeviceInfo fullscreen_device;
VideoDeviceInfo windowed_device;
// feature set
bool shadows;
bool bumpmaps;
bool specmaps;
int max_detail;
DWORD enable_vs;
DWORD enable_ps;
float depth_bias;
};
#endif // VideoSettings_h
|