Blame test/pdf-op-test.c

Packit 030a23
#include <stdlib.h>
Packit 030a23
#include "utils.h"
Packit 030a23
Packit 030a23
static const pixman_op_t pdf_ops[] =
Packit 030a23
{
Packit 030a23
    PIXMAN_OP_MULTIPLY,
Packit 030a23
    PIXMAN_OP_SCREEN,
Packit 030a23
    PIXMAN_OP_OVERLAY,
Packit 030a23
    PIXMAN_OP_DARKEN,
Packit 030a23
    PIXMAN_OP_LIGHTEN,
Packit 030a23
    PIXMAN_OP_COLOR_DODGE,
Packit 030a23
    PIXMAN_OP_COLOR_BURN,
Packit 030a23
    PIXMAN_OP_HARD_LIGHT,
Packit 030a23
    PIXMAN_OP_SOFT_LIGHT,
Packit 030a23
    PIXMAN_OP_DIFFERENCE,
Packit 030a23
    PIXMAN_OP_EXCLUSION,
Packit 030a23
    PIXMAN_OP_HSL_HUE,
Packit 030a23
    PIXMAN_OP_HSL_SATURATION,
Packit 030a23
    PIXMAN_OP_HSL_COLOR,
Packit 030a23
    PIXMAN_OP_HSL_LUMINOSITY
Packit 030a23
};
Packit 030a23
Packit 030a23
static const uint32_t pixels[] =
Packit 030a23
{
Packit 030a23
    0x00808080,
Packit 030a23
    0x80123456,
Packit 030a23
    0x00000000,
Packit 030a23
    0xffffffff,
Packit 030a23
    0x00ffffff,
Packit 030a23
    0x80808080,
Packit 030a23
    0x00123456,
Packit 030a23
};
Packit 030a23
Packit 030a23
int
Packit 030a23
main ()
Packit 030a23
{
Packit 030a23
    int o, s, m, d;
Packit 030a23
Packit 030a23
    enable_divbyzero_exceptions();
Packit 030a23
Packit 030a23
    for (o = 0; o < ARRAY_LENGTH (pdf_ops); ++o)
Packit 030a23
    {
Packit 030a23
	pixman_op_t op = pdf_ops[o];
Packit 030a23
Packit 030a23
	for (s = 0; s < ARRAY_LENGTH (pixels); ++s)
Packit 030a23
	{
Packit 030a23
	    pixman_image_t *src;
Packit 030a23
Packit 030a23
	    src = pixman_image_create_bits (
Packit 030a23
		PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[s]), 4);
Packit 030a23
Packit 030a23
	    for (m = -1; m < ARRAY_LENGTH (pixels); ++m)
Packit 030a23
	    {
Packit 030a23
		pixman_image_t *msk = NULL;
Packit 030a23
		if (m >= 0)
Packit 030a23
		{
Packit 030a23
		    msk = pixman_image_create_bits (
Packit 030a23
			PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[m]), 4);
Packit 030a23
		}
Packit 030a23
Packit 030a23
		for (d = 0; d < ARRAY_LENGTH (pixels); ++d)
Packit 030a23
		{
Packit 030a23
		    pixman_image_t *dst;
Packit 030a23
		    uint32_t dp = pixels[d];
Packit 030a23
Packit 030a23
		    dst = pixman_image_create_bits (
Packit 030a23
			PIXMAN_a8r8g8b8, 1, 1, &dp, 4);
Packit 030a23
Packit 030a23
		    pixman_image_composite (op, src, msk, dst,
Packit 030a23
					    0, 0, 0, 0, 0, 0, 1, 1);
Packit 030a23
Packit 030a23
		    pixman_image_unref (dst);
Packit 030a23
		}
Packit 030a23
		if (msk)
Packit 030a23
		    pixman_image_unref (msk);
Packit 030a23
	    }
Packit 030a23
Packit 030a23
	    pixman_image_unref (src);
Packit 030a23
	}
Packit 030a23
    }
Packit 030a23
Packit 030a23
    return 0;
Packit 030a23
}