|
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 |
}
|