This function writes out a png file containing the visual diff between a
reference image and a screenshot.
---
 tests/subsurface-shot-test.c      | 24 ---------------------
 tests/weston-test-client-helper.c | 44 +++++++++++++++++++++++++++++++++++++++
 tests/weston-test-client-helper.h |  5 +++++
 3 files changed, 49 insertions(+), 24 deletions(-)

diff --git a/tests/subsurface-shot-test.c b/tests/subsurface-shot-test.c
index 10415ec7..a8dfebad 100644
--- a/tests/subsurface-shot-test.c
+++ b/tests/subsurface-shot-test.c
@@ -96,30 +96,6 @@ color(pixman_color_t *tmp, uint8_t r, uint8_t g, uint8_t b)
        return tmp;
 }
 
-static void
-write_visual_diff(pixman_image_t *ref_image,
-                 struct buffer *shot,
-                 const struct rectangle *clip,
-                 const char *test_name,
-                 int seq_no)
-{
-       char *fname;
-       char *ext_test_name;
-       pixman_image_t *diff;
-       int ret;
-
-       ret = asprintf(&ext_test_name, "%s-diff", test_name);
-       assert(ret >= 0);
-
-       fname = screenshot_output_filename(ext_test_name, seq_no);
-       diff = visualize_image_difference(shot->image, ref_image, clip);
-       write_image_as_png(diff, fname);
-
-       pixman_image_unref(diff);
-       free(fname);
-       free(ext_test_name);
-}
-
 static int
 check_screen(struct client *client,
             const char *ref_image,
diff --git a/tests/weston-test-client-helper.c 
b/tests/weston-test-client-helper.c
index fd6d5c84..43a76eb3 100644
--- a/tests/weston-test-client-helper.c
+++ b/tests/weston-test-client-helper.c
@@ -1211,6 +1211,49 @@ visualize_image_difference(pixman_image_t *img_a, 
pixman_image_t *img_b,
 }
 
 /**
+ * Write out a png file containing the visual diff between a reference image
+ * and a screenshot
+ *
+ * \param ref_image The reference image.
+ * \param shot A screenshot containing an image to compare to the reference.
+ * \param clip The region of interest, or NULL for comparing the whole
+ * image.
+ * \param test_name The name of the test, which will be used to name the output
+ * file.
+ * \param seq_no The sequence number of the subtest, which will be appended to
+ * the output file name.
+ *
+ * The screenshot must be captured before providing it to this function.  A
+ * NULL reference images or NULL screenshot buffer will trigger an assert.
+ */
+void
+write_visual_diff(pixman_image_t *ref_image,
+                 struct buffer *shot,
+                 const struct rectangle *clip,
+                 const char *test_name,
+                 int seq_no)
+{
+       char *fname;
+       char *ext_test_name;
+       pixman_image_t *diff;
+       int ret;
+
+       assert(ref_image);
+       assert(shot);
+
+       ret = asprintf(&ext_test_name, "%s-diff", test_name);
+       assert(ret >= 0);
+
+       fname = screenshot_output_filename(ext_test_name, seq_no);
+       diff = visualize_image_difference(shot->image, ref_image, clip);
+       write_image_as_png(diff, fname);
+
+       pixman_image_unref(diff);
+       free(fname);
+       free(ext_test_name);
+}
+
+/**
  * Write an image into a PNG file.
  *
  * \param image The image.
@@ -1371,3 +1414,4 @@ capture_screenshot_of_output(struct client *client)
 
        return buffer;
 }
+
diff --git a/tests/weston-test-client-helper.h 
b/tests/weston-test-client-helper.h
index a288af7e..8c497e24 100644
--- a/tests/weston-test-client-helper.h
+++ b/tests/weston-test-client-helper.h
@@ -203,6 +203,11 @@ pixman_image_t *
 visualize_image_difference(pixman_image_t *img_a, pixman_image_t *img_b,
                           const struct rectangle *clip_rect);
 
+void
+write_visual_diff(pixman_image_t *ref_image, struct buffer *shot,
+                 const struct rectangle *clip, const char *test_name,
+                 int seq_no);
+
 bool
 write_image_as_png(pixman_image_t *image, const char *fname);
 
-- 
2.11.0

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to