From 66dc33296ca97b10f60daaff8c5e4b3f95fac8cd Mon Sep 17 00:00:00 2001 From: Brian Ashworth Date: Fri, 27 Dec 2019 23:56:11 -0500 Subject: cmd_client_*: refactor duplicated code This is the second in a series of commits to refactor the color handling in sway. This removes the duplicated color parsing code in sway/commands/client.c. Additionally, this combines the parsing of colors to float arrays with that in sway/config.c and introduces a color_to_rgba function in commom/util.c. As an added bonus, this also makes it so non of the colors in a border color class will be changed unless all of the colors specified are valid. This ensures that an invalid command does not get partially applied. --- common/util.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'common/util.c') diff --git a/common/util.c b/common/util.c index 84ebab99..c7ef2ac4 100644 --- a/common/util.c +++ b/common/util.c @@ -31,6 +31,13 @@ bool parse_color(const char *color, uint32_t *result) { return true; } +void color_to_rgba(float dest[static 4], uint32_t color) { + dest[0] = ((color >> 24) & 0xff) / 255.0; + dest[1] = ((color >> 16) & 0xff) / 255.0; + dest[2] = ((color >> 8) & 0xff) / 255.0; + dest[3] = (color & 0xff) / 255.0; +} + bool parse_boolean(const char *boolean, bool current) { if (strcasecmp(boolean, "1") == 0 || strcasecmp(boolean, "yes") == 0 -- cgit v1.2.3-54-g00ecf