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