summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2019-07-29 14:25:31 -0500
committerFederico Mena Quintero <federico@gnome.org>2019-07-30 11:45:45 -0500
commitf0880719741517a3a4b0dea968858c8b2262ea60 (patch)
treed5302e4a46875ac392b726b1f48aaa5d454cfc16 /tests
parente943136ead95d2a818e10c8b14d1adc8afc827ff (diff)
downloadlibrsvg-f0880719741517a3a4b0dea968858c8b2262ea60.tar.gz
Add new API rsvg_handle_get_geometry_for_element()
Diffstat (limited to 'tests')
-rw-r--r--tests/api.c40
-rw-r--r--tests/fixtures/api/geometry-element.svg6
2 files changed, 46 insertions, 0 deletions
diff --git a/tests/api.c b/tests/api.c
index d8a8d7b7..48849af3 100644
--- a/tests/api.c
+++ b/tests/api.c
@@ -1075,6 +1075,45 @@ render_layer (void)
g_object_unref (handle);
}
+static void
+get_geometry_for_element (void)
+{
+ char *filename = get_test_filename ("geometry-element.svg");
+ GError *error = NULL;
+
+ RsvgHandle *handle = rsvg_handle_new_from_file (filename, &error);
+ g_free (filename);
+
+ g_assert (handle != NULL);
+ g_assert (error == NULL);
+
+ RsvgRectangle ink_rect;
+ RsvgRectangle logical_rect;
+
+ g_assert (!rsvg_handle_get_geometry_for_element (handle, "#nonexistent",
+ &ink_rect, &logical_rect, &error));
+ g_assert (error != NULL);
+
+ g_error_free (error);
+ error = NULL;
+
+ g_assert (rsvg_handle_get_geometry_for_element (handle, "#foo",
+ &ink_rect, &logical_rect, &error));
+ g_assert (error == NULL);
+
+ g_assert_cmpfloat (ink_rect.x, ==, 0.0);
+ g_assert_cmpfloat (ink_rect.y, ==, 0.0);
+ g_assert_cmpfloat (ink_rect.width, ==, 40.0);
+ g_assert_cmpfloat (ink_rect.height, ==, 50.0);
+
+ g_assert_cmpfloat (logical_rect.x, ==, 5.0);
+ g_assert_cmpfloat (logical_rect.y, ==, 5.0);
+ g_assert_cmpfloat (logical_rect.width, ==, 30.0);
+ g_assert_cmpfloat (logical_rect.height, ==, 40.0);
+
+ g_object_unref (handle);
+}
+
/* https://gitlab.gnome.org/GNOME/librsvg/issues/385 */
static void
no_write_before_close (void)
@@ -1300,6 +1339,7 @@ main (int argc, char **argv)
g_test_add_func ("/api/render_document", render_document);
g_test_add_func ("/api/get_geometry_for_layer", get_geometry_for_layer);
g_test_add_func ("/api/render_layer", render_layer);
+ g_test_add_func ("/api/get_geometry_for_element", get_geometry_for_element);
g_test_add_func ("/api/no_write_before_close", no_write_before_close);
g_test_add_func ("/api/empty_write_close", empty_write_close);
g_test_add_func ("/api/cannot_request_external_elements", cannot_request_external_elements);
diff --git a/tests/fixtures/api/geometry-element.svg b/tests/fixtures/api/geometry-element.svg
new file mode 100644
index 00000000..3d707cdc
--- /dev/null
+++ b/tests/fixtures/api/geometry-element.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
+ <g transform="rotate(45)" stroke-width="10" stroke="#000000">
+ <rect id="foo" x="10" y="20" width="30" height="40" fill="#0000ff"/>
+ </g>
+</svg>