|  | /* $Id: colour.c,v 1.3 2009-01-10 01:51:21 nicm Exp $ */ | 
|  |  | 
|  | /* | 
|  | * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net> | 
|  | * | 
|  | * Permission to use, copy, modify, and distribute this software for any | 
|  | * purpose with or without fee is hereby granted, provided that the above | 
|  | * copyright notice and this permission notice appear in all copies. | 
|  | * | 
|  | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | 
|  | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | 
|  | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | 
|  | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | 
|  | * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER | 
|  | * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING | 
|  | * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
|  | */ | 
|  |  | 
|  | #include <sys/types.h> | 
|  |  | 
|  | #include <string.h> | 
|  |  | 
|  | #include "tmux.h" | 
|  |  | 
|  | const char * | 
|  | colour_tostring(u_char c) | 
|  | { | 
|  | switch (c) { | 
|  | case 0: | 
|  | return ("black"); | 
|  | case 1: | 
|  | return ("red"); | 
|  | case 2: | 
|  | return ("green"); | 
|  | case 3: | 
|  | return ("yellow"); | 
|  | case 4: | 
|  | return ("blue"); | 
|  | case 5: | 
|  | return ("magenta"); | 
|  | case 6: | 
|  | return ("cyan"); | 
|  | case 7: | 
|  | return ("white"); | 
|  | case 8: | 
|  | return ("default"); | 
|  | } | 
|  | return (NULL); | 
|  | } | 
|  |  | 
|  | /* String to colour. */ | 
|  | u_char | 
|  | colour_fromstring(const char *s) | 
|  | { | 
|  | if (strcasecmp(s, "black") == 0 || (s[0] == '0' && s[1] == '\0')) | 
|  | return (0); | 
|  | if (strcasecmp(s, "red") == 0 || (s[0] == '1' && s[1] == '\0')) | 
|  | return (1); | 
|  | if (strcasecmp(s, "green") == 0 || (s[0] == '2' && s[1] == '\0')) | 
|  | return (2); | 
|  | if (strcasecmp(s, "yellow") == 0 || (s[0] == '3' && s[1] == '\0')) | 
|  | return (3); | 
|  | if (strcasecmp(s, "blue") == 0 || (s[0] == '4' && s[1] == '\0')) | 
|  | return (4); | 
|  | if (strcasecmp(s, "magenta") == 0 || (s[0] == '5' && s[1] == '\0')) | 
|  | return (5); | 
|  | if (strcasecmp(s, "cyan") == 0 || (s[0] == '6' && s[1] == '\0')) | 
|  | return (6); | 
|  | if (strcasecmp(s, "white") == 0 || (s[0] == '7' && s[1] == '\0')) | 
|  | return (7); | 
|  | if (strcasecmp(s, "default") == 0 || (s[0] == '8' && s[1] == '\0')) | 
|  | return (8); | 
|  | return (255); | 
|  | } | 
|  |  | 
|  | u_char | 
|  | colour_translate256(u_char c) | 
|  | { | 
|  | static const u_char table[] = { | 
|  | 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, | 
|  | 0,  4,  4,  4, 12, 12,  2,  6,  4,  4, 12, 12,  2,  2,  6,  4, | 
|  | 12, 12,  2,  2,  2,  6, 12, 12, 10, 10, 10, 10, 14, 12, 10, 10, | 
|  | 10, 10, 10, 14,  1,  5,  4,  4, 12, 12,  3,  8,  4,  4, 12, 12, | 
|  | 2,  2,  6,  4, 12, 12,  2,  2,  2,  6, 12, 12, 10, 10, 10, 10, | 
|  | 14, 12, 10, 10, 10, 10, 10, 14,  1,  1,  5,  4, 12, 12,  1,  1, | 
|  | 5,  4, 12, 12,  3,  3,  8,  4, 12, 12,  2,  2,  2,  6, 12, 12, | 
|  | 10, 10, 10, 10, 14, 12, 10, 10, 10, 10, 10, 14,  1,  1,  1,  5, | 
|  | 12, 12,  1,  1,  1,  5, 12, 12,  1,  1,  1,  5, 12, 12,  3,  3, | 
|  | 3,  7, 12, 12, 10, 10, 10, 10, 14, 12, 10, 10, 10, 10, 10, 14, | 
|  | 9,  9,  9,  9, 13, 12,  9,  9,  9,  9, 13, 12,  9,  9,  9,  9, | 
|  | 13, 12,  9,  9,  9,  9, 13, 12, 11, 11, 11, 11,  7, 12, 10, 10, | 
|  | 10, 10, 10, 14,  9,  9,  9,  9,  9, 13,  9,  9,  9,  9,  9, 13, | 
|  | 9,  9,  9,  9,  9, 13,  9,  9,  9,  9,  9, 13,  9,  9,  9,  9, | 
|  | 9, 13, 11, 11, 11, 11, 11, 15,  0,  0,  0,  0,  0,  0,  8,  8, | 
|  | 8,  8,  8,  8,  7,  7,  7,  7,  7,  7, 15, 15, 15, 15, 15, 15 | 
|  | }; | 
|  |  | 
|  | return (table[c]); | 
|  | } |