billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=962c99f3e2774af0487b0eb319ec4ea49e9f9d46

commit 962c99f3e2774af0487b0eb319ec4ea49e9f9d46
Author: Boris Faure <[email protected]>
Date:   Mon Nov 2 23:20:51 2020 +0100

    colors: have 4 blocks: normal, bright, faint and bright+faint
---
 src/bin/colors.c          | 283 +++++++++++++++++++++-------------------------
 src/bin/colors.h          |   5 +-
 src/bin/termio.c          |   2 +-
 src/bin/termiointernals.c |  18 +--
 src/bin/win.c             |   4 +-
 5 files changed, 149 insertions(+), 163 deletions(-)

diff --git a/src/bin/colors.c b/src/bin/colors.c
index c3154a0..e8d4937 100644
--- a/src/bin/colors.c
+++ b/src/bin/colors.c
@@ -55,71 +55,93 @@ static Color_Scheme default_colorscheme =
         .inverse_fg = CS( 17,  17,  17), /* #111111 */
         .inverse_bg = CS(238, 238, 238), /* #eeeeee */
    },
+   .faint = {
+        .def        = CS(135, 135, 135), /* #878787 */
+        .black      = CS(  8,   8,   8), /* #080808 */
+        .red        = CS(152,   8,   8), /* #980808 */
+        .green      = CS(  8, 152,   8), /* #089808 */
+        .yellow     = CS(152, 152,   8), /* #989808 */
+        .blue       = CS(  8,   8, 152), /* #080898 */
+        .magenta    = CS(152,   8, 152), /* #980898 */
+        .cyan       = CS(  8, 152, 152), /* #089898 */
+        .white      = CS(152, 152, 152), /* #989898 */
+        .inverse_fg = CS( 33,  33,  33), /* #212121 */
+        .inverse_bg = CS(135, 135, 135), /* #878787 */
+   },
+   .brightfaint = {
+        .def        = CS(186, 186, 186), /* #bababa */
+        .black      = CS( 84,  84,  84), /* #545454 */
+        .red        = CS(199,  84,  84), /* #c75454 */
+        .green      = CS( 84, 199,  84), /* #54c754 */
+        .yellow     = CS(199, 199,  84), /* #c7c754 */
+        .blue       = CS( 84,  84, 199), /* #5454c7 */
+        .magenta    = CS(199,  84, 199), /* #c754c7 */
+        .cyan       = CS( 84, 199, 199), /* #54c7c7 */
+        .white      = CS(199, 199, 199), /* #c7c7c7 */
+        .inverse_fg = CS( 20,  20,  20), /* #141414 */
+        .inverse_bg = CS(186, 186, 186), /* #bababa */
+   }
 };
 #undef CS
 
-static const Color default_colors[2][2][12] =
+static const Color default_colors[4][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
-        }
-   }
+     { // 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
+     },
+     { // faint
+          { 0x80, 0x80, 0x80, 0xff }, // COL_DEF
+          { 0x08, 0x08, 0x08, 0xff }, // COL_BLACK
+          { 0x98, 0x08, 0x08, 0xff }, // COL_RED
+          { 0x08, 0x98, 0x08, 0x98 }, // COL_GREEN
+          { 0x98, 0x98, 0x08, 0x98 }, // COL_YELLOW
+          { 0x08, 0x08, 0x98, 0x98 }, // COL_BLUE
+          { 0x98, 0x08, 0x98, 0x98 }, // COL_MAGENTA
+          { 0x08, 0x98, 0x98, 0x98 }, // COL_CYAN
+          { 0x98, 0x98, 0x98, 0x98 }, // COL_WHITE
+          { 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS
+          { 0x21, 0x21, 0x21, 0xff }, // COL_INVERSE
+          { 0x87, 0x87, 0x87, 0xff }, // COL_INVERSEBG
+     },
+     { // bright + faint
+          { 0xba, 0xba, 0xba, 0xff }, // COL_DEF
+          { 0x54, 0x54, 0x54, 0xff }, // COL_BLACK
+          { 0xc7, 0x54, 0x54, 0xff }, // COL_RED
+          { 0x54, 0xc7, 0x54, 0xc7 }, // COL_GREEN
+          { 0xc7, 0xc7, 0x54, 0xc7 }, // COL_YELLOW
+          { 0x54, 0x54, 0xc7, 0xc7 }, // COL_BLUE
+          { 0xc7, 0x54, 0xc7, 0xc7 }, // COL_MAGENTA
+          { 0x54, 0xc7, 0xc7, 0xc7 }, // COL_CYAN
+          { 0xc7, 0xc7, 0xc7, 0xc7 }, // COL_WHITE
+          { 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS
+          { 0x14, 0x14, 0x14, 0xff }, // COL_INVERSE
+          { 0xba, 0xba, 0xba, 0xff }, // COL_INVERSEBG
+     }
 };
 
 static const Color default_colors256[256] =
@@ -430,91 +452,31 @@ static Eet_Data_Descriptor *edd_color = NULL;
 
 void
 colors_term_init(Evas_Object *textgrid,
-                 const Evas_Object *bg,
-                 const Config *config)
+                 const Evas_Object *bg)
 {
    int c;
    char buf[32];
    int r, g , b, a;
    const Color *color;
 
+   /* 4: normal, bright, faint, bright+faint */
    for (c = 0; c < (4 * 12); c++)
      {
-        int 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))
           {
-             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;
-               }
+             color = &default_colors[c / 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,
+           textgrid, EVAS_TEXTGRID_PALETTE_STANDARD, c,
            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 = 48; c < 72; c++)
