+ // building colorindex...
+ ch = tolower(text[i+1]);
+ tempcolorindex = 0x10000; // binary: 1,0000,0000,0000,0000
+ if (ch <= '9' && ch >= '0') tempcolorindex |= (ch - '0') << 12;
+ else if (ch >= 'a' && ch <= 'f') tempcolorindex |= (ch - 87) << 12;
+ else tempcolorindex = 0;
+ if (tempcolorindex)
+ {
+ ch = tolower(text[i+2]);
+ if (ch <= '9' && ch >= '0') tempcolorindex |= (ch - '0') << 8;
+ else if (ch >= 'a' && ch <= 'f') tempcolorindex |= (ch - 87) << 8;
+ else tempcolorindex = 0;
+ if (tempcolorindex)
+ {
+ ch = tolower(text[i+3]);
+ if (ch <= '9' && ch >= '0') tempcolorindex |= (ch - '0') << 4;
+ else if (ch >= 'a' && ch <= 'f') tempcolorindex |= (ch - 87) << 4;
+ else tempcolorindex = 0;
+ if (tempcolorindex)
+ {
+ colorindex = tempcolorindex | current_alpha;
+ // ...done! now colorindex has rgba codes (1,rrrr,gggg,bbbb,aaaa)
+ //Con_Printf("^1colorindex:^7 %x\n", colorindex);
+ DrawQ_GetTextColor(color, colorindex, basered, basegreen, baseblue, basealpha, shadow);
+ i+=3;
+ continue;
+ }
+ }
+ }
+ }
+ /*else if (ch == 'a' && i+1 < maxlen ) // ^a found
+ {
+ if (colorindex > 9) // colorindex is a RGB color
+ {
+ ch = tolower(text[i+1]);
+ if (ch <= '9' && ch >= '0') current_alpha = (ch - '0');
+ else if (ch >= 'a' && ch <= 'f') current_alpha = (ch - 87);
+ else if (ch == '+' && colorindex > 9)
+ {
+ current_alpha = colorindex & 0xf;
+ if (current_alpha < 0xf)
+ current_alpha++;
+ }
+ else if (ch == '-' && colorindex > 9)
+ {
+ current_alpha = colorindex & 0xf;
+ if (current_alpha > 0)
+ current_alpha--;
+ }
+ colorindex = ((colorindex >> 4 ) << 4) + current_alpha;
+ //Con_Printf("^1colorindex:^7 %x\n", colorindex);
+ DrawQ_GetTextColor(color, colorindex, basered, basegreen, baseblue, basealpha, shadow);
+ }