#include "private.h" #include #include "config.h" #include "col.h" typedef struct _Color Color; struct _Color { unsigned char r; unsigned char g; unsigned char b; unsigned char a; }; static const Color default_colors[2][2][12] = { { // normal { // normal { 0xaa, 0xaa, 0xaa, 0xff }, // COL_DEF { 0x00, 0x00, 0x00, 0xff }, // COL_BLACK { 0xc0, 0x00, 0x00, 0xff }, // COL_RED { 0x00, 0xc0, 0x00, 0xff }, // COL_GREEN { 0xc0, 0xc0, 0x00, 0xff }, // COL_YELLOW { 0x00, 0x00, 0xc0, 0xff }, // COL_BLUE { 0xc0, 0x00, 0xc0, 0xff }, // COL_MAGENTA { 0x00, 0xc0, 0xc0, 0xff }, // COL_CYAN { 0xc0, 0xc0, 0xc0, 0xff }, // COL_WHITE { 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS { 0x22, 0x22, 0x22, 0xff }, // COL_INVERSE { 0xaa, 0xaa, 0xaa, 0xff }, // COL_INVERSEBG }, { // bright/bold { 0xee, 0xee, 0xee, 0xff }, // COL_DEF { 0xcc, 0xcc, 0xcc, 0xff }, // COL_BLACK { 0xcc, 0x88, 0x88, 0xff }, // COL_RED { 0x88, 0xcc, 0x88, 0xff }, // COL_GREEN { 0xcc, 0xaa, 0x88, 0xff }, // COL_YELLOW { 0x88, 0x88, 0xcc, 0xff }, // COL_BLUE { 0xcc, 0x88, 0xcc, 0xff }, // COL_MAGENTA { 0x88, 0xcc, 0xcc, 0xff }, // COL_CYAN { 0xcc, 0xcc, 0xcc, 0xff }, // COL_WHITE { 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS { 0x11, 0x11, 0x11, 0xff }, // COL_INVERSE { 0xee, 0xee, 0xee, 0xff }, // COL_INVERSEBG }, }, { // intense { // normal { 0xdd, 0xdd, 0xdd, 0xff }, // COL_DEF { 0x80, 0x80, 0x80, 0xff }, // COL_BLACK { 0xff, 0x80, 0x80, 0xff }, // COL_RED { 0x80, 0xff, 0x80, 0xff }, // COL_GREEN { 0xff, 0xff, 0x80, 0xff }, // COL_YELLOW { 0x80, 0x80, 0xff, 0xff }, // COL_BLUE { 0xff, 0x80, 0xff, 0xff }, // COL_MAGENTA { 0x80, 0xff, 0xff, 0xff }, // COL_CYAN { 0xff, 0xff, 0xff, 0xff }, // COL_WHITE { 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS { 0x11, 0x11, 0x11, 0xff }, // COL_INVERSE { 0xcc, 0xcc, 0xcc, 0xff }, // COL_INVERSEBG }, { // bright/bold { 0xff, 0xff, 0xff, 0xff }, // COL_DEF { 0xcc, 0xcc, 0xcc, 0xff }, // COL_BLACK { 0xff, 0xcc, 0xcc, 0xff }, // COL_RED { 0xcc, 0xff, 0xcc, 0xff }, // COL_GREEN { 0xff, 0xff, 0xcc, 0xff }, // COL_YELLOW { 0xcc, 0xcc, 0xff, 0xff }, // COL_BLUE { 0xff, 0xcc, 0xff, 0xff }, // COL_MAGENTA { 0xcc, 0xff, 0xff, 0xff }, // COL_CYAN { 0xff, 0xff, 0xff, 0xff }, // COL_WHITE { 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS { 0x00, 0x00, 0x00, 0xff }, // COL_INVERSE { 0xff, 0xff, 0xff, 0xff }, // COL_INVERSEBG } } }; static const Color default_colors256[256] = { // basic 16 repeated { 0x00, 0x00, 0x00, 0xff }, // COL_BLACK { 0xc0, 0x00, 0x00, 0xff }, // COL_RED { 0x00, 0xc0, 0x00, 0xff }, // COL_GREEN { 0xc0, 0xc0, 0x00, 0xff }, // COL_YELLOW { 0x00, 0x00, 0xc0, 0xff }, // COL_BLUE { 0xc0, 0x00, 0xc0, 0xff }, // COL_MAGENTA { 0x00, 0xc0, 0xc0, 0xff }, // COL_CYAN { 0xc0, 0xc0, 0xc0, 0xff }, // COL_WHITE { 0x80, 0x80, 0x80, 0xff }, // COL_BLACK { 0xff, 0x80, 0x80, 0xff }, // COL_RED { 0x80, 0xff, 0x80, 0xff }, // COL_GREEN { 0xff, 0xff, 0x80, 0xff }, // COL_YELLOW { 0x80, 0x80, 0xff, 0xff }, // COL_BLUE { 0xff, 0x80, 0xff, 0xff }, // COL_MAGENTA { 0x80, 0xff, 0xff, 0xff }, // COL_CYAN { 0xff, 0xff, 0xff, 0xff }, // COL_WHITE // pure 6x6x6 colorcube { 0x00, 0x00, 0x00, 0xff }, { 0x00, 0x00, 0x5f, 0xff }, { 0x00, 0x00, 0x87, 0xff }, { 0x00, 0x00, 0xaf, 0xff }, { 0x00, 0x00, 0xd7, 0xff }, { 0x00, 0x00, 0xff, 0xff }, { 0x00, 0x5f, 0x00, 0xff }, { 0x00, 0x5f, 0x5f, 0xff }, { 0x00, 0x5f, 0x87, 0xff }, { 0x00, 0x5f, 0xaf, 0xff }, { 0x00, 0x5f, 0xd7, 0xff }, { 0x00, 0x5f, 0xff, 0xff }, { 0x00, 0x87, 0x00, 0xff }, { 0x00, 0x87, 0x5f, 0xff }, { 0x00, 0x87, 0x87, 0xff }, { 0x00, 0x87, 0xaf, 0xff }, { 0x00, 0x87, 0xd7, 0xff }, { 0x00, 0x87, 0xff, 0xff }, { 0x00, 0xaf, 0x00, 0xff }, { 0x00, 0xaf, 0x5f, 0xff }, { 0x00, 0xaf, 0x87, 0xff }, { 0x00, 0xaf, 0xaf, 0xff }, { 0x00, 0xaf, 0xd7, 0xff }, { 0x00, 0xaf, 0xff, 0xff }, { 0x00, 0xd7, 0x00, 0xff }, { 0x00, 0xd7, 0x5f, 0xff }, { 0x00, 0xd7, 0x87, 0xff }, { 0x00, 0xd7, 0xaf, 0xff }, { 0x00, 0xd7, 0xd7, 0xff }, { 0x00, 0xd7, 0xff, 0xff }, { 0x00, 0xff, 0x00, 0xff }, { 0x00, 0xff, 0x5f, 0xff }, { 0x00, 0xff, 0x87, 0xff }, { 0x00, 0xff, 0xaf, 0xff }, { 0x00, 0xff, 0xd7, 0xff }, { 0x00, 0xff, 0xff, 0xff }, { 0x5f, 0x00, 0x00, 0xff }, { 0x5f, 0x00, 0x5f, 0xff }, { 0x5f, 0x00, 0x87, 0xff }, { 0x5f, 0x00, 0xaf, 0xff }, { 0x5f, 0x00, 0xd7, 0xff }, { 0x5f, 0x00, 0xff, 0xff }, { 0x5f, 0x5f, 0x00, 0xff }, { 0x5f, 0x5f, 0x5f, 0xff }, { 0x5f, 0x5f, 0x87, 0xff }, { 0x5f, 0x5f, 0xaf, 0xff }, { 0x5f, 0x5f, 0xd7, 0xff }, { 0x5f, 0x5f, 0xff, 0xff }, { 0x5f, 0x87, 0x00, 0xff }, { 0x5f, 0x87, 0x5f, 0xff }, { 0x5f, 0x87, 0x87, 0xff }, { 0x5f, 0x87, 0xaf, 0xff }, { 0x5f, 0x87, 0xd7, 0xff }, { 0x5f, 0x87, 0xff, 0xff }, { 0x5f, 0xaf, 0x00, 0xff }, { 0x5f, 0xaf, 0x5f, 0xff }, { 0x5f, 0xaf, 0x87, 0xff }, { 0x5f, 0xaf, 0xaf, 0xff }, { 0x5f, 0xaf, 0xd7, 0xff }, { 0x5f, 0xaf, 0xff, 0xff }, { 0x5f, 0xd7, 0x00, 0xff }, { 0x5f, 0xd7, 0x5f, 0xff }, { 0x5f, 0xd7, 0x87, 0xff }, { 0x5f, 0xd7, 0xaf, 0xff }, { 0x5f, 0xd7, 0xd7, 0xff }, { 0x5f, 0xd7, 0xff, 0xff }, { 0x5f, 0xff, 0x00, 0xff }, { 0x5f, 0xff, 0x5f, 0xff }, { 0x5f, 0xff, 0x87, 0xff }, { 0x5f, 0xff, 0xaf, 0xff }, { 0x5f, 0xff, 0xd7, 0xff }, { 0x5f, 0xff, 0xff, 0xff }, { 0x87, 0x00, 0x00, 0xff }, { 0x87, 0x00, 0x5f, 0xff }, { 0x87, 0x00, 0x87, 0xff }, { 0x87, 0x00, 0xaf, 0xff }, { 0x87, 0x00, 0xd7, 0xff }, { 0x87, 0x00, 0xff, 0xff }, { 0x87, 0x5f, 0x00, 0xff }, { 0x87, 0x5f, 0x5f, 0xff }, { 0x87, 0x5f, 0x87, 0xff }, { 0x87, 0x5f, 0xaf, 0xff }, { 0x87, 0x5f, 0xd7, 0xff }, { 0x87, 0x5f, 0xff, 0xff }, { 0x87, 0x87, 0x00, 0xff }, { 0x87, 0x87, 0x5f, 0xff }, { 0x87, 0x87, 0x87, 0xff }, { 0x87, 0x87, 0xaf, 0xff }, { 0x87, 0x87, 0xd7, 0xff }, { 0x87, 0x87, 0xff, 0xff }, { 0x87, 0xaf, 0x00, 0xff }, { 0x87, 0xaf, 0x5f, 0xff }, { 0x87, 0xaf, 0x87, 0xff }, { 0x87, 0xaf, 0xaf, 0xff }, { 0x87, 0xaf, 0xd7, 0xff }, { 0x87, 0xaf, 0xff, 0xff }, { 0x87, 0xd7, 0x00, 0xff }, { 0x87, 0xd7, 0x5f, 0xff }, { 0x87, 0xd7, 0x87, 0xff }, { 0x87, 0xd7, 0xaf, 0xff }, { 0x87, 0xd7, 0xd7, 0xff }, { 0x87, 0xd7, 0xff, 0xff }, { 0x87, 0xff, 0x00, 0xff }, { 0x87, 0xff, 0x5f, 0xff }, { 0x87, 0xff, 0x87, 0xff }, { 0x87, 0xff, 0xaf, 0xff }, { 0x87, 0xff, 0xd7, 0xff }, { 0x87, 0xff, 0xff, 0xff }, { 0xaf, 0x00, 0x00, 0xff }, { 0xaf, 0x00, 0x5f, 0xff }, { 0xaf, 0x00, 0x87, 0xff }, { 0xaf, 0x00, 0xaf, 0xff }, { 0xaf, 0x00, 0xd7, 0xff }, { 0xaf, 0x00, 0xff, 0xff }, { 0xaf, 0x5f, 0x00, 0xff }, { 0xaf, 0x5f, 0x5f, 0xff }, { 0xaf, 0x5f, 0x87, 0xff }, { 0xaf, 0x5f, 0xaf, 0xff }, { 0xaf, 0x5f, 0xd7, 0xff }, { 0xaf, 0x5f, 0xff, 0xff }, { 0xaf, 0x87, 0x00, 0xff }, { 0xaf, 0x87, 0x5f, 0xff }, { 0xaf, 0x87, 0x87, 0xff }, { 0xaf, 0x87, 0xaf, 0xff }, { 0xaf, 0x87, 0xd7, 0xff }, { 0xaf, 0x87, 0xff, 0xff }, { 0xaf, 0xaf, 0x00, 0xff }, { 0xaf, 0xaf, 0x5f, 0xff }, { 0xaf, 0xaf, 0x87, 0xff }, { 0xaf, 0xaf, 0xaf, 0xff }, { 0xaf, 0xaf, 0xd7, 0xff }, { 0xaf, 0xaf, 0xff, 0xff }, { 0xaf, 0xd7, 0x00, 0xff }, { 0xaf, 0xd7, 0x5f, 0xff }, { 0xaf, 0xd7, 0x87, 0xff }, { 0xaf, 0xd7, 0xaf, 0xff }, { 0xaf, 0xd7, 0xd7, 0xff }, { 0xaf, 0xd7, 0xff, 0xff }, { 0xaf, 0xff, 0x00, 0xff }, { 0xaf, 0xff, 0x5f, 0xff }, { 0xaf, 0xff, 0x87, 0xff }, { 0xaf, 0xff, 0xaf, 0xff }, { 0xaf, 0xff, 0xd7, 0xff }, { 0xaf, 0xff, 0xff, 0xff }, { 0xd7, 0x00, 0x00, 0xff }, { 0xd7, 0x00, 0x5f, 0xff }, { 0xd7, 0x00, 0x87, 0xff }, { 0xd7, 0x00, 0xaf, 0xff }, { 0xd7, 0x00, 0xd7, 0xff }, { 0xd7, 0x00, 0xff, 0xff }, { 0xd7, 0x5f, 0x00, 0xff }, { 0xd7, 0x5f, 0x5f, 0xff }, { 0xd7, 0x5f, 0x87, 0xff }, { 0xd7, 0x5f, 0xaf, 0xff }, { 0xd7, 0x5f, 0xd7, 0xff }, { 0xd7, 0x5f, 0xff, 0xff }, { 0xd7, 0x87, 0x00, 0xff }, { 0xd7, 0x87, 0x5f, 0xff }, { 0xd7, 0x87, 0x87, 0xff }, { 0xd7, 0x87, 0xaf, 0xff }, { 0xd7, 0x87, 0xd7, 0xff }, { 0xd7, 0x87, 0xff, 0xff }, { 0xd7, 0xaf, 0x00, 0xff }, { 0xd7, 0xaf, 0x5f, 0xff }, { 0xd7, 0xaf, 0x87, 0xff }, { 0xd7, 0xaf, 0xaf, 0xff }, { 0xd7, 0xaf, 0xd7, 0xff }, { 0xd7, 0xaf, 0xff, 0xff }, { 0xd7, 0xd7, 0x00, 0xff }, { 0xd7, 0xd7, 0x5f, 0xff }, { 0xd7, 0xd7, 0x87, 0xff }, { 0xd7, 0xd7, 0xaf, 0xff }, { 0xd7, 0xd7, 0xd7, 0xff }, { 0xd7, 0xd7, 0xff, 0xff }, { 0xd7, 0xff, 0x00, 0xff }, { 0xd7, 0xff, 0x5f, 0xff }, { 0xd7, 0xff, 0x87, 0xff }, { 0xd7, 0xff, 0xaf, 0xff }, { 0xd7, 0xff, 0xd7, 0xff }, { 0xd7, 0xff, 0xff, 0xff }, { 0xff, 0x00, 0x00, 0xff }, { 0xff, 0x00, 0x5f, 0xff }, { 0xff, 0x00, 0x87, 0xff }, { 0xff, 0x00, 0xaf, 0xff }, { 0xff, 0x00, 0xd7, 0xff }, { 0xff, 0x00, 0xff, 0xff }, { 0xff, 0x5f, 0x00, 0xff }, { 0xff, 0x5f, 0x5f, 0xff }, { 0xff, 0x5f, 0x87, 0xff }, { 0xff, 0x5f, 0xaf, 0xff }, { 0xff, 0x5f, 0xd7, 0xff }, { 0xff, 0x5f, 0xff, 0xff }, { 0xff, 0x87, 0x00, 0xff }, { 0xff, 0x87, 0x5f, 0xff }, { 0xff, 0x87, 0x87, 0xff }, { 0xff, 0x87, 0xaf, 0xff }, { 0xff, 0x87, 0xd7, 0xff }, { 0xff, 0x87, 0xff, 0xff }, { 0xff, 0xaf, 0x00, 0xff }, { 0xff, 0xaf, 0x5f, 0xff }, { 0xff, 0xaf, 0x87, 0xff }, { 0xff, 0xaf, 0xaf, 0xff }, { 0xff, 0xaf, 0xd7, 0xff }, { 0xff, 0xaf, 0xff, 0xff }, { 0xff, 0xd7, 0x00, 0xff }, { 0xff, 0xd7, 0x5f, 0xff }, { 0xff, 0xd7, 0x87, 0xff }, { 0xff, 0xd7, 0xaf, 0xff }, { 0xff, 0xd7, 0xd7, 0xff }, { 0xff, 0xd7, 0xff, 0xff }, { 0xff, 0xff, 0x00, 0xff }, { 0xff, 0xff, 0x5f, 0xff }, { 0xff, 0xff, 0x87, 0xff }, { 0xff, 0xff, 0xaf, 0xff }, { 0xff, 0xff, 0xd7, 0xff }, { 0xff, 0xff, 0xff, 0xff }, // greyscale ramp (24 not including black and white, so 26 if included) { 0x08, 0x08, 0x08, 0xff }, { 0x12, 0x12, 0x12, 0xff }, { 0x1c, 0x1c, 0x1c, 0xff }, { 0x26, 0x26, 0x26, 0xff }, { 0x30, 0x30, 0x30, 0xff }, { 0x3a, 0x3a, 0x3a, 0xff }, { 0x44, 0x44, 0x44, 0xff }, { 0x4e, 0x4e, 0x4e, 0xff }, { 0x58, 0x58, 0x58, 0xff }, { 0x62, 0x62, 0x62, 0xff }, { 0x6c, 0x6c, 0x6c, 0xff }, { 0x76, 0x76, 0x76, 0xff }, { 0x80, 0x80, 0x80, 0xff }, { 0x8a, 0x8a, 0x8a, 0xff }, { 0x94, 0x94, 0x94, 0xff }, { 0x9e, 0x9e, 0x9e, 0xff }, { 0xa8, 0xa8, 0xa8, 0xff }, { 0xb2, 0xb2, 0xb2, 0xff }, { 0xbc, 0xbc, 0xbc, 0xff }, { 0xc6, 0xc6, 0xc6, 0xff }, { 0xd0, 0xd0, 0xd0, 0xff }, { 0xda, 0xda, 0xda, 0xff }, { 0xe4, 0xe4, 0xe4, 0xff }, { 0xee, 0xee, 0xee, 0xff }, }; void colors_term_init(Evas_Object *textgrid, Evas_Object *bg, Config *config) { int c, n; char buf[32]; int r, g , b, a; const Color *color; for (c = 0; c < (4 * 12); c++) { n = c + (24 * (c / 24)); if (config->colors_use) { r = config->colors[c].r; g = config->colors[c].g; b = config->colors[c].b; a = config->colors[c].a; } else { snprintf(buf, sizeof(buf) - 1, "c%i", c); if (!edje_object_color_class_get(bg, buf, &r, &g, &b, &a, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) { color = &default_colors[c / 24][(c % 24) / 12][c % 12]; r = color->r; g = color->g; b = color->b; a = color->a; } } /* normal */ evas_object_textgrid_palette_set( textgrid, EVAS_TEXTGRID_PALETTE_STANDARD, n, r, g, b, a); /* faint */ evas_object_textgrid_palette_set( textgrid, EVAS_TEXTGRID_PALETTE_STANDARD, n + 24, r / 2, g / 2, b / 2, a / 2); } for (c = 0; c < 256; c++) { snprintf(buf, sizeof(buf) - 1, "C%i", c); if (!edje_object_color_class_get(bg, buf, &r, &g, &b, &a, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) { color = &default_colors256[c]; r = color->r; g = color->g; b = color->b; a = color->a; } evas_object_textgrid_palette_set( textgrid, EVAS_TEXTGRID_PALETTE_EXTENDED, c, r, g, b, a); } } void colors_standard_get(int set, int col, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a) { if ((set >= 0) && (set < 4)) { int s1, s2; s1 = set / 2; s2 = set % 2; *r = default_colors[s1][s2][col].r; *g = default_colors[s1][s2][col].g; *b = default_colors[s1][s2][col].b; *a = default_colors[s1][s2][col].a; return; } *r = 0; *g = 0; *b = 0; *a = 0; }