Edit

IABSD.fr/xenocara/lib/pixman/demos/trap-test.c

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2011-07-24 13:05:47
    Hash : 0def8ce1
    Message : Update to pixman 0.22.2. 0.22.0 was tested by many. 0.22.2 only add a few bug fixes. Note that on amd64 a recent ld.so is needed to avoid random bus errors.

  • lib/pixman/demos/trap-test.c
  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "pixman.h"
    #include "gtk-utils.h"
    
    int
    main (int argc, char **argv)
    {
    #define WIDTH 200
    #define HEIGHT 200
    
        pixman_image_t *src_img;
        pixman_image_t *mask_img;
        pixman_image_t *dest_img;
        pixman_trap_t trap;
        pixman_color_t white = { 0x0000, 0xffff, 0x0000, 0xffff };
        uint32_t *bits = malloc (WIDTH * HEIGHT * 4);
        uint32_t *mbits = malloc (WIDTH * HEIGHT);
    
        memset (mbits, 0, WIDTH * HEIGHT);
        memset (bits, 0xff, WIDTH * HEIGHT * 4);
        
        trap.top.l = pixman_int_to_fixed (50) + 0x8000;
        trap.top.r = pixman_int_to_fixed (150) + 0x8000;
        trap.top.y = pixman_int_to_fixed (30);
    
        trap.bot.l = pixman_int_to_fixed (50) + 0x8000;
        trap.bot.r = pixman_int_to_fixed (150) + 0x8000;
        trap.bot.y = pixman_int_to_fixed (150);
    
        mask_img = pixman_image_create_bits (PIXMAN_a8, WIDTH, HEIGHT, mbits, WIDTH);
        src_img = pixman_image_create_solid_fill (&white);
        dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, bits, WIDTH * 4);
        
        pixman_add_traps (mask_img, 0, 0, 1, &trap);
    
        pixman_image_composite (PIXMAN_OP_OVER,
    			    src_img, mask_img, dest_img,
    			    0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
        
        show_image (dest_img);
        
        pixman_image_unref (src_img);
        pixman_image_unref (dest_img);
        free (bits);
        
        return 0;
    }