aboutsummaryrefslogtreecommitdiffstats
path: root/config.c
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-20 21:56:23 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-20 21:56:23 -0400
commit7a833cb244bb56dc99afe9263074b1c5253c650d (patch)
tree936b0223598ca89828fe1dd7633ac21653e63020 /config.c
parent136e87bbc0d563b33d376ae9d91cab42db8c8c4c (diff)
downloadrunes-7a833cb244bb56dc99afe9263074b1c5253c650d.tar.gz
runes-7a833cb244bb56dc99afe9263074b1c5253c650d.zip
allow configuring fg and bg default colors
Diffstat (limited to 'config.c')
-rw-r--r--config.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/config.c b/config.c
index c266682..66295bb 100644
--- a/config.c
+++ b/config.c
@@ -10,6 +10,7 @@ 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);
+static cairo_pattern_t *runes_config_parse_color(char *val);
void runes_config_init(RunesTerm *t, int argc, char *argv[])
{
@@ -27,6 +28,9 @@ static void runes_config_set_defaults(RunesTerm *t)
t->font_name = "monospace 10";
t->bold_is_bright = 1;
t->bold_is_bold = 1;
+
+ t->fgdefault = cairo_pattern_create_rgb(0.827, 0.827, 0.827);
+ t->bgdefault = cairo_pattern_create_rgb(0.0, 0.0, 0.0);
}
static FILE *runes_config_get_config_file()
@@ -124,6 +128,22 @@ static void runes_config_set(RunesTerm *t, char *key, char *val)
else if (!strcmp(key, "bold_is_bold")) {
t->bold_is_bold = runes_config_parse_bool(val);
}
+ else if (!strcmp(key, "bgcolor")) {
+ cairo_pattern_t *newcolor;
+ newcolor = runes_config_parse_color(val);
+ if (newcolor) {
+ cairo_pattern_destroy(t->bgdefault);
+ t->bgdefault = newcolor;
+ }
+ }
+ else if (!strcmp(key, "fgcolor")) {
+ cairo_pattern_t *newcolor;
+ newcolor = runes_config_parse_color(val);
+ if (newcolor) {
+ cairo_pattern_destroy(t->fgdefault);
+ t->fgdefault = newcolor;
+ }
+ }
else {
fprintf(stderr, "unknown option: '%s'\n", key);
}
@@ -147,3 +167,16 @@ static char *runes_config_parse_string(char *val)
{
return strdup(val);
}
+
+static cairo_pattern_t *runes_config_parse_color(char *val)
+{
+ int r, g, b;
+
+ if (strlen(val) != 7 || sscanf(val, "#%2x%2x%2x", &r, &g, &b) != 3) {
+ fprintf(stderr, "unknown color value: '%s'\n", val);
+ return NULL;
+ }
+
+ return cairo_pattern_create_rgb(
+ (double)r / 255.0, (double)g / 255.0, (double)b / 255.0);
+}