(svn r7172) -Fix [r6931]: The console showed '?' characters instead of colours. Now strip all

colours for the console. It's a bit magicky (magic numbers) but UTF8 fixes that soon.
This commit is contained in:
Darkvater 2006-11-16 17:41:24 +00:00
parent 81b84c9091
commit edcbb10565
3 changed files with 17 additions and 0 deletions

View File

@ -400,6 +400,7 @@ void IConsolePrint(uint16 color_code, const char *string)
memmove(&_iconsole_buffer[0], &_iconsole_buffer[1], sizeof(_iconsole_buffer[0]) * ICON_BUFFER);
_iconsole_buffer[ICON_BUFFER] = strdup(string);
str_strip_colours(_iconsole_buffer[ICON_BUFFER]);
str_validate(_iconsole_buffer[ICON_BUFFER]);
memmove(&_iconsole_cbuffer[0], &_iconsole_cbuffer[1], sizeof(_iconsole_cbuffer[0]) * ICON_BUFFER);

View File

@ -72,6 +72,19 @@ void str_validate(char *str)
if (!IsValidAsciiChar(*str, CS_ALPHANUMERAL)) *str = '?';
}
void str_strip_colours(char *str)
{
char *dst = str;
for (; *str != '\0';) {
if (*str >= 15 && *str <= 31) { // magic colour codes
str++;
} else {
*dst++ = *str++;
}
}
*dst = '\0';
}
/**
* Only allow certain keys. You can define the filter to be used. This makes
* sure no invalid keys can get into an editbox, like BELL.

View File

@ -29,6 +29,9 @@ char* CDECL str_fmt(const char* str, ...);
* replaces them with a question mark '?' */
void str_validate(char *str);
/** Scans the string for colour codes and strips them */
void str_strip_colours(char *str);
/**
* Valid filter types for IsValidAsciiChar.
*/