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);
|
||||
}
|
||||
|
||||
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;
|
||||
size_t i;
|
||||
if (!strncmp(colt, "0x", 2))
|
||||
col = 0xff000000|strtoul(colt+2, NULL, 16);
|
||||
else
|
||||
{
|
||||
col = atoi(colt);
|
||||
col &= 15;
|
||||
if (col > 13)
|
||||
col = 13;
|
||||
col = strtoul(colt, &e, 0);
|
||||
if (*e)
|
||||
{
|
||||
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;
|
||||
}
|
||||
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)
|
||||
{
|
||||
// just for quake compatability...
|
||||
|
@ -2466,13 +2666,18 @@ void CL_Color_f (void)
|
|||
|
||||
if (Cmd_Argc() == 1)
|
||||
{
|
||||
char *t = InfoBuf_ValueForKey(&cls.userinfo[pnum], "topcolor");
|
||||
char *b = InfoBuf_ValueForKey(&cls.userinfo[pnum], "bottomcolor");
|
||||
const char *t = InfoBuf_ValueForKey(&cls.userinfo[pnum], "topcolor");
|
||||
const char *b = InfoBuf_ValueForKey(&cls.userinfo[pnum], "bottomcolor");
|
||||
t = CL_ColourName(t);
|
||||
b = CL_ColourName(b);
|
||||
if (!*t)
|
||||
t = "0";
|
||||
if (!*b)
|
||||
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");
|
||||
return;
|
||||
}
|
||||
|
@ -5441,7 +5646,7 @@ void CL_Init (void)
|
|||
Cmd_AddCommand ("setinfo", CL_SetInfo_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)
|
||||
Cmd_AddCommand ("curl", CL_Curl_f);
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue