From 3b2ba8ed99c478e2b2de827c970583e0afa3265f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 10 Apr 2023 09:40:31 +0200 Subject: [PATCH] Add more gsk tests Add options to the gsk compare-render test for modifying the node (and do a matching change to the reference image). flip: negative scale flipping things horizontally rotate: 90 degree rotation repeat: 2x2 grid --- testsuite/gsk/compare-render.c | 190 ++++++++++++++++---- testsuite/gsk/compare/big-glyph-wrapped.png | Bin 0 -> 50117 bytes 2 files changed, 159 insertions(+), 31 deletions(-) create mode 100644 testsuite/gsk/compare/big-glyph-wrapped.png diff --git a/testsuite/gsk/compare-render.c b/testsuite/gsk/compare-render.c index 919957e70d..0746c98f96 100644 --- a/testsuite/gsk/compare-render.c +++ b/testsuite/gsk/compare-render.c @@ -5,6 +5,9 @@ #include "../reftests/reftest-compare.h" static char *arg_output_dir = NULL; +static gboolean flip = FALSE; +static gboolean rotate = FALSE; +static gboolean repeat = FALSE; static const char * get_output_dir (void) @@ -136,11 +139,39 @@ deserialize_error_func (const GskParseLocation *start, } static const GOptionEntry options[] = { - { "output", 0, 0, G_OPTION_ARG_FILENAME, &arg_output_dir, - "Directory to save image files to", "DIR" }, + { "output", 0, 0, G_OPTION_ARG_FILENAME, &arg_output_dir, "Directory to save image files to", "DIR" }, + { "flip", 0, 0, G_OPTION_ARG_NONE, &flip, "Do flipped test", NULL }, + { "rotate", 0, 0, G_OPTION_ARG_NONE, &rotate, "Do rotated test", NULL }, + { "repeat", 0, 0, G_OPTION_ARG_NONE, &repeat, "Do repeat test", NULL }, { NULL } }; +static GskRenderNode * +load_node_file (const char *node_file) +{ + GBytes *bytes; + gsize len; + char *contents; + GError *error = NULL; + GskRenderNode *node; + + if (!g_file_get_contents (node_file, &contents, &len, &error)) + { + g_print ("Could not open node file: %s\n", error->message); + g_clear_error (&error); + return NULL; + } + + bytes = g_bytes_new_take (contents, len); + node = gsk_render_node_deserialize (bytes, deserialize_error_func, NULL); + g_bytes_unref (bytes); + + g_assert_no_error (error); + g_assert_nonnull (node); + + return node; +} + /* * Non-option arguments: * 1) .node file to compare @@ -159,6 +190,7 @@ main (int argc, char **argv) gboolean success = TRUE; GError *error = NULL; GOptionContext *context; + GdkTexture *diff_texture; (g_test_init) (&argc, &argv, NULL); @@ -185,64 +217,160 @@ main (int argc, char **argv) node_file = argv[1]; png_file = argv[2]; - window = gdk_surface_new_toplevel (gdk_display_get_default()); - renderer = gsk_renderer_new_for_surface (window); - g_print ("Node file: '%s'\n", node_file); g_print ("PNG file: '%s'\n", png_file); + window = gdk_surface_new_toplevel (gdk_display_get_default()); + renderer = gsk_renderer_new_for_surface (window); + /* Load the render node from the given .node file */ - { - GBytes *bytes; - gsize len; - char *contents; - - if (!g_file_get_contents (node_file, &contents, &len, &error)) - { - g_print ("Could not open node file: %s\n", error->message); - g_clear_error (&error); - return 1; - } - - bytes = g_bytes_new_take (contents, len); - node = gsk_render_node_deserialize (bytes, deserialize_error_func, &success); - g_bytes_unref (bytes); - - g_assert_no_error (error); - g_assert_nonnull (node); - } + node = load_node_file (node_file); + if (!node) + return 1; /* Render the .node file and download to cairo surface */ rendered_texture = gsk_renderer_render_texture (renderer, node, NULL); g_assert_nonnull (rendered_texture); + save_image (rendered_texture, node_file, ".out.png"); + /* Load the given reference png file */ reference_texture = gdk_texture_new_from_filename (png_file, &error); if (reference_texture == NULL) { g_print ("Error loading reference surface: %s\n", error->message); g_clear_error (&error); + save_image (rendered_texture, node_file, ".out.png"); + return 0; + } + + /* Now compare the two */ + diff_texture = reftest_compare_textures (rendered_texture, reference_texture); + if (diff_texture) + { + save_image (diff_texture, node_file, ".diff.png"); + g_object_unref (diff_texture); success = FALSE; } - else + + g_clear_object (&reference_texture); + g_clear_object (&rendered_texture); + + if (flip) + { + GskRenderNode *node2; + GdkPixbuf *pixbuf, *pixbuf2; + + node2 = gsk_transform_node_new (node, gsk_transform_scale (NULL, -1, 1)); + rendered_texture = gsk_renderer_render_texture (renderer, node2, NULL); + + save_image (rendered_texture, node_file, "-flipped.out.png"); + + pixbuf = gdk_pixbuf_new_from_file (png_file, &error); + pixbuf2 = gdk_pixbuf_flip (pixbuf, TRUE); + reference_texture = gdk_texture_new_for_pixbuf (pixbuf2); + g_object_unref (pixbuf2); + g_object_unref (pixbuf); + + save_image (reference_texture, node_file, "-flipped.ref.png"); + + diff_texture = reftest_compare_textures (rendered_texture, reference_texture); + + if (diff_texture) + { + save_image (diff_texture, node_file, "-flipped.diff.png"); + g_object_unref (diff_texture); + success = FALSE; + } + + g_clear_object (&rendered_texture); + g_clear_object (&reference_texture); + gsk_render_node_unref (node2); + } + + if (repeat) { - GdkTexture *diff_texture; + GskRenderNode *node2; + GdkPixbuf *pixbuf, *pixbuf2; + int width, height; + graphene_rect_t node_bounds; + graphene_rect_t bounds; + + gsk_render_node_get_bounds (node, &node_bounds); + bounds.origin.x = 0.; + bounds.origin.y = 0.; + bounds.size.width = 2 * node_bounds.size.width; + bounds.size.height = 2 * node_bounds.size.height; + + node2 = gsk_repeat_node_new (&bounds, node, &node_bounds); + rendered_texture = gsk_renderer_render_texture (renderer, node2, NULL); + + save_image (rendered_texture, node_file, "-repeated.out.png"); + + pixbuf = gdk_pixbuf_new_from_file (png_file, &error); + width = gdk_pixbuf_get_width (pixbuf); + height = gdk_pixbuf_get_height (pixbuf); + pixbuf2 = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (pixbuf), + gdk_pixbuf_get_has_alpha (pixbuf), + gdk_pixbuf_get_bits_per_sample (pixbuf), + width * 2, + height * 2); + gdk_pixbuf_copy_area (pixbuf, 0, 0, width, height, pixbuf2, 0, 0); + gdk_pixbuf_copy_area (pixbuf, 0, 0, width, height, pixbuf2, width, 0); + gdk_pixbuf_copy_area (pixbuf, 0, 0, width, height, pixbuf2, 0, height); + gdk_pixbuf_copy_area (pixbuf, 0, 0, width, height, pixbuf2, width, height); + + reference_texture = gdk_texture_new_for_pixbuf (pixbuf2); + g_object_unref (pixbuf2); + g_object_unref (pixbuf); + + save_image (reference_texture, node_file, "-repeated.ref.png"); - /* Now compare the two */ diff_texture = reftest_compare_textures (rendered_texture, reference_texture); if (diff_texture) { - save_image (diff_texture, node_file, ".diff.png"); + save_image (diff_texture, node_file, "-repeated.diff.png"); g_object_unref (diff_texture); success = FALSE; } + + g_clear_object (&rendered_texture); + g_clear_object (&reference_texture); + gsk_render_node_unref (node2); } - save_image (rendered_texture, node_file, ".out.png"); + if (rotate) + { + GskRenderNode *node2; + GdkPixbuf *pixbuf, *pixbuf2; + + node2 = gsk_transform_node_new (node, gsk_transform_rotate (NULL, 90)); + rendered_texture = gsk_renderer_render_texture (renderer, node2, NULL); + + save_image (rendered_texture, node_file, "-rotated.out.png"); + + pixbuf = gdk_pixbuf_new_from_file (png_file, &error); + pixbuf2 = gdk_pixbuf_rotate_simple (pixbuf, GDK_PIXBUF_ROTATE_CLOCKWISE); + reference_texture = gdk_texture_new_for_pixbuf (pixbuf2); + g_object_unref (pixbuf2); + g_object_unref (pixbuf); + + save_image (reference_texture, node_file, "-rotated.ref.png"); + + diff_texture = reftest_compare_textures (rendered_texture, reference_texture); - g_object_unref (reference_texture); - g_object_unref (rendered_texture); + if (diff_texture) + { + save_image (diff_texture, node_file, "-rotated.diff.png"); + g_object_unref (diff_texture); + success = FALSE; + } + + g_clear_object (&rendered_texture); + g_clear_object (&reference_texture); + gsk_render_node_unref (node2); + } gsk_render_node_unref (node); diff --git a/testsuite/gsk/compare/big-glyph-wrapped.png b/testsuite/gsk/compare/big-glyph-wrapped.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d502f7fa424a354cb1c2ab0b97db987454dc1c GIT binary patch literal 50117 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 JicS&!`ak03l&k;% literal 0 HcmV?d00001 -- 2.30.2