[Theme] Print known colors as color name.

When printing look if the set color has a known color name, print this.
This commit is contained in:
Dave Davenport 2021-09-20 19:57:12 +02:00
parent abe4d2d85e
commit 4face975a9
4 changed files with 42 additions and 13 deletions

View File

@ -348,6 +348,7 @@ helper_pidfile_SOURCES=\
include/mode-private.h\
source/helper.c\
source/theme.c\
source/css-colors.c\
source/rofi-types.c\
include/rofi-types.h\
include/helper.h\
@ -468,6 +469,7 @@ helper_test_SOURCES=\
include/xrmoptions.h\
source/xrmoptions.c\
source/theme.c\
source/css-colors.c\
source/rofi-types.c\
include/rofi-types.h\
test/helper-test.c
@ -505,6 +507,7 @@ helper_expand_SOURCES=\
include/mode-private.h\
source/helper.c\
source/theme.c\
source/css-colors.c\
include/helper.h\
include/helper-theme.h\
include/xrmoptions.h\
@ -527,6 +530,7 @@ helper_config_cmdline_parser_SOURCES=\
include/mode-private.h\
source/helper.c\
source/theme.c\
source/css-colors.c\
source/rofi-types.c\
include/rofi-types.h\
include/helper.h\
@ -544,7 +548,8 @@ mode_test_SOURCES=\
source/dialogs/help-keys.c\
source/helper.c\
source/theme.c\
source/mode.c\
source/css-colors.c\
source/mode.c\
source/rofi-types.c\
include/rofi-types.h\
source/xrmoptions.c\
@ -560,6 +565,7 @@ helper_tokenize_SOURCES=\
include/mode-private.h\
source/helper.c\
source/theme.c\
source/css-colors.c\
source/rofi-types.c\
include/rofi-types.h\
include/helper.h\

View File

@ -86,7 +86,6 @@ typedef struct _ParseObject {
} ParseObject;
GList *prev_imported_files = NULL;
GQueue *file_queue = NULL;
GQueue *queue = NULL;

View File

