1 /*
2 Copyright (C) 1997-2001 Id Software, Inc.
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the 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.
12
13 See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20 //
21 // m_vid_settings.c
22 //
23
24 #include "m_local.h"
25
26 #define REF_OPENGL 0
27 #define REF_3DFX 1
28 #define REF_POWERVR 2
29 #define REF_VERITE 3
30
31 /*
32 ====================================================================
33
34 VIDEO SETTINGS MENU
35
36 ====================================================================
37 */
38
39 typedef struct m_vidSettingsMenu_s {
40 // Menu items
41 uiFrameWork_t frameWork;
42
43 uiImage_t banner;
44 uiAction_t header;
45
46 uiList_t ref_list;
47 uiList_t mode_list;
48
49 uiList_t tm_list;
50 uiList_t bitd_list;
51 uiList_t stencilbuf_list;
52 uiList_t dispfreq_list;
53
54 uiList_t fullscreen_toggle;
55 uiSlider_t screensize_slider;
56 uiAction_t screensize_amount;
57 uiSlider_t brightness_slider;
58 uiAction_t brightness_amount;
59 uiList_t gammapics_toggle;
60
61 uiSlider_t texqual_slider;
62 uiAction_t texqual_amount;
63
64 uiList_t finish_toggle;
65
66 uiAction_t apply_action;
67 uiAction_t reset_action;
68 uiAction_t cancel_action;
69 } m_vidSettingsMenu_t;
70
71 static m_vidSettingsMenu_t m_vidSettingsMenu;
72
73 static void VIDSettingsMenu_Init (void);
ResetDefaults(void * unused)74 static void ResetDefaults (void *unused) {
75 VIDSettingsMenu_Init ();
76 }
77
CancelChanges(void * unused)78 static void CancelChanges (void *unused) {
79 M_PopMenu ();
80 }
81
82
83 /*
84 ================
85 VIDSettingsMenu_ApplyValues
86 ================
87 */
VIDSettingsMenu_ApplyValues(void * unused)88 static void VIDSettingsMenu_ApplyValues (void *unused)
89 {
90 float gamma;
91
92 switch (m_vidSettingsMenu.ref_list.curValue) {
93 case REF_OPENGL: cgi.Cvar_Set ("gl_driver", GL_DRIVERNAME, qTrue); break;
94 case REF_3DFX: cgi.Cvar_Set ("gl_driver", "3dfxgl", qTrue); break;
95 case REF_POWERVR: cgi.Cvar_Set ("gl_driver", "pvrgl", qTrue); break;
96 case REF_VERITE: cgi.Cvar_Set ("gl_driver", "veritegl", qTrue); break;
97 }
98
99 if (m_vidSettingsMenu.mode_list.curValue != 0) {
100 cgi.Cvar_SetValue ("gl_mode", m_vidSettingsMenu.mode_list.curValue-1, qTrue);
101 cgi.Cvar_SetValue ("vid_width", 0, qTrue);
102 cgi.Cvar_SetValue ("vid_height", 0, qTrue);
103 }
104
105 if (m_vidSettingsMenu.tm_list.curValue == 1) cgi.Cvar_Set ("gl_texturemode", "GL_LINEAR_MIPMAP_LINEAR", qTrue);
106 else if (m_vidSettingsMenu.tm_list.curValue == 0) cgi.Cvar_Set ("gl_texturemode", "GL_LINEAR_MIPMAP_NEAREST", qTrue);
107
108 if (m_vidSettingsMenu.bitd_list.curValue == 0) cgi.Cvar_Set ("gl_bitdepth", "0", qTrue);
109 else if (m_vidSettingsMenu.bitd_list.curValue == 1) cgi.Cvar_Set ("gl_bitdepth", "16", qTrue);
110 else if (m_vidSettingsMenu.bitd_list.curValue == 2) cgi.Cvar_Set ("gl_bitdepth", "32", qTrue);
111
112 cgi.Cvar_SetValue ("gl_stencilbuffer", m_vidSettingsMenu.stencilbuf_list.curValue, qTrue);
113
114 if (m_vidSettingsMenu.dispfreq_list.curValue == 1) cgi.Cvar_Set ("r_displayFreq", "60", qTrue);
115 else if (m_vidSettingsMenu.dispfreq_list.curValue == 2) cgi.Cvar_Set ("r_displayFreq", "65", qTrue);
116 else if (m_vidSettingsMenu.dispfreq_list.curValue == 3) cgi.Cvar_Set ("r_displayFreq", "70", qTrue);
117 else if (m_vidSettingsMenu.dispfreq_list.curValue == 4) cgi.Cvar_Set ("r_displayFreq", "75", qTrue);
118 else if (m_vidSettingsMenu.dispfreq_list.curValue == 5) cgi.Cvar_Set ("r_displayFreq", "80", qTrue);
119 else if (m_vidSettingsMenu.dispfreq_list.curValue == 6) cgi.Cvar_Set ("r_displayFreq", "85", qTrue);
120 else if (m_vidSettingsMenu.dispfreq_list.curValue == 7) cgi.Cvar_Set ("r_displayFreq", "90", qTrue);
121 else if (m_vidSettingsMenu.dispfreq_list.curValue == 8) cgi.Cvar_Set ("r_displayFreq", "95", qTrue);
122 else if (m_vidSettingsMenu.dispfreq_list.curValue == 9) cgi.Cvar_Set ("r_displayFreq", "100", qTrue);
123 else if (m_vidSettingsMenu.dispfreq_list.curValue == 10) cgi.Cvar_Set ("r_displayFreq", "105", qTrue);
124 else if (m_vidSettingsMenu.dispfreq_list.curValue == 11) cgi.Cvar_Set ("r_displayFreq", "110", qTrue);
125 else if (m_vidSettingsMenu.dispfreq_list.curValue == 12) cgi.Cvar_Set ("r_displayFreq", "115", qTrue);
126 else if (m_vidSettingsMenu.dispfreq_list.curValue == 13) cgi.Cvar_Set ("r_displayFreq", "120", qTrue);
127 else cgi.Cvar_Set ("r_displayFreq", "0", qTrue);
128
129 cgi.Cvar_SetValue ("vid_fullscreen", m_vidSettingsMenu.fullscreen_toggle.curValue, qTrue);
130 cgi.Cvar_SetValue ("viewsize", m_vidSettingsMenu.screensize_slider.curValue * 10, qTrue);
131
132 /*
133 ** invert sense so greater = brighter, and scale to a range of 0.5 to 1.3
134 */
135 gamma = (0.8 - ((m_vidSettingsMenu.brightness_slider.curValue * 0.1) - 0.5)) + 0.5;
136 cgi.Cvar_SetValue ("vid_gamma", gamma, qTrue);
137
138 cgi.Cvar_SetValue ("vid_gammapics", m_vidSettingsMenu.gammapics_toggle.curValue, qTrue);
139
140 cgi.Cvar_SetValue ("gl_picmip", 3 - m_vidSettingsMenu.texqual_slider.curValue, qTrue);
141 cgi.Cvar_SetValue ("gl_finish", m_vidSettingsMenu.finish_toggle.curValue, qTrue);
142
143 cgi.Cbuf_AddText ("vid_restart\n");
144 }
145
146
147 /*
148 ================
149 VIDSettingsMenu_SetValues
150 ================
151 */
VIDSettingsMenu_SetValues(void)152 static void VIDSettingsMenu_SetValues (void)
153 {
154 if (Q_stricmp (cgi.Cvar_GetStringValue ("gl_driver"), "3dfxgl") == 0) m_vidSettingsMenu.ref_list.curValue = REF_3DFX;
155 else if (Q_stricmp (cgi.Cvar_GetStringValue ("gl_driver"), "pvrgl") == 0) m_vidSettingsMenu.ref_list.curValue = REF_POWERVR;
156 else m_vidSettingsMenu.ref_list.curValue = REF_OPENGL;
157
158 cgi.Cvar_SetValue ("gl_mode", clamp (cgi.Cvar_GetIntegerValue ("gl_mode"), 0, 12), qTrue);
159 if (cgi.Cvar_GetIntegerValue ("vid_width") && cgi.Cvar_GetIntegerValue ("vid_height"))
160 m_vidSettingsMenu.mode_list.curValue = 0;
161 else
162 m_vidSettingsMenu.mode_list.curValue = cgi.Cvar_GetIntegerValue ("gl_mode")+1;
163
164 if (!Q_stricmp (cgi.Cvar_GetStringValue ("gl_texturemode"), "GL_LINEAR_MIPMAP_LINEAR")) m_vidSettingsMenu.tm_list.curValue = 1;
165 else if (!Q_stricmp (cgi.Cvar_GetStringValue ("gl_texturemode"), "GL_LINEAR_MIPMAP_NEAREST")) m_vidSettingsMenu.tm_list.curValue = 0;
166 else m_vidSettingsMenu.tm_list.curValue = 2;
167
168 if (cgi.Cvar_GetFloatValue ("gl_bitdepth") == 0) m_vidSettingsMenu.bitd_list.curValue = 0;
169 else if (cgi.Cvar_GetFloatValue ("gl_bitdepth") == 16) m_vidSettingsMenu.bitd_list.curValue = 1;
170 else if (cgi.Cvar_GetFloatValue ("gl_bitdepth") == 32) m_vidSettingsMenu.bitd_list.curValue = 2;
171
172 cgi.Cvar_SetValue ("gl_stencilbuffer", clamp (cgi.Cvar_GetIntegerValue ("gl_stencilbuffer"), 0, 1), qTrue);
173 m_vidSettingsMenu.stencilbuf_list.curValue = cgi.Cvar_GetIntegerValue ("gl_stencilbuffer");
174
175 if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 60) m_vidSettingsMenu.dispfreq_list.curValue = 1;
176 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 65) m_vidSettingsMenu.dispfreq_list.curValue = 2;
177 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 70) m_vidSettingsMenu.dispfreq_list.curValue = 3;
178 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 75) m_vidSettingsMenu.dispfreq_list.curValue = 4;
179 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 80) m_vidSettingsMenu.dispfreq_list.curValue = 5;
180 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 85) m_vidSettingsMenu.dispfreq_list.curValue = 6;
181 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 90) m_vidSettingsMenu.dispfreq_list.curValue = 7;
182 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 95) m_vidSettingsMenu.dispfreq_list.curValue = 8;
183 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 100) m_vidSettingsMenu.dispfreq_list.curValue = 9;
184 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 105) m_vidSettingsMenu.dispfreq_list.curValue = 10;
185 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 110) m_vidSettingsMenu.dispfreq_list.curValue = 11;
186 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 115) m_vidSettingsMenu.dispfreq_list.curValue = 12;
187 else if (cgi.Cvar_GetFloatValue ("r_displayFreq") == 120) m_vidSettingsMenu.dispfreq_list.curValue = 13;
188 else m_vidSettingsMenu.dispfreq_list.curValue = 0;
189
190 cgi.Cvar_SetValue ("vid_fullscreen", clamp (cgi.Cvar_GetIntegerValue ("vid_fullscreen"), 0, 1), qTrue);
191 m_vidSettingsMenu.fullscreen_toggle.curValue = cgi.Cvar_GetIntegerValue ("vid_fullscreen");
192
193 cgi.Cvar_SetValue ("viewsize", clamp (cgi.Cvar_GetIntegerValue ("viewsize"), 40, 100), qTrue);
194 m_vidSettingsMenu.screensize_slider.curValue = cgi.Cvar_GetIntegerValue ("viewsize") * 0.1; // kthx view menu?
195
196 cgi.Cvar_SetValue ("vid_gamma", clamp (cgi.Cvar_GetFloatValue ("vid_gamma"), 0.5, 1.3), qTrue);
197 m_vidSettingsMenu.brightness_slider.curValue = (1.3 - cgi.Cvar_GetFloatValue ("vid_gamma") + 0.5) * 10;
198
199 cgi.Cvar_SetValue ("vid_gammapics", clamp (cgi.Cvar_GetIntegerValue ("vid_gammapics"), 0, 1), qTrue);
200 m_vidSettingsMenu.gammapics_toggle.curValue = cgi.Cvar_GetIntegerValue ("vid_gammapics");
201
202 m_vidSettingsMenu.texqual_slider.curValue = 3 - cgi.Cvar_GetIntegerValue ("gl_picmip");
203
204 cgi.Cvar_SetValue ("gl_finish", clamp (cgi.Cvar_GetIntegerValue ("gl_finish"), 0, 1), qTrue);
205 m_vidSettingsMenu.finish_toggle.curValue = cgi.Cvar_GetIntegerValue ("gl_finish");
206 }
207
208
209 /*
210 ================
211 VIDSettingsMenu_Init
212 ================
213 */
VIDSettingsMenu_Init(void)214 static void VIDSettingsMenu_Init (void)
215 {
216 static char *resolutions[] = {
217 // 4:3
218 "[CUSTOM ]",
219 "[320 240 ]",
220 "[400 300 ]",
221 "[512 384 ]",
222 "[640 480 ]",
223 "[800 600 ]",
224 "[960 720 ]",
225 "[1024 768 ]",
226 "[1152 864 ]",
227 "[1280 960 ]",
228 "[1600 1200 ]",
229 "[1920 1440 ]",
230 "[2048 1536 ]",
231
232 // widescreen
233 "[1280 800 (ws)]",
234 "[1440 900 (ws)]",
235 0
236 };
237
238 static char *refs[] = {
239 "[default OpenGL]",
240 "[3Dfx OpenGL ]",
241 "[PowerVR OpenGL]",
242 0
243 };
244
245 static char *yesno_names[] = {
246 "no",
247 "yes",
248 0
249 };
250
251 static char *tm_names[] = {
252 "bilinear (fast)",
253 "trilinear (best)",
254 "other",
255 0
256 };
257
258 static char *bitd_names[] = {
259 "default",
260 "16 bit",
261 "32 bit",
262 "other",
263 0
264 };
265
266 static char *dispfreq_names[] = {
267 "desktop",
268 "60",
269 "65",
270 "70",
271 "75",
272 "80",
273 "85",
274 "90",
275 "95",
276 "100",
277 "105",
278 "110",
279 "115",
280 "120",
281 "other",
282 0
283 };
284
285 UI_StartFramework (&m_vidSettingsMenu.frameWork, FWF_CENTERHEIGHT);
286
287 m_vidSettingsMenu.banner.generic.type = UITYPE_IMAGE;
288 m_vidSettingsMenu.banner.generic.flags = UIF_NOSELECT|UIF_CENTERED;
289 m_vidSettingsMenu.banner.generic.name = NULL;
290 m_vidSettingsMenu.banner.shader = uiMedia.banners.video;
291
292 m_vidSettingsMenu.header.generic.type = UITYPE_ACTION;
293 m_vidSettingsMenu.header.generic.flags = UIF_NOSELECT|UIF_CENTERED|UIF_MEDIUM|UIF_SHADOW;
294 m_vidSettingsMenu.header.generic.name = "Video Settings";
295
296 m_vidSettingsMenu.ref_list.generic.type = UITYPE_SPINCONTROL;
297 m_vidSettingsMenu.ref_list.generic.name = "Mini-Driver";
298 m_vidSettingsMenu.ref_list.itemNames = refs;
299 m_vidSettingsMenu.ref_list.generic.statusBar = "Renderer-Specific MiniDriver";
300
301 m_vidSettingsMenu.mode_list.generic.type = UITYPE_SPINCONTROL;
302 m_vidSettingsMenu.mode_list.generic.name = "Resolution";
303 m_vidSettingsMenu.mode_list.itemNames = resolutions;
304 m_vidSettingsMenu.mode_list.generic.statusBar = "Resolution Selection";
305
306 m_vidSettingsMenu.tm_list.generic.type = UITYPE_SPINCONTROL;
307 m_vidSettingsMenu.tm_list.generic.name = "Texture Mode";
308 m_vidSettingsMenu.tm_list.itemNames = tm_names;
309 m_vidSettingsMenu.tm_list.generic.statusBar = "Texture mode";
310
311 m_vidSettingsMenu.bitd_list.generic.type = UITYPE_SPINCONTROL;
312 m_vidSettingsMenu.bitd_list.generic.name = "Bit Depth";
313 m_vidSettingsMenu.bitd_list.itemNames = bitd_names;
314 m_vidSettingsMenu.bitd_list.generic.statusBar = "Display bit depth";
315
316 m_vidSettingsMenu.stencilbuf_list.generic.type = UITYPE_SPINCONTROL;
317 m_vidSettingsMenu.stencilbuf_list.generic.name = "Stencil Buffer";
318 m_vidSettingsMenu.stencilbuf_list.itemNames = yesno_names;
319 m_vidSettingsMenu.stencilbuf_list.generic.statusBar = "Stencil buffer";
320
321 m_vidSettingsMenu.dispfreq_list.generic.type = UITYPE_SPINCONTROL;
322 m_vidSettingsMenu.dispfreq_list.generic.name = "Display Freq";
323 m_vidSettingsMenu.dispfreq_list.itemNames = dispfreq_names;
324 m_vidSettingsMenu.dispfreq_list.generic.statusBar = "Display frequency";
325
326 m_vidSettingsMenu.fullscreen_toggle.generic.type = UITYPE_SPINCONTROL;
327 m_vidSettingsMenu.fullscreen_toggle.generic.name = "Fullscreen";
328 m_vidSettingsMenu.fullscreen_toggle.itemNames = yesno_names;
329 m_vidSettingsMenu.fullscreen_toggle.generic.statusBar = "Fullscreen or Window";
330
331 m_vidSettingsMenu.screensize_slider.generic.type = UITYPE_SLIDER;
332 m_vidSettingsMenu.screensize_slider.generic.name = "Screen Size";
333 m_vidSettingsMenu.screensize_slider.minValue = 4;
334 m_vidSettingsMenu.screensize_slider.maxValue = 10;
335 m_vidSettingsMenu.screensize_slider.generic.statusBar = "Screen Size";
336
337 m_vidSettingsMenu.brightness_slider.generic.type = UITYPE_SLIDER;
338 m_vidSettingsMenu.brightness_slider.generic.name = "Brightness";
339 m_vidSettingsMenu.brightness_slider.minValue = 5;
340 m_vidSettingsMenu.brightness_slider.maxValue = 13;
341 m_vidSettingsMenu.brightness_slider.generic.statusBar = "Brightness";
342
343 m_vidSettingsMenu.gammapics_toggle.generic.type = UITYPE_SPINCONTROL;
344 m_vidSettingsMenu.gammapics_toggle.generic.name = "Pic Gamma";
345 m_vidSettingsMenu.gammapics_toggle.itemNames = yesno_names;
346 m_vidSettingsMenu.gammapics_toggle.generic.statusBar = "Apply Gamma to Pics";
347
348 m_vidSettingsMenu.texqual_slider.generic.type = UITYPE_SLIDER;
349 m_vidSettingsMenu.texqual_slider.generic.name = "Texture Quality";
350 m_vidSettingsMenu.texqual_slider.minValue = 0;
351 m_vidSettingsMenu.texqual_slider.maxValue = 3;
352 m_vidSettingsMenu.texqual_slider.generic.statusBar = "Texture upload quality";
353
354 m_vidSettingsMenu.finish_toggle.generic.type = UITYPE_SPINCONTROL;
355 m_vidSettingsMenu.finish_toggle.generic.name = "Frame Sync";
356 m_vidSettingsMenu.finish_toggle.itemNames = yesno_names;
357 m_vidSettingsMenu.finish_toggle.generic.statusBar = "Framerate sync (waits on gl/buf/net commands to complete after each frame)";
358
359 m_vidSettingsMenu.apply_action.generic.type = UITYPE_ACTION;
360 m_vidSettingsMenu.apply_action.generic.flags = UIF_CENTERED|UIF_MEDIUM|UIF_SHADOW;
361 m_vidSettingsMenu.apply_action.generic.name = "Apply";
362 m_vidSettingsMenu.apply_action.generic.callBack = VIDSettingsMenu_ApplyValues;
363 m_vidSettingsMenu.apply_action.generic.statusBar = "Apply Changes";
364
365 m_vidSettingsMenu.reset_action.generic.type = UITYPE_ACTION;
366 m_vidSettingsMenu.reset_action.generic.flags = UIF_CENTERED|UIF_MEDIUM|UIF_SHADOW;
367 m_vidSettingsMenu.reset_action.generic.name = "Reset";
368 m_vidSettingsMenu.reset_action.generic.callBack = ResetDefaults;
369 m_vidSettingsMenu.reset_action.generic.statusBar = "Reset Changes";
370
371 m_vidSettingsMenu.cancel_action.generic.type = UITYPE_ACTION;
372 m_vidSettingsMenu.cancel_action.generic.flags = UIF_CENTERED|UIF_MEDIUM|UIF_SHADOW;
373 m_vidSettingsMenu.cancel_action.generic.name = "Cancel";
374 m_vidSettingsMenu.cancel_action.generic.callBack = CancelChanges;
375 m_vidSettingsMenu.cancel_action.generic.statusBar = "Closes the Menu";
376
377 VIDSettingsMenu_SetValues ();
378
379 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.banner);
380 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.header);
381
382 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.ref_list);
383 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.mode_list);
384
385 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.tm_list);
386 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.bitd_list);
387 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.stencilbuf_list);
388 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.dispfreq_list);
389
390 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.fullscreen_toggle);
391 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.screensize_slider);
392 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.brightness_slider);
393 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.gammapics_toggle);
394 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.texqual_slider);
395 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.finish_toggle);
396
397 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.apply_action);
398 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.reset_action);
399 UI_AddItem (&m_vidSettingsMenu.frameWork, &m_vidSettingsMenu.cancel_action);
400
401 UI_FinishFramework (&m_vidSettingsMenu.frameWork, qTrue);
402 }
403
404
405 /*
406 =============
407 VIDSettingsMenu_Close
408 =============
409 */
VIDSettingsMenu_Close(void)410 static struct sfx_s *VIDSettingsMenu_Close (void)
411 {
412 return uiMedia.sounds.menuOut;
413 }
414
415
416 /*
417 ================
418 VIDSettingsMenu_Draw
419 ================
420 */
VIDSettingsMenu_Draw(void)421 static void VIDSettingsMenu_Draw (void)
422 {
423 float y;
424
425 // Initialize if necessary
426 if (!m_vidSettingsMenu.frameWork.initialized)
427 VIDSettingsMenu_Init ();
428
429 // Dynamically position
430 m_vidSettingsMenu.frameWork.x = cg.refConfig.vidWidth * 0.5f;
431 m_vidSettingsMenu.frameWork.y = 0;
432
433 m_vidSettingsMenu.banner.generic.x = 0;
434 m_vidSettingsMenu.banner.generic.y = 0;
435
436 y = m_vidSettingsMenu.banner.height * UI_SCALE;
437
438 m_vidSettingsMenu.header.generic.x = 0;
439 m_vidSettingsMenu.header.generic.y = y += UIFT_SIZEINC;
440 m_vidSettingsMenu.ref_list.generic.x = 0;
441 m_vidSettingsMenu.ref_list.generic.y = y += UIFT_SIZEINC + UIFT_SIZEINCMED;
442 m_vidSettingsMenu.mode_list.generic.x = 0;
443 m_vidSettingsMenu.mode_list.generic.y = y += UIFT_SIZEINC;
444 m_vidSettingsMenu.tm_list.generic.x = 0;
445 m_vidSettingsMenu.tm_list.generic.y = y += UIFT_SIZEINC*2;
446 m_vidSettingsMenu.bitd_list.generic.x = 0;
447 m_vidSettingsMenu.bitd_list.generic.y = y += UIFT_SIZEINC;
448 m_vidSettingsMenu.stencilbuf_list.generic.x = 0;
449 m_vidSettingsMenu.stencilbuf_list.generic.y = y += UIFT_SIZEINC;
450 m_vidSettingsMenu.dispfreq_list.generic.x = 0;
451 m_vidSettingsMenu.dispfreq_list.generic.y = y += UIFT_SIZEINC;
452 m_vidSettingsMenu.fullscreen_toggle.generic.x = 0;
453 m_vidSettingsMenu.fullscreen_toggle.generic.y = y += (UIFT_SIZEINC * 2);
454 m_vidSettingsMenu.screensize_slider.generic.x = 0;
455 m_vidSettingsMenu.screensize_slider.generic.y = y += UIFT_SIZEINC;
456 m_vidSettingsMenu.brightness_slider.generic.x = 0;
457 m_vidSettingsMenu.brightness_slider.generic.y = y += UIFT_SIZEINC;
458 m_vidSettingsMenu.gammapics_toggle.generic.x = 0;
459 m_vidSettingsMenu.gammapics_toggle.generic.y = y += UIFT_SIZEINC;
460 m_vidSettingsMenu.texqual_slider.generic.x = 0;
461 m_vidSettingsMenu.texqual_slider.generic.y = y += (UIFT_SIZEINC*2);
462 m_vidSettingsMenu.finish_toggle.generic.x = 0;
463 m_vidSettingsMenu.finish_toggle.generic.y = y += (UIFT_SIZEINC*2);
464 m_vidSettingsMenu.apply_action.generic.x = 0;
465 m_vidSettingsMenu.apply_action.generic.y = y += UIFT_SIZEINCMED*2;
466 m_vidSettingsMenu.reset_action.generic.x = 0;
467 m_vidSettingsMenu.reset_action.generic.y = y += UIFT_SIZEINCMED;
468 m_vidSettingsMenu.cancel_action.generic.x = 0;
469 m_vidSettingsMenu.cancel_action.generic.y = y += UIFT_SIZEINCMED;
470
471 // Render
472 UI_DrawInterface (&m_vidSettingsMenu.frameWork);
473 }
474
475
476 /*
477 =============
478 UI_VIDSettingsMenu_f
479 =============
480 */
UI_VIDSettingsMenu_f(void)481 void UI_VIDSettingsMenu_f (void)
482 {
483 VIDSettingsMenu_Init ();
484 M_PushMenu (&m_vidSettingsMenu.frameWork, VIDSettingsMenu_Draw, VIDSettingsMenu_Close, M_KeyHandler);
485 }
486