-     {
-        if (!config->colors_use)
-          {
-             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))
-               {
-                   /* faint */
-                   evas_object_textgrid_palette_set(
-                       textgrid, EVAS_TEXTGRID_PALETTE_STANDARD, c,
-                       r, g, b, a);
-               }
-          }
-     }
-   for (c = 72; c < 96; c++)
-     {
-        if (!config->colors_use)
-          {
-             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))
-               {
-                   /* faint */
-                   evas_object_textgrid_palette_set(
-                       textgrid, EVAS_TEXTGRID_PALETTE_STANDARD, c - 48,
-                       r, g, b, a);
-               }
-          }
      }
    for (c = 0; c < 256; c++)
      {
@@ -547,15 +509,12 @@ colors_standard_get(int set, int col,
                     unsigned char *b,
                     unsigned char *a)
 {
-   int s1, s2;
-   assert((set >= 0) && (set < 4));
-
-   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;
+   assert((set >= 0) && (set < 3));
+
+   *r = default_colors[set][col].r;
+   *g = default_colors[set][col].g;
+   *b = default_colors[set][col].b;
+   *a = default_colors[set][col].a;
 }
 
 void
@@ -674,6 +633,20 @@ edje_object_color_class_set(edje, "BG_SENDFILE", CS_DARK, 
CS_DARK, CS_DARK);
    CS_SET("c34" /* inverse fg */, faint.inverse_fg);
    CS_SET("c35" /* inverse bg */, faint.inverse_bg);
 
+   /* BrightFaint */
+   CS_SET("c36" /* def */,     faint.def);
+   CS_SET("c37" /* black */,   faint.black);
+   CS_SET("c38" /* red */,     faint.red);
+   CS_SET("c39" /* green */,   faint.green);
+   CS_SET("c40" /* yellow */,  faint.yellow);
+   CS_SET("c41" /* blue */,    faint.blue);
+   CS_SET("c42" /* magenta */, faint.magenta);
+   CS_SET("c43" /* cyan */,    faint.cyan);
+   CS_SET("c44" /* white */,   faint.white);
+   /* c45 is invisible, use default */
+   CS_SET("c46" /* inverse fg */, faint.inverse_fg);
+   CS_SET("c47" /* inverse bg */, faint.inverse_bg);
+
 
 #undef CS_SET
 #undef CS_SET_MANY
@@ -842,11 +815,13 @@ color_scheme_apply_from_config(Evas_Object *edje,
 void
 colors_init(void)
 {
-   Eet_Data_Descriptor_Class eddc;
+   Eet_Data_Descriptor_Class eddc_color;
+   Eet_Data_Descriptor_Class eddc_color_block;
+   Eet_Data_Descriptor_Class eddc_color_scheme;
 
    eet_eina_stream_data_descriptor_class_set
-     (&eddc, sizeof(eddc), "Color", sizeof(Color));
-   edd_color = eet_data_descriptor_stream_new(&eddc);
+     (&eddc_color, sizeof(eddc_color), "Color", sizeof(Color));
+   edd_color = eet_data_descriptor_stream_new(&eddc_color);
 
    EET_DATA_DESCRIPTOR_ADD_BASIC
      (edd_color, Color, "r", r, EET_T_UCHAR);
@@ -859,8 +834,8 @@ colors_init(void)
 
 
    eet_eina_stream_data_descriptor_class_set
-     (&eddc, sizeof(eddc), "Color_Block", sizeof(Color_Block));
-   edd_cb = eet_data_descriptor_stream_new(&eddc);
+     (&eddc_color_block, sizeof(eddc_color_block), "Color_Block", 
sizeof(Color_Block));
+   edd_cb = eet_data_descriptor_stream_new(&eddc_color_block);
 
    EET_DATA_DESCRIPTOR_ADD_SUB_NESTED
       (edd_cb, Color_Block, "def", def, edd_color);
@@ -887,8 +862,8 @@ colors_init(void)
 
 
    eet_eina_stream_data_descriptor_class_set
-     (&eddc, sizeof(eddc), "Color_Scheme", sizeof(Color_Scheme));
-   edd_cs = eet_data_descriptor_stream_new(&eddc);
+     (&eddc_color_scheme, sizeof(eddc_color_scheme), "Color_Scheme", 
sizeof(Color_Scheme));
+   edd_cs = eet_data_descriptor_stream_new(&eddc_color_scheme);
 
    EET_DATA_DESCRIPTOR_ADD_BASIC
      (edd_cs, Color_Scheme, "version", version, EET_T_INT);
@@ -930,7 +905,13 @@ colors_init(void)
       (edd_cs, Color_Scheme, "tab_title_2", tab_title_2, edd_color);
 
    EET_DATA_DESCRIPTOR_ADD_SUB_NESTED
-      (edd_cs, Color_Scheme, "normal", normal, edd_color);
+      (edd_cs, Color_Scheme, "Normal", normal, edd_cb);
+   EET_DATA_DESCRIPTOR_ADD_SUB_NESTED
+      (edd_cs, Color_Scheme, "Bright", bright, edd_cb);
+   EET_DATA_DESCRIPTOR_ADD_SUB_NESTED
+      (edd_cs, Color_Scheme, "Faint", faint, edd_cb);
+   EET_DATA_DESCRIPTOR_ADD_SUB_NESTED
+      (edd_cs, Color_Scheme, "BrightFaint", brightfaint, edd_cb);
 
 
 #if ENABLE_NLS
diff --git a/src/bin/colors.h b/src/bin/colors.h
index 75c8265..2dcdd80 100644
--- a/src/bin/colors.h
+++ b/src/bin/colors.h
@@ -20,6 +20,7 @@ struct _Color_Block
    Color white;
    Color inverse_fg;
    Color inverse_bg;
+   uint32_t _padding;
 };
 
 struct _Color_Scheme
@@ -50,13 +51,13 @@ struct _Color_Scheme
    Color_Block normal;
    Color_Block bright;
    Color_Block faint;
+   Color_Block brightfaint;
 };
 
 
 void
 colors_term_init(Evas_Object *textgrid,
-                 const Evas_Object *bg,
-                 const Config *config);
+                 const Evas_Object *bg);
 void
 colors_standard_get(int set,
                     int col,
diff --git a/src/bin/termio.c b/src/bin/termio.c
index dfef09e..26234a9 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -475,7 +475,7 @@ termio_config_update(Evas_Object *obj)
    termpty_config_update(sd->pty, sd->config);
    sd->scroll = 0;
 
-   colors_term_init(sd->grid.obj, sd->theme, sd->config);
+   colors_term_init(sd->grid.obj, sd->theme);
 
    evas_object_scale_set(sd->grid.obj, elm_config_scale_get());
    evas_object_textgrid_font_set(sd->grid.obj, sd->font.name, sd->font.size);
diff --git a/src/bin/termiointernals.c b/src/bin/termiointernals.c
index 1b47c41..707f85a 100644
--- a/src/bin/termiointernals.c
+++ b/src/bin/termiointernals.c
@@ -2645,14 +2645,18 @@ termio_internal_render(Termio *sd,
                             else if (!bgext)
                               bg = COL_INVIS;
                          }
-                       if ((cells[x].att.fgintense) && (!fgext))
-                         fg += 48;
+
                        if ((cells[x].att.bgintense) && (!bgext))
-                         bg += 48;
-                       if ((cells[x].att.bold && !cells[x].att.faint) && 
(!fgext))
-                         fg += 12;
-                       else if ((cells[x].att.faint) && (!fgext))
-                         fg += 24;
+                         bg += 12;
+
+                       if (!fgext)
+                         {
+                            if ((cells[x].att.fgintense) || 
(cells[x].att.bold))
+                              fg += 12;
+                            if (cells[x].att.faint)
+                              fg += 2 * 12;
+                         }
+
                        if (cells[x].att.inverse ^ inv)
                          {
                             int t;
diff --git a/src/bin/win.c b/src/bin/win.c
index 9d3f878..e08856b 100644
--- a/src/bin/win.c
+++ b/src/bin/win.c
@@ -5915,7 +5915,7 @@ void change_theme(Evas_Object *win, Config *config)
         if (!theme_apply(term->bg, config, "terminology/background",
                          NULL, NULL, EINA_TRUE))
           ERR("Couldn't find terminology theme!");
-        colors_term_init(termio_textgrid_get(term->termio), edje, config);
+        colors_term_init(termio_textgrid_get(term->termio), edje);
         termio_config_set(term->termio, config);
      }
 
@@ -7416,7 +7416,7 @@ term_new(Win *wn, Config *config, const char *cmd,
    term->termio = o = termio_add(wn->win, config, cmd, login_shell, cd,
                                  size_w, size_h, term, title);
    evas_object_data_set(o, "term", term);
-   colors_term_init(termio_textgrid_get(term->termio), term->bg_edj, config);
+   colors_term_init(termio_textgrid_get(term->termio), term->bg_edj);
 
    termio_theme_set(o, term->bg_edj);
 

-- 


Reply via email to