diff options
author | Federico Mena Quintero <federico@gnome.org> | 2019-07-29 14:25:31 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2019-07-30 11:45:45 -0500 |
commit | f0880719741517a3a4b0dea968858c8b2262ea60 (patch) | |
tree | d5302e4a46875ac392b726b1f48aaa5d454cfc16 /tests | |
parent | e943136ead95d2a818e10c8b14d1adc8afc827ff (diff) | |
download | librsvg-f0880719741517a3a4b0dea968858c8b2262ea60.tar.gz |
Add new API rsvg_handle_get_geometry_for_element()
Diffstat (limited to 'tests')
-rw-r--r-- | tests/api.c | 40 | ||||
-rw-r--r-- | tests/fixtures/api/geometry-element.svg | 6 |
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> |