aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorBrian Ashworth <bosrsf04@gmail.com>2019-12-27 23:56:11 -0500
committerSimon Ser <contact@emersion.fr>2019-12-28 10:07:25 +0100
commit66dc33296ca97b10f60daaff8c5e4b3f95fac8cd (patch)
tree95cb83ff86cf43d096df4f10a3cfb402d34315f7 /common
parent97f9f0b699316ba60009b395948a712ec0b671d2 (diff)
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.
Diffstat (limited to 'common')
-rw-r--r--common/util.c7
1 files changed, 7 insertions, 0 deletions
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