From 12582ba2f5017906e3e3382197f6eaf732d1d10e Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 16 Mar 2022 20:23:49 +0100 Subject: [PATCH] Try to use modern rsvg functions when we can --- libmat2/images.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/libmat2/images.py b/libmat2/images.py index c584c1c..3da2673 100644 --- a/libmat2/images.py +++ b/libmat2/images.py @@ -30,12 +30,23 @@ class SVGParser(exiftool.ExiftoolParser): svg = Rsvg.Handle.new_from_file(self.filename) except GLib.GError: raise ValueError - dimensions = svg.get_dimensions() - surface = cairo.SVGSurface(self.output_filename, - dimensions.height, - dimensions.width) + + try: + _, _, _, _, has_viewbox, viewbox = svg.get_intrinsic_dimensions() + if has_viewbox is False: + raise ValueError + _, width, height = svg.get_intrinsic_size_in_pixels() + except AttributeError: + dimensions = svg.get_dimensions() + height, width = dimensions.height, dimensions.width + + surface = cairo.SVGSurface(self.output_filename, height, width) context = cairo.Context(surface) - svg.render_cairo(context) + try: + svg.render_document(context, viewbox) + except AttributeError: + svg.render_cairo(context) + surface.finish() return True