/* ================= VID_NumModes_f ================= */ void VID_NumModes_f (void) { int nummodes; nummodes = VID_NumModes (); if (nummodes == 1) Con_Printf ("%d video mode is available\n", VID_NumModes ()); else Con_Printf ("%d video modes are available\n", VID_NumModes ()); }
/* ================= VID_DescribeModes_f ================= */ void VID_DescribeModes_f (void) { int i, nummodes; char *pinfo, *pheader; vmode_t *pv; qboolean na; na = false; nummodes = VID_NumModes (); for (i=0 ; i<nummodes ; i++) { pv = VID_GetModePtr (i); pinfo = VID_ModeInfo (i, &pheader); if (pheader) Con_Printf ("\n%s\n", pheader); if (VGA_CheckAdequateMem (pv->width, pv->height, pv->rowbytes, (pv->numpages == 1) || vid_nopageflip->value)) { Con_Printf ("%2d: %s\n", i, pinfo); } else { Con_Printf ("**: %s\n", pinfo); na = true; } } if (na) { Con_Printf ("\n[**: not enough system RAM for mode]\n"); } }
// vid_mode <modenum> // static void VID_Command_Mode_f(void) { int modenum; if (COM_Argc() != 2) { CONS_Printf(M_GetText("vid_mode <modenum> : set video mode, current video mode %i\n"), vid.modenum); return; } modenum = atoi(COM_Argv(1)); if (modenum > VID_NumModes() || modenum < NUMSPECIALMODES) // don't accept the windowed mode 0 CONS_Printf("%s", M_GetText("No video modes present\n")); else setmodeneeded = modenum + 1; // request vid mode change }
// vid_modelist // static void VID_Command_ModeList_f(void) { int i, numodes; const char *pinfo; vmode_t *pv; numodes = VID_NumModes(); for (i = NUMSPECIALMODES; i < numodes; i++) { pv = VID_GetModePtr(i); pinfo = VID_GetModeName(i); if (pv->bytesperpixel == 1) CONS_Printf("%d: %s\n", i, pinfo); else CONS_Printf("%d: %s (hicolor)\n", i, pinfo); } }
// vid_modeinfo <modenum> // static void VID_Command_ModeInfo_f(void) { vmode_t *pv; int modenum; if (COM_Argc() != 2) modenum = vid.modenum; // describe the current mode else modenum = atoi(COM_Argv(1)); // the given mode number if (modenum > VID_NumModes() || modenum < NUMSPECIALMODES) // don't accept the windowed modes { CONS_Printf("%s", M_GetText("No such video mode\n")); return; } pv = VID_GetModePtr(modenum); CONS_Printf("%s\n", VID_GetModeName(modenum)); CONS_Printf(M_GetText("width: %d\nheight: %d\n"), pv->width, pv->height); if (rendermode == render_soft) CONS_Printf(M_GetText("bytes per scanline: %d\nbytes per pixel: %d\nnumpages: %d\n"), pv->rowbytes, pv->bytesperpixel, pv->numpages); }
static void VID_NumModes_f (void) { Con_Printf("%d modes\n", VID_NumModes()); }
/* ================ VID_MenuDraw ================ */ void VID_MenuDraw (void) { qpic_t *p; char *ptr; int nummodes, i, j, column, row, dup; char temp[100]; vid_wmodes = 0; nummodes = VID_NumModes (); p = Draw_CachePic ("gfx/vidmodes.lmp"); M_DrawPic ( (320-p->width)/2, 4, p); for (i=0 ; i<nummodes ; i++) { if (vid_wmodes < MAX_MODEDESCS) { if (i != 1) { ptr = VID_GetModeDescription (i); if (ptr) { dup = 0; for (j=0 ; j<vid_wmodes ; j++) { if (!strcmp (modedescs[j].desc, ptr)) { if (modedescs[j].modenum != 0) { modedescs[j].modenum = i; dup = 1; if (i == vid_modenum) modedescs[j].iscur = 1; } else { dup = 1; } break; } } if (!dup) { modedescs[vid_wmodes].modenum = i; modedescs[vid_wmodes].desc = ptr; modedescs[vid_wmodes].iscur = 0; if (i == vid_modenum) modedescs[vid_wmodes].iscur = 1; vid_wmodes++; } } } } } vid_column_size = (vid_wmodes + 2) / 3; column = 16; row = 36; for (i=0 ; i<vid_wmodes ; i++) { if (modedescs[i].iscur) M_PrintWhite (column, row, modedescs[i].desc); else M_Print (column, row, modedescs[i].desc); row += 8; if ((i % vid_column_size) == (vid_column_size - 1)) { column += 13*8; row = 36; } } // line cursor if (vid_testingmode) { sprintf (temp, "TESTING %s", modedescs[vid_line].desc); M_Print (13*8, 36 + MAX_COLUMN_SIZE * 8 + 8*4, temp); M_Print (9*8, 36 + MAX_COLUMN_SIZE * 8 + 8*6, "Please wait 5 seconds..."); } else { M_Print (9*8, 36 + MAX_COLUMN_SIZE * 8 + 8, "Press Enter to set mode"); M_Print (6*8, 36 + MAX_COLUMN_SIZE * 8 + 8*3, "T to test mode for 5 seconds"); ptr = VID_GetModeDescription (vid_modenum); sprintf (temp, "D to make %s the default", ptr); M_Print (6*8, 36 + MAX_COLUMN_SIZE * 8 + 8*5, temp); ptr = VID_GetModeDescription ((int)_vid_default_mode->value); if (ptr) { sprintf (temp, "Current default is %s", ptr); M_Print (7*8, 36 + MAX_COLUMN_SIZE * 8 + 8*6, temp); } M_Print (15*8, 36 + MAX_COLUMN_SIZE * 8 + 8*8, "Esc to exit"); row = 36 + (vid_line % vid_column_size) * 8; column = 8 + (vid_line / vid_column_size) * 13*8; M_DrawCharacter (column, row, 12+((int)(realtime*4)&1)); } }
// vid_nummodes // static void VID_Command_NumModes_f(void) { CONS_Printf(M_GetText("%d video mode(s) available(s)\n"), VID_NumModes()); }