oob-test.c revision dc259aab
1dc259aabSmrg#include <stdio.h> 2dc259aabSmrg#include <stdlib.h> 3dc259aabSmrg#include "pixman.h" 4dc259aabSmrg#include "utils.h" 5dc259aabSmrg 6dc259aabSmrgtypedef struct 7dc259aabSmrg{ 8dc259aabSmrg int width; 9dc259aabSmrg int height; 10dc259aabSmrg int stride; 11dc259aabSmrg pixman_format_code_t format; 12dc259aabSmrg 13dc259aabSmrg} image_info_t; 14dc259aabSmrg 15dc259aabSmrgtypedef struct 16dc259aabSmrg{ 17dc259aabSmrg pixman_op_t op; 18dc259aabSmrg 19dc259aabSmrg image_info_t src; 20dc259aabSmrg image_info_t dest; 21dc259aabSmrg 22dc259aabSmrg int src_x; 23dc259aabSmrg int src_y; 24dc259aabSmrg int dest_x; 25dc259aabSmrg int dest_y; 26dc259aabSmrg int width; 27dc259aabSmrg int height; 28dc259aabSmrg} composite_info_t; 29dc259aabSmrg 30dc259aabSmrgconst composite_info_t info[] = 31dc259aabSmrg{ 32dc259aabSmrg { PIXMAN_OP_SRC, { 3, 6, 16, PIXMAN_a8r8g8b8 }, { 5, 7, 20, PIXMAN_x8r8g8b8 }, 1, 8, 1, -1, 1, 8 }, 33dc259aabSmrg { PIXMAN_OP_SRC, { 7, 5, 36, PIXMAN_a8r8g8b8 }, { 6, 5, 28, PIXMAN_x8r8g8b8 }, 8, 5, 5, 3, 1, 2 }, 34dc259aabSmrg}; 35dc259aabSmrg 36dc259aabSmrgstatic pixman_image_t * 37dc259aabSmrgmake_image (const image_info_t *info) 38dc259aabSmrg{ 39dc259aabSmrg char *data = malloc (info->stride * info->height); 40dc259aabSmrg int i; 41dc259aabSmrg 42dc259aabSmrg for (i = 0; i < info->height * info->stride; ++i) 43dc259aabSmrg data[i] = (i % 255) ^ (((i % 16) << 4) | (i & 0xf0)); 44dc259aabSmrg 45dc259aabSmrg return pixman_image_create_bits (info->format, info->width, info->height, (uint32_t *)data, info->stride); 46dc259aabSmrg} 47dc259aabSmrg 48dc259aabSmrgstatic void 49dc259aabSmrgtest_composite (const composite_info_t *info) 50dc259aabSmrg{ 51dc259aabSmrg pixman_image_t *src = make_image (&info->src); 52dc259aabSmrg pixman_image_t *dest = make_image (&info->dest); 53dc259aabSmrg 54dc259aabSmrg pixman_image_composite (PIXMAN_OP_SRC, src, NULL, dest, 55dc259aabSmrg info->src_x, info->src_y, 56dc259aabSmrg 0, 0, 57dc259aabSmrg info->dest_x, info->dest_y, 58dc259aabSmrg info->width, info->height); 59dc259aabSmrg} 60dc259aabSmrg 61dc259aabSmrg 62dc259aabSmrg 63dc259aabSmrgint 64dc259aabSmrgmain (int argc, char **argv) 65dc259aabSmrg{ 66dc259aabSmrg int i; 67dc259aabSmrg 68dc259aabSmrg for (i = 0; i < sizeof (info) / sizeof (info[0]); ++i) 69dc259aabSmrg test_composite (&info[i]); 70dc259aabSmrg 71dc259aabSmrg return 0; 72dc259aabSmrg} 73