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"};
void R_ClearScreen(void);
// color tag printing
-static vec4_t _draw_colors[] =
+static vec4_t string_colors[] =
{
// Quake3 colors
// LordHavoc: why on earth is cyan before magenta in Quake3?
{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
+ {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.1, 0.1, 0.1, 1.0}
};
-#define _draw_colors_count (sizeof(_draw_colors) / sizeof(vec4_t))
-#define _draw_color_tag '^'
-#define _draw_color_default 7
+#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 )
const char *start, *current;
if( !outcolor || *outcolor == -1 ) {
- colorindex = _draw_color_default;
+ colorindex = STRING_COLOR_DEFAULT;
} else {
colorindex = *outcolor;
}
- color = _draw_colors[colorindex];
+ color = string_colors[colorindex];
if( maxlen < 1)
- len = strlen( text );
+ len = (int)strlen( text );
else
- len = min( maxlen, (signed) strlen( text ) );
+ len = min( maxlen, (int) strlen( text ) );
start = current = text;
while( len > 0 ) {
// check for color control char
- if( *current == _draw_color_tag ) {
+ if( *current == STRING_COLOR_TAG ) {
// get next char
current++;
len--;
break;
}
// display the tag char?
- if( *current == _draw_color_tag ) {
+ if( *current == STRING_COLOR_TAG ) {
// only display one of the two
start = current;
// get the next char
do {
colorindex = colorindex * 10 + (*current - '0');
// only read as long as it makes a valid index
- if( colorindex >= _draw_colors_count ) {
+ if( colorindex >= (int)STRING_COLORS_COUNT ) {
// undo the last operation
colorindex /= 10;
break;
}
current++;
len--;
- } while( len > 0 && '0' <= *current && *current <= '9' )
+ } while( len > 0 && '0' <= *current && *current <= '9' );
// set the color
- color = _draw_colors[colorindex];
- // we jump over the color tag
+ 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 != _draw_color_tag ) {
+ while( len > 0 && *current != STRING_COLOR_TAG ) {
current++;
len--;
}
int l;
int x, y;
int remaining;
+ int color;
// the finale prints the characters one at a time
if (cl.intermission)
else
y = 48;
+ color = -1;
do
{
// scan the width of the line
{
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;
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);
+}
//=============================================================================
t = (int) ((r_timereport_current - r_timereport_temp) * 1000000.0);
dpsnprintf(tempbuf, sizeof(tempbuf), "%8i %s", t, desc);
- length = strlen(tempbuf);
+ length = (int)strlen(tempbuf);
while (length < 20)
tempbuf[length++] = ' ';
tempbuf[length] = 0;
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);
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--);
// 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)
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);
SCR_DrawConsole();
+ SCR_DrawBrand();
+
SCR_UpdateScreen();
}