X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=cl_screen.c;h=1d5b410f229294ab854996c11d3d470a671d84c6;hb=953b80172a724595962cc00974fae72d63ff7b1c;hp=3c2268b01f12e86d5f5cfa55397b80211f6d119b;hpb=0405f2ece13064e683ed19b0d2ba71094f99448c;p=xonotic%2Fdarkplaces.git diff --git a/cl_screen.c b/cl_screen.c index 3c2268b0..1d5b410f 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -14,14 +14,15 @@ cvar_t scr_centertime = {0, "scr_centertime","2"}; cvar_t scr_showram = {CVAR_SAVE, "showram","1"}; cvar_t scr_showturtle = {CVAR_SAVE, "showturtle","0"}; cvar_t scr_showpause = {CVAR_SAVE, "showpause","1"}; +cvar_t scr_showbrand = {0, "showbrand","0"}; cvar_t scr_printspeed = {0, "scr_printspeed","8"}; cvar_t vid_conwidth = {CVAR_SAVE, "vid_conwidth", "640"}; cvar_t vid_conheight = {CVAR_SAVE, "vid_conheight", "480"}; cvar_t vid_pixelaspect = {CVAR_SAVE, "vid_pixelaspect", "1"}; -cvar_t scr_screenshot_jpeg = {CVAR_SAVE, "scr_screenshot_jpeg","0"}; +cvar_t scr_screenshot_jpeg = {CVAR_SAVE, "scr_screenshot_jpeg","1"}; cvar_t scr_screenshot_jpeg_quality = {CVAR_SAVE, "scr_screenshot_jpeg_quality","0.9"}; cvar_t scr_screenshot_gamma = {CVAR_SAVE, "scr_screenshot_gamma","2.2"}; -cvar_t scr_screenshot_name = {0, "scr_screenshot_name","dp"}; +// scr_screenshot_name is defined in fs.c cvar_t cl_capturevideo = {0, "cl_capturevideo", "0"}; cvar_t cl_capturevideo_sound = {0, "cl_capturevideo_sound", "0"}; cvar_t cl_capturevideo_fps = {0, "cl_capturevideo_fps", "30"}; @@ -45,6 +46,114 @@ static void R_Envmap_f (void); // backend void R_ClearScreen(void); +// color tag printing +static vec4_t string_colors[] = +{ + // Quake3 colors + // LordHavoc: why on earth is cyan before magenta in Quake3? + // LordHavoc: note: Doom3 uses white for [0] and [7] + {0.0, 0.0, 0.0, 1.0}, // black + {1.0, 0.0, 0.0, 1.0}, // red + {0.0, 1.0, 0.0, 1.0}, // green + {1.0, 1.0, 0.0, 1.0}, // yellow + {0.0, 0.0, 1.0, 1.0}, // blue + {0.0, 1.0, 1.0, 1.0}, // cyan + {1.0, 0.0, 1.0, 1.0}, // magenta + {1.0, 1.0, 1.0, 1.0}, // white + // [515]'s BX_COLOREDTEXT extension + {1.0, 1.0, 1.0, 0.5}, // half transparent + {0.5, 0.5, 0.5, 1.0} // half brightness + // Black's color table + //{1.0, 1.0, 1.0, 1.0}, + //{1.0, 0.0, 0.0, 1.0}, + //{0.0, 1.0, 0.0, 1.0}, + //{0.0, 0.0, 1.0, 1.0}, + //{1.0, 1.0, 0.0, 1.0}, + //{0.0, 1.0, 1.0, 1.0}, + //{1.0, 0.0, 1.0, 1.0}, + //{0.1, 0.1, 0.1, 1.0} +}; + +#define STRING_COLORS_COUNT (sizeof(string_colors) / sizeof(vec4_t)) + +// color is read and changed in the end +void DrawQ_ColoredString( float x, float y, const char *text, int maxlen, float scalex, float scaley, float basered, float basegreen, float baseblue, float basealpha, int flags, int *outcolor ) +{ + vec_t *color; + int len; + int colorindex; + const char *start, *current; + + if( !outcolor || *outcolor == -1 ) { + colorindex = STRING_COLOR_DEFAULT; + } else { + colorindex = *outcolor; + } + color = string_colors[colorindex]; + + if( maxlen < 1) + len = (int)strlen( text ); + else + len = min( maxlen, (int) strlen( text ) ); + + start = current = text; + while( len > 0 ) { + // check for color control char + if( *current == STRING_COLOR_TAG ) { + // get next char + current++; + len--; + if( len == 0 ) { + break; + } + // display the tag char? + if( *current == STRING_COLOR_TAG ) { + // only display one of the two + start = current; + // get the next char + current++; + len--; + } else if( '0' <= *current && *current <= '9' ) { + colorindex = 0; + do { + colorindex = colorindex * 10 + (*current - '0'); + // only read as long as it makes a valid index + if( colorindex >= (int)STRING_COLORS_COUNT ) { + // undo the last operation + colorindex /= 10; + break; + } + current++; + len--; + } while( len > 0 && '0' <= *current && *current <= '9' ); + // set the color + color = string_colors[colorindex]; + // we jump over the color tag + start = current; + } + } + // go on and read normal text in until the next control char + while( len > 0 && *current != STRING_COLOR_TAG ) { + current++; + len--; + } + // display the text + if( start != current ) { + // draw the string + DrawQ_String( x, y, start, current - start, scalex, scaley, basered * color[0], basegreen * color[1], baseblue * color[2], basealpha * color[3], flags ); + // update x to be at the new start position + x += (current - start) * scalex; + // set start accordingly + start = current; + } + } + + // return the last colorindex + if( outcolor ) { + *outcolor = colorindex; + } +} + /* =============================================================================== @@ -91,6 +200,7 @@ void SCR_DrawCenterString (void) int l; int x, y; int remaining; + int color; // the finale prints the characters one at a time if (cl.intermission) @@ -102,22 +212,23 @@ void SCR_DrawCenterString (void) start = scr_centerstring; if (scr_center_lines <= 4) - y = vid.conheight*0.35; + y = vid_conheight.integer*0.35; else y = 48; + color = -1; do { // scan the width of the line - for (l=0 ; l 0) { if (remaining < l) l = remaining; - DrawQ_String(x, y, start, l, 8, 8, 1, 1, 1, 1, 0); + DrawQ_ColoredString(x, y, start, l, 8, 8, 1, 1, 1, 1, 0, &color); remaining -= l; if (remaining <= 0) return; @@ -217,12 +328,64 @@ void SCR_DrawPause (void) return; pic = Draw_CachePic ("gfx/pause", true); - DrawQ_Pic ((vid.conwidth - pic->width)/2, (vid.conheight - pic->height)/2, "gfx/pause", 0, 0, 1, 1, 1, 1, 0); + DrawQ_Pic ((vid_conwidth.integer - pic->width)/2, (vid_conheight.integer - pic->height)/2, "gfx/pause", 0, 0, 1, 1, 1, 1, 0); } +/* +============== +SCR_DrawBrand +============== +*/ +void SCR_DrawBrand (void) +{ + cachepic_t *pic; + float x, y; + + if (!scr_showbrand.value) + return; + pic = Draw_CachePic ("gfx/brand", true); + switch ((int)scr_showbrand.value) + { + case 1: // bottom left + x = 0; + y = vid_conheight.integer - pic->height; + break; + case 2: // bottom centre + x = (vid_conwidth.integer - pic->width) / 2; + y = vid_conheight.integer - pic->height; + break; + case 3: // bottom right + x = vid_conwidth.integer - pic->width; + y = vid_conheight.integer - pic->height; + break; + case 4: // centre right + x = vid_conwidth.integer - pic->width; + y = (vid_conheight.integer - pic->height) / 2; + break; + case 5: // top right + x = vid_conwidth.integer - pic->width; + y = 0; + break; + case 6: // top centre + x = (vid_conwidth.integer - pic->width) / 2; + y = 0; + break; + case 7: // top left + x = 0; + y = 0; + break; + case 8: // centre left + x = 0; + y = (vid_conheight.integer - pic->height) / 2; + break; + default: + return; + } + DrawQ_Pic (x, y, "gfx/brand", 0, 0, 1, 1, 1, 1, 0); +} //============================================================================= @@ -246,7 +409,7 @@ void SCR_SetUpToDrawConsole (void) // decide on the height of the console if (key_consoleactive & KEY_CONSOLEACTIVE_USER) - conlines = vid.conheight/2; // half screen + conlines = vid_conheight.integer/2; // half screen else conlines = 0; // none visible @@ -280,7 +443,7 @@ void SCR_DrawConsole (void) if (key_consoleactive & KEY_CONSOLEACTIVE_FORCED) { // full screen - Con_DrawConsole (vid.conheight); + Con_DrawConsole (vid_conheight.integer); } else if (scr_con_current) Con_DrawConsole (scr_con_current); @@ -320,29 +483,30 @@ void R_TimeReport(char *desc) if (!r_timereport_active || r_showtrispass) return; + qglFinish(); r_timereport_temp = r_timereport_current; r_timereport_current = Sys_DoubleTime(); t = (int) ((r_timereport_current - r_timereport_temp) * 1000000.0); - sprintf(tempbuf, "%8i %s", t, desc); - length = strlen(tempbuf); + dpsnprintf(tempbuf, sizeof(tempbuf), "%8i %s", t, desc); + length = (int)strlen(tempbuf); while (length < 20) tempbuf[length++] = ' '; tempbuf[length] = 0; - if (speedstringcount + length > (vid.conwidth / 8)) + if (speedstringcount + length > (vid_conwidth.integer / 8)) { - strcat(r_speeds_string, "\n"); + strlcat(r_speeds_string, "\n", sizeof(r_speeds_string)); speedstringcount = 0; } // skip the space at the beginning if it's the first on the line if (speedstringcount == 0) { - strcat(r_speeds_string, tempbuf + 1); + strlcat(r_speeds_string, tempbuf + 1, sizeof(r_speeds_string)); speedstringcount = length - 1; } else { - strcat(r_speeds_string, tempbuf); + strlcat(r_speeds_string, tempbuf, sizeof(r_speeds_string)); speedstringcount += length; } } @@ -355,43 +519,17 @@ void R_TimeReport_Start(void) { speedstringcount = 0; sprintf(r_speeds_string + strlen(r_speeds_string), "org:'%+8.2f %+8.2f %+8.2f' dir:'%+2.3f %+2.3f %+2.3f'\n", r_vieworigin[0], r_vieworigin[1], r_vieworigin[2], r_viewforward[0], r_viewforward[1], r_viewforward[2]); - sprintf(r_speeds_string + strlen(r_speeds_string), "world:%6i faces%6i nodes%6i leafs%6i dlitwalls\n", c_faces, c_nodes, c_leafs, c_light_polys); - sprintf(r_speeds_string + strlen(r_speeds_string), "%5i models%5i bmodels%5i sprites%6i particles%4i dlights\n", c_models, c_bmodels, c_sprites, c_particles, c_dlights); - sprintf(r_speeds_string + strlen(r_speeds_string), "%6i modeltris%6i meshs%6i meshtris\n", c_alias_polys, c_meshs, c_meshelements / 3); - sprintf(r_speeds_string + strlen(r_speeds_string), "bloom %s: %i copies (%i pixels) %i draws (%i pixels)\n", c_bloom ? "active" : "inactive", c_bloomcopies, c_bloomcopypixels, c_bloomdraws, c_bloomdrawpixels); - sprintf(r_speeds_string + strlen(r_speeds_string), "realtime lighting:%4i lights%4i clears%4i scissored\n", c_rt_lights, c_rt_clears, c_rt_scissored); - sprintf(r_speeds_string + strlen(r_speeds_string), "dynamic: %6i shadowmeshes%6i shadowtris%6i lightmeshes%6i lighttris\n", c_rt_shadowmeshes, c_rt_shadowtris, c_rt_lightmeshes, c_rt_lighttris); - sprintf(r_speeds_string + strlen(r_speeds_string), "precomputed: %6i shadowmeshes%6i shadowtris\n", c_rtcached_shadowmeshes, c_rtcached_shadowtris); - - c_alias_polys = 0; - c_light_polys = 0; - c_faces = 0; - c_nodes = 0; - c_leafs = 0; - c_models = 0; - c_bmodels = 0; - c_sprites = 0; - c_particles = 0; - c_dlights = 0; - c_meshs = 0; - c_meshelements = 0; - c_rt_lights = 0; - c_rt_clears = 0; - c_rt_scissored = 0; - c_rt_shadowmeshes = 0; - c_rt_shadowtris = 0; - c_rt_lightmeshes = 0; - c_rt_lighttris = 0; - c_rtcached_shadowmeshes = 0; - c_rtcached_shadowtris = 0; - c_bloom = 0; - c_bloomcopies = 0; - c_bloomcopypixels = 0; - c_bloomdraws = 0; - c_bloomdrawpixels = 0; + sprintf(r_speeds_string + strlen(r_speeds_string), "%5i entities%6i surfaces%6i triangles%5i leafs%5i portals%6i particles\n", renderstats.entities, renderstats.entities_surfaces, renderstats.entities_triangles, renderstats.world_leafs, renderstats.world_portals, renderstats.particles); + sprintf(r_speeds_string + strlen(r_speeds_string), "%4i lights%4i clears%4i scissored%7i light%7i shadow%i7 dynamic\n", renderstats.lights, renderstats.lights_clears, renderstats.lights_scissored, renderstats.lights_lighttriangles, renderstats.lights_shadowtriangles, renderstats.lights_dynamicshadowtriangles); + if (renderstats.bloom) + sprintf(r_speeds_string + strlen(r_speeds_string), "rendered%6i meshes%8i triangles bloompixels%8i copied%8i drawn\n", renderstats.meshes, renderstats.meshes_elements / 3, renderstats.bloom_copypixels, renderstats.bloom_drawpixels); + else + sprintf(r_speeds_string + strlen(r_speeds_string), "rendered%6i meshes%8i triangles\n", renderstats.meshes, renderstats.meshes_elements / 3); r_timereport_start = Sys_DoubleTime(); } + + memset(&renderstats, 0, sizeof(renderstats)); } void R_TimeReport_End(void) @@ -406,9 +544,9 @@ void R_TimeReport_End(void) for (i = 0;r_speeds_string[i];i++) if (r_speeds_string[i] == '\n') lines++; - y = vid.conheight - sb_lines - lines * 8; + y = vid_conheight.integer - sb_lines - lines * 8; i = j = 0; - DrawQ_Fill(0, y, vid.conwidth, lines * 8, 0, 0, 0, 0.5, 0); + DrawQ_Fill(0, y, vid_conwidth.integer, lines * 8, 0, 0, 0, 0.5, 0); while (r_speeds_string[i]) { j = i; @@ -459,6 +597,7 @@ void CL_Screen_Init(void) Cvar_RegisterVariable (&scr_showram); Cvar_RegisterVariable (&scr_showturtle); Cvar_RegisterVariable (&scr_showpause); + Cvar_RegisterVariable (&scr_showbrand); Cvar_RegisterVariable (&scr_centertime); Cvar_RegisterVariable (&scr_printspeed); Cvar_RegisterVariable (&vid_conwidth); @@ -502,14 +641,14 @@ void DrawQ_String_Real(float x, float y, const char *string, int maxlen, float s if (alpha < (1.0f / 255.0f)) return; if (maxlen < 1) - len = strlen(string); + len = (int)strlen(string); else for (len = 0;len < maxlen && string[len];len++); for (;len > 0 && string[0] == ' ';string++, x += scalex, len--); for (;len > 0 && string[len - 1] == ' ';len--); if (len < 1) return; - if (x >= vid.conwidth || y >= vid.conheight || x < (-scalex * len) || y < (-scaley)) + if (x >= vid_conwidth.integer || y >= vid_conheight.integer || x < (-scalex * len) || y < (-scaley)) return; size = sizeof(*dq) + ((len + 1 + 3) & ~3); if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize) @@ -518,7 +657,7 @@ void DrawQ_String_Real(float x, float y, const char *string, int maxlen, float s green = bound(0, green, 1); blue = bound(0, blue, 1); alpha = bound(0, alpha, 1); - dq = (void *)(r_refdef.drawqueue + r_refdef.drawqueuesize); + dq = (drawqueue_t *)(r_refdef.drawqueue + r_refdef.drawqueuesize); dq->size = size; dq->command = DRAWQUEUE_STRING; dq->flags = flags; @@ -541,6 +680,8 @@ void DrawQ_String(float x, float y, const char *string, int maxlen, float scalex DrawQ_String_Real(x,y,string,maxlen,scalex,scaley,red,green,blue,alpha,flags); } + + void DrawQ_Fill (float x, float y, float w, float h, float red, float green, float blue, float alpha, int flags) { DrawQ_SuperPic(x,y,NULL,w,h,0,0,red,green,blue,alpha,1,0,red,green,blue,alpha,0,1,red,green,blue,alpha,1,1,red,green,blue,alpha,flags); @@ -593,7 +734,7 @@ void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) size += sizeof(float[4]) * mesh->num_vertices; if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize) return; - dq = (void *)(r_refdef.drawqueue + r_refdef.drawqueuesize); + dq = (drawqueue_t *)(r_refdef.drawqueue + r_refdef.drawqueuesize); dq->size = size; dq->command = DRAWQUEUE_MESH; dq->flags = flags; @@ -603,14 +744,14 @@ void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) dq->scalex = 0; dq->scaley = 0; p = (void *)(dq + 1); - m = p;p = (qbyte*)p + sizeof(drawqueuemesh_t); + m = (drawqueuemesh_t *)p;p = (qbyte*)p + sizeof(drawqueuemesh_t); m->num_triangles = mesh->num_triangles; m->num_vertices = mesh->num_vertices; m->texture = mesh->texture; - m->data_element3i = p;memcpy(m->data_element3i , mesh->data_element3i , m->num_triangles * sizeof(int[3]));p = (qbyte*)p + m->num_triangles * sizeof(int[3]); - m->data_vertex3f = p;memcpy(m->data_vertex3f , mesh->data_vertex3f , m->num_vertices * sizeof(float[3]));p = (qbyte*)p + m->num_vertices * sizeof(float[3]); - m->data_texcoord2f = p;memcpy(m->data_texcoord2f, mesh->data_texcoord2f, m->num_vertices * sizeof(float[2]));p = (qbyte*)p + m->num_vertices * sizeof(float[2]); - m->data_color4f = p;memcpy(m->data_color4f , mesh->data_color4f , m->num_vertices * sizeof(float[4]));p = (qbyte*)p + m->num_vertices * sizeof(float[4]); + m->data_element3i = (int *)p;memcpy(m->data_element3i , mesh->data_element3i , m->num_triangles * sizeof(int[3]));p = (qbyte*)p + m->num_triangles * sizeof(int[3]); + m->data_vertex3f = (float *)p;memcpy(m->data_vertex3f , mesh->data_vertex3f , m->num_vertices * sizeof(float[3]));p = (qbyte*)p + m->num_vertices * sizeof(float[3]); + m->data_texcoord2f = (float *)p;memcpy(m->data_texcoord2f, mesh->data_texcoord2f, m->num_vertices * sizeof(float[2]));p = (qbyte*)p + m->num_vertices * sizeof(float[2]); + m->data_color4f = (float *)p;memcpy(m->data_color4f , mesh->data_color4f , m->num_vertices * sizeof(float[4]));p = (qbyte*)p + m->num_vertices * sizeof(float[4]); r_refdef.drawqueuesize += dq->size; } @@ -622,7 +763,7 @@ void DrawQ_SetClipArea(float x, float y, float width, float height) Con_DPrint("DrawQueue full !\n"); return; } - dq = (void*) (r_refdef.drawqueue + r_refdef.drawqueuesize); + dq = (drawqueue_t *) (r_refdef.drawqueue + r_refdef.drawqueuesize); dq->size = sizeof(*dq); dq->command = DRAWQUEUE_SETCLIP; dq->x = x; @@ -643,7 +784,7 @@ void DrawQ_ResetClipArea(void) Con_DPrint("DrawQueue full !\n"); return; } - dq = (void*) (r_refdef.drawqueue + r_refdef.drawqueuesize); + dq = (drawqueue_t *) (r_refdef.drawqueue + r_refdef.drawqueuesize); dq->size = sizeof(*dq); dq->command = DRAWQUEUE_RESETCLIP; dq->x = 0; @@ -692,11 +833,11 @@ void SCR_ScreenShot_f (void) sprintf(filename, "%s%06d.%s", base, shotnumber, jpeg ? "jpg" : "tga"); - buffer1 = Mem_Alloc(tempmempool, vid.realwidth * vid.realheight * 3); - buffer2 = Mem_Alloc(tempmempool, vid.realwidth * vid.realheight * 3); - buffer3 = Mem_Alloc(tempmempool, vid.realwidth * vid.realheight * 3 + 18); + buffer1 = (qbyte *)Mem_Alloc(tempmempool, vid.width * vid.height * 3); + buffer2 = (qbyte *)Mem_Alloc(tempmempool, vid.width * vid.height * 3); + buffer3 = (qbyte *)Mem_Alloc(tempmempool, vid.width * vid.height * 3 + 18); - if (SCR_ScreenShot (filename, buffer1, buffer2, buffer3, vid.realx, vid.realy, vid.realwidth, vid.realheight, false, false, false, jpeg, true)) + if (SCR_ScreenShot (filename, buffer1, buffer2, buffer3, 0, 0, vid.width, vid.height, false, false, false, jpeg, true)) Con_Printf("Wrote %s\n", filename); else Con_Printf("unable to write %s\n", filename); @@ -743,7 +884,7 @@ void SCR_CaptureVideo_BeginVideo(void) cl_capturevideo_framerate = bound(1, cl_capturevideo_fps.value, 1000); cl_capturevideo_soundrate = 0; cl_capturevideo_frame = 0; - cl_capturevideo_buffer = Mem_Alloc(tempmempool, vid.realwidth * vid.realheight * (3+3+3) + 18); + cl_capturevideo_buffer = (qbyte *)Mem_Alloc(tempmempool, vid.width * vid.height * (3+3+3) + 18); gamma = 1.0/scr_screenshot_gamma.value; /* @@ -833,7 +974,7 @@ void SCR_CaptureVideo_EndVideo(void) // finish the wave file if (cl_capturevideo_soundfile) { - i = FS_Tell (cl_capturevideo_soundfile); + i = (int)FS_Tell (cl_capturevideo_soundfile); //"RIFF", (int) unknown (chunk size), "WAVE", //"fmt ", (int) 16 (chunk size), (short) format 1 (uncompressed PCM), (short) 2 channels, (int) unknown rate, (int) unknown bytes per second, (short) 4 bytes per sample (channels * bytes per channel), (short) 16 bits per channel //"data", (int) unknown (chunk size) @@ -881,11 +1022,11 @@ void SCR_CaptureVideo_EndVideo(void) qboolean SCR_CaptureVideo_VideoFrame(int newframenum) { - int x = vid.realx, y = vid.realy, width = vid.realwidth, height = vid.realheight; + int x = 0, y = 0, width = vid.width, height = vid.height; unsigned char *b, *out; char filename[32]; int outoffset = (width/2)*(height/2); - //return SCR_ScreenShot(filename, cl_capturevideo_buffer, cl_capturevideo_buffer + vid.realwidth * vid.realheight * 3, cl_capturevideo_buffer + vid.realwidth * vid.realheight * 6, vid.realx, vid.realy, vid.realwidth, vid.realheight, false, false, false, jpeg, true); + //return SCR_ScreenShot(filename, cl_capturevideo_buffer, cl_capturevideo_buffer + vid.width * vid.height * 3, cl_capturevideo_buffer + vid.width * vid.height * 6, 0, 0, vid.width, vid.height, false, false, false, jpeg, true); // speed is critical here, so do saving as directly as possible switch (cl_capturevideo_format) { @@ -950,7 +1091,7 @@ qboolean SCR_CaptureVideo_VideoFrame(int newframenum) } return true; case CAPTUREVIDEOFORMAT_TARGA: - //return Image_WriteTGARGB_preflipped (filename, width, height, cl_capturevideo_buffer, cl_capturevideo_buffer + vid.realwidth * vid.realheight * 3, ); + //return Image_WriteTGARGB_preflipped (filename, width, height, cl_capturevideo_buffer, cl_capturevideo_buffer + vid.width * vid.height * 3, ); memset (cl_capturevideo_buffer, 0, 18); cl_capturevideo_buffer[2] = 2; // uncompressed type cl_capturevideo_buffer[12] = (width >> 0) & 0xFF; @@ -977,7 +1118,7 @@ void SCR_CaptureVideo_SoundFrame(qbyte *bufstereo16le, size_t length, int rate) if (!cl_capturevideo_soundfile) return; cl_capturevideo_soundrate = rate; - if (FS_Write (cl_capturevideo_soundfile, bufstereo16le, 4 * length) < 4 * length) + if (FS_Write (cl_capturevideo_soundfile, bufstereo16le, 4 * length) < (fs_offset_t)(4 * length)) { Cvar_SetValueQuick(&cl_capturevideo, 0); Con_Printf("video sound saving failed on frame %i, out of disk space? stopping video capture.\n", cl_capturevideo_frame); @@ -1031,7 +1172,7 @@ R_Envmap_f Grab six views for environment mapping tests =============== */ -struct +struct envmapinfo_s { float angles[3]; char *name; @@ -1075,7 +1216,7 @@ static void R_Envmap_f (void) Con_Print("envmap: size must be one of 128, 256, 512, or 1024\n"); return; } - if (size > vid.realwidth || size > vid.realheight) + if (size > vid.width || size > vid.height) { Con_Print("envmap: your resolution is not big enough to render that size\n"); return; @@ -1091,9 +1232,9 @@ static void R_Envmap_f (void) r_refdef.fov_x = 90; r_refdef.fov_y = 90; - buffer1 = Mem_Alloc(tempmempool, size * size * 3); - buffer2 = Mem_Alloc(tempmempool, size * size * 3); - buffer3 = Mem_Alloc(tempmempool, size * size * 3 + 18); + buffer1 = (qbyte *)Mem_Alloc(tempmempool, size * size * 3); + buffer2 = (qbyte *)Mem_Alloc(tempmempool, size * size * 3); + buffer3 = (qbyte *)Mem_Alloc(tempmempool, size * size * 3 + 18); for (j = 0;j < 12;j++) { @@ -1103,7 +1244,7 @@ static void R_Envmap_f (void) R_Mesh_Start(); R_RenderView(); R_Mesh_Finish(); - SCR_ScreenShot(filename, buffer1, buffer2, buffer3, vid.realx, vid.realy + vid.realheight - (r_refdef.y + r_refdef.height), size, size, envmapinfo[j].flipx, envmapinfo[j].flipy, envmapinfo[j].flipdiagonaly, false, false); + SCR_ScreenShot(filename, buffer1, buffer2, buffer3, 0, vid.height - (r_refdef.y + r_refdef.height), size, size, envmapinfo[j].flipx, envmapinfo[j].flipy, envmapinfo[j].flipdiagonaly, false, false); } Mem_Free (buffer1); @@ -1132,7 +1273,7 @@ showlmp_t showlmp[SHOWLMP_MAXLABELS]; void SHOWLMP_decodehide(void) { int i; - qbyte *lmplabel; + char *lmplabel; lmplabel = MSG_ReadString(); for (i = 0;i < SHOWLMP_MAXLABELS;i++) if (showlmp[i].isactive && strcmp(showlmp[i].label, lmplabel) == 0) @@ -1145,7 +1286,7 @@ void SHOWLMP_decodehide(void) void SHOWLMP_decodeshow(void) { int i, k; - qbyte lmplabel[256], picname[256]; + char lmplabel[256], picname[256]; float x, y; strlcpy (lmplabel,MSG_ReadString(), sizeof (lmplabel)); strlcpy (picname, MSG_ReadString(), sizeof (picname)); @@ -1200,8 +1341,6 @@ void CL_SetupScreenSize(void) { float conwidth, conheight; - VID_GetWindowSize (&vid.realx, &vid.realy, &vid.realwidth, &vid.realheight); - VID_UpdateGamma(false); conwidth = bound(320, vid_conwidth.value, 2048); @@ -1211,16 +1350,8 @@ void CL_SetupScreenSize(void) if (vid_conheight.value != conheight) Cvar_SetValue("vid_conheight", conheight); - vid.conwidth = vid_conwidth.integer; - vid.conheight = vid_conheight.integer; - -/* if (vid.realheight > 240) - { - vid.conheight = (vid.realheight - 240) * scr_2dresolution.value + 240; - vid.conheight = bound(240, vid.conheight, vid.realheight); - } - else - vid.conheight = 240;*/ + vid_conwidth.integer = vid_conwidth.integer; + vid_conheight.integer = vid_conheight.integer; SCR_SetUpToDrawConsole(); } @@ -1308,6 +1439,8 @@ void CL_UpdateScreen(void) SCR_DrawConsole(); + SCR_DrawBrand(); + SCR_UpdateScreen(); }