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