diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-04-20 21:42:10 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-04-20 21:42:10 -0400 |
commit | fa6264019f315d1e7d6cb330acd136f50261e0ab (patch) | |
tree | 67d49dc1314fafb926227414c23d6f2799f27afb | |
parent | 555797e76f787fbc04466a3281d5bafb840fe6a7 (diff) | |
download | runes-fa6264019f315d1e7d6cb330acd136f50261e0ab.tar.gz runes-fa6264019f315d1e7d6cb330acd136f50261e0ab.zip |
allow configuring the interpretation of bold
-rw-r--r-- | config.c | 33 | ||||
-rw-r--r-- | display.c | 12 | ||||
-rw-r--r-- | term.h | 2 |
3 files changed, 42 insertions, 5 deletions
@@ -8,6 +8,8 @@ static void runes_config_set_defaults(RunesTerm *t); static FILE *runes_config_get_config_file(); static void runes_config_process_config_file(RunesTerm *t, FILE *config_file); static void runes_config_set(RunesTerm *t, char *key, char *value); +static char runes_config_parse_bool(char *val); +static char *runes_config_parse_string(char *val); void runes_config_init(RunesTerm *t, int argc, char *argv[]) { @@ -22,7 +24,9 @@ void runes_config_init(RunesTerm *t, int argc, char *argv[]) static void runes_config_set_defaults(RunesTerm *t) { - t->font_name = "monospace 10"; + t->font_name = "monospace 10"; + t->bold_is_bright = 1; + t->bold_is_bold = 1; } static FILE *runes_config_get_config_file() @@ -112,9 +116,34 @@ static void runes_config_process_config_file(RunesTerm *t, FILE *config_file) static void runes_config_set(RunesTerm *t, char *key, char *val) { if (!strcmp(key, "font")) { - t->font_name = strdup(val); + t->font_name = runes_config_parse_string(val); + } + else if (!strcmp(key, "bold_is_bright")) { + t->bold_is_bright = runes_config_parse_bool(val); + } + else if (!strcmp(key, "bold_is_bold")) { + t->bold_is_bold = runes_config_parse_bool(val); } else { fprintf(stderr, "unknown option: '%s'\n", key); } } + +static char runes_config_parse_bool(char *val) +{ + if (!strcmp(val, "true")) { + return 1; + } + else if (!strcmp(val, "false")) { + return 0; + } + else { + fprintf(stderr, "unknown boolean value: '%s'\n", val); + return 0; + } +} + +static char *runes_config_parse_string(char *val) +{ + return strdup(val); +} @@ -280,7 +280,10 @@ void runes_display_set_bold(RunesTerm *t) PangoAttrList *attrs; attrs = pango_layout_get_attributes(t->layout); - pango_attr_list_change(attrs, pango_attr_weight_new(PANGO_WEIGHT_BOLD)); + if (t->bold_is_bold) { + pango_attr_list_change( + attrs, pango_attr_weight_new(PANGO_WEIGHT_BOLD)); + } t->bold = 1; cairo_set_source(t->cr, runes_display_get_fgcolor(t)); } @@ -290,7 +293,10 @@ void runes_display_reset_bold(RunesTerm *t) PangoAttrList *attrs; attrs = pango_layout_get_attributes(t->layout); - pango_attr_list_change(attrs, pango_attr_weight_new(PANGO_WEIGHT_NORMAL)); + if (t->bold_is_bold) { + pango_attr_list_change( + attrs, pango_attr_weight_new(PANGO_WEIGHT_NORMAL)); + } t->bold = 0; cairo_set_source(t->cr, runes_display_get_fgcolor(t)); } @@ -483,7 +489,7 @@ static cairo_pattern_t *runes_display_get_fgcolor(RunesTerm *t) else if (color == -1) { return t->inverse ? t->bgdefault : t->fgdefault; } - else if (t->bold) { + else if (t->bold_is_bright && t->bold) { return t->brightcolors[color]; } else { @@ -41,6 +41,8 @@ struct runes_term { int readlen; int remaininglen; + char bold_is_bright; + char bold_is_bold; char bold; char inverse; char hide_cursor; |