diff options
author | Bastien Nocera <hadess@hadess.net> | 2017-01-06 17:05:35 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2017-02-03 18:56:01 +0100 |
commit | 5f232dc86d5da47b2c722136117f31d807313491 (patch) | |
tree | 4c387db51a4754a905dfc25ad652aed9bc3f7c32 /tests/test-common.c | |
parent | 61e3edeb79e998b68a7ff109b92dc18f6a14ecb0 (diff) | |
download | gdk-pixbuf-5f232dc86d5da47b2c722136117f31d807313491.tar.gz |
tests: Move pixbuf creation helpers to test-common.[ch]
Those will be used in the 2-step scaler tests.
https://bugzilla.gnome.org/show_bug.cgi?id=80925
Diffstat (limited to 'tests/test-common.c')
-rw-r--r-- | tests/test-common.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/test-common.c b/tests/test-common.c index cda99883a..a75655fd5 100644 --- a/tests/test-common.c +++ b/tests/test-common.c @@ -26,6 +26,64 @@ #include <string.h> +/* Checkerboard of black and white pxels (actually (1,1,1) and (255,255,255) + * so they average to (128,128,128)) */ +GdkPixbuf * +make_checkerboard (int width, int height) +{ + GdkPixbuf *checkerboard; + guint x, y; + guchar *row; /* Pointer to start of row of pixels within the image */ + guchar *pixel; /* Pointer to current pixel data in row */ + + checkerboard = gdk_pixbuf_new (GDK_COLORSPACE_RGB, 0, 8, width, height); + g_assert_nonnull (checkerboard); + + for (y = 0, row = gdk_pixbuf_get_pixels (checkerboard); + y < height; + y++, row += gdk_pixbuf_get_rowstride (checkerboard)) + { + for (x = 0, pixel = row; + x < width; + x++, pixel += gdk_pixbuf_get_n_channels (checkerboard)) + { + pixel[0] = pixel[1] = pixel[2] = (x ^ y) & 1 ? 1 : 255; + } + } + + return checkerboard; +} + +/* Image where all the pixels have different colours */ +GdkPixbuf * +make_rg (int width, int height) +{ + GdkPixbuf *pixbuf; + guint x, y; + guchar *row; /* Pointer to start of row of pixels within the image */ + guchar *pixel; /* Pointer to current pixel data in row */ + + /* Make a source image whose pixels are all of different colors */ + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, 0, 8, width, height); + g_assert_nonnull (pixbuf); + + for (y = 0, row = gdk_pixbuf_get_pixels (pixbuf); + y < height; + y++, row += gdk_pixbuf_get_rowstride (pixbuf)) + { + for (x = 0, pixel = row; + x < width; + x++, pixel += gdk_pixbuf_get_n_channels (pixbuf)) + { + pixel[0] = x & 255; pixel[1] = y & 255; + /* If image > 256 pixels wide/high put the extra bits in the last pixel */ + pixel[2] = ((x >> 8) & 15) | ((( y >> 8) & 15) << 4); + } + } + + return pixbuf; +} + gboolean format_supported (const gchar *filename) { |