Support colors in #rrggbb form
This commit is contained in:
parent
2778c81699
commit
8351859593
15
bar.c
15
bar.c
|
@ -122,7 +122,7 @@ fill_gradient (xcb_drawable_t d, int x, int y, int width, int height, rgba_t sta
|
||||||
.r = rr,
|
.r = rr,
|
||||||
.g = gg,
|
.g = gg,
|
||||||
.b = bb,
|
.b = bb,
|
||||||
.a = 0xff
|
.a = 255,
|
||||||
};
|
};
|
||||||
|
|
||||||
xcb_change_gc(c, gc[GC_DRAW], XCB_GC_FOREGROUND, (const uint32_t []){ step.v });
|
xcb_change_gc(c, gc[GC_DRAW], XCB_GC_FOREGROUND, (const uint32_t []){ step.v });
|
||||||
|
@ -231,6 +231,7 @@ parse_color (const char *str, char **end, const rgba_t def)
|
||||||
xcb_alloc_named_color_reply_t *nc_reply;
|
xcb_alloc_named_color_reply_t *nc_reply;
|
||||||
int string_len;
|
int string_len;
|
||||||
rgba_t ret;
|
rgba_t ret;
|
||||||
|
char *ep;
|
||||||
|
|
||||||
if (!str)
|
if (!str)
|
||||||
return def;
|
return def;
|
||||||
|
@ -239,13 +240,17 @@ parse_color (const char *str, char **end, const rgba_t def)
|
||||||
if (str[0] == '-') {
|
if (str[0] == '-') {
|
||||||
if (end)
|
if (end)
|
||||||
*end = (char *)str + 1;
|
*end = (char *)str + 1;
|
||||||
|
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hex representation
|
// Hex representation
|
||||||
if (str[0] == '#') {
|
if (str[0] == '#') {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
rgba_t tmp = (rgba_t)(uint32_t)strtoul(str + 1, end, 16);
|
rgba_t tmp = (rgba_t)(uint32_t)strtoul(str + 1, &ep, 16);
|
||||||
|
|
||||||
|
if (end)
|
||||||
|
*end = ep;
|
||||||
|
|
||||||
// Some error checking is definitely good
|
// Some error checking is definitely good
|
||||||
if (errno) {
|
if (errno) {
|
||||||
|
@ -253,6 +258,12 @@ parse_color (const char *str, char **end, const rgba_t def)
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string_len = ep - (str + 1);
|
||||||
|
|
||||||
|
// If the code is in #rrggbb form then assume it's opaque
|
||||||
|
if (string_len <= 6)
|
||||||
|
tmp.a = 255;
|
||||||
|
|
||||||
// Premultiply the alpha in
|
// Premultiply the alpha in
|
||||||
if (tmp.a) {
|
if (tmp.a) {
|
||||||
// The components are clamped automagically as the rgba_t is made of uint8_t
|
// The components are clamped automagically as the rgba_t is made of uint8_t
|
||||||
|
|
Loading…
Reference in New Issue
Block a user