@ -299,6 +299,7 @@ test('helper_pidfile test', executable('helper_pidfile.test', [
objects: rofi.extract_objects([
'config/config.c',
'source/theme.c',
'source/css-colors.c',
'source/helper.c',
'source/xrmoptions.c',
'source/rofi-types.c',
@ -317,6 +318,7 @@ test('widget test', executable('widget.test', [
'source/widgets/widget.c',
'source/widgets/textbox.c',
'source/theme.c',
'source/css-colors.c',
'source/rofi-types.c',
'source/css-colors.c',
'source/helper.c',
@ -335,6 +337,7 @@ test('box test', executable('box.test', [
'source/widgets/widget.c',
'source/widgets/box.c',
'source/theme.c',
'source/css-colors.c',
'source/rofi-types.c',
'source/css-colors.c',
'config/config.c',
@ -352,6 +355,7 @@ test('scrollbar test', executable('scrollbar.test', [
'source/widgets/widget.c',
'source/widgets/scrollbar.c',
'source/theme.c',
'source/css-colors.c',
'source/rofi-types.c',
'source/css-colors.c',
'config/config.c',
@ -369,6 +373,7 @@ test('textbox test', executable('textbox.test', [
'source/widgets/widget.c',
'source/widgets/textbox.c',
'source/theme.c',
'source/css-colors.c',
'source/rofi-types.c',
'source/css-colors.c',
'source/helper.c',
@ -383,6 +388,7 @@ test('helper test', executable('helper.test', [
objects: rofi.extract_objects([
'config/config.c',
'source/theme.c',
'source/css-colors.c',
'source/helper.c',
'source/xrmoptions.c',
'source/rofi-types.c',
@ -396,6 +402,7 @@ test('helper_expand test', executable('helper_expand.test', [
objects: rofi.extract_objects([
'config/config.c',
'source/theme.c',
'source/css-colors.c',
'source/helper.c',
'source/xrmoptions.c',
'source/rofi-types.c',
@ -409,6 +416,7 @@ test('helper_config_cmdline_parser test', executable('helper_config_cmdline_pars
objects: rofi.extract_objects([
'config/config.c',
'source/theme.c',
'source/css-colors.c',
'source/helper.c',
'source/xrmoptions.c',
'source/rofi-types.c',
@ -430,6 +438,7 @@ if check.found()
'source/helper.c',
'source/xrmoptions.c',
'source/theme.c',
'source/css-colors.c',
'source/rofi-types.c',
'source/css-colors.c',
]),
@ -444,6 +453,7 @@ if check.found()
'source/dialogs/help-keys.c',
'source/helper.c',
'source/theme.c',
'source/css-colors.c',
'source/mode.c',
'source/xrmoptions.c',
'source/rofi-types.c',
@ -459,6 +469,7 @@ if check.found()
'config/config.c',
'source/helper.c',
'source/theme.c',
'source/css-colors.c',
'source/xrmoptions.c',
'source/rofi-types.c',
]),

View File

@ -293,6 +293,27 @@ static void rofi_theme_print_distance_unit(RofiDistanceUnit *unit) {
}
}
static void rofi_theme_print_color(ThemeColor color) {
uint8_t r, g, b;
g = 255 * color.green;
r = 255 * color.red;
b = 255 * color.blue;
if (color.alpha < 0.00001) {
printf("transparent");
return;
}
for (uint32_t x = 0; x < num_CSSColors; x++) {
if (CSSColors[x].r == r && CSSColors[x].g == g && CSSColors[x].b == b) {
printf("%s", CSSColors[x].name);
if (color.alpha < 1) {
printf("/%.0f%%", color.alpha * 100.0);
}
return;
}
}
printf("rgba ( %.0f, %.0f, %.0f, %.0f %% )", (color.red * 255.0),
(color.green * 255.0), (color.blue * 255.0), (color.alpha * 100.0));
}
static void rofi_theme_print_distance(RofiDistance d) {
if (d.base.modtype == ROFI_DISTANCE_MODIFIER_GROUP) {
fputs("calc( ", stdout);
@ -345,11 +366,7 @@ static void int_rofi_theme_print_property(Property *p) {
printf("italic ");
}
if (p->value.highlight.style & ROFI_HL_COLOR) {
printf("rgba ( %.0f, %.0f, %.0f, %.0f %% )",
(p->value.highlight.color.red * 255.0),
(p->value.highlight.color.green * 255.0),
(p->value.highlight.color.blue * 255.0),
(p->value.highlight.color.alpha * 100.0));
rofi_theme_print_color(p->value.highlight.color);
}
break;
case P_POSITION: {
@ -401,9 +418,7 @@ static void int_rofi_theme_print_property(Property *p) {
printf("%s", p->value.b ? "true" : "false");
break;
case P_COLOR:
printf("rgba ( %.0f, %.0f, %.0f, %.0f %% )", (p->value.color.red * 255.0),
(p->value.color.green * 255.0), (p->value.color.blue * 255.0),
(p->value.color.alpha * 100.0));
rofi_theme_print_color(p->value.color);
break;
case P_IMAGE: {
if (p->value.image.type == ROFI_IMAGE_URL) {
@ -415,9 +430,7 @@ static void int_rofi_theme_print_property(Property *p) {
for (GList *l = g_list_first(p->value.image.colors); l != NULL;
l = g_list_next(l)) {
ThemeColor *color = (ThemeColor *)l->data;
printf("rgba ( %.0f, %.0f, %.0f, %.0f %% )", (color->red * 255.0),
(color->green * 255.0), (color->blue * 255.0),
(color->alpha * 100.0));
rofi_theme_print_color(*color);
index++;
if (index < length) {
printf(", ");