diff options
author | corvid <corvid@lavabit.com> | 2013-01-27 01:44:59 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2013-01-27 01:44:59 +0000 |
commit | b81d6410ef72dee94915711bc5c777355a4dab20 (patch) | |
tree | f6e1f372bcd0ecf70cf19970ec27a351efe6dbb1 /src | |
parent | 0442b5f99a14f6a4eb14309b158a596f1fa433eb (diff) |
simplify ui color handling by using fltk free color indices
Diffstat (limited to 'src')
-rw-r--r-- | src/dillo.cc | 66 | ||||
-rw-r--r-- | src/prefs.h | 7 | ||||
-rw-r--r-- | src/tipwin.cc | 2 | ||||
-rw-r--r-- | src/uicmd.cc | 16 |
4 files changed, 49 insertions, 42 deletions
diff --git a/src/dillo.cc b/src/dillo.cc index 5ad34e78..cef3e451 100644 --- a/src/dillo.cc +++ b/src/dillo.cc @@ -237,43 +237,47 @@ static void checkPreferredFonts() checkFont(prefs.font_fantasy, "fantasy"); } -static void setColorFLTK(int32_t color, void (*fn) (uchar, uchar, uchar)) +/* + * Set UI color. 'color' is an 0xrrggbb value, whereas 'default_val' is a fltk + * color (index 0-0xFF, or 0xrrggbb00). + */ +static void setUIColorWdef(Fl_Color idx, int32_t color, Fl_Color default_val) { if (color != -1) - fn(color >> 16, (color >> 8) & 0xff, color & 0xff); -} - -static void setColorPrefWdef(int32_t &color, int32_t default_val) -{ - if (color == -1) - color = default_val; - else if (color == 0) - color = FL_BLACK; - else - color <<= 8; + Fl::set_color(idx, color << 8); + else if (default_val != 0xFFFFFFFF) + Fl::set_color(idx, default_val); } static void setColors() { - unsigned rgb; - - setColorFLTK(prefs.ui_main_bg_color, Fl::background); - setColorFLTK(prefs.ui_text_bg_color, Fl::background2); - setColorFLTK(prefs.ui_fg_color, Fl::foreground); - - if (prefs.ui_selection_color == -1) - rgb = Fl::get_color(fl_contrast(FL_SELECTION_COLOR, - FL_BACKGROUND2_COLOR)); - else - rgb = prefs.ui_selection_color << 8; - Fl::set_color(FL_SELECTION_COLOR, rgb); - - setColorPrefWdef(prefs.ui_button_highlight_color, - fl_lighter(FL_BACKGROUND_COLOR)); - setColorPrefWdef(prefs.ui_tab_active_bg_color, FL_BACKGROUND2_COLOR); - setColorPrefWdef(prefs.ui_tab_bg_color, FL_BACKGROUND_COLOR); - setColorPrefWdef(prefs.ui_tab_active_fg_color, FL_FOREGROUND_COLOR); - setColorPrefWdef(prefs.ui_tab_fg_color, FL_FOREGROUND_COLOR); + /* The main background is a special case because Fl::background() will + * set the "gray ramp", which is a set of lighter and darker colors based + * on the main background and used for box edges and such. + */ + if (prefs.ui_main_bg_color != -1) { + uchar r = prefs.ui_main_bg_color >> 16, + g = prefs.ui_main_bg_color >> 8 & 0xff, + b = prefs.ui_main_bg_color & 0xff; + + Fl::background(r, g, b); + } + + setUIColorWdef(FL_BACKGROUND2_COLOR, prefs.ui_text_bg_color, 0xFFFFFFFF); + setUIColorWdef(FL_FOREGROUND_COLOR, prefs.ui_fg_color, 0xFFFFFFFF); + setUIColorWdef(FL_SELECTION_COLOR, prefs.ui_selection_color, + fl_contrast(FL_SELECTION_COLOR, FL_BACKGROUND2_COLOR)); + setUIColorWdef(PREFS_UI_BUTTON_HIGHLIGHT_COLOR, + prefs.ui_button_highlight_color, + fl_lighter(FL_BACKGROUND_COLOR)); + setUIColorWdef(PREFS_UI_TAB_ACTIVE_BG_COLOR, prefs.ui_tab_active_bg_color, + Fl::get_color(FL_BACKGROUND2_COLOR)); + setUIColorWdef(PREFS_UI_TAB_BG_COLOR, prefs.ui_tab_bg_color, + Fl::get_color(FL_BACKGROUND_COLOR)); + setUIColorWdef(PREFS_UI_TAB_ACTIVE_FG_COLOR, prefs.ui_tab_active_fg_color, + Fl::get_color(FL_FOREGROUND_COLOR)); + setUIColorWdef(PREFS_UI_TAB_FG_COLOR, prefs.ui_tab_fg_color, + Fl::get_color(FL_FOREGROUND_COLOR)); } /* diff --git a/src/prefs.h b/src/prefs.h index 2b0f15e4..c7a04a9a 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -23,6 +23,13 @@ extern "C" { #define PREFS_GEOMETRY_DEFAULT_XPOS -9999 #define PREFS_GEOMETRY_DEFAULT_YPOS -9999 +/* FLTK has free color indices from 16 to 31 */ +#define PREFS_UI_BUTTON_HIGHLIGHT_COLOR 16 +#define PREFS_UI_TAB_ACTIVE_BG_COLOR 17 +#define PREFS_UI_TAB_ACTIVE_FG_COLOR 18 +#define PREFS_UI_TAB_BG_COLOR 19 +#define PREFS_UI_TAB_FG_COLOR 20 + /* Panel sizes */ enum { P_tiny = 0, P_small, P_medium }; diff --git a/src/tipwin.cc b/src/tipwin.cc index b3d18f27..100eb1c0 100644 --- a/src/tipwin.cc +++ b/src/tipwin.cc @@ -174,7 +174,7 @@ CustButton::CustButton(int x, int y, int w, int h, const char *l) : TipWinButton(x,y,w,h,l) { norm_color = color(); - light_color = prefs.ui_button_highlight_color; + light_color = PREFS_UI_BUTTON_HIGHLIGHT_COLOR; } int CustButton::handle(int e) diff --git a/src/uicmd.cc b/src/uicmd.cc index be2359da..153d5fb4 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -110,7 +110,6 @@ class CustTabs : public Fl_Group { Fl_Pack *Pack; Fl_Group *Control; CustButton *CloseBtn; - int tabcolor_inactive, tabcolor_active; void update_pack_offset(void); void resize(int x, int y, int w, int h) @@ -138,8 +137,6 @@ public: Pack = NULL; focus_counter = 0; tab_w = 50, tab_h = th, ctab_h = 1, btn_w = 20, ctl_w = 1*btn_w+2; - tabcolor_active = prefs.ui_tab_active_bg_color; - tabcolor_inactive = prefs.ui_tab_bg_color; resize(0,0,ww,ctab_h); /* tab buttons go inside a pack within a scroll */ Scroll = new Fl_Scroll(0,0,ww-ctl_w,ctab_h); @@ -283,9 +280,8 @@ UI *CustTabs::add_new_tab(UI *old_ui, int focus) btn->copy_label(DEFAULT_TAB_LABEL); btn->clear_visible_focus(); btn->box(FL_GTK_THIN_UP_BOX); - btn->color(focus ? tabcolor_active : tabcolor_inactive); - btn->labelcolor(focus ? prefs.ui_tab_active_fg_color : - prefs.ui_tab_fg_color); + btn->color(focus ? PREFS_UI_TAB_ACTIVE_BG_COLOR : PREFS_UI_TAB_BG_COLOR); + btn->labelcolor(focus ? PREFS_UI_TAB_ACTIVE_FG_COLOR:PREFS_UI_TAB_FG_COLOR); btn->ui(new_ui); btn->callback(tab_btn_cb, this); Pack->add(btn); // append @@ -413,8 +409,8 @@ void CustTabs::switch_tab(CustTabButton *cbtn) // Set old tab label to normal color if ((idx = get_btn_idx(old_ui)) != -1) { btn = (CustTabButton*)Pack->child(idx); - btn->color(tabcolor_inactive); - btn->labelcolor(prefs.ui_tab_fg_color); + btn->color(PREFS_UI_TAB_BG_COLOR); + btn->labelcolor(PREFS_UI_TAB_FG_COLOR); btn->redraw(); } /* We make a point of calling show() before value() is changed because @@ -428,8 +424,8 @@ void CustTabs::switch_tab(CustTabButton *cbtn) */ cbtn->ui()->show(); Wizard->value(cbtn->ui()); - cbtn->color(tabcolor_active); - cbtn->labelcolor(prefs.ui_tab_active_fg_color); + cbtn->color(PREFS_UI_TAB_ACTIVE_BG_COLOR); + cbtn->labelcolor(PREFS_UI_TAB_ACTIVE_FG_COLOR); cbtn->redraw(); update_pack_offset(); |