/* ================= 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); }
/* ================= 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; // TTimo: overflow with particularly long GL extensions (such as the gf3) // https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=399 // NOTE: could have pushed the size of stringbuff, but the list is already out of the screen // (no matter what your resolution) Q_strncpyz(s_driverinfo.stringbuff, uis.glconfig.extensions_string, 1024); // 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 ); }