float window_active_title_bg_color[4];
float window_active_handle_bg_color[4];
float window_inactive_title_bg_color[4];
+ float window_active_button_unpressed_image_color[4];
struct wlr_texture *xbm_close;
struct wlr_texture *xbm_maximize;
struct wlr_texture *xbm_iconify;
int height;
};
+/**
+ * parse_set_color - set color to be used when parsing icons
+ * @rgba: four floats representing red, green, blue, alpha
+ */
+void parse_set_color(float *rgba);
+
/**
* parse_xbm_tokens - parse xbm tokens and create pixmap
* @tokens: token vector
parse_hexstr(value, theme.window_active_handle_bg_color);
if (match(key, "window.inactive.title.bg.color"))
parse_hexstr(value, theme.window_inactive_title_bg_color);
+ if (match(key, "window.active.button.unpressed.image.color"))
+ parse_hexstr(value, theme.window_active_button_unpressed_image_color);
}
static void rtrim(char **s)
#include "theme/xbm/parse.h"
#include "common/bug-on.h"
-/* TODO: should be window.active.button.unpressed.image.color */
-static unsigned char defaultcolor[] = { 255, 255, 255, 255 };
+static uint32_t color;
-static uint32_t u32(unsigned char *rgba)
+static uint32_t u32(float *rgba)
{
uint32_t r[4] = { 0 };
for (int i = 0; i < 4; i++)
- r[i] = rgba[i];
- return ((r[3] & 0xff) << 24) | ((r[2] & 0xff) << 16) |
- ((r[1] & 0xff) << 8) | (r[0] & 0xff);
+ r[i] = rgba[i] * 255;
+ return ((r[3] & 0xff) << 24) | ((r[0] & 0xff) << 16) |
+ ((r[1] & 0xff) << 8) | (r[2] & 0xff);
+}
+
+void parse_set_color(float *rgba)
+{
+ color = u32(rgba);
}
static void process_bytes(struct pixmap *pixmap, struct token *tokens)
return;
int bit = 1 << (col % 8);
if (t->value & bit)
- pixmap->data[row * pixmap->width + col] =
- u32(defaultcolor);
+ pixmap->data[row * pixmap->width + col] = color;
}
++t;
}
void xbm_load(struct wlr_renderer *r)
{
+ parse_set_color(theme.window_active_button_unpressed_image_color);
load_button(r, "close.xbm", &theme.xbm_close, close_button_normal);
load_button(r, "max.xbm", &theme.xbm_maximize, max_button_normal);
- load_button(r, "iconify.xbm", &theme.xbm_iconify,
- iconify_button_normal);
+ load_button(r, "iconify.xbm", &theme.xbm_iconify, iconify_button_normal);
}