From 07e7d39ea2706bcb8a054720457b597dba9e99ef Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Sun, 23 Jan 2022 02:22:35 +0100 Subject: Produce properly scaled SVG thumbnails --- fiv-thumbnail.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fiv-thumbnail.c b/fiv-thumbnail.c index b69307d..c6a616b 100644 --- a/fiv-thumbnail.c +++ b/fiv-thumbnail.c @@ -126,6 +126,16 @@ adjust_thumbnail(cairo_surface_t *thumbnail, double row_height) scale_x = round(scale_y * w) / w; } + // Vector images should not have orientation, this should handle them all. + FivIoRenderClosure *closure = + cairo_surface_get_user_data(thumbnail, &fiv_io_key_render); + if (closure && orientation <= FivIoOrientation0) { + // This API doesn't accept non-uniform scaling; prefer a vertical fit. + cairo_surface_t *scaled = closure->render(closure, scale_y); + if (scaled) + return scaled; + } + // This will be CAIRO_FORMAT_INVALID with non-image surfaces, which is fine. cairo_format_t format = cairo_image_surface_get_format(thumbnail); if (format != CAIRO_FORMAT_INVALID && -- cgit v1.2.3-70-g09d2