diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-09-10 17:16:24 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-09-10 17:16:24 +0000 |
commit | 372a8cb1d9c4306f74b592660b4ce394dff3e31d (patch) | |
tree | f1f14875c69932859e6d65365a4742a6ee095652 /colour.c | |
parent | 3f3b01c7ce503d98ab649fa4aecde741ce63cec0 (diff) | |
download | rtmux-372a8cb1d9c4306f74b592660b4ce394dff3e31d.tar.gz rtmux-372a8cb1d9c4306f74b592660b4ce394dff3e31d.tar.bz2 rtmux-372a8cb1d9c4306f74b592660b4ce394dff3e31d.zip |
Permit options such as status-bg to be configured using the entire 256 colour
palette by setting "colour0" to "colour255".
Diffstat (limited to 'colour.c')
-rw-r--r-- | colour.c | 41 |
1 files changed, 40 insertions, 1 deletions
@@ -18,13 +18,42 @@ #include <sys/types.h> +#include <stdlib.h> #include <string.h> #include "tmux.h" +/* + * 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(u_char c) +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')) |