From: Johan Malm Date: Tue, 15 Sep 2020 19:01:41 +0000 (+0100) Subject: Split theme-builtin.c into a separate file X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=5a77c84fc837c6a31241d87c152c0c27cb8d849a;p=proto%2Flabwc.git Split theme-builtin.c into a separate file --- diff --git a/include/theme/theme.h b/include/theme/theme.h index 351b1362..5483ccd1 100644 --- a/include/theme/theme.h +++ b/include/theme/theme.h @@ -30,6 +30,13 @@ struct theme { extern struct theme theme; +/** + * parse_hexstr - parse #rrggbb + * @hex: hex string to be parsed + * @rgba: pointer to float[4] for return value + */ +void parse_hexstr(const char *hex, float *rgba); + /** * theme_read - read theme into global theme struct * @theme_name: theme-name in //openbox-3/themerc @@ -37,4 +44,11 @@ extern struct theme theme; */ void theme_read(const char *theme_name); +/** + * theme_builin - apply built-in theme similar to Clearlooks + * Note: Only used if no theme can be found. Default values for individual + * theme options are as per openbox spec and are typically black/white. + */ +void theme_builtin(void); + #endif /* __LABWC_THEME_H */ diff --git a/src/theme/meson.build b/src/theme/meson.build index a9bef667..7800344a 100644 --- a/src/theme/meson.build +++ b/src/theme/meson.build @@ -1,4 +1,5 @@ labwc_sources += files( 'theme.c', + 'theme-builtin.c', ) diff --git a/src/theme/theme-builtin.c b/src/theme/theme-builtin.c new file mode 100644 index 00000000..e99f78f2 --- /dev/null +++ b/src/theme/theme-builtin.c @@ -0,0 +1,23 @@ +/* + * We generally use Openbox defaults, but if no theme file can be found it's + * better to populate the theme variables with some sane values as no-one + * wants to use openbox without a theme - it'll all just be black and white. + * + * Openbox doesn't actual start if it can't find a theme. As it's normally + * packaged with Clearlooks, this is not a problem, but for labwc I thought + * this was a bit hard-line. People might want to try labwc without having + * Openbox (and associated themes) installed. + */ + +#include "theme/theme.h" + +/* clang-format off */ +void theme_builtin(void) +{ + parse_hexstr("#589bda", theme.window_active_title_bg_color); + parse_hexstr("#3c7cb7", theme.window_active_handle_bg_color); + parse_hexstr("#efece6", theme.window_inactive_title_bg_color); + parse_hexstr("#ffffff", theme.window_active_button_unpressed_image_color); + parse_hexstr("#000000", theme.window_inactive_button_unpressed_image_color); +} +/* clang-format on */ diff --git a/src/theme/theme.c b/src/theme/theme.c index 5942d0c6..a588beb2 100644 --- a/src/theme/theme.c +++ b/src/theme/theme.c @@ -21,7 +21,7 @@ static int hex_to_dec(char c) return 0; } -static void parse_hexstr(const char *hex, float *rgba) +void parse_hexstr(const char *hex, float *rgba) { if (!hex || hex[0] != '#' || strlen(hex) < 7) return; @@ -95,27 +95,6 @@ static void process_line(char *line) entry(key, value); } -/* - * We generally use Openbox defaults, but if no theme file can be found it's - * better to populate the theme variables with some sane values as no-one - * wants to use openbox without a theme - it'll all just be black and white. - * - * Openbox doesn't actual start if it can't find a theme. As it's normally - * packaged with Clearlooks, this is not a problem, but for labwc I thought - * this was a bit hard-line. People might want to try labwc without having - * Openbox (and associated themes) installed. - */ -/* clang-format off */ -void theme_builtin(void) -{ - parse_hexstr("#589bda", theme.window_active_title_bg_color); - parse_hexstr("#3c7cb7", theme.window_active_handle_bg_color); - parse_hexstr("#efece6", theme.window_inactive_title_bg_color); - parse_hexstr("#ffffff", theme.window_active_button_unpressed_image_color); - parse_hexstr("#000000", theme.window_inactive_button_unpressed_image_color); -} -/* clang-format on */ - void theme_read(const char *theme_name) { FILE *stream = NULL;