img: fix scaling for rendering large image in non-square rectangle

16dbdc6 caused a regression that the vscode icon (1024x1024) in the
titlebar is cut off with following configuraion:

  window.button.width: 26
  window.button.height: 16
This commit is contained in:
tokyo4j 2024-12-24 13:39:25 +09:00 committed by Johan Malm
parent 028e24dc13
commit adccc3ec84

View file

@ -138,9 +138,9 @@ render_cairo_surface(cairo_surface_t *surface, int width, int height,
.height = height - 2 * padding,
};
struct wlr_box src_box = box_fit_within(src_w, src_h, &container);
double scene_scale = MIN(1.0, (double_t)container.width / (double)src_w);
cairo_translate(cairo, src_box.x, src_box.y);
struct wlr_box dst_box = box_fit_within(src_w, src_h, &container);
double scene_scale = (double)dst_box.width / (double)src_w;
cairo_translate(cairo, dst_box.x, dst_box.y);
cairo_scale(cairo, scene_scale, scene_scale);
cairo_set_source_surface(cairo, surface, 0, 0);
cairo_pattern_set_filter(cairo_get_source(cairo), CAIRO_FILTER_GOOD);