aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fiv-thumbnail.c10
1 files changed, 10 insertions, 0 deletions
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 &&