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