diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2018-07-29 22:42:03 -0400 |
---|---|---|
committer | Brian Ashworth <bosrsf04@gmail.com> | 2018-08-01 22:47:54 -0400 |
commit | e01acb6097b583fcf2f6d0e0afe1bd878dd9b683 (patch) | |
tree | cf3e715870bb22d9ef7d5bee9457fdcc70e31ee2 /swaynag/render.c | |
parent | swaynag: add math to meson.build (diff) | |
download | sway-e01acb6097b583fcf2f6d0e0afe1bd878dd9b683.tar.gz sway-e01acb6097b583fcf2f6d0e0afe1bd878dd9b683.tar.zst sway-e01acb6097b583fcf2f6d0e0afe1bd878dd9b683.zip |
swaynag: allow more config options
Diffstat (limited to 'swaynag/render.c')
-rw-r--r-- | swaynag/render.c | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/swaynag/render.c b/swaynag/render.c index 67e26eaf..bc3e520e 100644 --- a/swaynag/render.c +++ b/swaynag/render.c | |||
@@ -9,13 +9,13 @@ | |||
9 | 9 | ||
10 | static uint32_t render_message(cairo_t *cairo, struct swaynag *swaynag) { | 10 | static uint32_t render_message(cairo_t *cairo, struct swaynag *swaynag) { |
11 | uint32_t height = swaynag->height * swaynag->scale; | 11 | uint32_t height = swaynag->height * swaynag->scale; |
12 | height -= SWAYNAG_BAR_BORDER_THICKNESS * swaynag->scale; | 12 | height -= swaynag->type->bar_border_thickness * swaynag->scale; |
13 | 13 | ||
14 | int text_width, text_height; | 14 | int text_width, text_height; |
15 | get_text_size(cairo, swaynag->font, &text_width, &text_height, | 15 | get_text_size(cairo, swaynag->type->font, &text_width, &text_height, |
16 | swaynag->scale, true, "%s", swaynag->message); | 16 | swaynag->scale, true, "%s", swaynag->message); |
17 | 17 | ||
18 | int padding = SWAYNAG_MESSAGE_PADDING * swaynag->scale; | 18 | int padding = swaynag->type->message_padding * swaynag->scale; |
19 | 19 | ||
20 | uint32_t ideal_height = text_height + padding * 2; | 20 | uint32_t ideal_height = text_height + padding * 2; |
21 | uint32_t ideal_surface_height = ideal_height / swaynag->scale; | 21 | uint32_t ideal_surface_height = ideal_height / swaynag->scale; |
@@ -25,7 +25,7 @@ static uint32_t render_message(cairo_t *cairo, struct swaynag *swaynag) { | |||
25 | 25 | ||
26 | cairo_set_source_u32(cairo, swaynag->type->text); | 26 | cairo_set_source_u32(cairo, swaynag->type->text); |
27 | cairo_move_to(cairo, padding, (int)(ideal_height - text_height) / 2); | 27 | cairo_move_to(cairo, padding, (int)(ideal_height - text_height) / 2); |
28 | pango_printf(cairo, swaynag->font, swaynag->scale, false, "%s", | 28 | pango_printf(cairo, swaynag->type->font, swaynag->scale, false, "%s", |
29 | swaynag->message); | 29 | swaynag->message); |
30 | 30 | ||
31 | return ideal_height; | 31 | return ideal_height; |
@@ -34,11 +34,11 @@ static uint32_t render_message(cairo_t *cairo, struct swaynag *swaynag) { | |||
34 | static void render_details_scroll_button(cairo_t *cairo, | 34 | static void render_details_scroll_button(cairo_t *cairo, |
35 | struct swaynag *swaynag, struct swaynag_button *button) { | 35 | struct swaynag *swaynag, struct swaynag_button *button) { |
36 | int text_width, text_height; | 36 | int text_width, text_height; |
37 | get_text_size(cairo, swaynag->font, &text_width, &text_height, | 37 | get_text_size(cairo, swaynag->type->font, &text_width, &text_height, |
38 | swaynag->scale, true, "%s", button->text); | 38 | swaynag->scale, true, "%s", button->text); |
39 | 39 | ||
40 | int border = SWAYNAG_BUTTON_BORDER_THICKNESS * swaynag->scale; | 40 | int border = swaynag->type->button_border_thickness * swaynag->scale; |
41 | int padding = SWAYNAG_BUTTON_PADDING * swaynag->scale; | 41 | int padding = swaynag->type->button_padding * swaynag->scale; |
42 | 42 | ||
43 | cairo_set_source_u32(cairo, swaynag->type->border); | 43 | cairo_set_source_u32(cairo, swaynag->type->border); |
44 | cairo_rectangle(cairo, button->x, button->y, | 44 | cairo_rectangle(cairo, button->x, button->y, |
@@ -53,21 +53,21 @@ static void render_details_scroll_button(cairo_t *cairo, | |||
53 | cairo_set_source_u32(cairo, swaynag->type->text); | 53 | cairo_set_source_u32(cairo, swaynag->type->text); |
54 | cairo_move_to(cairo, button->x + border + padding, | 54 | cairo_move_to(cairo, button->x + border + padding, |
55 | button->y + border + (button->height - text_height) / 2); | 55 | button->y + border + (button->height - text_height) / 2); |
56 | pango_printf(cairo, swaynag->font, swaynag->scale, true, | 56 | pango_printf(cairo, swaynag->type->font, swaynag->scale, true, |
57 | "%s", button->text); | 57 | "%s", button->text); |
58 | } | 58 | } |
59 | 59 | ||
60 | static int get_detailed_scroll_button_width(cairo_t *cairo, | 60 | static int get_detailed_scroll_button_width(cairo_t *cairo, |
61 | struct swaynag *swaynag) { | 61 | struct swaynag *swaynag) { |
62 | int up_width, down_width, temp_height; | 62 | int up_width, down_width, temp_height; |
63 | get_text_size(cairo, swaynag->font, &up_width, &temp_height, | 63 | get_text_size(cairo, swaynag->type->font, &up_width, &temp_height, |
64 | swaynag->scale, true, "%s", swaynag->details.button_up.text); | 64 | swaynag->scale, true, "%s", swaynag->details.button_up.text); |
65 | get_text_size(cairo, swaynag->font, &down_width, &temp_height, | 65 | get_text_size(cairo, swaynag->type->font, &down_width, &temp_height, |
66 | swaynag->scale, true, "%s", swaynag->details.button_down.text); | 66 | swaynag->scale, true, "%s", swaynag->details.button_down.text); |
67 | 67 | ||
68 | int text_width = up_width > down_width ? up_width : down_width; | 68 | int text_width = up_width > down_width ? up_width : down_width; |
69 | int border = SWAYNAG_BUTTON_BORDER_THICKNESS * swaynag->scale; | 69 | int border = swaynag->type->button_border_thickness * swaynag->scale; |
70 | int padding = SWAYNAG_BUTTON_PADDING * swaynag->scale; | 70 | int padding = swaynag->type->button_padding * swaynag->scale; |
71 | 71 | ||
72 | return text_width + border * 2 + padding * 2; | 72 | return text_width + border * 2 + padding * 2; |
73 | } | 73 | } |
@@ -76,17 +76,17 @@ static uint32_t render_detailed(cairo_t *cairo, struct swaynag *swaynag, | |||
76 | uint32_t y) { | 76 | uint32_t y) { |
77 | uint32_t width = swaynag->width * swaynag->scale; | 77 | uint32_t width = swaynag->width * swaynag->scale; |
78 | uint32_t height = swaynag->height * swaynag->scale; | 78 | uint32_t height = swaynag->height * swaynag->scale; |
79 | height -= SWAYNAG_BAR_BORDER_THICKNESS * swaynag->scale; | 79 | height -= swaynag->type->bar_border_thickness * swaynag->scale; |
80 | 80 | ||
81 | int border = SWAYNAG_DETAILS_BORDER_THICKNESS * swaynag->scale; | 81 | int border = swaynag->type->details_border_thickness * swaynag->scale; |
82 | int padding = SWAYNAG_MESSAGE_PADDING * swaynag->scale; | 82 | int padding = swaynag->type->message_padding * swaynag->scale; |
83 | int decor = padding + border; | 83 | int decor = padding + border; |
84 | 84 | ||
85 | swaynag->details.x = decor; | 85 | swaynag->details.x = decor; |
86 | swaynag->details.y = y + decor; | 86 | swaynag->details.y = y + decor; |
87 | swaynag->details.width = width - decor * 2; | 87 | swaynag->details.width = width - decor * 2; |
88 | 88 | ||
89 | PangoLayout *layout = get_pango_layout(cairo, swaynag->font, | 89 | PangoLayout *layout = get_pango_layout(cairo, swaynag->type->font, |
90 | swaynag->details.message, swaynag->scale, false); | 90 | swaynag->details.message, swaynag->scale, false); |
91 | pango_layout_set_width(layout, | 91 | pango_layout_set_width(layout, |
92 | (swaynag->details.width - padding * 2) * PANGO_SCALE); | 92 | (swaynag->details.width - padding * 2) * PANGO_SCALE); |
@@ -173,15 +173,15 @@ static uint32_t render_detailed(cairo_t *cairo, struct swaynag *swaynag, | |||
173 | static uint32_t render_button(cairo_t *cairo, struct swaynag *swaynag, | 173 | static uint32_t render_button(cairo_t *cairo, struct swaynag *swaynag, |
174 | int button_index, int *x) { | 174 | int button_index, int *x) { |
175 | uint32_t height = swaynag->height * swaynag->scale; | 175 | uint32_t height = swaynag->height * swaynag->scale; |
176 | height -= SWAYNAG_BAR_BORDER_THICKNESS * swaynag->scale; | 176 | height -= swaynag->type->bar_border_thickness * swaynag->scale; |
177 | struct swaynag_button *button = swaynag->buttons->items[button_index]; | 177 | struct swaynag_button *button = swaynag->buttons->items[button_index]; |
178 | 178 | ||
179 | int text_width, text_height; | 179 | int text_width, text_height; |
180 | get_text_size(cairo, swaynag->font, &text_width, &text_height, | 180 | get_text_size(cairo, swaynag->type->font, &text_width, &text_height, |
181 | swaynag->scale, true, "%s", button->text); | 181 | swaynag->scale, true, "%s", button->text); |
182 | 182 | ||
183 | int border = SWAYNAG_BUTTON_BORDER_THICKNESS * swaynag->scale; | 183 | int border = swaynag->type->button_border_thickness * swaynag->scale; |
184 | int padding = SWAYNAG_BUTTON_PADDING * swaynag->scale; | 184 | int padding = swaynag->type->button_padding * swaynag->scale; |
185 | 185 | ||
186 | uint32_t ideal_height = text_height + padding * 2 + border * 2; | 186 | uint32_t ideal_height = text_height + padding * 2 + border * 2; |
187 | uint32_t ideal_surface_height = ideal_height / swaynag->scale; | 187 | uint32_t ideal_surface_height = ideal_height / swaynag->scale; |
@@ -206,7 +206,7 @@ static uint32_t render_button(cairo_t *cairo, struct swaynag *swaynag, | |||
206 | 206 | ||
207 | cairo_set_source_u32(cairo, swaynag->type->text); | 207 | cairo_set_source_u32(cairo, swaynag->type->text); |
208 | cairo_move_to(cairo, button->x + padding, button->y + padding); | 208 | cairo_move_to(cairo, button->x + padding, button->y + padding); |
209 | pango_printf(cairo, swaynag->font, swaynag->scale, true, | 209 | pango_printf(cairo, swaynag->type->font, swaynag->scale, true, |
210 | "%s", button->text); | 210 | "%s", button->text); |
211 | 211 | ||
212 | *x = button->x - border; | 212 | *x = button->x - border; |
@@ -224,13 +224,14 @@ static uint32_t render_to_cairo(cairo_t *cairo, struct swaynag *swaynag) { | |||
224 | uint32_t h = render_message(cairo, swaynag); | 224 | uint32_t h = render_message(cairo, swaynag); |
225 | max_height = h > max_height ? h : max_height; | 225 | max_height = h > max_height ? h : max_height; |
226 | 226 | ||
227 | int x = (swaynag->width - SWAYNAG_BUTTON_MARGIN_RIGHT) * swaynag->scale; | 227 | int x = swaynag->width - swaynag->type->button_margin_right; |
228 | x *= swaynag->scale; | ||
228 | for (int i = 0; i < swaynag->buttons->length; i++) { | 229 | for (int i = 0; i < swaynag->buttons->length; i++) { |
229 | h = render_button(cairo, swaynag, i, &x); | 230 | h = render_button(cairo, swaynag, i, &x); |
230 | max_height = h > max_height ? h : max_height; | 231 | max_height = h > max_height ? h : max_height; |
231 | x -= SWAYNAG_BUTTON_GAP * swaynag->scale; | 232 | x -= swaynag->type->button_gap * swaynag->scale; |
232 | if (i == 0) { | 233 | if (i == 0) { |
233 | x -= SWAYNAG_BUTTON_GAP_CLOSE * swaynag->scale; | 234 | x -= swaynag->type->button_gap_close * swaynag->scale; |
234 | } | 235 | } |
235 | } | 236 | } |
236 | 237 | ||
@@ -239,7 +240,7 @@ static uint32_t render_to_cairo(cairo_t *cairo, struct swaynag *swaynag) { | |||
239 | max_height = h > max_height ? h : max_height; | 240 | max_height = h > max_height ? h : max_height; |
240 | } | 241 | } |
241 | 242 | ||
242 | int border = SWAYNAG_BAR_BORDER_THICKNESS * swaynag->scale; | 243 | int border = swaynag->type->bar_border_thickness * swaynag->scale; |
243 | if (max_height > swaynag->height) { | 244 | if (max_height > swaynag->height) { |
244 | max_height += border; | 245 | max_height += border; |
245 | } | 246 | } |