Accept names for (css-defined) colours, along with arg completion too for the color command too.
This commit is contained in:
parent
603eb89ca2
commit
00c45fbf10
1 changed files with 214 additions and 9 deletions
|
@ -2437,21 +2437,221 @@ void CL_Users_f (void)
|
||||||
Con_TPrintf ("%i total users\n", c);
|
Con_TPrintf ("%i total users\n", c);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CL_ParseColour(char *colt)
|
|
||||||
|
static struct {
|
||||||
|
const char *name;
|
||||||
|
unsigned int rgb;
|
||||||
|
} csscolours[] = {
|
||||||
|
//php-defined colours
|
||||||
|
{"aliceblue", 0xf0f8ff},
|
||||||
|
{"antiquewhite", 0xfaebd7},
|
||||||
|
{"aqua", 0x00ffff},
|
||||||
|
{"aquamarine", 0x7fffd4},
|
||||||
|
{"azure", 0xf0ffff},
|
||||||
|
{"beige", 0xf5f5dc},
|
||||||
|
{"bisque", 0xffe4c4},
|
||||||
|
{"black", 0x000000},
|
||||||
|
{"blanchedalmond", 0xffebcd},
|
||||||
|
{"blue", 0x0000ff},
|
||||||
|
{"blueviolet", 0x8a2be2},
|
||||||
|
{"brown", 0xa52a2a},
|
||||||
|
{"burlywood", 0xdeb887},
|
||||||
|
{"cadetblue", 0x5f9ea0},
|
||||||
|
{"chartreuse", 0x7fff00},
|
||||||
|
{"chocolate", 0xd2691e},
|
||||||
|
{"coral", 0xff7f50},
|
||||||
|
{"cornflowerblue", 0x6495ed},
|
||||||
|
{"cornsilk", 0xfff8dc},
|
||||||
|
{"crimson", 0xdc143c},
|
||||||
|
{"cyan", 0x00ffff},
|
||||||
|
{"darkblue", 0x00008b},
|
||||||
|
{"darkcyan", 0x008b8b},
|
||||||
|
{"darkgoldenrod", 0xb8860b},
|
||||||
|
{"darkgray", 0xa9a9a9},
|
||||||
|
{"darkgreen", 0x006400},
|
||||||
|
{"darkgrey", 0xa9a9a9},
|
||||||
|
{"darkkhaki", 0xbdb76b},
|
||||||
|
{"darkmagenta", 0x8b008b},
|
||||||
|
{"darkolivegreen", 0x556b2f},
|
||||||
|
{"darkorange", 0xff8c00},
|
||||||
|
{"darkorchid", 0x9932cc},
|
||||||
|
{"darkred", 0x8b0000},
|
||||||
|
{"darksalmon", 0xe9967a},
|
||||||
|
{"darkseagreen", 0x8fbc8f},
|
||||||
|
{"darkslateblue", 0x483d8b},
|
||||||
|
{"darkslategray", 0x2f4f4f},
|
||||||
|
{"darkslategrey", 0x2f4f4f},
|
||||||
|
{"darkturquoise", 0x00ced1},
|
||||||
|
{"darkviolet", 0x9400d3},
|
||||||
|
{"deeppink", 0xff1493},
|
||||||
|
{"deepskyblue", 0x00bfff},
|
||||||
|
{"dimgray", 0x696969},
|
||||||
|
{"dimgrey", 0x696969},
|
||||||
|
{"dodgerblue", 0x1e90ff},
|
||||||
|
{"firebrick", 0xb22222},
|
||||||
|
{"floralwhite", 0xfffaf0},
|
||||||
|
{"forestgreen", 0x228b22},
|
||||||
|
{"fuchsia", 0xff00ff},
|
||||||
|
{"gainsboro", 0xdcdcdc},
|
||||||
|
{"ghostwhite", 0xf8f8ff},
|
||||||
|
{"gold", 0xffd700},
|
||||||
|
{"goldenrod", 0xdaa520},
|
||||||
|
{"gray", 0x808080},
|
||||||
|
{"green", 0x008000},
|
||||||
|
{"greenyellow", 0xadff2f},
|
||||||
|
{"grey", 0x808080},
|
||||||
|
{"honeydew", 0xf0fff0},
|
||||||
|
{"hotpink", 0xff69b4},
|
||||||
|
{"indianred", 0xcd5c5c},
|
||||||
|
{"indigo", 0x4b0082},
|
||||||
|
{"ivory", 0xfffff0},
|
||||||
|
{"khaki", 0xf0e68c},
|
||||||
|
{"lavender", 0xe6e6fa},
|
||||||
|
{"lavenderblush", 0xfff0f5},
|
||||||
|
{"lawngreen", 0x7cfc00},
|
||||||
|
{"lemonchiffon", 0xfffacd},
|
||||||
|
{"lightblue", 0xadd8e6},
|
||||||
|
{"lightcoral", 0xf08080},
|
||||||
|
{"lightcyan", 0xe0ffff},
|
||||||
|
{"lightgoldenrodyellow",0xfafad2},
|
||||||
|
{"lightgray", 0xd3d3d3},
|
||||||
|
{"lightgreen", 0x90ee90},
|
||||||
|
{"lightgrey", 0xd3d3d3},
|
||||||
|
{"lightpink", 0xffb6c1},
|
||||||
|
{"lightsalmon", 0xffa07a},
|
||||||
|
{"lightseagreen", 0x20b2aa},
|
||||||
|
{"lightskyblue", 0x87cefa},
|
||||||
|
{"lightslategray", 0x778899},
|
||||||
|
{"lightslategrey", 0x778899},
|
||||||
|
{"lightsteelblue", 0xb0c4de},
|
||||||
|
{"lightyellow", 0xffffe0},
|
||||||
|
{"lime", 0x00ff00},
|
||||||
|
{"limegreen", 0x32cd32},
|
||||||
|
{"linen", 0xfaf0e6},
|
||||||
|
{"magenta", 0xff00ff},
|
||||||
|
{"maroon", 0x800000},
|
||||||
|
{"mediumaquamarine",0x66cdaa},
|
||||||
|
{"mediumblue", 0x0000cd},
|
||||||
|
{"mediumorchid", 0xba55d3},
|
||||||
|
{"mediumpurple", 0x9370db},
|
||||||
|
{"mediumseagreen", 0x3cb371},
|
||||||
|
{"mediumslateblue", 0x7b68ee},
|
||||||
|
{"mediumspringgreen",0x00fa9a},
|
||||||
|
{"mediumturquoise", 0x48d1cc},
|
||||||
|
{"mediumvioletred", 0xc71585},
|
||||||
|
{"midnightblue", 0x191970},
|
||||||
|
{"mintcream", 0xf5fffa},
|
||||||
|
{"mistyrose", 0xffe4e1},
|
||||||
|
{"moccasin", 0xffe4b5},
|
||||||
|
{"navajowhite", 0xffdead},
|
||||||
|
{"navy", 0x000080},
|
||||||
|
{"oldlace", 0xfdf5e6},
|
||||||
|
{"olive", 0x808000},
|
||||||
|
{"olivedrab", 0x6b8e23},
|
||||||
|
{"orange", 0xffa500},
|
||||||
|
{"orangered", 0xff4500},
|
||||||
|
{"orchid", 0xda70d6},
|
||||||
|
{"palegoldenrod", 0xeee8aa},
|
||||||
|
{"palegreen", 0x98fb98},
|
||||||
|
{"paleturquoise", 0xafeeee},
|
||||||
|
{"palevioletred", 0xdb7093},
|
||||||
|
{"papayawhip", 0xffefd5},
|
||||||
|
{"peachpuff", 0xffdab9},
|
||||||
|
{"peru", 0xcd853f},
|
||||||
|
{"pink", 0xffc0cb},
|
||||||
|
{"plum", 0xdda0dd},
|
||||||
|
{"powderblue", 0xb0e0e6},
|
||||||
|
{"purple", 0x800080},
|
||||||
|
{"red", 0xff0000},
|
||||||
|
{"rosybrown", 0xbc8f8f},
|
||||||
|
{"royalblue", 0x4169e1},
|
||||||
|
{"saddlebrown", 0x8b4513},
|
||||||
|
{"salmon", 0xfa8072},
|
||||||
|
{"sandybrown", 0xf4a460},
|
||||||
|
{"seagreen", 0x2e8b57},
|
||||||
|
{"seashell", 0xfff5ee},
|
||||||
|
{"sienna", 0xa0522d},
|
||||||
|
{"silver", 0xc0c0c0},
|
||||||
|
{"skyblue", 0x87ceeb},
|
||||||
|
{"slateblue", 0x6a5acd},
|
||||||
|
{"slategray", 0x708090},
|
||||||
|
{"slategrey", 0x708090},
|
||||||
|
{"snow", 0xfffafa},
|
||||||
|
{"springgreen", 0x00ff7f},
|
||||||
|
{"steelblue", 0x4682b4},
|
||||||
|
{"tan", 0xd2b48c},
|
||||||
|
{"teal", 0x008080},
|
||||||
|
{"thistle", 0xd8bfd8},
|
||||||
|
{"tomato", 0xff6347},
|
||||||
|
{"turquoise", 0x40e0d0},
|
||||||
|
{"violet", 0xee82ee},
|
||||||
|
{"wheat", 0xf5deb3},
|
||||||
|
{"white", 0xffffff},
|
||||||
|
{"whitesmoke", 0xf5f5f5},
|
||||||
|
{"yellow", 0xffff00},
|
||||||
|
{"yellowgreen", 0x9acd32},
|
||||||
|
};
|
||||||
|
|
||||||
|
int CL_ParseColour(const char *colt)
|
||||||
{
|
{
|
||||||
|
char *e;
|
||||||
int col;
|
int col;
|
||||||
|
size_t i;
|
||||||
if (!strncmp(colt, "0x", 2))
|
if (!strncmp(colt, "0x", 2))
|
||||||
col = 0xff000000|strtoul(colt+2, NULL, 16);
|
col = 0xff000000|strtoul(colt+2, NULL, 16);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
col = atoi(colt);
|
col = strtoul(colt, &e, 0);
|
||||||
col &= 15;
|
if (*e)
|
||||||
if (col > 13)
|
{
|
||||||
col = 13;
|
col = 0;
|
||||||
|
for (i = 0; i < countof(csscolours); i++)
|
||||||
|
if (!Q_strcasecmp(colt, csscolours[i].name))
|
||||||
|
{
|
||||||
|
col = 0xff000000 | csscolours[i].rgb;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
col &= 15;
|
||||||
|
if (col > 13)
|
||||||
|
col = 13;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
|
const char *CL_ColourName(const char *colt)
|
||||||
|
{
|
||||||
|
int col = CL_ParseColour(colt);
|
||||||
|
size_t i;
|
||||||
|
if (col & 0xff000000)
|
||||||
|
{
|
||||||
|
col &= ~0xff000000;
|
||||||
|
for (i = 0; i < countof(csscolours); i++)
|
||||||
|
if (csscolours[i].rgb == col)
|
||||||
|
colt = csscolours[i].name;
|
||||||
|
}
|
||||||
|
return colt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CL_Color_c(int argn, const char *partial, struct xcommandargcompletioncb_s *ctx)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
size_t i;
|
||||||
|
if (argn == 1 || argn == 2)
|
||||||
|
{
|
||||||
|
len = strlen(partial);
|
||||||
|
if (*partial >= '0' && *partial <= '9')
|
||||||
|
;
|
||||||
|
else for (i = 0; i < countof(csscolours); i++)
|
||||||
|
{
|
||||||
|
if (!Q_strncasecmp(partial, csscolours[i].name, len))
|
||||||
|
ctx->cb(csscolours[i].name, va("^x%x%x%x%s", (csscolours[i].rgb>>20)&15, (csscolours[i].rgb>>12)&15, (csscolours[i].rgb>>4)&15, csscolours[i].name), NULL, ctx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
void CL_Color_f (void)
|
void CL_Color_f (void)
|
||||||
{
|
{
|
||||||
// just for quake compatability...
|
// just for quake compatability...
|
||||||
|
@ -2466,13 +2666,18 @@ void CL_Color_f (void)
|
||||||
|
|
||||||
if (Cmd_Argc() == 1)
|
if (Cmd_Argc() == 1)
|
||||||
{
|
{
|
||||||
char *t = InfoBuf_ValueForKey(&cls.userinfo[pnum], "topcolor");
|
const char *t = InfoBuf_ValueForKey(&cls.userinfo[pnum], "topcolor");
|
||||||
char *b = InfoBuf_ValueForKey(&cls.userinfo[pnum], "bottomcolor");
|
const char *b = InfoBuf_ValueForKey(&cls.userinfo[pnum], "bottomcolor");
|
||||||
|
t = CL_ColourName(t);
|
||||||
|
b = CL_ColourName(b);
|
||||||
if (!*t)
|
if (!*t)
|
||||||
t = "0";
|
t = "0";
|
||||||
if (!*b)
|
if (!*b)
|
||||||
b = "0";
|
b = "0";
|
||||||
Con_TPrintf ("\"color\" is \"%s %s\"\n", t, b);
|
if (!strcmp(t, b))
|
||||||
|
Con_TPrintf ("\"color\" is \"%s\"\n", t, b);
|
||||||
|
else
|
||||||
|
Con_TPrintf ("\"color\" is \"%s %s\"\n", t, b);
|
||||||
Con_TPrintf ("usage: color <0xRRGGBB> [0xRRGGBB]\n");
|
Con_TPrintf ("usage: color <0xRRGGBB> [0xRRGGBB]\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -5441,7 +5646,7 @@ void CL_Init (void)
|
||||||
Cmd_AddCommand ("setinfo", CL_SetInfo_f);
|
Cmd_AddCommand ("setinfo", CL_SetInfo_f);
|
||||||
Cmd_AddCommand ("fullinfo", CL_FullInfo_f);
|
Cmd_AddCommand ("fullinfo", CL_FullInfo_f);
|
||||||
|
|
||||||
Cmd_AddCommand ("color", CL_Color_f);
|
Cmd_AddCommandAD ("color", CL_Color_f, CL_Color_c, NULL);
|
||||||
#if defined(NQPROT) && defined(HAVE_LEGACY)
|
#if defined(NQPROT) && defined(HAVE_LEGACY)
|
||||||
Cmd_AddCommand ("curl", CL_Curl_f);
|
Cmd_AddCommand ("curl", CL_Curl_f);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue