1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
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
|