81 lines
2.6 KiB
Diff
81 lines
2.6 KiB
Diff
|
From a99a93e5c9013bd4101f5058cdee7d0cf30234fe Mon Sep 17 00:00:00 2001
|
||
|
Message-ID: <a99a93e5c9013bd4101f5058cdee7d0cf30234fe.1694554961.git.vivien@planete-kraus.eu>
|
||
|
From: Jehan <jehan@girinstud.io>
|
||
|
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_PROPERTIES (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
|
||
|
|