diff options
| author | Federico Angelilli <code@fedang.net> | 2024-11-20 23:11:10 +0100 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2024-11-20 23:11:10 +0100 |
| commit | fcd52f6db3dc9092dbd7a502e3e561ad16bf0743 (patch) | |
| tree | 6f98828f03e6432b7218091712607c134a3bbf57 /src/blocks | |
| parent | 165c408de117b5f3923b945756e4ebffc5b733d7 (diff) | |
Fix capsule edge case
Diffstat (limited to 'src/blocks')
| -rw-r--r-- | src/blocks/slider.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/blocks/slider.c b/src/blocks/slider.c index 3fe6e8c..8c89ddf 100644 --- a/src/blocks/slider.c +++ b/src/blocks/slider.c @@ -30,7 +30,7 @@ static void block_slider_render(layout_t *layout, cairo_t *cr) const int radius = slider->height / 2; int bar_y = layout->y + (layout->height - slider->height) / 2; - int bar_x = layout->x + layout->height / 2; + int bar_x = layout->x + (layout->width - slider->width) / 2; cairo_matrix_t matrix; cairo_matrix_init_scale(&matrix, 1.0 / slider->width, 1.0); @@ -38,7 +38,7 @@ static void block_slider_render(layout_t *layout, cairo_t *cr) cairo_pattern_t *pattern = slider->bg_color.pattern; if (pattern != NULL) { - render_capsule(cr, bar_x, bar_y, slider->width, radius, slider->line_width); + render_capsule_fast(cr, bar_x, bar_y, slider->width, radius, radius); cairo_pattern_set_matrix(pattern, &matrix); cairo_set_source(cr, pattern); @@ -48,7 +48,7 @@ static void block_slider_render(layout_t *layout, cairo_t *cr) pattern = slider->bar_color.pattern; if (pattern != NULL) { int current = slider->width * (slider->value / 100.0); - render_capsule(cr, bar_x, bar_y, current, radius, slider->line_width); + render_capsule(cr, bar_x, bar_y, current, radius, radius); cairo_pattern_set_matrix(pattern, &matrix); cairo_set_source(cr, pattern); @@ -57,7 +57,8 @@ static void block_slider_render(layout_t *layout, cairo_t *cr) pattern = slider->line_color.pattern; if (pattern != NULL) { - render_capsule(cr, bar_x, bar_y, slider->width, radius, slider->line_width); + int line_radius = radius - slider->line_width / 2; + render_capsule_fast(cr, bar_x, bar_y, slider->width, radius, line_radius); cairo_pattern_set_matrix(pattern, &matrix); cairo_set_source(cr, pattern); |
