tests/client-helper: use image-iter.h

Replace private pixel iterator helpers with the shared ones.

No change in behaviour.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
Pekka Paalanen 2022-06-09 15:47:21 +03:00 committed by Pekka Paalanen
parent 9b82bfae9e
commit 4eb70a602b

View File

@ -41,6 +41,7 @@
#include "shared/xalloc.h"
#include <libweston/zalloc.h>
#include "weston-test-client-helper.h"
#include "image-iter.h"
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) > (b)) ? (b) : (a))
@ -1254,29 +1255,6 @@ image_check_get_roi(pixman_image_t *img_a, pixman_image_t *img_b,
return box;
}
struct image_iterator {
char *data;
int stride; /* bytes */
};
static void
image_iter_init(struct image_iterator *it, pixman_image_t *image)
{
pixman_format_code_t fmt;
it->stride = pixman_image_get_stride(image);
it->data = (void *)pixman_image_get_data(image);
fmt = pixman_image_get_format(image);
assert(PIXMAN_FORMAT_BPP(fmt) == 32);
}
static uint32_t *
image_iter_get_row(struct image_iterator *it, int y)
{
return (uint32_t *)(it->data + y * it->stride);
}
struct pixel_diff_stat {
struct pixel_diff_stat_channel {
int min_diff;
@ -1347,8 +1325,8 @@ check_images_match(pixman_image_t *img_a, pixman_image_t *img_b,
{
struct range fuzz = range_get(prec);
struct pixel_diff_stat diffstat = {};
struct image_iterator it_a;
struct image_iterator it_b;
struct image_header ih_a = image_header_from(img_a);
struct image_header ih_b = image_header_from(img_b);
pixman_box32_t box;
int x, y;
uint32_t *pix_a;
@ -1356,12 +1334,9 @@ check_images_match(pixman_image_t *img_a, pixman_image_t *img_b,
box = image_check_get_roi(img_a, img_b, clip_rect);
image_iter_init(&it_a, img_a);
image_iter_init(&it_b, img_b);
for (y = box.y1; y < box.y2; y++) {
pix_a = image_iter_get_row(&it_a, y) + box.x1;
pix_b = image_iter_get_row(&it_b, y) + box.x1;
pix_a = image_header_get_row_u32(&ih_a, y) + box.x1;
pix_b = image_header_get_row_u32(&ih_b, y) + box.x1;
for (x = box.x1; x < box.x2; x++) {
if (!fuzzy_match_pixels(*pix_a, *pix_b,
@ -1431,11 +1406,9 @@ visualize_image_difference(pixman_image_t *img_a, pixman_image_t *img_b,
struct pixel_diff_stat diffstat = {};
pixman_image_t *diffimg;
pixman_image_t *shade;
struct image_iterator it_a;
struct image_iterator it_b;
struct image_iterator it_d;
int width;
int height;
struct image_header ih_a = image_header_from(img_a);
struct image_header ih_b = image_header_from(img_b);
struct image_header ih_d;
pixman_box32_t box;
int x, y;
uint32_t *pix_a;
@ -1443,32 +1416,28 @@ visualize_image_difference(pixman_image_t *img_a, pixman_image_t *img_b,
uint32_t *pix_d;
pixman_color_t shade_color = { 0, 0, 0, 32768 };
width = pixman_image_get_width(img_a);
height = pixman_image_get_height(img_a);
box = image_check_get_roi(img_a, img_b, clip_rect);
diffimg = pixman_image_create_bits_no_clear(PIXMAN_x8r8g8b8,
width, height, NULL, 0);
ih_a.width, ih_a.height,
NULL, 0);
ih_d = image_header_from(diffimg);
/* Fill diffimg with a black-shaded copy of img_a, and then fill
* the clip_rect area with original img_a.
*/
shade = pixman_image_create_solid_fill(&shade_color);
pixman_image_composite32(PIXMAN_OP_SRC, img_a, shade, diffimg,
0, 0, 0, 0, 0, 0, width, height);
0, 0, 0, 0, 0, 0, ih_a.width, ih_a.height);
pixman_image_unref(shade);
pixman_image_composite32(PIXMAN_OP_SRC, img_a, NULL, diffimg,
box.x1, box.y1, 0, 0, box.x1, box.y1,
box.x2 - box.x1, box.y2 - box.y1);
image_iter_init(&it_a, img_a);
image_iter_init(&it_b, img_b);
image_iter_init(&it_d, diffimg);
for (y = box.y1; y < box.y2; y++) {
pix_a = image_iter_get_row(&it_a, y) + box.x1;
pix_b = image_iter_get_row(&it_b, y) + box.x1;
pix_d = image_iter_get_row(&it_d, y) + box.x1;
pix_a = image_header_get_row_u32(&ih_a, y) + box.x1;
pix_b = image_header_get_row_u32(&ih_b, y) + box.x1;
pix_d = image_header_get_row_u32(&ih_d, y) + box.x1;
for (x = box.x1; x < box.x2; x++) {
if (fuzzy_match_pixels(*pix_a, *pix_b,