Blame demos/convolution-test.c

Packit 030a23
#include <stdio.h>
Packit 030a23
#include <stdlib.h>
Packit 030a23
#include "pixman.h"
Packit 030a23
#include "gtk-utils.h"
Packit 030a23
Packit 030a23
int
Packit 030a23
main (int argc, char **argv)
Packit 030a23
{
Packit 030a23
#define WIDTH 200
Packit 030a23
#define HEIGHT 200
Packit 030a23
Packit 030a23
#define d2f pixman_double_to_fixed
Packit 030a23
    
Packit 030a23
    uint32_t *src = malloc (WIDTH * HEIGHT * 4);
Packit 030a23
    uint32_t *mask = malloc (WIDTH * HEIGHT * 4);
Packit 030a23
    uint32_t *dest = malloc (WIDTH * HEIGHT * 4);
Packit 030a23
    pixman_fixed_t convolution[] =
Packit 030a23
    {
Packit 030a23
	d2f (3), d2f (3),
Packit 030a23
	d2f (0.5), d2f (0.5), d2f (0.5),
Packit 030a23
	d2f (0.5), d2f (0.5), d2f (0.5),
Packit 030a23
	d2f (0.5), d2f (0.5), d2f (0.5),
Packit 030a23
    };
Packit 030a23
    pixman_image_t *simg, *mimg, *dimg;
Packit 030a23
Packit 030a23
    int i;
Packit 030a23
Packit 030a23
    for (i = 0; i < WIDTH * HEIGHT; ++i)
Packit 030a23
    {
Packit 030a23
	src[i] = 0x7f007f00;
Packit 030a23
	mask[i] = (i % 256) * 0x01000000;
Packit 030a23
	dest[i] = 0;
Packit 030a23
    }
Packit 030a23
Packit 030a23
    simg = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, src, WIDTH * 4);
Packit 030a23
    mimg = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, mask, WIDTH * 4);
Packit 030a23
    dimg = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4);
Packit 030a23
Packit 030a23
    pixman_image_set_filter (mimg, PIXMAN_FILTER_CONVOLUTION,
Packit 030a23
			     convolution, 11);
Packit 030a23
Packit 030a23
    pixman_image_composite (PIXMAN_OP_OVER, simg, mimg, dimg, 0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
Packit 030a23
Packit 030a23
    show_image (dimg);
Packit 030a23
    
Packit 030a23
    return 0;
Packit 030a23
}