From a99a93e5c9013bd4101f5058cdee7d0cf30234fe Mon Sep 17 00:00:00 2001 Message-ID: From: Jehan Date: Wed, 5 Jul 2023 21:18:19 +0200 Subject: [PATCH] Issue #333: continuing to support librsvg 2.40.x (C versions). Commit 9beeefcbe uses too new functions of librsvg. We could just bump the minimum required version but there are issues with Rust not being available on every platform yet. So instead, let's add some conditional code paths, so that it still builds with librsvg 2.40.x (which was the last versions fully in C) while we use newer code and no warnings when using newer versions. --- operations/external/svg-load.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/operations/external/svg-load.c b/operations/external/svg-load.c index 3312a0c0a..15c0b30b7 100644 --- a/operations/external/svg-load.c +++ b/operations/external/svg-load.c @@ -76,16 +76,25 @@ query_svg (GeglOperation *operation) { GeglProperties *o = GEGL_PROPERTIES (operation); Priv *p = (Priv*) o->user_data; +#if LIBRSVG_CHECK_VERSION(2, 52, 0) gdouble out_width, out_height; +#else + RsvgDimensionData dimensions; +#endif g_return_val_if_fail (p->handle != NULL, FALSE); - rsvg_handle_get_intrinsic_size_in_pixels (p->handle, &out_width, &out_height); - p->format = babl_format ("R'G'B'A u8"); +#if LIBRSVG_CHECK_VERSION(2, 52, 0) + rsvg_handle_get_intrinsic_size_in_pixels (p->handle, &out_width, &out_height); p->height = out_height; - p->width = out_width; + p->width = out_width; +#else + rsvg_handle_get_dimensions (p->handle, &dimensions); + p->height = dimensions.height; + p->width = dimensions.width; +#endif return TRUE; } @@ -98,10 +107,12 @@ load_svg (GeglOperation *operation, { GeglProperties *o = GEGL
RTIES (operation);
     Priv              *p = (Priv*) o->user_data;
-    RsvgRectangle      svg_rect = {0.0, 0.0, width, height};
     cairo_surface_t   *surface;
     cairo_t           *cr;
-    GError            *error = NULL;
+#if LIBRSVG_CHECK_VERSION(2, 52, 0)
+    GError            *error    = NULL;
+    RsvgRectangle      svg_rect = {0.0, 0.0, width, height};
+#endif
 
     g_return_val_if_fail (p->handle != NULL, -1);
 
@@ -115,7 +126,11 @@ load_svg (GeglOperation *operation,
                      (double)height / (double)p->height);
       }
 
+#if LIBRSVG_CHECK_VERSION(2, 52, 0)
     rsvg_handle_render_document (p->handle, cr, &svg_rect, &error);
+#else
+    rsvg_handle_render_cairo (p->handle, cr);
+#endif
 
     cairo_surface_flush (surface);
 
-- 
2.41.0