clean up background bounds calculation

This commit is contained in:
Felix Kratz 2022-10-28 04:44:46 +02:00
parent f3d51570f2
commit 2d2ccfcc96
5 changed files with 25 additions and 19 deletions

View file

@ -95,9 +95,11 @@ static bool background_set_yoffset(struct background* background, int offset) {
return true; return true;
} }
void background_calculate_bounds(struct background* background, uint32_t x, uint32_t y) { void background_calculate_bounds(struct background* background, uint32_t x, uint32_t y, uint32_t width, uint32_t height) {
background->bounds.origin.x = x; background->bounds.origin.x = x;
background->bounds.origin.y = y - background->bounds.size.height / 2; background->bounds.origin.y = y - background->bounds.size.height / 2;
background->bounds.size.width = width;
background->bounds.size.height = height;
if (background->image.enabled) if (background->image.enabled)
image_calculate_bounds(&background->image, x, y); image_calculate_bounds(&background->image, x, y);

View file

@ -20,7 +20,7 @@ struct background {
}; };
void background_init(struct background* background); void background_init(struct background* background);
void background_calculate_bounds(struct background* background, uint32_t x, uint32_t y); void background_calculate_bounds(struct background* background, uint32_t x, uint32_t y, uint32_t width, uint32_t height);
bool background_set_height(struct background* background, uint32_t height); bool background_set_height(struct background* background, uint32_t height);

View file

@ -593,15 +593,16 @@ uint32_t bar_item_calculate_bounds(struct bar_item* bar_item, uint32_t bar_heigh
} }
if (bar_item->background.enabled) { if (bar_item->background.enabled) {
bar_item->background.bounds.size.height = bar_item->background.overrides_height uint32_t height = bar_item->background.overrides_height
? bar_item->background.bounds.size.height ? bar_item->background.bounds.size.height
: (bar_height : (bar_height
- (g_bar_manager.background.border_width + 1)); - (g_bar_manager.background.border_width + 1));
bar_item->background.bounds.size.width = bar_item_length;
background_calculate_bounds(&bar_item->background, background_calculate_bounds(&bar_item->background,
x, x,
content_y + bar_item->y_offset ); content_y + bar_item->y_offset,
bar_item_length,
height );
} }
return bar_item_length; return bar_item_length;

View file

@ -96,12 +96,11 @@ void group_destroy(struct group* group) {
} }
void group_calculate_bounds(struct group* group, struct bar* bar, uint32_t x, uint32_t y, bool rtl) { void group_calculate_bounds(struct group* group, struct bar* bar, uint32_t x, uint32_t y, bool rtl) {
background_calculate_bounds(&group->members[0]->background, x, y); background_calculate_bounds(&group->members[0]->background,
group->members[0]->background.bounds.size.width = group_get_length(group, bar); x,
group->members[0]->background.bounds.origin.x = x; y + group->members[0]->y_offset,
group->members[0]->background.bounds.origin.y = y group_get_length(group, bar),
- group->members[0]->background.bounds.size.height / 2 group->members[0]->background.bounds.size.height);
+ group->members[0]->y_offset;
} }
void group_draw(struct group* group, CGContextRef context) { void group_draw(struct group* group, CGContextRef context) {

View file

@ -253,11 +253,15 @@ void text_calculate_bounds(struct text* text, uint32_t x, uint32_t y) {
- text->line.descent) / 2)); - text->line.descent) / 2));
if (text->background.enabled) { if (text->background.enabled) {
text->background.bounds.size.width = text_get_length(text, false); uint32_t height = text->background.overrides_height
text->background.bounds.size.height = text->background.overrides_height
? text->background.bounds.size.height ? text->background.bounds.size.height
: text->bounds.size.height; : text->bounds.size.height;
background_calculate_bounds(&text->background, x, y);
background_calculate_bounds(&text->background,
x,
y,
text_get_length(text, false),
height );
} }
} }