/src/bin/col.c
https://bitbucket.org/hchbaw/terminology · C · 475 lines · 421 code · 49 blank · 5 comment · 7 complexity · 4b3e0c8369aebe2557df777b31824e3d MD5 · raw file
- #include "private.h"
- #include <Elementary.h>
- #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;
- }