mirror of
https://github.com/UberGames/RPG-X2.git
synced 2024-11-24 05:11:19 +00:00
2333 lines
66 KiB
C
2333 lines
66 KiB
C
// Copyright (C) 1999-2000 Id Software, Inc.
|
|
//
|
|
#include "ui_local.h"
|
|
|
|
void UI_VideoDriverMenu( void );
|
|
void VideoDriver_Lines(int increment);
|
|
void UI_VideoData2SettingsMenu( void );
|
|
|
|
|
|
extern void *holdControlPtr;
|
|
extern int holdControlEvent;
|
|
static void Video_MenuEvent (void* ptr, int event);
|
|
|
|
#define PIC_MONBAR2 "menu/common/monbar_2.tga"
|
|
#define PIC_SLIDER "menu/common/slider.tga"
|
|
|
|
// Video Data
|
|
typedef struct
|
|
{
|
|
menuframework_s menu;
|
|
|
|
qhandle_t swooshTop;
|
|
qhandle_t swooshBottom;
|
|
qhandle_t swooshTopSmall;
|
|
qhandle_t swooshBottomSmall;
|
|
|
|
} videoddata_t;
|
|
|
|
static videoddata_t s_videodata;
|
|
|
|
|
|
// Video Drivers
|
|
typedef struct
|
|
{
|
|
menuframework_s menu;
|
|
|
|
qhandle_t swooshTopSmall;
|
|
qhandle_t swooshBottomSmall;
|
|
} videodriver_t;
|
|
|
|
|
|
// Video Data 2
|
|
typedef struct
|
|
{
|
|
menuframework_s menu;
|
|
|
|
menuslider_s gamma_slider;
|
|
menuslider_s screensize_slider;
|
|
menulist_s anisotropicfiltering;
|
|
menuaction_s apply_action2;
|
|
|
|
qhandle_t gamma;
|
|
qhandle_t top;
|
|
} videodata2_t;
|
|
|
|
typedef struct
|
|
{
|
|
int width;
|
|
int height;
|
|
} videoResolutions_t;
|
|
|
|
static videodata2_t s_videodata2;
|
|
|
|
static int s_graphics_options_Names[] =
|
|
{
|
|
MNT_VIDEO_HIGH_QUALITY,
|
|
MNT_VIDEO_NORMAL,
|
|
MNT_VIDEO_FAST,
|
|
MNT_VIDEO_FASTEST,
|
|
MNT_VIDEO_CUSTOM,
|
|
MNT_NONE
|
|
};
|
|
|
|
/*static int s_driver_Names[] =
|
|
{
|
|
MNT_VIDEO_DRIVER_DEFAULT,
|
|
MNT_VIDEO_DRIVER_VOODOO,
|
|
MNT_NONE
|
|
};*/
|
|
|
|
extern int s_OffOnNone_Names[];
|
|
|
|
static int s_resolutions[] =
|
|
{
|
|
// MNT_320X200,
|
|
// MNT_400X300,
|
|
MNT_512X384,
|
|
MNT_640X480,
|
|
MNT_800X600,
|
|
MNT_960X720,
|
|
MNT_1024X768,
|
|
MNT_1152X864,
|
|
MNT_1280X960,
|
|
MNT_1600X1200,
|
|
MNT_2048X1536,
|
|
//MNT_856x480WIDE, //this is dumb :P
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_aspectRatios[] =
|
|
{
|
|
MNT_4X3,
|
|
MNT_16X9,
|
|
MNT_16X10,
|
|
0
|
|
};
|
|
|
|
static char *s_wideResolutions16x9[] =
|
|
{
|
|
"854x480",
|
|
"1280x720",
|
|
"1920x1080",
|
|
0
|
|
};
|
|
|
|
static videoResolutions_t videoResolutions16x9[] =
|
|
{
|
|
{ 854, 480 },
|
|
{ 1280, 720 },
|
|
{ 1920, 1080 }
|
|
};
|
|
|
|
static char *s_wideResolutions16x10[] =
|
|
{
|
|
"1280x800",
|
|
"1440x900",
|
|
"1680x1050",
|
|
"1920x1200",
|
|
"2560x1600",
|
|
0
|
|
};
|
|
|
|
static videoResolutions_t videoResolutions16x10[] =
|
|
{
|
|
{ 1280, 800 },
|
|
{ 1440, 900 },
|
|
{ 1680, 1050 },
|
|
{ 1920, 1200 },
|
|
{ 2560, 1600 }
|
|
};
|
|
|
|
static void *s_widescreenResolutions[] =
|
|
{
|
|
&videoResolutions16x9,
|
|
&videoResolutions16x10,
|
|
NULL
|
|
};
|
|
|
|
static void *s_widescreenResStrings[] =
|
|
{
|
|
&s_wideResolutions16x9,
|
|
&s_wideResolutions16x10,
|
|
NULL
|
|
};
|
|
|
|
//store the number of widescreen arrays
|
|
static int s_wideScreenSets = 2;
|
|
|
|
//store the number of resolutions in each array.
|
|
//This will be necessary when we change the lists over
|
|
static int s_resolutionNums[] = {9,3,5};
|
|
|
|
//finally for reference sake, use an enum
|
|
typedef enum
|
|
{
|
|
ASPECTRATIO_4X3,
|
|
ASPECTRATIO_16X9,
|
|
ASPECTRATIO_16X10,
|
|
ASPECTRATIO_MAX
|
|
} AspectRatios_e;
|
|
|
|
static int s_colordepth_Names[] =
|
|
{
|
|
MNT_DEFAULT,
|
|
MNT_16BIT,
|
|
MNT_32BIT,
|
|
MNT_NONE
|
|
};
|
|
|
|
/*static int s_lighting_Names[] =
|
|
{
|
|
MNT_LIGHTMAP,
|
|
MNT_VERTEX,
|
|
MNT_NONE
|
|
};*/
|
|
|
|
static int s_quality_Names[] =
|
|
{
|
|
MNT_LOW,
|
|
MNT_MEDIUM,
|
|
MNT_HIGH,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_4quality_Names[] =
|
|
{
|
|
MNT_LOW,
|
|
MNT_MEDIUM,
|
|
MNT_HIGH,
|
|
MNT_VERY_HIGH,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_tqbits_Names[] =
|
|
{
|
|
MNT_DEFAULT,
|
|
MNT_16BIT,
|
|
MNT_32BIT,
|
|
MNT_NONE
|
|
};
|
|
|
|
static int s_filter_Names[] =
|
|
{
|
|
MNT_BILINEAR,
|
|
MNT_TRILINEAR,
|
|
MNT_NONE
|
|
};
|
|
|
|
|
|
|
|
static menubitmap_s s_video_drivers;
|
|
static menubitmap_s s_video_data;
|
|
static menubitmap_s s_video_data2;
|
|
|
|
#define ID_MAINMENU 100
|
|
#define ID_CONTROLS 101
|
|
#define ID_VIDEO 102
|
|
#define ID_SOUND 103
|
|
#define ID_GAMEOPTIONS 104
|
|
#define ID_CDKEY 105
|
|
#define ID_VIDEODATA 110
|
|
#define ID_VIDEODATA2 111
|
|
#define ID_VIDEODRIVERS 112
|
|
#define ID_ARROWDWN 113
|
|
#define ID_ARROWUP 114
|
|
#define ID_INGAMEMENU 115
|
|
|
|
// Precache stuff for Video Driver
|
|
#define MAX_VID_DRIVERS 128
|
|
static struct
|
|
{
|
|
menuframework_s menu;
|
|
|
|
char *drivers[MAX_VID_DRIVERS];
|
|
char extensionsString[2*MAX_STRING_CHARS];
|
|
|
|
menutext_s line1;
|
|
menutext_s line2;
|
|
menutext_s line3;
|
|
menutext_s line4;
|
|
menutext_s line5;
|
|
menutext_s line6;
|
|
menutext_s line7;
|
|
menutext_s line8;
|
|
menutext_s line9;
|
|
menutext_s line10;
|
|
menutext_s line11;
|
|
menutext_s line12;
|
|
menutext_s line13;
|
|
menutext_s line14;
|
|
menutext_s line15;
|
|
menutext_s line16;
|
|
menutext_s line17;
|
|
menutext_s line18;
|
|
menutext_s line19;
|
|
menutext_s line20;
|
|
menutext_s line21;
|
|
menutext_s line22;
|
|
menutext_s line23;
|
|
menutext_s line24;
|
|
|
|
qhandle_t corner_ll_8_16;
|
|
qhandle_t corner_ll_16_16;
|
|
qhandle_t arrow_dn;
|
|
menubitmap_s arrowdwn;
|
|
menubitmap_s arrowup;
|
|
int currentDriverLine;
|
|
int driverCnt;
|
|
|
|
int activeArrowDwn;
|
|
int activeArrowUp;
|
|
} s_videodriver;
|
|
|
|
|
|
static void* g_videolines[] =
|
|
{
|
|
&s_videodriver.line1,
|
|
&s_videodriver.line2,
|
|
&s_videodriver.line3,
|
|
&s_videodriver.line4,
|
|
&s_videodriver.line5,
|
|
&s_videodriver.line6,
|
|
&s_videodriver.line7,
|
|
&s_videodriver.line8,
|
|
&s_videodriver.line9,
|
|
&s_videodriver.line10,
|
|
&s_videodriver.line11,
|
|
&s_videodriver.line12,
|
|
&s_videodriver.line13,
|
|
&s_videodriver.line14,
|
|
&s_videodriver.line15,
|
|
&s_videodriver.line16,
|
|
&s_videodriver.line17,
|
|
&s_videodriver.line18,
|
|
&s_videodriver.line19,
|
|
&s_videodriver.line20,
|
|
&s_videodriver.line21,
|
|
&s_videodriver.line22,
|
|
&s_videodriver.line23,
|
|
&s_videodriver.line24,
|
|
NULL,
|
|
};
|
|
|
|
int video_sidebuttons[3][2] =
|
|
{
|
|
{ 30, 250 }, // Video Data Button
|
|
{ 30, 250 + 6 + (MENU_BUTTON_MED_HEIGHT * 1.5) }, // Video Drivers Button
|
|
{ 30, 250 + (2 * (6 + (MENU_BUTTON_MED_HEIGHT * 1.5))) }, // Video Drivers Button
|
|
};
|
|
|
|
|
|
void Video_SideButtons(menuframework_s *menu,int menuType);
|
|
static void GraphicsOptions_ApplyChanges( void *unused, int notification );
|
|
|
|
/*
|
|
=======================================================================
|
|
|
|
DRIVER INFORMATION MENU
|
|
|
|
=======================================================================
|
|
*/
|
|
|
|
|
|
|
|
#define ID_DRIVERINFOBACK 100
|
|
|
|
typedef struct
|
|
{
|
|
menuframework_s menu;
|
|
menutext_s banner;
|
|
menubitmap_s back;
|
|
menubitmap_s framel;
|
|
menubitmap_s framer;
|
|
char stringbuff[2*MAX_STRING_CHARS];
|
|
char* strings[64];
|
|
int numstrings;
|
|
} driverinfo_t;
|
|
|
|
static driverinfo_t s_driverinfo;
|
|
|
|
|
|
/*
|
|
=================
|
|
DriverInfo_MenuDraw
|
|
=================
|
|
*/
|
|
static void DriverInfo_MenuDraw( void )
|
|
{
|
|
int i;
|
|
int y;
|
|
|
|
Menu_Draw( &s_driverinfo.menu );
|
|
|
|
UI_DrawString( 320, 80, "VENDOR", UI_CENTER|UI_SMALLFONT, color_red, qtrue );
|
|
UI_DrawString( 320, 152, "PIXELFORMAT", UI_CENTER|UI_SMALLFONT, color_red, qtrue );
|
|
UI_DrawString( 320, 192, "EXTENSIONS", UI_CENTER|UI_SMALLFONT, color_red, qtrue );
|
|
|
|
UI_DrawString( 320, 80+16, uis.glconfig.vendor_string, UI_CENTER|UI_SMALLFONT, text_color_normal, qtrue );
|
|
UI_DrawString( 320, 96+16, uis.glconfig.version_string, UI_CENTER|UI_SMALLFONT, text_color_normal, qtrue );
|
|
UI_DrawString( 320, 112+16, uis.glconfig.renderer_string, UI_CENTER|UI_SMALLFONT, text_color_normal, qtrue );
|
|
UI_DrawString( 320, 152+16, va ("color(%d-bits) Z(%d-bits) stencil(%d-bits)", uis.glconfig.colorBits, uis.glconfig.depthBits, uis.glconfig.stencilBits), UI_CENTER|UI_SMALLFONT, text_color_normal, qtrue );
|
|
|
|
// double column
|
|
y = 192+16;
|
|
for (i=0; i<s_driverinfo.numstrings/2; i++) {
|
|
UI_DrawString( 320-4, y, s_driverinfo.strings[i*2], UI_RIGHT|UI_SMALLFONT, text_color_normal, qtrue );
|
|
UI_DrawString( 320+4, y, s_driverinfo.strings[i*2+1], UI_LEFT|UI_SMALLFONT, text_color_normal, qtrue );
|
|
y += SMALLCHAR_HEIGHT;
|
|
}
|
|
|
|
if (s_driverinfo.numstrings & 1)
|
|
UI_DrawString( 320, y, s_driverinfo.strings[s_driverinfo.numstrings-1], UI_CENTER|UI_SMALLFONT, text_color_normal, qtrue );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
DriverInfo_Cache
|
|
=================
|
|
*/
|
|
void DriverInfo_Cache( void )
|
|
{
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_DriverInfo_Menu
|
|
=================
|
|
*/
|
|
static void UI_DriverInfo_Menu( void )
|
|
{
|
|
char* eptr;
|
|
int i;
|
|
int len;
|
|
|
|
// zero set all our globals
|
|
memset( &s_driverinfo, 0 ,sizeof(driverinfo_t) );
|
|
|
|
DriverInfo_Cache();
|
|
|
|
s_driverinfo.menu.fullscreen = qtrue;
|
|
s_driverinfo.menu.draw = DriverInfo_MenuDraw;
|
|
/*
|
|
s_driverinfo.banner.generic.type = MTYPE_BTEXT;
|
|
s_driverinfo.banner.generic.x = 320;
|
|
s_driverinfo.banner.generic.y = 16;
|
|
s_driverinfo.banner.string = "DRIVER INFO";
|
|
s_driverinfo.banner.color = color_white;
|
|
s_driverinfo.banner.style = UI_CENTER;
|
|
|
|
s_driverinfo.framel.generic.type = MTYPE_BITMAP;
|
|
s_driverinfo.framel.generic.name = DRIVERINFO_FRAMEL;
|
|
s_driverinfo.framel.generic.flags = QMF_INACTIVE;
|
|
s_driverinfo.framel.generic.x = 0;
|
|
s_driverinfo.framel.generic.y = 78;
|
|
s_driverinfo.framel.width = 256;
|
|
s_driverinfo.framel.height = 329;
|
|
|
|
s_driverinfo.framer.generic.type = MTYPE_BITMAP;
|
|
s_driverinfo.framer.generic.name = DRIVERINFO_FRAMER;
|
|
s_driverinfo.framer.generic.flags = QMF_INACTIVE;
|
|
s_driverinfo.framer.generic.x = 376;
|
|
s_driverinfo.framer.generic.y = 76;
|
|
s_driverinfo.framer.width = 256;
|
|
s_driverinfo.framer.height = 334;
|
|
|
|
s_driverinfo.back.generic.type = MTYPE_BITMAP;
|
|
s_driverinfo.back.generic.name = DRIVERINFO_BACK0;
|
|
s_driverinfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
|
|
s_driverinfo.back.generic.callback = DriverInfo_Event;
|
|
s_driverinfo.back.generic.id = ID_DRIVERINFOBACK;
|
|
s_driverinfo.back.generic.x = 0;
|
|
s_driverinfo.back.generic.y = 480-64;
|
|
s_driverinfo.back.width = 128;
|
|
s_driverinfo.back.height = 64;
|
|
s_driverinfo.back.focuspic = DRIVERINFO_BACK1;
|
|
*/
|
|
strcpy( s_driverinfo.stringbuff, uis.glconfig.extensions_string );
|
|
|
|
// build null terminated extension strings
|
|
eptr = s_driverinfo.stringbuff;
|
|
while ( s_driverinfo.numstrings<40 && *eptr )
|
|
{
|
|
while ( *eptr && *eptr == ' ' )
|
|
*eptr++ = '\0';
|
|
|
|
// track start of valid string
|
|
if (*eptr && *eptr != ' ')
|
|
s_driverinfo.strings[s_driverinfo.numstrings++] = eptr;
|
|
|
|
while ( *eptr && *eptr != ' ' )
|
|
eptr++;
|
|
}
|
|
|
|
// safety length strings for display
|
|
for (i=0; i<s_driverinfo.numstrings; i++) {
|
|
len = strlen(s_driverinfo.strings[i]);
|
|
if (len > 32) {
|
|
s_driverinfo.strings[i][len-1] = '>';
|
|
s_driverinfo.strings[i][len] = '\0';
|
|
}
|
|
}
|
|
|
|
Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.banner );
|
|
Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.framel );
|
|
Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.framer );
|
|
Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.back );
|
|
|
|
UI_PushMenu( &s_driverinfo.menu );
|
|
}
|
|
|
|
/*
|
|
=======================================================================
|
|
|
|
GRAPHICS OPTIONS MENU
|
|
|
|
=======================================================================
|
|
*/
|
|
|
|
|
|
/*static const char *s_drivers[] =
|
|
{
|
|
OPENGL_DRIVER_NAME,
|
|
_3DFX_DRIVER_NAME,
|
|
0
|
|
};*/
|
|
|
|
#define ID_BACK2 101
|
|
#define ID_FULLSCREEN 102
|
|
#define ID_LIST 103
|
|
#define ID_MODE 104
|
|
#define ID_DRIVERINFO 105
|
|
#define ID_GRAPHICS 106
|
|
#define ID_DISPLAY 107
|
|
//#define ID_SOUND 108
|
|
#define ID_NETWORK 109
|
|
|
|
typedef struct {
|
|
menuframework_s menu;
|
|
|
|
menutext_s banner;
|
|
menubitmap_s framel;
|
|
menubitmap_s framer;
|
|
|
|
menutext_s graphics;
|
|
menutext_s display;
|
|
menutext_s sound;
|
|
menutext_s network;
|
|
|
|
menulist_s aspectRatio;
|
|
menulist_s list;
|
|
menulist_s mode;
|
|
menulist_s tq;
|
|
menulist_s fs;
|
|
menulist_s lighting;
|
|
menulist_s allow_extensions;
|
|
menulist_s texturebits;
|
|
menulist_s colordepth;
|
|
menulist_s geometry;
|
|
menulist_s filter;
|
|
menutext_s driverinfo;
|
|
menulist_s simpleshaders;
|
|
menulist_s compresstextures;
|
|
|
|
menuaction_s apply;
|
|
|
|
menubitmap_s back;
|
|
|
|
//TiM - only update the resolution list when need be
|
|
int lastRatio;
|
|
|
|
} graphicsoptions_t;
|
|
|
|
typedef struct
|
|
{
|
|
int mode;
|
|
qboolean fullscreen;
|
|
int aspectRatio;
|
|
int tq;
|
|
int lighting;
|
|
int colordepth;
|
|
int texturebits;
|
|
int geometry;
|
|
int filter;
|
|
qboolean extensions;
|
|
int simpleshaders;
|
|
int compresstextures;
|
|
} InitialVideoOptions_s;
|
|
|
|
static InitialVideoOptions_s s_ivo;
|
|
static graphicsoptions_t s_graphicsoptions;
|
|
|
|
static InitialVideoOptions_s s_ivo_templates[] =
|
|
{
|
|
{
|
|
2, qtrue, 0, 0, 2, 2, 2, 1, 0, qtrue, 0, 0, // JDC: this was tq 3
|
|
},
|
|
{
|
|
1, qtrue, 0, 0, 0, 0, 2, 0, 0, qtrue, 0, 0,
|
|
},
|
|
{
|
|
0, qtrue, 0, 0, 1, 0, 0, 0, 0, qtrue, 0, 0,
|
|
},
|
|
{
|
|
0, qtrue, 0, 1, 1, 0, 0, 0, 0, qtrue, 1, 0,
|
|
},
|
|
{
|
|
1, qtrue, 0, 0, 0, 0, 1, 0, 0, qtrue, 0, 0,
|
|
}
|
|
};
|
|
|
|
#define NUM_IVO_TEMPLATES ( sizeof( s_ivo_templates ) / sizeof( s_ivo_templates[0] ) )
|
|
|
|
/*
|
|
=================
|
|
GraphicsOptions_GetInitialVideo
|
|
=================
|
|
*/
|
|
static void GraphicsOptions_GetInitialVideo( void )
|
|
{
|
|
s_ivo.colordepth = s_graphicsoptions.colordepth.curvalue;
|
|
s_ivo.mode = s_graphicsoptions.mode.curvalue;
|
|
s_ivo.aspectRatio = s_graphicsoptions.aspectRatio.curvalue;
|
|
s_ivo.fullscreen = s_graphicsoptions.fs.curvalue;
|
|
s_ivo.extensions = s_graphicsoptions.allow_extensions.curvalue;
|
|
s_ivo.tq = s_graphicsoptions.tq.curvalue;
|
|
// s_ivo.lighting = s_graphicsoptions.lighting.curvalue;
|
|
s_ivo.geometry = s_graphicsoptions.geometry.curvalue;
|
|
s_ivo.filter = s_graphicsoptions.filter.curvalue;
|
|
s_ivo.texturebits = s_graphicsoptions.texturebits.curvalue;
|
|
s_ivo.simpleshaders = s_graphicsoptions.simpleshaders.curvalue;
|
|
s_ivo.compresstextures = s_graphicsoptions.compresstextures.curvalue;
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
GraphicsOptions_CheckConfig
|
|
=================
|
|
*/
|
|
static void GraphicsOptions_CheckConfig( void )
|
|
{
|
|
int i;
|
|
|
|
for ( i = 0; i < NUM_IVO_TEMPLATES; i++ )
|
|
{
|
|
if ( s_ivo_templates[i].colordepth != s_graphicsoptions.colordepth.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].mode != s_graphicsoptions.mode.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].aspectRatio != s_graphicsoptions.aspectRatio.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].fullscreen != s_graphicsoptions.fs.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].tq != s_graphicsoptions.tq.curvalue )
|
|
continue;
|
|
// if ( s_ivo_templates[i].lighting != s_graphicsoptions.lighting.curvalue )
|
|
// continue;
|
|
if ( s_ivo_templates[i].geometry != s_graphicsoptions.geometry.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].filter != s_graphicsoptions.filter.curvalue )
|
|
continue;
|
|
if ( s_ivo_templates[i].simpleshaders != s_graphicsoptions.simpleshaders.curvalue )
|
|
continue;
|
|
// if ( s_ivo_templates[i].compresstextures != s_graphicsoptions.compresstextures.curvalue )
|
|
// continue;
|
|
|
|
// if ( s_ivo_templates[i].texturebits != s_graphicsoptions.texturebits.curvalue )
|
|
// continue;
|
|
s_graphicsoptions.list.curvalue = i;
|
|
return;
|
|
}
|
|
s_graphicsoptions.list.curvalue = 4;
|
|
}
|
|
|
|
/*
|
|
=================
|
|
GraphicsOptions_UpdateMenuItems
|
|
=================
|
|
*/
|
|
static void GraphicsOptions_UpdateMenuItems( void )
|
|
{
|
|
|
|
if ( s_graphicsoptions.fs.curvalue == 0 )
|
|
{
|
|
s_graphicsoptions.colordepth.curvalue = 0;
|
|
s_graphicsoptions.colordepth.generic.flags |= QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_graphicsoptions.colordepth.generic.flags &= ~QMF_GRAYED;
|
|
}
|
|
|
|
if ( s_graphicsoptions.allow_extensions.curvalue == 0 )
|
|
{
|
|
if ( s_graphicsoptions.texturebits.curvalue == 0 )
|
|
{
|
|
s_graphicsoptions.texturebits.curvalue = 1;
|
|
}
|
|
}
|
|
|
|
s_graphicsoptions.apply.generic.flags |= QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags&= ~ QMF_BLINK;
|
|
|
|
if ( s_ivo.mode != s_graphicsoptions.mode.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.aspectRatio != s_graphicsoptions.aspectRatio.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.fullscreen != s_graphicsoptions.fs.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.extensions != s_graphicsoptions.allow_extensions.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
if ( s_ivo.tq != s_graphicsoptions.tq.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
/* if ( s_ivo.lighting != s_graphicsoptions.lighting.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
*/
|
|
if ( s_ivo.colordepth != s_graphicsoptions.colordepth.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.texturebits != s_graphicsoptions.texturebits.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.simpleshaders != s_graphicsoptions.simpleshaders.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.compresstextures != s_graphicsoptions.compresstextures.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.geometry != s_graphicsoptions.geometry.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
if ( s_ivo.filter != s_graphicsoptions.filter.curvalue )
|
|
{
|
|
s_graphicsoptions.apply.generic.flags &= ~QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.flags |= QMF_BLINK;
|
|
}
|
|
|
|
//TiM - check for widescreen
|
|
if ( s_graphicsoptions.aspectRatio.curvalue != s_graphicsoptions.lastRatio )
|
|
{
|
|
if ( s_graphicsoptions.aspectRatio.curvalue == ASPECTRATIO_4X3 )
|
|
{
|
|
s_graphicsoptions.mode.itemnames = NULL;
|
|
s_graphicsoptions.mode.listnames = NULL;
|
|
s_graphicsoptions.mode.listnames = s_resolutions;
|
|
s_graphicsoptions.mode.numitems = s_resolutionNums[ASPECTRATIO_4X3];
|
|
s_graphicsoptions.mode.curvalue = 1;
|
|
}
|
|
else
|
|
{
|
|
s_graphicsoptions.mode.listnames = NULL;
|
|
s_graphicsoptions.mode.itemnames = NULL;
|
|
s_graphicsoptions.mode.itemnames = (const char **)s_widescreenResStrings[s_graphicsoptions.aspectRatio.curvalue-1];
|
|
s_graphicsoptions.mode.numitems = s_resolutionNums[s_graphicsoptions.aspectRatio.curvalue];
|
|
s_graphicsoptions.mode.curvalue = 0;
|
|
}
|
|
|
|
s_graphicsoptions.lastRatio = s_graphicsoptions.aspectRatio.curvalue;
|
|
}
|
|
|
|
GraphicsOptions_CheckConfig();
|
|
}
|
|
|
|
/*
|
|
=================
|
|
ApplyChanges - Apply the changes from the video data screen
|
|
=================
|
|
*/
|
|
static void ApplyChanges2( void *unused, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" );
|
|
}
|
|
/*
|
|
=================
|
|
GraphicsOptions_ApplyChanges
|
|
=================
|
|
*/
|
|
static void GraphicsOptions_ApplyChanges( void *unused, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
switch ( s_graphicsoptions.texturebits.curvalue )
|
|
{
|
|
case 0:
|
|
trap_Cvar_SetValue( "r_texturebits", 0 );
|
|
break;
|
|
case 1:
|
|
trap_Cvar_SetValue( "r_texturebits", 16 );
|
|
break;
|
|
case 2:
|
|
trap_Cvar_SetValue( "r_texturebits", 32 );
|
|
break;
|
|
}
|
|
trap_Cvar_SetValue( "r_picmip", 3 - s_graphicsoptions.tq.curvalue );
|
|
trap_Cvar_SetValue( "r_allowExtensions", s_graphicsoptions.allow_extensions.curvalue );
|
|
trap_Cvar_SetValue( "r_fullscreen", s_graphicsoptions.fs.curvalue );
|
|
//trap_Cvar_Set( "r_glDriver", ( char * ) s_drivers[s_graphicsoptions.driver.curvalue] );
|
|
|
|
//TiM - handle the mode coupled with highscreen
|
|
if ( s_graphicsoptions.aspectRatio.curvalue == ASPECTRATIO_4X3 )
|
|
trap_Cvar_SetValue( "r_mode", (s_graphicsoptions.mode.curvalue + 2) );
|
|
else
|
|
{
|
|
//GSIO - TiM you actually forget that there is r_customPixelAspect/r_customaspect as well
|
|
if(s_graphicsoptions.aspectRatio.curvalue == ASPECTRATIO_16X9) {
|
|
trap_Cvar_SetValue("r_customPixelAspect", 1.7); //vEF
|
|
trap_Cvar_SetValue("r_customaspect", 1.7); //ioEF
|
|
} else {
|
|
trap_Cvar_SetValue("r_customPixelAspect", 1.6);
|
|
trap_Cvar_SetValue("r_customaspect", 1.6);
|
|
}
|
|
trap_Cvar_SetValue( "r_mode", -1 );
|
|
trap_Cvar_SetValue( "r_customWidth", (((videoResolutions_t *)s_widescreenResolutions[s_graphicsoptions.aspectRatio.curvalue-1])[s_graphicsoptions.mode.curvalue]).width );
|
|
trap_Cvar_SetValue( "r_customHeight", (((videoResolutions_t *)s_widescreenResolutions[s_graphicsoptions.aspectRatio.curvalue-1])[s_graphicsoptions.mode.curvalue]).height );
|
|
}
|
|
|
|
trap_Cvar_SetValue( "r_lowEndVideo", s_graphicsoptions.simpleshaders.curvalue );
|
|
|
|
trap_Cvar_SetValue( "r_ext_compress_textures", s_graphicsoptions.compresstextures.curvalue );
|
|
|
|
switch ( s_graphicsoptions.colordepth.curvalue )
|
|
{
|
|
case 0:
|
|
trap_Cvar_SetValue( "r_colorbits", 0 );
|
|
trap_Cvar_SetValue( "r_depthbits", 0 );
|
|
trap_Cvar_SetValue( "r_stencilbits", 0 );
|
|
break;
|
|
case 1:
|
|
trap_Cvar_SetValue( "r_colorbits", 16 );
|
|
trap_Cvar_SetValue( "r_depthbits", 16 );
|
|
trap_Cvar_SetValue( "r_stencilbits", 0 );
|
|
break;
|
|
case 2:
|
|
trap_Cvar_SetValue( "r_colorbits", 32 );
|
|
trap_Cvar_SetValue( "r_depthbits", 24 );
|
|
break;
|
|
}
|
|
// trap_Cvar_SetValue( "r_vertexLight", s_graphicsoptions.lighting.curvalue );
|
|
|
|
if ( s_graphicsoptions.geometry.curvalue == 2 )
|
|
{
|
|
trap_Cvar_SetValue( "r_lodBias", 0 );
|
|
trap_Cvar_SetValue( "r_subdivisions", 4 );
|
|
}
|
|
else if ( s_graphicsoptions.geometry.curvalue == 1 )
|
|
{
|
|
trap_Cvar_SetValue( "r_lodBias", 1 );
|
|
trap_Cvar_SetValue( "r_subdivisions", 12 );
|
|
}
|
|
else
|
|
{
|
|
trap_Cvar_SetValue( "r_lodBias", 1 );
|
|
trap_Cvar_SetValue( "r_subdivisions", 20 );
|
|
}
|
|
|
|
if ( s_graphicsoptions.filter.curvalue )
|
|
{
|
|
trap_Cvar_Set( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR" );
|
|
}
|
|
else
|
|
{
|
|
trap_Cvar_Set( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST" );
|
|
}
|
|
|
|
trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
GraphicsOptions_Event
|
|
=================
|
|
*/
|
|
static void GraphicsOptions_Event( void* ptr, int event )
|
|
{
|
|
InitialVideoOptions_s *ivo;
|
|
|
|
if( event != QM_ACTIVATED ) {
|
|
return;
|
|
}
|
|
|
|
switch( ((menucommon_s*)ptr)->id ) {
|
|
|
|
case ID_LIST:
|
|
ivo = &s_ivo_templates[s_graphicsoptions.list.curvalue];
|
|
|
|
s_graphicsoptions.tq.curvalue = ivo->tq;
|
|
// s_graphicsoptions.lighting.curvalue = ivo->lighting;
|
|
s_graphicsoptions.colordepth.curvalue = ivo->colordepth;
|
|
s_graphicsoptions.texturebits.curvalue = ivo->texturebits;
|
|
s_graphicsoptions.geometry.curvalue = ivo->geometry;
|
|
s_graphicsoptions.filter.curvalue = ivo->filter;
|
|
s_graphicsoptions.fs.curvalue = ivo->fullscreen;
|
|
s_graphicsoptions.simpleshaders.curvalue = ivo->simpleshaders;
|
|
s_graphicsoptions.compresstextures.curvalue = ivo->compresstextures;
|
|
|
|
//TiM - revert the widescreen settings
|
|
if ( s_graphicsoptions.aspectRatio.curvalue != ASPECTRATIO_4X3 )
|
|
{
|
|
s_graphicsoptions.aspectRatio.curvalue = s_graphicsoptions.lastRatio = ASPECTRATIO_4X3;
|
|
|
|
s_graphicsoptions.mode.itemnames = NULL;
|
|
s_graphicsoptions.mode.listnames = s_resolutions;
|
|
s_graphicsoptions.mode.numitems = s_resolutionNums[ASPECTRATIO_4X3];
|
|
}
|
|
s_graphicsoptions.mode.curvalue = ivo->mode;
|
|
|
|
break;
|
|
|
|
case ID_DRIVERINFO:
|
|
UI_DriverInfo_Menu();
|
|
break;
|
|
|
|
case ID_BACK2:
|
|
UI_PopMenu();
|
|
break;
|
|
|
|
case ID_GRAPHICS:
|
|
break;
|
|
|
|
case ID_DISPLAY:
|
|
UI_PopMenu();
|
|
UI_VideoDataMenu(); // Move to the Video Menu
|
|
// UI_DisplayOptionsMenu();
|
|
break;
|
|
|
|
// case ID_SOUND:
|
|
// UI_PopMenu();
|
|
// UI_SoundOptionsMenu();
|
|
// break;
|
|
|
|
case ID_NETWORK:
|
|
UI_PopMenu();
|
|
UI_NetworkOptionsMenu();
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
================
|
|
GraphicsOptions_MenuDraw
|
|
================
|
|
*/
|
|
void GraphicsOptions_MenuDraw (void)
|
|
{
|
|
//APSFIX - rework this
|
|
GraphicsOptions_UpdateMenuItems();
|
|
|
|
Menu_Draw( &s_graphicsoptions.menu );
|
|
}
|
|
|
|
static qboolean GraphicsOptions_CheckWidescreen( void )
|
|
{
|
|
int j, i;
|
|
int customWidth = trap_Cvar_VariableValue( "r_customWidth" );
|
|
int customHeight = trap_Cvar_VariableValue( "r_customHeight" );
|
|
videoResolutions_t *v;
|
|
|
|
//double check
|
|
if ( s_graphicsoptions.mode.curvalue >= 0 )
|
|
return qfalse;
|
|
|
|
for ( j=0; j < s_wideScreenSets; j++ )
|
|
{
|
|
v = (videoResolutions_t *)s_widescreenResolutions[j];
|
|
|
|
//check if it matches the resolution
|
|
for ( i = 0; i < s_resolutionNums[j+1]; i++) //offset by 1 to avoid the 4X3 option
|
|
{
|
|
if ( v[i].width == customWidth && v[i].height == customHeight )
|
|
{
|
|
s_graphicsoptions.aspectRatio.curvalue = s_graphicsoptions.lastRatio = j+1;
|
|
|
|
//configure the mode list accordingly
|
|
s_graphicsoptions.mode.listnames = 0;
|
|
s_graphicsoptions.mode.itemnames = 0;
|
|
s_graphicsoptions.mode.itemnames = (const char **)s_widescreenResStrings[s_graphicsoptions.aspectRatio.curvalue-1];
|
|
s_graphicsoptions.mode.numitems = s_resolutionNums[s_graphicsoptions.aspectRatio.curvalue];
|
|
|
|
s_graphicsoptions.mode.curvalue = i;
|
|
return qtrue;
|
|
}
|
|
}
|
|
}
|
|
|
|
//ffs... no luck
|
|
return qfalse;
|
|
}
|
|
|
|
/*
|
|
=================
|
|
GraphicsOptions_SetMenuItems
|
|
=================
|
|
*/
|
|
static void GraphicsOptions_SetMenuItems( void )
|
|
{
|
|
|
|
s_graphicsoptions.aspectRatio.curvalue = ASPECTRATIO_4X3; //set aspect to 'Normal' for now
|
|
|
|
s_graphicsoptions.mode.curvalue = (trap_Cvar_VariableValue( "r_mode" ) - 2);
|
|
|
|
//TiM - adjust for widescreen
|
|
if ( s_graphicsoptions.mode.curvalue < 0 && !GraphicsOptions_CheckWidescreen() ) //less than 0 means custom resolution now
|
|
s_graphicsoptions.mode.curvalue = 1;
|
|
|
|
s_graphicsoptions.fs.curvalue = trap_Cvar_VariableValue("r_fullscreen");
|
|
s_graphicsoptions.allow_extensions.curvalue = trap_Cvar_VariableValue("r_allowExtensions");
|
|
s_graphicsoptions.simpleshaders.curvalue = trap_Cvar_VariableValue("r_lowEndVideo");
|
|
s_graphicsoptions.compresstextures.curvalue = trap_Cvar_VariableValue("r_ext_compress_textures");
|
|
|
|
s_graphicsoptions.tq.curvalue = 3-trap_Cvar_VariableValue( "r_picmip");
|
|
if ( s_graphicsoptions.tq.curvalue < 0 )
|
|
{
|
|
s_graphicsoptions.tq.curvalue = 0;
|
|
}
|
|
else if ( s_graphicsoptions.tq.curvalue > 3 )
|
|
{
|
|
s_graphicsoptions.tq.curvalue = 3;
|
|
}
|
|
|
|
// s_graphicsoptions.lighting.curvalue = trap_Cvar_VariableValue( "r_vertexLight" ) != 0;
|
|
switch ( ( int ) trap_Cvar_VariableValue( "r_texturebits" ) )
|
|
{
|
|
default:
|
|
case 0:
|
|
s_graphicsoptions.texturebits.curvalue = 0;
|
|
break;
|
|
case 16:
|
|
s_graphicsoptions.texturebits.curvalue = 1;
|
|
break;
|
|
case 32:
|
|
s_graphicsoptions.texturebits.curvalue = 2;
|
|
break;
|
|
}
|
|
|
|
if ( !Q_stricmp( UI_Cvar_VariableString( "r_textureMode" ), "GL_LINEAR_MIPMAP_NEAREST" ) )
|
|
{
|
|
s_graphicsoptions.filter.curvalue = 0;
|
|
}
|
|
else
|
|
{
|
|
s_graphicsoptions.filter.curvalue = 1;
|
|
}
|
|
|
|
if ( trap_Cvar_VariableValue( "r_lodBias" ) > 0 )
|
|
{
|
|
if ( trap_Cvar_VariableValue( "r_subdivisions" ) >= 20 )
|
|
{
|
|
s_graphicsoptions.geometry.curvalue = 0;
|
|
}
|
|
else
|
|
{
|
|
s_graphicsoptions.geometry.curvalue = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
s_graphicsoptions.geometry.curvalue = 2;
|
|
}
|
|
|
|
switch ( ( int ) trap_Cvar_VariableValue( "r_colorbits" ) )
|
|
{
|
|
default:
|
|
case 0:
|
|
s_graphicsoptions.colordepth.curvalue = 0;
|
|
break;
|
|
case 16:
|
|
s_graphicsoptions.colordepth.curvalue = 1;
|
|
break;
|
|
case 32:
|
|
s_graphicsoptions.colordepth.curvalue = 2;
|
|
break;
|
|
}
|
|
|
|
if ( s_graphicsoptions.fs.curvalue == 0 )
|
|
{
|
|
s_graphicsoptions.colordepth.curvalue = 0;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void VideoSideButtonsAction( qboolean result )
|
|
{
|
|
if ( result ) // Yes - do it
|
|
{
|
|
Video_MenuEvent(holdControlPtr, holdControlEvent);
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoSideButtons_MenuEvent
|
|
=================
|
|
*/
|
|
static void VideoSideButtons_MenuEvent (void* ptr, int event)
|
|
{
|
|
|
|
if (event != QM_ACTIVATED)
|
|
return;
|
|
|
|
holdControlPtr = ptr;
|
|
holdControlEvent = event;
|
|
|
|
if (s_graphicsoptions.apply.generic.flags & QMF_BLINK) // Video apply changes button is flashing
|
|
{
|
|
UI_ConfirmMenu(menu_normal_text[MNT_LOOSEVIDSETTINGS], 0, VideoSideButtonsAction);
|
|
}
|
|
else // Go ahead, act normal
|
|
{
|
|
Video_MenuEvent (holdControlPtr, holdControlEvent);
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
Video_MenuEvent
|
|
=================
|
|
*/
|
|
static void Video_MenuEvent (void* ptr, int event)
|
|
{
|
|
menuframework_s* m;
|
|
|
|
if (event != QM_ACTIVATED)
|
|
return;
|
|
|
|
m = ((menucommon_s*)ptr)->parent;
|
|
|
|
switch (((menucommon_s*)ptr)->id)
|
|
{
|
|
case ID_VIDEO: // You're already in video menus, doofus
|
|
break;
|
|
|
|
case ID_ARROWDWN:
|
|
VideoDriver_Lines(1);
|
|
break;
|
|
|
|
case ID_ARROWUP:
|
|
VideoDriver_Lines(-1);
|
|
break;
|
|
|
|
case ID_VIDEODRIVERS:
|
|
if (m != &s_videodriver.menu) // Not already in menu?
|
|
{
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_VideoDriverMenu(); // Move to the Controls Menu
|
|
}
|
|
break;
|
|
|
|
case ID_VIDEODATA:
|
|
if (m != &s_videodata.menu) // Not already in menu?
|
|
{
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_VideoDataMenu(); // Move to the Controls Menu
|
|
}
|
|
break;
|
|
|
|
case ID_VIDEODATA2:
|
|
if (m != &s_videodata2.menu) // Not already in menu?
|
|
{
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_VideoData2SettingsMenu(); // Move to the Controls Menu
|
|
}
|
|
break;
|
|
|
|
case ID_CONTROLS:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
// UI_SetupWeaponsMenu(); // Move to the Controls Menu
|
|
break;
|
|
|
|
case ID_SOUND:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_SoundMenu(); // Move to the Sound Menu
|
|
break;
|
|
|
|
case ID_GAMEOPTIONS:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_GameOptionsMenu(); // Move to the Game Options Menu
|
|
break;
|
|
|
|
case ID_CDKEY:
|
|
UI_PopMenu(); // Get rid of whatever is ontop
|
|
UI_CDKeyMenu(); // Move to the CD Key Menu
|
|
break;
|
|
|
|
case ID_MAINMENU:
|
|
UI_PopMenu();
|
|
break;
|
|
|
|
case ID_INGAMEMENU :
|
|
UI_PopMenu();
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
M_VideoDataMenu_Graphics
|
|
=================
|
|
*/
|
|
void M_VideoDataMenu_Graphics (void)
|
|
{
|
|
UI_MenuFrame(&s_videodata.menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "207",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "44909",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "357",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "250624",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "456730-1",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
UI_Setup_MenuButtons();
|
|
|
|
// Rest of Bottom1_Graphics
|
|
// trap_R_SetColor( colorTable[CT_LTORANGE]);
|
|
// UI_DrawHandlePic( 30, 203, 47, 69, uis.whiteShader); // Top Left column above two buttons
|
|
// UI_DrawHandlePic( 30, 344, 47, 45, uis.whiteShader); // Top Left column below two buttons
|
|
|
|
// Brackets around Video Data
|
|
trap_R_SetColor( colorTable[CT_LTPURPLE1]);
|
|
UI_DrawHandlePic(158,163, 16, 16, uis.graphicBracket1CornerLU);
|
|
UI_DrawHandlePic(158,179, 8, 233, uis.whiteShader);
|
|
UI_DrawHandlePic(158,412, 16, -16, uis.graphicBracket1CornerLU); //LD
|
|
|
|
UI_DrawHandlePic(174,163, 320, 8, uis.whiteShader); // Top line
|
|
|
|
UI_DrawHandlePic(494,163, 128, 128, s_videodata.swooshTop); // Top swoosh
|
|
|
|
UI_DrawHandlePic(501,188, 110, 54, uis.whiteShader); // Top right column
|
|
|
|
UI_DrawHandlePic(501,348, 110, 55, uis.whiteShader); // Bottom right column
|
|
|
|
UI_DrawHandlePic(494,406, 128, 128, s_videodata.swooshBottom); // Bottom swoosh
|
|
|
|
UI_DrawHandlePic(174,420, 320, 8, uis.whiteShader); // Bottom line
|
|
}
|
|
/*
|
|
=================
|
|
VideoData_MenuDraw
|
|
=================
|
|
*/
|
|
static void VideoData_MenuDraw (void)
|
|
{
|
|
GraphicsOptions_UpdateMenuItems();
|
|
|
|
M_VideoDataMenu_Graphics();
|
|
|
|
Menu_Draw( &s_videodata.menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDataMenu_Cache
|
|
=================
|
|
*/
|
|
void UI_VideoDataMenu_Cache(void)
|
|
{
|
|
s_videodata.swooshTop = trap_R_RegisterShaderNoMip("menu/common/swoosh_top.tga");
|
|
s_videodata.swooshBottom= trap_R_RegisterShaderNoMip("menu/common/swoosh_bottom.tga");
|
|
s_videodata.swooshTopSmall= trap_R_RegisterShaderNoMip("menu/common/swoosh_topsmall.tga");
|
|
s_videodata.swooshBottomSmall= trap_R_RegisterShaderNoMip("menu/common/swoosh_bottomsmall.tga");
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
VideoData_MenuInit
|
|
=================
|
|
*/
|
|
static void VideoData_MenuInit( void )
|
|
{
|
|
int x,y,width,inc;
|
|
|
|
UI_VideoDataMenu_Cache();
|
|
|
|
// Menu Data
|
|
s_videodata.menu.nitems = 0;
|
|
s_videodata.menu.wrapAround = qtrue;
|
|
s_videodata.menu.draw = VideoData_MenuDraw;
|
|
s_videodata.menu.fullscreen = qtrue;
|
|
s_videodata.menu.descX = MENU_DESC_X;
|
|
s_videodata.menu.descY = MENU_DESC_Y;
|
|
s_videodata.menu.listX = 230;
|
|
s_videodata.menu.listY = 188;
|
|
s_videodata.menu.titleX = MENU_TITLE_X;
|
|
s_videodata.menu.titleY = MENU_TITLE_Y;
|
|
s_videodata.menu.titleI = MNT_CONTROLSMENU_TITLE;
|
|
s_videodata.menu.footNoteEnum = MNT_VIDEOSETUP;
|
|
|
|
x = 170;
|
|
y = 178;
|
|
width = 145;
|
|
|
|
s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.list.generic.x = x;
|
|
s_graphicsoptions.list.generic.y = y;
|
|
s_graphicsoptions.list.generic.callback = GraphicsOptions_Event;
|
|
s_graphicsoptions.list.generic.id = ID_LIST;
|
|
s_graphicsoptions.list.textEnum = MBT_VIDEOOPTIONS;
|
|
s_graphicsoptions.list.textcolor = CT_BLACK;
|
|
s_graphicsoptions.list.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.list.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.list.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.list.textX = 5;
|
|
s_graphicsoptions.list.textY = 2;
|
|
s_graphicsoptions.list.listnames = s_graphics_options_Names;
|
|
s_graphicsoptions.list.width = width;
|
|
|
|
inc = 20;
|
|
y += inc;
|
|
s_graphicsoptions.allow_extensions.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.allow_extensions.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.allow_extensions.generic.x = x;
|
|
s_graphicsoptions.allow_extensions.generic.y = y;
|
|
s_graphicsoptions.allow_extensions.textEnum = MBT_VIDEOGLEXTENTIONS;
|
|
s_graphicsoptions.allow_extensions.textcolor = CT_BLACK;
|
|
s_graphicsoptions.allow_extensions.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.allow_extensions.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.allow_extensions.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.allow_extensions.textX = 5;
|
|
s_graphicsoptions.allow_extensions.textY = 2;
|
|
s_graphicsoptions.allow_extensions.listnames = s_OffOnNone_Names;
|
|
s_graphicsoptions.allow_extensions.width = width;
|
|
|
|
y += inc;
|
|
s_graphicsoptions.aspectRatio.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.aspectRatio.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.aspectRatio.generic.x = x;
|
|
s_graphicsoptions.aspectRatio.generic.y = y;
|
|
s_graphicsoptions.aspectRatio.textEnum = MBT_ASPECTRATIO;
|
|
s_graphicsoptions.aspectRatio.textcolor = CT_BLACK;
|
|
s_graphicsoptions.aspectRatio.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.aspectRatio.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.aspectRatio.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.aspectRatio.textX = 5;
|
|
s_graphicsoptions.aspectRatio.textY = 2;
|
|
s_graphicsoptions.aspectRatio.listnames = s_aspectRatios;
|
|
s_graphicsoptions.aspectRatio.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_mode"
|
|
// TiM: can now be potentially '-1',
|
|
// in which case 'r_customeheight' and 'r_customwidth'
|
|
// will be used
|
|
s_graphicsoptions.mode.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.mode.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.mode.generic.x = x;
|
|
s_graphicsoptions.mode.generic.y = y;
|
|
s_graphicsoptions.mode.generic.callback = GraphicsOptions_Event;
|
|
s_graphicsoptions.mode.textEnum = MBT_VIDEOMODE;
|
|
s_graphicsoptions.mode.textcolor = CT_BLACK;
|
|
s_graphicsoptions.mode.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.mode.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.mode.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.mode.textX = 5;
|
|
s_graphicsoptions.mode.textY = 2;
|
|
s_graphicsoptions.mode.listnames = s_resolutions;
|
|
s_graphicsoptions.mode.width = width;
|
|
|
|
y += inc;
|
|
s_graphicsoptions.colordepth.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.colordepth.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.colordepth.generic.x = x;
|
|
s_graphicsoptions.colordepth.generic.y = y;
|
|
s_graphicsoptions.colordepth.textEnum = MBT_VIDEOCOLORDEPTH;
|
|
s_graphicsoptions.colordepth.textcolor = CT_BLACK;
|
|
s_graphicsoptions.colordepth.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.colordepth.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.colordepth.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.colordepth.textX = 5;
|
|
s_graphicsoptions.colordepth.textY = 2;
|
|
s_graphicsoptions.colordepth.listnames = s_colordepth_Names;
|
|
s_graphicsoptions.colordepth.width = width;
|
|
|
|
y += inc;
|
|
s_graphicsoptions.fs.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.fs.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.fs.generic.x = x;
|
|
s_graphicsoptions.fs.generic.y = y;
|
|
s_graphicsoptions.fs.textEnum = MBT_VIDEOFULLSCREEN;
|
|
s_graphicsoptions.fs.textcolor = CT_BLACK;
|
|
s_graphicsoptions.fs.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.fs.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.fs.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.fs.textX = 5;
|
|
s_graphicsoptions.fs.textY = 2;
|
|
s_graphicsoptions.fs.listnames = s_OffOnNone_Names;
|
|
s_graphicsoptions.fs.width = width;
|
|
/*
|
|
y += inc;
|
|
s_graphicsoptions.lighting.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.lighting.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.lighting.generic.x = x;
|
|
s_graphicsoptions.lighting.generic.y = y;
|
|
s_graphicsoptions.lighting.textEnum = MBT_VIDEOLIGHTING;
|
|
s_graphicsoptions.lighting.textcolor = CT_BLACK;
|
|
s_graphicsoptions.lighting.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.lighting.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.lighting.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.lighting.textX = 5;
|
|
s_graphicsoptions.lighting.textY = 2;
|
|
s_graphicsoptions.lighting.listnames = s_lighting_Names;
|
|
s_graphicsoptions.lighting.width = width;
|
|
*/
|
|
y += inc;
|
|
// references/modifies "r_lodBias" & "subdivisions"
|
|
s_graphicsoptions.geometry.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.geometry.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.geometry.generic.x = x;
|
|
s_graphicsoptions.geometry.generic.y = y;
|
|
s_graphicsoptions.geometry.textEnum = MBT_VIDEOGEOMETRY;
|
|
s_graphicsoptions.geometry.textcolor = CT_BLACK;
|
|
s_graphicsoptions.geometry.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.geometry.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.geometry.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.geometry.textX = 5;
|
|
s_graphicsoptions.geometry.textY = 2;
|
|
s_graphicsoptions.geometry.listnames = s_quality_Names;
|
|
s_graphicsoptions.geometry.width = width;
|
|
|
|
y += inc;
|
|
s_graphicsoptions.tq.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.tq.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.tq.generic.x = x;
|
|
s_graphicsoptions.tq.generic.y = y;
|
|
s_graphicsoptions.tq.textEnum = MBT_VIDEOTEXTUREDETAIL;
|
|
s_graphicsoptions.tq.textcolor = CT_BLACK;
|
|
s_graphicsoptions.tq.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.tq.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.tq.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.tq.textX = 5;
|
|
s_graphicsoptions.tq.textY = 2;
|
|
s_graphicsoptions.tq.listnames = s_4quality_Names;
|
|
s_graphicsoptions.tq.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_textureBits"
|
|
s_graphicsoptions.texturebits.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.texturebits.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.texturebits.generic.x = x;
|
|
s_graphicsoptions.texturebits.generic.y = y;
|
|
s_graphicsoptions.texturebits.textEnum = MBT_VIDEOTEXTUREBITS;
|
|
s_graphicsoptions.texturebits.textcolor = CT_BLACK;
|
|
s_graphicsoptions.texturebits.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.texturebits.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.texturebits.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.texturebits.textX = 5;
|
|
s_graphicsoptions.texturebits.textY = 2;
|
|
s_graphicsoptions.texturebits.listnames = s_tqbits_Names;
|
|
s_graphicsoptions.texturebits.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_textureMode"
|
|
s_graphicsoptions.filter.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.filter.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.filter.generic.x = x;
|
|
s_graphicsoptions.filter.generic.y = y;
|
|
s_graphicsoptions.filter.textEnum = MBT_VIDEOTEXTUREFILTER;
|
|
s_graphicsoptions.filter.textcolor = CT_BLACK;
|
|
s_graphicsoptions.filter.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.filter.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.filter.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.filter.textX = 5;
|
|
s_graphicsoptions.filter.textY = 2;
|
|
s_graphicsoptions.filter.listnames = s_filter_Names;
|
|
s_graphicsoptions.filter.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_lowEndVideo"
|
|
s_graphicsoptions.simpleshaders.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.simpleshaders.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.simpleshaders.generic.x = x;
|
|
s_graphicsoptions.simpleshaders.generic.y = y;
|
|
s_graphicsoptions.simpleshaders.textEnum = MBT_SIMPLESHADER;
|
|
s_graphicsoptions.simpleshaders.textcolor = CT_BLACK;
|
|
s_graphicsoptions.simpleshaders.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.simpleshaders.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.simpleshaders.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.simpleshaders.textX = 5;
|
|
s_graphicsoptions.simpleshaders.textY = 2;
|
|
s_graphicsoptions.simpleshaders.listnames = s_OffOnNone_Names;
|
|
s_graphicsoptions.simpleshaders.width = width;
|
|
|
|
y += inc;
|
|
// references/modifies "r_ext_compress_textures"
|
|
s_graphicsoptions.compresstextures.generic.type = MTYPE_SPINCONTROL;
|
|
s_graphicsoptions.compresstextures.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_graphicsoptions.compresstextures.generic.x = x;
|
|
s_graphicsoptions.compresstextures.generic.y = y;
|
|
s_graphicsoptions.compresstextures.textEnum = MBT_COMPRESSEDTEXTURES;
|
|
s_graphicsoptions.compresstextures.textcolor = CT_BLACK;
|
|
s_graphicsoptions.compresstextures.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.compresstextures.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.compresstextures.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.compresstextures.textX = 5;
|
|
s_graphicsoptions.compresstextures.textY = 2;
|
|
s_graphicsoptions.compresstextures.listnames = s_OffOnNone_Names;
|
|
s_graphicsoptions.compresstextures.width = width;
|
|
|
|
s_graphicsoptions.apply.generic.type = MTYPE_ACTION;
|
|
s_graphicsoptions.apply.generic.flags = QMF_HIGHLIGHT_IF_FOCUS|QMF_GRAYED;
|
|
s_graphicsoptions.apply.generic.x = 501;
|
|
s_graphicsoptions.apply.generic.y = 245;
|
|
s_graphicsoptions.apply.generic.callback = GraphicsOptions_ApplyChanges;
|
|
s_graphicsoptions.apply.textEnum = MBT_VIDEOAPPLYCHANGES;
|
|
s_graphicsoptions.apply.textcolor = CT_BLACK;
|
|
s_graphicsoptions.apply.textcolor2 = CT_WHITE;
|
|
s_graphicsoptions.apply.textcolor3 = CT_LTGREY;
|
|
s_graphicsoptions.apply.color = CT_DKPURPLE1;
|
|
s_graphicsoptions.apply.color2 = CT_LTPURPLE1;
|
|
s_graphicsoptions.apply.color3 = CT_DKGREY;
|
|
s_graphicsoptions.apply.textX = 5;
|
|
s_graphicsoptions.apply.textY = 80;
|
|
s_graphicsoptions.apply.width = 110;
|
|
s_graphicsoptions.apply.height = 100;
|
|
|
|
SetupMenu_TopButtons(&s_videodata.menu,MENU_VIDEODATA,&s_graphicsoptions.apply);
|
|
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.list);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.allow_extensions);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.aspectRatio);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.mode);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.colordepth);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.fs);
|
|
// Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.lighting);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.geometry);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.tq);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.texturebits);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.filter);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.simpleshaders);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.compresstextures);
|
|
Menu_AddItem( &s_videodata.menu, ( void * )&s_graphicsoptions.apply);
|
|
|
|
|
|
Video_SideButtons(&s_videodata.menu,ID_VIDEODATA);
|
|
|
|
GraphicsOptions_SetMenuItems();
|
|
GraphicsOptions_GetInitialVideo();
|
|
|
|
/*if ( uis.glconfig.driverType == GLDRV_ICD &&
|
|
uis.glconfig.hardwareType == GLHW_3DFX_2D3D )
|
|
{
|
|
s_graphicsoptions.driver.generic.flags |= QMF_HIDDEN|QMF_INACTIVE;
|
|
}*/
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDataMenu
|
|
=================
|
|
*/
|
|
void UI_VideoDataMenu( void )
|
|
{
|
|
VideoData_MenuInit();
|
|
|
|
UI_PushMenu( &s_videodata.menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
Video_SideButtons
|
|
=================
|
|
*/
|
|
void Video_SideButtons(menuframework_s *menu,int menuType)
|
|
{
|
|
|
|
// Button Data
|
|
s_video_data.generic.type = MTYPE_BITMAP;
|
|
s_video_data.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_data.generic.x = video_sidebuttons[0][0];
|
|
s_video_data.generic.y = video_sidebuttons[0][1];
|
|
s_video_data.generic.name = GRAPHIC_SQUARE;
|
|
s_video_data.generic.id = ID_VIDEODATA;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_data.generic.callback = VideoSideButtons_MenuEvent;
|
|
}
|
|
else
|
|
{
|
|
s_video_data.generic.callback = Video_MenuEvent;
|
|
}
|
|
s_video_data.width = MENU_BUTTON_MED_WIDTH - 10;
|
|
s_video_data.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_video_data.color = CT_DKPURPLE1;
|
|
s_video_data.color2 = CT_LTPURPLE1;
|
|
s_video_data.textX = 5;
|
|
s_video_data.textY = 2;
|
|
s_video_data.textEnum = MBT_VIDEODATA;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_data.textcolor = CT_WHITE;
|
|
s_video_data.textcolor2 = CT_WHITE;
|
|
s_video_data.generic.flags = QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_data.textcolor = CT_BLACK;
|
|
s_video_data.textcolor2 = CT_WHITE;
|
|
}
|
|
|
|
s_video_data2.generic.type = MTYPE_BITMAP;
|
|
s_video_data2.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_data2.generic.x = video_sidebuttons[1][0];
|
|
s_video_data2.generic.y = video_sidebuttons[1][1];
|
|
s_video_data2.generic.name = GRAPHIC_SQUARE;
|
|
s_video_data2.generic.id = ID_VIDEODATA2;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_data2.generic.callback = VideoSideButtons_MenuEvent;
|
|
}
|
|
else
|
|
{
|
|
s_video_data2.generic.callback = Video_MenuEvent;
|
|
}
|
|
s_video_data2.width = MENU_BUTTON_MED_WIDTH - 10;
|
|
s_video_data2.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_video_data2.color = CT_DKPURPLE1;
|
|
s_video_data2.color2 = CT_LTPURPLE1;
|
|
s_video_data2.textX = 5;
|
|
s_video_data2.textY = 2;
|
|
s_video_data2.textEnum = MBT_VIDEODATA2;
|
|
s_video_data2.textcolor = CT_WHITE;
|
|
s_video_data2.textcolor2 = CT_WHITE;
|
|
if (menuType == ID_VIDEODATA2)
|
|
{
|
|
s_video_data2.textcolor = CT_WHITE;
|
|
s_video_data2.textcolor2 = CT_WHITE;
|
|
s_video_data2.generic.flags = QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_data2.textcolor = CT_BLACK;
|
|
s_video_data2.textcolor2 = CT_WHITE;
|
|
}
|
|
|
|
s_video_drivers.generic.type = MTYPE_BITMAP;
|
|
s_video_drivers.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_video_drivers.generic.x = video_sidebuttons[2][0];
|
|
s_video_drivers.generic.y = video_sidebuttons[2][1];
|
|
s_video_drivers.generic.name = GRAPHIC_SQUARE;
|
|
s_video_drivers.generic.id = ID_VIDEODRIVERS;
|
|
if (menuType == ID_VIDEODATA)
|
|
{
|
|
s_video_drivers.generic.callback = VideoSideButtons_MenuEvent;
|
|
}
|
|
else
|
|
{
|
|
s_video_drivers.generic.callback = Video_MenuEvent;
|
|
}
|
|
s_video_drivers.width = MENU_BUTTON_MED_WIDTH - 10;
|
|
s_video_drivers.height = MENU_BUTTON_MED_HEIGHT;
|
|
s_video_drivers.color = CT_DKPURPLE1;
|
|
s_video_drivers.color2 = CT_LTPURPLE1;
|
|
s_video_drivers.textX = 5;
|
|
s_video_drivers.textY = 2;
|
|
s_video_drivers.textEnum = MBT_VIDEODRIVERS;
|
|
if (menuType == ID_VIDEODRIVERS)
|
|
{
|
|
s_video_drivers.textcolor = CT_WHITE;
|
|
s_video_drivers.textcolor2 = CT_WHITE;
|
|
s_video_drivers.generic.flags = QMF_GRAYED;
|
|
}
|
|
else
|
|
{
|
|
s_video_drivers.textcolor = CT_BLACK;
|
|
s_video_drivers.textcolor2 = CT_WHITE;
|
|
}
|
|
|
|
Menu_AddItem( menu, ( void * )&s_video_data);
|
|
Menu_AddItem( menu, ( void * )&s_video_data2);
|
|
Menu_AddItem( menu, ( void * )&s_video_drivers);
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_Lines
|
|
=================
|
|
*/
|
|
void VideoDriver_Lines(int increment)
|
|
{
|
|
int i,i2;
|
|
|
|
s_videodriver.currentDriverLine += increment;
|
|
|
|
i=0;
|
|
i2 = 0;
|
|
|
|
i = (s_videodriver.currentDriverLine * 2);
|
|
if (i<0)
|
|
{
|
|
s_videodriver.currentDriverLine = 0;
|
|
return;
|
|
}
|
|
|
|
if (i>s_videodriver.driverCnt)
|
|
{
|
|
s_videodriver.currentDriverLine = (s_videodriver.driverCnt/2);
|
|
return;
|
|
}
|
|
else if (i==s_videodriver.driverCnt)
|
|
{
|
|
s_videodriver.currentDriverLine = (s_videodriver.driverCnt/2) - 1;
|
|
return;
|
|
}
|
|
|
|
if (!s_videodriver.drivers[i + 22])
|
|
{
|
|
s_videodriver.currentDriverLine -= increment;
|
|
s_videodriver.activeArrowDwn = qfalse;
|
|
return;
|
|
}
|
|
|
|
for (; i < MAX_VID_DRIVERS; i++)
|
|
{
|
|
if (s_videodriver.drivers[i])
|
|
{
|
|
if (i2<24)
|
|
{
|
|
((menutext_s *)g_videolines[i2])->string = s_videodriver.drivers[i];
|
|
i2++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (i2<24)
|
|
{
|
|
((menutext_s *)g_videolines[i2])->string = NULL;
|
|
i2++;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Set up arrows
|
|
|
|
if (increment > 0)
|
|
{
|
|
s_videodriver.activeArrowUp = qtrue;
|
|
}
|
|
|
|
if (s_videodriver.currentDriverLine < 1)
|
|
{
|
|
s_videodriver.activeArrowUp = qfalse;
|
|
}
|
|
|
|
if (i2>= 24)
|
|
{
|
|
s_videodriver.activeArrowDwn = qtrue;
|
|
}
|
|
|
|
i = (s_videodriver.currentDriverLine * 2);
|
|
if (!s_videodriver.drivers[i + 24])
|
|
{
|
|
s_videodriver.activeArrowDwn = qfalse;
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_LineSetup
|
|
=================
|
|
*/
|
|
void VideoDriver_LineSetup(void)
|
|
{
|
|
char *bufhold;
|
|
char *eptr;
|
|
int i;
|
|
|
|
strcpy( s_videodriver.extensionsString, uis.glconfig.extensions_string );
|
|
eptr = s_videodriver.extensionsString;
|
|
i=0;
|
|
|
|
s_videodriver.driverCnt = 0;
|
|
|
|
while ( i < MAX_VID_DRIVERS && *eptr )
|
|
{
|
|
while ( *eptr )
|
|
{
|
|
bufhold = eptr;
|
|
|
|
while(*bufhold != ' ')
|
|
{
|
|
++bufhold;
|
|
}
|
|
*bufhold = 0;
|
|
|
|
s_videodriver.drivers[i] = eptr;
|
|
|
|
if (i<24)
|
|
{
|
|
((menutext_s *)g_videolines[i])->string = eptr;
|
|
}
|
|
|
|
bufhold++;
|
|
eptr = bufhold;
|
|
s_videodriver.driverCnt++;
|
|
i++;
|
|
}
|
|
}
|
|
|
|
// Set down arrows
|
|
if (i> 24)
|
|
{
|
|
s_videodriver.activeArrowDwn = qtrue;
|
|
}
|
|
|
|
s_videodriver.currentDriverLine = 0;
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_MenuKey
|
|
=================
|
|
*/
|
|
sfxHandle_t VideoDriver_MenuKey (int key)
|
|
{
|
|
return ( Menu_DefaultKey( &s_videodriver.menu, key ) );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
M_VideoDriverMenu_Graphics
|
|
=================
|
|
*/
|
|
void M_VideoDriverMenu_Graphics (void)
|
|
{
|
|
float labelColor[] = { 0, 1.0, 0, 1.0 };
|
|
float textColor[] = { 1, 1, 1, 1 };
|
|
int x,y,x2,x3;
|
|
|
|
UI_MenuFrame(&s_videodriver.menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "207",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "44909",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "357",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "250624",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "456730-1",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
UI_Setup_MenuButtons();
|
|
|
|
// trap_R_SetColor( colorTable[CT_DKPURPLE1]);
|
|
// UI_DrawHandlePic( 30, 203, 47, 69, uis.whiteShader); // Top Left column above two buttons
|
|
// UI_DrawHandlePic( 30, 344, 47, 45, uis.whiteShader); // Top Left column below two buttons
|
|
|
|
// Top Frame
|
|
UI_DrawHandlePic( 178, 136, 32, -32, s_videodriver.corner_ll_8_16); // UL
|
|
UI_DrawHandlePic( 178, 221, 32, 32, s_videodriver.corner_ll_8_16); // LL
|
|
UI_DrawHandlePic( 556, 136, -32, -32, s_videodriver.corner_ll_8_16); // UR
|
|
UI_DrawHandlePic( 556, 221, -32, 32, s_videodriver.corner_ll_8_16); // LR
|
|
UI_DrawHandlePic(194,157, 378, 8, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic(178,165, 16, 60, uis.whiteShader); // Left side
|
|
UI_DrawHandlePic(572,165, 16, 60, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic(194,224, 378, 8, uis.whiteShader); // Bottom line
|
|
|
|
|
|
// Lower Frame
|
|
UI_DrawHandlePic( 178, 226, 32, -32, s_videodriver.corner_ll_16_16); // UL
|
|
UI_DrawHandlePic( 178, 414, 32, 32, s_videodriver.corner_ll_16_16); // LL
|
|
UI_DrawHandlePic( 556, 226, -32, -32, s_videodriver.corner_ll_16_16); // UR
|
|
UI_DrawHandlePic( 556, 414, -32, 32, s_videodriver.corner_ll_16_16); // LR
|
|
|
|
UI_DrawHandlePic( 194, 237, 378, 16, uis.whiteShader); // Top line
|
|
UI_DrawHandlePic( 178, 252, 16, 168, uis.whiteShader); // Left side
|
|
|
|
UI_DrawHandlePic( 572, 261, 16, 15, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic( 572, 279, 16, 114, uis.whiteShader); // Right side
|
|
UI_DrawHandlePic( 572, 396, 16, 15, uis.whiteShader); // Right side
|
|
|
|
UI_DrawHandlePic( 194, 419, 378, 16, uis.whiteShader); // Bottom line
|
|
|
|
trap_R_SetColor( colorTable[CT_LTGOLD1]);
|
|
if (s_videodriver.activeArrowUp)
|
|
{
|
|
UI_DrawHandlePic( 382, 237, 32, -14, s_videodriver.arrow_dn);
|
|
}
|
|
|
|
if (s_videodriver.activeArrowDwn)
|
|
{
|
|
UI_DrawHandlePic( 382, 422, 32, 14, s_videodriver.arrow_dn);
|
|
}
|
|
|
|
x = 204;
|
|
x2 = 259;
|
|
x3 = x2 + 150;
|
|
y = 168;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_VENDOR], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, uis.glconfig.vendor_string, UI_LEFT|UI_TINYFONT, textColor );
|
|
y += 14;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_VERSION], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, uis.glconfig.version_string, UI_LEFT|UI_TINYFONT, textColor );
|
|
y += 14;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_RENDERER], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, uis.glconfig.renderer_string, UI_LEFT|UI_TINYFONT, textColor );
|
|
y += 14;
|
|
UI_DrawProportionalString( x, y, menu_normal_text[MNT_PIXELFORMAT], UI_LEFT|UI_TINYFONT, labelColor );
|
|
UI_DrawProportionalString( x2, y, va("color(%d-bits) Z(%d-bit) stencil(%d-bits)", uis.glconfig.colorBits, uis.glconfig.depthBits, uis.glconfig.stencilBits), UI_LEFT|UI_TINYFONT, textColor );
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoDriver_MenuDraw
|
|
=================
|
|
*/
|
|
static void VideoDriver_MenuDraw (void)
|
|
{
|
|
|
|
M_VideoDriverMenu_Graphics();
|
|
|
|
Menu_Draw( &s_videodriver.menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDriverMenu_Cache
|
|
=================
|
|
*/
|
|
void UI_VideoDriverMenu_Cache(void)
|
|
{
|
|
s_videodriver.corner_ll_16_16 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_16_16.tga");
|
|
s_videodriver.corner_ll_8_16 = trap_R_RegisterShaderNoMip("menu/common/corner_ll_8_16.tga");
|
|
s_videodriver.arrow_dn = trap_R_RegisterShaderNoMip("menu/common/arrow_dn_16.tga");
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
Video_MenuInit
|
|
=================
|
|
*/
|
|
static void VideoDriver_MenuInit( void )
|
|
{
|
|
int i,x,y,x2;
|
|
|
|
UI_VideoDriverMenu_Cache();
|
|
|
|
s_videodriver.menu.nitems = 0;
|
|
s_videodriver.menu.wrapAround = qtrue;
|
|
// s_videodriver.menu.opening = NULL;
|
|
// s_videodriver.menu.closing = NULL;
|
|
s_videodriver.menu.draw = VideoDriver_MenuDraw;
|
|
s_videodriver.menu.key = VideoDriver_MenuKey;
|
|
s_videodriver.menu.fullscreen = qtrue;
|
|
s_videodriver.menu.descX = MENU_DESC_X;
|
|
s_videodriver.menu.descY = MENU_DESC_Y;
|
|
s_videodriver.menu.listX = 230;
|
|
s_videodriver.menu.listY = 188;
|
|
s_videodriver.menu.titleX = MENU_TITLE_X;
|
|
s_videodriver.menu.titleY = MENU_TITLE_Y;
|
|
s_videodriver.menu.titleI = MNT_CONTROLSMENU_TITLE;
|
|
s_videodriver.menu.footNoteEnum = MNT_VIDEODRIVER;
|
|
|
|
SetupMenu_TopButtons(&s_videodriver.menu,MENU_VIDEO,NULL);
|
|
|
|
Video_SideButtons(&s_videodriver.menu,ID_VIDEODRIVERS);
|
|
|
|
s_videodriver.arrowup.generic.type = MTYPE_BITMAP;
|
|
s_videodriver.arrowup.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_videodriver.arrowup.generic.x = 572;
|
|
s_videodriver.arrowup.generic.y = 262;
|
|
s_videodriver.arrowup.generic.name = "menu/common/arrow_up_16.tga";
|
|
s_videodriver.arrowup.generic.id = ID_ARROWUP;
|
|
s_videodriver.arrowup.generic.callback = Video_MenuEvent;
|
|
s_videodriver.arrowup.width = 16;
|
|
s_videodriver.arrowup.height = 16;
|
|
s_videodriver.arrowup.color = CT_DKBLUE1;
|
|
s_videodriver.arrowup.color2 = CT_LTBLUE1;
|
|
s_videodriver.arrowup.textX = 0;
|
|
s_videodriver.arrowup.textY = 0;
|
|
s_videodriver.arrowup.textEnum = MBT_NONE;
|
|
s_videodriver.arrowup.textcolor = CT_BLACK;
|
|
s_videodriver.arrowup.textcolor2 = CT_WHITE;
|
|
Menu_AddItem( &s_videodriver.menu,( void * ) &s_videodriver.arrowup);
|
|
|
|
s_videodriver.arrowdwn.generic.type = MTYPE_BITMAP;
|
|
s_videodriver.arrowdwn.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_videodriver.arrowdwn.generic.x = 572;
|
|
s_videodriver.arrowdwn.generic.y = 397;
|
|
s_videodriver.arrowdwn.generic.name = "menu/common/arrow_dn_16.tga";
|
|
s_videodriver.arrowdwn.generic.id = ID_ARROWDWN;
|
|
s_videodriver.arrowdwn.generic.callback = Video_MenuEvent;
|
|
s_videodriver.arrowdwn.width = 16;
|
|
s_videodriver.arrowdwn.height = 16;
|
|
s_videodriver.arrowdwn.color = CT_DKBLUE1;
|
|
s_videodriver.arrowdwn.color2 = CT_LTBLUE1;
|
|
s_videodriver.arrowdwn.textX = 0;
|
|
s_videodriver.arrowdwn.textY = 0;
|
|
s_videodriver.arrowdwn.textEnum = MBT_NONE;
|
|
s_videodriver.arrowdwn.textcolor = CT_BLACK;
|
|
s_videodriver.arrowdwn.textcolor2 = CT_WHITE;
|
|
Menu_AddItem( &s_videodriver.menu, ( void * ) &s_videodriver.arrowdwn);
|
|
|
|
s_videodriver.activeArrowDwn = qfalse;
|
|
s_videodriver.activeArrowUp = qfalse;
|
|
|
|
x = 204;
|
|
x2 = 404;
|
|
y = 260;
|
|
|
|
for (i=0;i<24;i++)
|
|
{
|
|
((menutext_s *)g_videolines[i])->generic.type = MTYPE_TEXT;
|
|
((menutext_s *)g_videolines[i])->generic.flags = QMF_LEFT_JUSTIFY | QMF_INACTIVE;
|
|
((menutext_s *)g_videolines[i])->generic.y = y;
|
|
if ((i % 2 ) == 0)
|
|
{
|
|
((menutext_s *)g_videolines[i])->generic.x = x;
|
|
}
|
|
else
|
|
{
|
|
((menutext_s *)g_videolines[i])->generic.x = x2;
|
|
y +=13;
|
|
}
|
|
|
|
|
|
((menutext_s *)g_videolines[i])->buttontextEnum = MBT_NONE;
|
|
((menutext_s *)g_videolines[i])->style = UI_TINYFONT | UI_LEFT;
|
|
((menutext_s *)g_videolines[i])->color = colorTable[CT_LTPURPLE1];
|
|
Menu_AddItem( &s_videodriver.menu, ( void * )g_videolines[i]);
|
|
|
|
}
|
|
|
|
// Print extensions
|
|
VideoDriver_LineSetup();
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_VideoDriverMenu
|
|
=================
|
|
*/
|
|
void UI_VideoDriverMenu( void )
|
|
{
|
|
if (!s_videodriver.menu.initialized)
|
|
{
|
|
VideoDriver_MenuInit();
|
|
}
|
|
|
|
UI_PushMenu( &s_videodriver.menu );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
GammaCallback2
|
|
=================
|
|
*/
|
|
void GammaCallback2( void *s, int notification )
|
|
{
|
|
if (notification != QM_ACTIVATED)
|
|
return;
|
|
|
|
s_videodata2.apply_action2.generic.flags &= ~QMF_GRAYED;
|
|
s_videodata2.apply_action2.generic.flags |= QMF_BLINK;
|
|
|
|
GammaCallback(s,notification );
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
M_VideoData2Menu_Graphics
|
|
=================
|
|
*/
|
|
void M_VideoData2Menu_Graphics (void)
|
|
{
|
|
int y;
|
|
|
|
UI_MenuFrame(&s_videodata2.menu);
|
|
|
|
UI_DrawProportionalString( 74, 66, "925",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 84, "88PK",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 188, "8125",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 206, "358677",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
UI_DrawProportionalString( 74, 395, "3-679",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
|
|
|
|
UI_Setup_MenuButtons();
|
|
|
|
y = 191;
|
|
if (uis.glconfig.deviceSupportsGamma)
|
|
{
|
|
trap_R_SetColor( colorTable[CT_DKGREY]);
|
|
UI_DrawHandlePic( 178, y, 68, 68, uis.whiteShader); //
|
|
trap_R_SetColor( colorTable[CT_WHITE]);
|
|
UI_DrawHandlePic( 180, y+2, 64, 64, s_videodata2.gamma); // Starfleet graphic
|
|
|
|
UI_DrawProportionalString( 256, y + 5, menu_normal_text[MNT_GAMMA_LINE1],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString( 256, y + 25, menu_normal_text[MNT_GAMMA_LINE2],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString( 256, y + 45, menu_normal_text[MNT_GAMMA_LINE3],UI_SMALLFONT,colorTable[CT_LTGOLD1]);
|
|
}
|
|
else
|
|
{
|
|
UI_DrawProportionalString( 178, y + 5, menu_normal_text[MNT_GAMMA2_LINE1],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
UI_DrawProportionalString( 178, y + 25,menu_normal_text[MNT_GAMMA2_LINE2],UI_SMALLFONT, colorTable[CT_LTGOLD1]);
|
|
}
|
|
|
|
|
|
// Brackets around Video Data
|
|
trap_R_SetColor( colorTable[CT_LTPURPLE1]);
|
|
UI_DrawHandlePic(158,163, 16, 16, uis.graphicBracket1CornerLU);
|
|
UI_DrawHandlePic(158,179, 8, 233, uis.whiteShader);
|
|
UI_DrawHandlePic(158,412, 16, -16, uis.graphicBracket1CornerLU); //LD
|
|
|
|
UI_DrawHandlePic(174,163, 408, 8, uis.whiteShader); // Top line
|
|
|
|
UI_DrawHandlePic(579,163, 32, 16, s_videodata2.top); // Corner, UR
|
|
UI_DrawHandlePic(581,179, 30, 121, uis.whiteShader); // Top right column
|
|
UI_DrawHandlePic(581,303, 30, 109, uis.whiteShader); // Bottom right column
|
|
UI_DrawHandlePic(579,412, 32, -16, s_videodata2.top); // Corner, LR
|
|
|
|
UI_DrawHandlePic(174,420, 408, 8, uis.whiteShader); // Bottom line
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoData2_MenuDraw
|
|
=================
|
|
*/
|
|
static void VideoData2_MenuDraw (void)
|
|
{
|
|
|
|
M_VideoData2Menu_Graphics();
|
|
|
|
Menu_Draw( &s_videodata2.menu );
|
|
}
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_VideoData2Menu_Cache
|
|
=================
|
|
*/
|
|
void UI_VideoData2Menu_Cache(void)
|
|
{
|
|
s_videodata2.top = trap_R_RegisterShaderNoMip("menu/common/corner_ur_8_30.tga");
|
|
s_videodata2.gamma = trap_R_RegisterShaderNoMip("menu/special/gamma_test.tga");
|
|
trap_R_RegisterShaderNoMip(PIC_MONBAR2);
|
|
trap_R_RegisterShaderNoMip(PIC_SLIDER);
|
|
}
|
|
|
|
/*
|
|
=================
|
|
VideoData2_MenuInit
|
|
=================
|
|
*/
|
|
static void VideoData2_MenuInit( void )
|
|
{
|
|
int x,y;
|
|
|
|
UI_VideoData2Menu_Cache();
|
|
|
|
// Menu Data
|
|
s_videodata2.menu.nitems = 0;
|
|
s_videodata2.menu.wrapAround = qtrue;
|
|
// s_videodata2.menu.opening = NULL;
|
|
// s_videodata2.menu.closing = NULL;
|
|
s_videodata2.menu.draw = VideoData2_MenuDraw;
|
|
s_videodata2.menu.fullscreen = qtrue;
|
|
s_videodata2.menu.descX = MENU_DESC_X;
|
|
s_videodata2.menu.descY = MENU_DESC_Y;
|
|
s_videodata2.menu.listX = 230;
|
|
s_videodata2.menu.listY = 188;
|
|
s_videodata2.menu.titleX = MENU_TITLE_X;
|
|
s_videodata2.menu.titleY = MENU_TITLE_Y;
|
|
s_videodata2.menu.titleI = MNT_CONTROLSMENU_TITLE;
|
|
s_videodata2.menu.footNoteEnum = MNT_VIDEOSETUP;
|
|
|
|
SetupMenu_TopButtons(&s_videodata2.menu,MENU_VIDEO,NULL);
|
|
|
|
Video_SideButtons(&s_videodata2.menu,ID_VIDEODATA2);
|
|
|
|
x = 180;
|
|
y = 269;
|
|
s_videodata2.gamma_slider.generic.type = MTYPE_SLIDER;
|
|
s_videodata2.gamma_slider.generic.x = x + 162;
|
|
s_videodata2.gamma_slider.generic.y = y;
|
|
s_videodata2.gamma_slider.generic.flags = QMF_SMALLFONT;
|
|
s_videodata2.gamma_slider.generic.callback = GammaCallback2;
|
|
s_videodata2.gamma_slider.minvalue = 5;
|
|
s_videodata2.gamma_slider.maxvalue = 30;
|
|
s_videodata2.gamma_slider.color = CT_DKPURPLE1;
|
|
s_videodata2.gamma_slider.color2 = CT_LTPURPLE1;
|
|
s_videodata2.gamma_slider.generic.name = PIC_MONBAR2;
|
|
s_videodata2.gamma_slider.width = 256;
|
|
s_videodata2.gamma_slider.height = 32;
|
|
s_videodata2.gamma_slider.focusWidth = 145;
|
|
s_videodata2.gamma_slider.focusHeight = 18;
|
|
s_videodata2.gamma_slider.picName = GRAPHIC_SQUARE;
|
|
s_videodata2.gamma_slider.picX = x;
|
|
s_videodata2.gamma_slider.picY = y;
|
|
s_videodata2.gamma_slider.picWidth = MENU_BUTTON_MED_WIDTH + 21;
|
|
s_videodata2.gamma_slider.picHeight = MENU_BUTTON_MED_HEIGHT;
|
|
s_videodata2.gamma_slider.textX = MENU_BUTTON_TEXT_X;
|
|
s_videodata2.gamma_slider.textY = MENU_BUTTON_TEXT_Y;
|
|
s_videodata2.gamma_slider.textEnum = MBT_BRIGHTNESS;
|
|
s_videodata2.gamma_slider.textcolor = CT_BLACK;
|
|
s_videodata2.gamma_slider.textcolor2 = CT_WHITE;
|
|
s_videodata2.gamma_slider.thumbName = PIC_SLIDER;
|
|
s_videodata2.gamma_slider.thumbHeight = 32;
|
|
s_videodata2.gamma_slider.thumbWidth = 16;
|
|
s_videodata2.gamma_slider.thumbGraphicWidth = 9;
|
|
s_videodata2.gamma_slider.thumbColor = CT_DKBLUE1;
|
|
s_videodata2.gamma_slider.thumbColor2 = CT_LTBLUE1;
|
|
|
|
s_videodata2.apply_action2.generic.type = MTYPE_ACTION;
|
|
s_videodata2.apply_action2.generic.flags = QMF_HIGHLIGHT_IF_FOCUS|QMF_GRAYED;
|
|
s_videodata2.apply_action2.generic.x = 490;
|
|
s_videodata2.apply_action2.generic.y = 191;
|
|
s_videodata2.apply_action2.generic.callback = ApplyChanges2;
|
|
s_videodata2.apply_action2.textEnum = MBT_ACCEPT;
|
|
s_videodata2.apply_action2.textcolor = CT_BLACK;
|
|
s_videodata2.apply_action2.textcolor2 = CT_WHITE;
|
|
s_videodata2.apply_action2.textcolor3 = CT_LTGREY;
|
|
s_videodata2.apply_action2.color = CT_DKPURPLE1;
|
|
s_videodata2.apply_action2.color2 = CT_LTPURPLE1;
|
|
s_videodata2.apply_action2.color3 = CT_DKGREY;
|
|
s_videodata2.apply_action2.textX = 5;
|
|
s_videodata2.apply_action2.textY = 30;
|
|
s_videodata2.apply_action2.width = 82;
|
|
s_videodata2.apply_action2.height = 70;
|
|
|
|
y = 330;
|
|
s_videodata2.screensize_slider.generic.type = MTYPE_SLIDER;
|
|
s_videodata2.screensize_slider.generic.x = x + 162;
|
|
s_videodata2.screensize_slider.generic.y = y;
|
|
s_videodata2.screensize_slider.generic.flags = QMF_SMALLFONT;
|
|
s_videodata2.screensize_slider.generic.callback = ScreensizeCallback;
|
|
s_videodata2.screensize_slider.minvalue = 30;
|
|
s_videodata2.screensize_slider.maxvalue = 100;
|
|
s_videodata2.screensize_slider.color = CT_DKPURPLE1;
|
|
s_videodata2.screensize_slider.color2 = CT_LTPURPLE1;
|
|
s_videodata2.screensize_slider.generic.name = PIC_MONBAR2;
|
|
s_videodata2.screensize_slider.width = 256;
|
|
s_videodata2.screensize_slider.height = 32;
|
|
s_videodata2.screensize_slider.focusWidth = 145;
|
|
s_videodata2.screensize_slider.focusHeight = 18;
|
|
s_videodata2.screensize_slider.picName = GRAPHIC_SQUARE;
|
|
s_videodata2.screensize_slider.picX = x;
|
|
s_videodata2.screensize_slider.picY = y;
|
|
s_videodata2.screensize_slider.picWidth = MENU_BUTTON_MED_WIDTH + 21;
|
|
s_videodata2.screensize_slider.picHeight = MENU_BUTTON_MED_HEIGHT;
|
|
s_videodata2.screensize_slider.textX = MENU_BUTTON_TEXT_X;
|
|
s_videodata2.screensize_slider.textY = MENU_BUTTON_TEXT_Y;
|
|
s_videodata2.screensize_slider.textEnum = MBT_SCREENSIZE;
|
|
s_videodata2.screensize_slider.textcolor = CT_BLACK;
|
|
s_videodata2.screensize_slider.textcolor2 = CT_WHITE;
|
|
s_videodata2.screensize_slider.thumbName = PIC_SLIDER;
|
|
s_videodata2.screensize_slider.thumbHeight = 32;
|
|
s_videodata2.screensize_slider.thumbWidth = 16;
|
|
s_videodata2.screensize_slider.thumbGraphicWidth= 9;
|
|
s_videodata2.screensize_slider.thumbColor = CT_DKBLUE1;
|
|
s_videodata2.screensize_slider.thumbColor2 = CT_LTBLUE1;
|
|
|
|
y += 34;
|
|
s_videodata2.anisotropicfiltering.generic.type = MTYPE_SPINCONTROL;
|
|
s_videodata2.anisotropicfiltering.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
|
|
s_videodata2.anisotropicfiltering.generic.x = x;
|
|
s_videodata2.anisotropicfiltering.generic.y = y;
|
|
s_videodata2.anisotropicfiltering.generic.name = GRAPHIC_BUTTONRIGHT;
|
|
s_videodata2.anisotropicfiltering.generic.callback = AnisotropicFilteringCallback;
|
|
s_videodata2.anisotropicfiltering.color = CT_DKPURPLE1;
|
|
s_videodata2.anisotropicfiltering.color2 = CT_LTPURPLE1;
|
|
s_videodata2.anisotropicfiltering.textX = MENU_BUTTON_TEXT_X;
|
|
s_videodata2.anisotropicfiltering.textY = MENU_BUTTON_TEXT_Y;
|
|
s_videodata2.anisotropicfiltering.textEnum = MBT_ANISOTROPICFILTERING;
|
|
s_videodata2.anisotropicfiltering.textcolor = CT_BLACK;
|
|
s_videodata2.anisotropicfiltering.textcolor2 = CT_WHITE;
|
|
s_videodata2.anisotropicfiltering.listnames = s_OffOnNone_Names;
|
|
|
|
|
|
Menu_AddItem( &s_videodata2.menu, ( void * )&s_videodata2.gamma_slider);
|
|
if (!uis.glconfig.deviceSupportsGamma)
|
|
{
|
|
Menu_AddItem( &s_videodata2.menu, ( void * )&s_videodata2.apply_action2);
|
|
}
|
|
Menu_AddItem( &s_videodata2.menu, ( void * )&s_videodata2.screensize_slider);
|
|
Menu_AddItem( &s_videodata2.menu, ( void * )&s_videodata2.anisotropicfiltering);
|
|
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoData2SettingsGetCvars
|
|
=================
|
|
*/
|
|
static void UI_VideoData2SettingsGetCvars()
|
|
{
|
|
s_videodata2.gamma_slider.curvalue = trap_Cvar_VariableValue( "r_gamma" ) * 10.0f;
|
|
s_videodata2.screensize_slider.curvalue = trap_Cvar_VariableValue( "cg_viewsize" );
|
|
s_videodata2.anisotropicfiltering.curvalue = trap_Cvar_VariableValue( "r_ext_texture_filter_anisotropic" );
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_VideoData2SettingsMenu
|
|
=================
|
|
*/
|
|
void UI_VideoData2SettingsMenu( void )
|
|
{
|
|
UI_VideoData2SettingsGetCvars();
|
|
|
|
if (!s_videodata2.menu.initialized)
|
|
{
|
|
VideoData2_MenuInit();
|
|
}
|
|
|
|
UI_PushMenu( &s_videodata2.menu );
|
|
}
|
|
|