]> git.mdlowis.com Git - projs/tide.git/commitdiff
reworked color palette handling
authorMichael D. Lowis <mike@mdlowis.com>
Sat, 31 Mar 2018 01:58:50 +0000 (21:58 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Sat, 31 Mar 2018 01:58:50 +0000 (21:58 -0400)
inc/edit.h
inc/win.h
lib/config.c
lib/x11.c

index 8f173a73b1254c387fd91afc1cf6a4b606740e2e..0dbec9c330edf72eac28b65728a6e465f729f13c 100644 (file)
@@ -185,18 +185,16 @@ void job_start(char** cmd, char* data, size_t ndata, View* dest);
  *****************************************************************************/
 enum { OFF = 0, ON = 1 };
 
-typedef struct { int fg, bg; } CPair;
+enum { /* Color Names */
+    Red, Green, Yellow, Blue, Purple, Aqua, Orange,
+    EditBg, EditFg, EditSel, EditCsr,
+    TagsBg, TagsFg, TagsSel, TagsCsr,
+    ScrollBg, ScrollFg,
+    VerBdr, HorBdr,
+    ClrCount
+};
 
 extern char *TagString, *FontString;
-extern CPair Colors[28];
-extern int Palette[16];
+extern int Palette[ClrCount];
 extern int WinWidth, WinHeight, LineSpacing, Timeout, TabWidth, ScrollBy,
     ClickTime, MaxScanDist, Syntax, CopyIndent, TrimOnSave, ExpandTabs, DosLineFeed;
-enum { /* Color Variables */
-    ClrScrollNor = 0, ClrGutterNor, ClrGutterSel, ClrStatusNor, ClrTagsNor,
-    ClrTagsSel, ClrTagsCsr, ClrEditNor, ClrEditSel, ClrEditCsr, ClrEditRul,
-    ClrBorders,
-    SynNormal, SynComment, SynConstant, SynString, SynChar, SynNumber,
-    SynBoolean, SynFloat, SynVariable, SynFunction, SynKeyword, SynOperator,
-    SynPreProc, SynType, SynStatement, SynSpecial
-};
index d07027fb4f2fe29fef7b7d6198eee82052c48d9b..b4a40cf261b6adaf54a9151ceef1c0d07fff5095 100644 (file)
--- a/inc/win.h
+++ b/inc/win.h
@@ -24,7 +24,6 @@ typedef struct {
     size_t x, y;
     size_t height, width;
     size_t csrx, csry;
-    CPair clrnor, clrsel, clrcsr;
     View view;
 } Region;
 
index a3a588cb4ce249593a25d21889eadf4d988ad4f7..c4833ee87f505bcf1be3ae2a3fec6c096f610b78 100644 (file)
@@ -30,54 +30,26 @@ int /* Integer config options */
     ExpandTabs = ON,
     DosLineFeed = OFF;
 
-int Palette[16] = {
-    0xFF1d2021,
-    0xFF3c3836,
-    0xFF504945,
-    0xFF665c54,
-    0xFFbdae93,
-    0xFFd5c4a1,
-    0xFFebdbb2,
-    0xFFfbf1c7,
-    0xFFfb4934,
-    0xFFfe8019,
-    0xFFfabd2f,
-    0xFFb8bb26,
-    0xFF8ec07c,
-    0xFF83a598,
-    0xFFd3869b,
-    0xFFd65d0e
+int Palette[ClrCount] = {
+    [Red]      = 0xFFfb4934, // Red
+    [Green]    = 0xFFb8bb26, // Green
+    [Yellow]   = 0xFFfabd2f, // Yellow
+    [Blue]     = 0xFF83a598, // Blue
+    [Purple]   = 0xFF93869b, // Purple
+    [Aqua]     = 0xFF8ec07c, // Aqua
+    [Orange]   = 0xFFfe8019, // Orange
+    [EditBg]   = 0xFF1d2021, // Edit region background
+    [EditFg]   = 0xFFd5c4a1, // Edit region text
+    [EditSel]  = 0xFF504945, // Edit region selection
+    [EditCsr]  = 0xFFfbf1c7, // Edit region cursor
+    [TagsBg]   = 0xFF3c3836, // Tags region background
+    [TagsFg]   = 0xFFd5c4a1, // Tags region text
+    [TagsSel]  = 0xFF504945, // Tags region selection
+    [TagsCsr]  = 0xFFfbf1c7, // Tags region cursor
+    [ScrollBg] = 0xFF665c54, // Scroll region background
+    [ScrollFg] = 0xFF1d2021, // Scroll region foreground
+    [VerBdr]   = 0xFF665c54, // Vertical border
+    [HorBdr]   = 0xFF665c54, // Horizontal border
 };
 
-CPair Colors[28] = {
-    /* UI Colors */
-    [ClrScrollNor] = { .bg = 3, .fg = 0 },
-    [ClrGutterNor] = { .bg = 1, .fg = 4 },
-    [ClrGutterSel] = { .bg = 2, .fg = 7 },
-    [ClrStatusNor] = { .bg = 0, .fg = 5 },
-    [ClrTagsNor]   = { .bg = 1, .fg = 5 },
-    [ClrTagsSel]   = { .bg = 2, .fg = 5 },
-    [ClrTagsCsr]   = { .bg = 0, .fg = 7 },
-    [ClrEditNor]   = { .bg = 0, .fg = 5 },
-    [ClrEditSel]   = { .bg = 2, .fg = 5 },
-    [ClrEditCsr]   = { .bg = 0, .fg = 7 },
-    [ClrEditRul]   = { .bg = 0, .fg = 1 },
-    [ClrBorders]   = { .bg = 3, .fg = 3 },
-    /* Syntax Colors */
-    [SynNormal]    = { .fg = 5  },
-    [SynComment]   = { .fg = 3  },
-    [SynConstant]  = { .fg = 14 },
-    [SynNumber]    = { .fg = 14 },
-    [SynBoolean]   = { .fg = 14 },
-    [SynFloat]     = { .fg = 14 },
-    [SynString]    = { .fg = 10 },
-    [SynChar]      = { .fg = 10 },
-    [SynPreProc]   = { .fg = 8  },
-    [SynType]      = { .fg = 13 },
-    [SynKeyword]   = { .fg = 8  },
-    [SynStatement] = { .fg = 15 },
-    [SynFunction]  = { .fg = 13 },
-    [SynVariable]  = { .fg = 8  },
-    [SynSpecial]   = { .fg = 15 },
-    [SynOperator]  = { .fg = 12 },
-};
+
index 43ce8b24705714ab6d95cd5d7db22d07e26e1526..cc60f9fe1d3f1f8659f8a067057d4d44724b6066 100644 (file)
--- a/lib/x11.c
+++ b/lib/x11.c
@@ -134,15 +134,8 @@ void win_init(KeyBinding* bindings) {
     for (int i = 0; i < SCROLL; i++)
         view_init(&(Regions[i].view), NULL);
     x11_init();
+    Keys = bindings;
     CurrFont = x11_font_load(FontString);
-    Regions[SCROLL].clrnor = Colors[ClrScrollNor];
-    Regions[TAGS].clrnor = Colors[ClrTagsNor];
-    Regions[TAGS].clrsel = Colors[ClrTagsSel];
-    Regions[TAGS].clrcsr = Colors[ClrTagsCsr];
-    Regions[EDIT].clrnor = Colors[ClrEditNor];
-    Regions[EDIT].clrsel = Colors[ClrEditSel];
-    Regions[EDIT].clrcsr = Colors[ClrEditCsr];
-
     View* view = win_view(TAGS);
     view->buffer.gapstart = view->buffer.bufstart;
     view->buffer.gapend   = view->buffer.bufend;
@@ -150,8 +143,6 @@ void win_init(KeyBinding* bindings) {
     view_putstr(view, TagString);
     view_selprev(view); // clear the selection
     buf_logclear(&(view->buffer));
-
-    Keys = bindings;
 }
 
 void win_save(char* path) {
@@ -760,22 +751,19 @@ static void layout(int width, int height) {
     view_resize(editview, Regions[EDIT].height / fheight, Regions[EDIT].width / fwidth);
 }
 
-static void draw_view(int i, int width, int height) {
-    int clr_hbor = Colors[ClrBorders].bg;
-    int clr_vbor = Colors[ClrBorders].bg;
+static void draw_view(int i, int width, int height, int bg, int fg, int csr, int sel) {
     size_t fheight = x11_font_height(CurrFont);
     size_t fwidth  = x11_font_width(CurrFont);
     View* view = win_view(i);
-    x11_draw_rect(Regions[i].clrnor.bg, 0, Regions[i].y - 3, width, Regions[i].height + 8);
-    x11_draw_rect(clr_hbor, 0, Regions[i].y - 3, width, 1);
+    x11_draw_rect(bg, 0, Regions[i].y - 3, width, Regions[i].height + 8);
+    x11_draw_rect(HorBdr, 0, Regions[i].y - 3, width, 1);
     for (size_t line = 0, y = 0; y < view->nrows; y++) {
         Row* row = view_getrow(view, y);
         draw_glyphs(Regions[i].x, Regions[i].y + ((y+1) * fheight), row->cols, row->rlen, row->len);
     }
     /* place the cursor on screen */
     if (Regions[i].csrx != SIZE_MAX && Regions[i].csry != SIZE_MAX) {
-        x11_draw_rect(
-            Regions[i].clrcsr.fg,
+        x11_draw_rect(csr,
             Regions[i].x + (Regions[i].csrx * fwidth),
             Regions[i].y + (Regions[i].csry * fheight),
             1, fheight);
@@ -787,11 +775,11 @@ static void redraw(int width, int height) {
     size_t fwidth  = x11_font_width(CurrFont);
 
     layout(width, height);
-    int clrtagnor = (Regions[TAGS].clrnor.bg << 8 | Regions[TAGS].clrnor.fg);
-    int clrtagsel = (Regions[TAGS].clrsel.bg << 8 | Regions[TAGS].clrsel.fg);
+    int clrtagnor = (TagsBg  << 8 | TagsFg);
+    int clrtagsel = (TagsSel << 8 | TagsFg);
     view_update(win_view(TAGS), clrtagnor, clrtagsel, &(Regions[TAGS].csrx), &(Regions[TAGS].csry));
-    int clreditnor = (Regions[EDIT].clrnor.bg << 8 | Regions[EDIT].clrnor.fg);
-    int clreditsel = (Regions[EDIT].clrsel.bg << 8 | Regions[EDIT].clrsel.fg);
+    int clreditnor = (EditBg  << 8 | EditFg);
+    int clreditsel = (EditSel << 8 | EditFg);
     view_update(win_view(EDIT), clreditnor, clreditsel, &(Regions[EDIT].csrx), &(Regions[EDIT].csry));
 
     /* calculate and update scroll region */
@@ -805,18 +793,17 @@ static void redraw(int width, int height) {
     double scroll_off = ((double)vbeg / (double)bend);
     ScrollOffset = scroll_off, ScrollVisible = scroll_vis;
 
-    draw_view(TAGS, width, height);
-    draw_view(EDIT, width, height);
+    draw_view(TAGS, width, height, TagsBg, TagsFg, TagsCsr, TagsSel);
+    draw_view(EDIT, width, height, EditBg, EditFg, EditCsr, EditSel);
 
     /* draw the scroll region */
     size_t thumbreg = (Regions[SCROLL].height - Regions[SCROLL].y + 9);
     size_t thumboff = (size_t)((thumbreg * ScrollOffset) + (Regions[SCROLL].y - 2));
     size_t thumbsz  = (size_t)(thumbreg * ScrollVisible);
     if (thumbsz < 5) thumbsz = 5;
-    CPair clr_scroll = Colors[ClrScrollNor];
-    x11_draw_rect(Colors[ClrBorders].bg, Regions[SCROLL].width, Regions[SCROLL].y - 2, 1, Regions[SCROLL].height);
-    x11_draw_rect(clr_scroll.bg, 0, Regions[SCROLL].y - 2, Regions[SCROLL].width, thumbreg);
-    x11_draw_rect(clr_scroll.fg, 0, thumboff, Regions[SCROLL].width, thumbsz);
+    x11_draw_rect(VerBdr, Regions[SCROLL].width, Regions[SCROLL].y - 2, 1, Regions[SCROLL].height);
+    x11_draw_rect(ScrollBg, 0, Regions[SCROLL].y - 2, Regions[SCROLL].width, thumbreg);
+    x11_draw_rect(ScrollFg, 0, thumboff, Regions[SCROLL].width, thumbsz);
 }
 
 static void draw_glyphs(size_t x, size_t y, UGlyph* glyphs, size_t rlen, size_t ncols) {