pdf-op-test.c revision 953d7d37
1953d7d37Smrg#include <config.h> 2953d7d37Smrg#include <stdlib.h> 3953d7d37Smrg#include "utils.h" 4953d7d37Smrg 5953d7d37Smrgstatic const pixman_op_t pdf_ops[] = 6953d7d37Smrg{ 7953d7d37Smrg PIXMAN_OP_MULTIPLY, 8953d7d37Smrg PIXMAN_OP_SCREEN, 9953d7d37Smrg PIXMAN_OP_OVERLAY, 10953d7d37Smrg PIXMAN_OP_DARKEN, 11953d7d37Smrg PIXMAN_OP_LIGHTEN, 12953d7d37Smrg PIXMAN_OP_COLOR_DODGE, 13953d7d37Smrg PIXMAN_OP_COLOR_BURN, 14953d7d37Smrg PIXMAN_OP_HARD_LIGHT, 15953d7d37Smrg PIXMAN_OP_SOFT_LIGHT, 16953d7d37Smrg PIXMAN_OP_DIFFERENCE, 17953d7d37Smrg PIXMAN_OP_EXCLUSION, 18953d7d37Smrg PIXMAN_OP_HSL_HUE, 19953d7d37Smrg PIXMAN_OP_HSL_SATURATION, 20953d7d37Smrg PIXMAN_OP_HSL_COLOR, 21953d7d37Smrg PIXMAN_OP_HSL_LUMINOSITY 22953d7d37Smrg}; 23953d7d37Smrg 24953d7d37Smrgstatic const uint32_t pixels[] = 25953d7d37Smrg{ 26953d7d37Smrg 0x00808080, 27953d7d37Smrg 0x80123456, 28953d7d37Smrg 0x00000000, 29953d7d37Smrg 0xffffffff, 30953d7d37Smrg 0x00ffffff, 31953d7d37Smrg 0x80808080, 32953d7d37Smrg 0x00123456, 33953d7d37Smrg}; 34953d7d37Smrg 35953d7d37Smrgint 36953d7d37Smrgmain () 37953d7d37Smrg{ 38953d7d37Smrg int o, s, m, d; 39953d7d37Smrg 40953d7d37Smrg enable_fp_exceptions(); 41953d7d37Smrg 42953d7d37Smrg for (o = 0; o < ARRAY_LENGTH (pdf_ops); ++o) 43953d7d37Smrg { 44953d7d37Smrg pixman_op_t op = pdf_ops[o]; 45953d7d37Smrg 46953d7d37Smrg for (s = 0; s < ARRAY_LENGTH (pixels); ++s) 47953d7d37Smrg { 48953d7d37Smrg pixman_image_t *src; 49953d7d37Smrg 50953d7d37Smrg src = pixman_image_create_bits ( 51953d7d37Smrg PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[s]), 4); 52953d7d37Smrg 53953d7d37Smrg for (m = -1; m < ARRAY_LENGTH (pixels); ++m) 54953d7d37Smrg { 55953d7d37Smrg pixman_image_t *msk = NULL; 56953d7d37Smrg if (m >= 0) 57953d7d37Smrg { 58953d7d37Smrg msk = pixman_image_create_bits ( 59953d7d37Smrg PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[m]), 4); 60953d7d37Smrg } 61953d7d37Smrg 62953d7d37Smrg for (d = 0; d < ARRAY_LENGTH (pixels); ++d) 63953d7d37Smrg { 64953d7d37Smrg pixman_image_t *dst; 65953d7d37Smrg uint32_t dp = pixels[d]; 66953d7d37Smrg 67953d7d37Smrg dst = pixman_image_create_bits ( 68953d7d37Smrg PIXMAN_a8r8g8b8, 1, 1, &dp, 4); 69953d7d37Smrg 70953d7d37Smrg pixman_image_composite (op, src, msk, dst, 71953d7d37Smrg 0, 0, 0, 0, 0, 0, 1, 1); 72953d7d37Smrg 73953d7d37Smrg pixman_image_unref (dst); 74953d7d37Smrg } 75953d7d37Smrg if (msk) 76953d7d37Smrg pixman_image_unref (msk); 77953d7d37Smrg } 78953d7d37Smrg 79953d7d37Smrg pixman_image_unref (src); 80953d7d37Smrg } 81953d7d37Smrg } 82953d7d37Smrg 83953d7d37Smrg return 0; 84953d7d37Smrg} 85