11176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdio.h>
21176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdlib.h>
31176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include "pixman.h"
41176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include "gtk-utils.h"
51176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
61176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint
71176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmain (int argc, char **argv)
81176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
91176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define WIDTH 200
101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define HEIGHT 200
111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define d2f pixman_double_to_fixed
131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    uint32_t *src = malloc (WIDTH * HEIGHT * 4);
151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    uint32_t *mask = malloc (WIDTH * HEIGHT * 4);
161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    uint32_t *dest = malloc (WIDTH * HEIGHT * 4);
171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_fixed_t convolution[] =
181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	d2f (3), d2f (3),
201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	d2f (0.5), d2f (0.5), d2f (0.5),
211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	d2f (0.5), d2f (0.5), d2f (0.5),
221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	d2f (0.5), d2f (0.5), d2f (0.5),
231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    };
241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_image_t *simg, *mimg, *dimg;
251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int i;
271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for (i = 0; i < WIDTH * HEIGHT; ++i)
291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	src[i] = 0x7f007f00;
311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	mask[i] = (i % 256) * 0x01000000;
321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dest[i] = 0;
331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    simg = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, src, WIDTH * 4);
361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    mimg = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, mask, WIDTH * 4);
371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dimg = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4);
381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_image_set_filter (mimg, PIXMAN_FILTER_CONVOLUTION,
401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			     convolution, 11);
411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_image_composite (PIXMAN_OP_OVER, simg, mimg, dimg, 0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    show_image (dimg);
451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return 0;
471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48