Permit options such as status-bg to be configured using the entire 256 colour

palette by setting "colour0" to "colour255".
This commit is contained in:
Nicholas Marriott
2009-09-10 17:16:24 +00:00
parent 3f3b01c7ce
commit 372a8cb1d9
13 changed files with 122 additions and 59 deletions

View File

@@ -18,13 +18,42 @@
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include "tmux.h"
const char *
colour_tostring(u_char c)
/*
* Colour to string conversion functions. Bit 8 of the colour means it is one
* of the 256 colour palette.
*/
void
colour_set_fg(struct grid_cell *gc, int c)
{
if (c & 0x100)
gc->flags |= GRID_FLAG_FG256;
gc->fg = c;
}
void
colour_set_bg(struct grid_cell *gc, int c)
{
if (c & 0x100)
gc->flags |= GRID_FLAG_BG256;
gc->bg = c;
}
const char *
colour_tostring(int c)
{
static char s[32];
if (c & 0x100) {
xsnprintf(s, sizeof s, "colour%u", c & ~0x100);
return (s);
}
switch (c) {
case 0:
return ("black");
@@ -51,6 +80,16 @@ colour_tostring(u_char c)
int
colour_fromstring(const char *s)
{
const char *errstr;
int n;
if (strncasecmp(s, "colour", (sizeof "colour") - 1) == 0) {
n = strtonum(s + (sizeof "colour") - 1, 0, 255, &errstr);
if (errstr != NULL)
return (-1);
return (n | 0x100);
}
if (strcasecmp(s, "black") == 0 || (s[0] == '0' && s[1] == '\0'))
return (0);
if (strcasecmp(s, "red") == 0 || (s[0] == '1' && s[1] == '\0'))