Home | History | Annotate | Download | only in test
      1 #include <stdlib.h>
      2 #include "utils.h"
      3 
      4 static const pixman_op_t pdf_ops[] =
      5 {
      6     PIXMAN_OP_MULTIPLY,
      7     PIXMAN_OP_SCREEN,
      8     PIXMAN_OP_OVERLAY,
      9     PIXMAN_OP_DARKEN,
     10     PIXMAN_OP_LIGHTEN,
     11     PIXMAN_OP_COLOR_DODGE,
     12     PIXMAN_OP_COLOR_BURN,
     13     PIXMAN_OP_HARD_LIGHT,
     14     PIXMAN_OP_SOFT_LIGHT,
     15     PIXMAN_OP_DIFFERENCE,
     16     PIXMAN_OP_EXCLUSION,
     17     PIXMAN_OP_HSL_HUE,
     18     PIXMAN_OP_HSL_SATURATION,
     19     PIXMAN_OP_HSL_COLOR,
     20     PIXMAN_OP_HSL_LUMINOSITY
     21 };
     22 
     23 static const uint32_t pixels[] =
     24 {
     25     0x00808080,
     26     0x80123456,
     27     0x00000000,
     28     0xffffffff,
     29     0x00ffffff,
     30     0x80808080,
     31     0x00123456,
     32 };
     33 
     34 int
     35 main ()
     36 {
     37     int o, s, m, d;
     38 
     39     enable_divbyzero_exceptions();
     40 
     41     for (o = 0; o < ARRAY_LENGTH (pdf_ops); ++o)
     42     {
     43 	pixman_op_t op = pdf_ops[o];
     44 
     45 	for (s = 0; s < ARRAY_LENGTH (pixels); ++s)
     46 	{
     47 	    pixman_image_t *src;
     48 
     49 	    src = pixman_image_create_bits (
     50 		PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[s]), 4);
     51 
     52 	    for (m = -1; m < ARRAY_LENGTH (pixels); ++m)
     53 	    {
     54 		pixman_image_t *msk = NULL;
     55 		if (m >= 0)
     56 		{
     57 		    msk = pixman_image_create_bits (
     58 			PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[m]), 4);
     59 		}
     60 
     61 		for (d = 0; d < ARRAY_LENGTH (pixels); ++d)
     62 		{
     63 		    pixman_image_t *dst;
     64 		    uint32_t dp = pixels[d];
     65 
     66 		    dst = pixman_image_create_bits (
     67 			PIXMAN_a8r8g8b8, 1, 1, &dp, 4);
     68 
     69 		    pixman_image_composite (op, src, msk, dst,
     70 					    0, 0, 0, 0, 0, 0, 1, 1);
     71 
     72 		    pixman_image_unref (dst);
     73 		}
     74 		if (msk)
     75 		    pixman_image_unref (msk);
     76 	    }
     77 
     78 	    pixman_image_unref (src);
     79 	}
     80     }
     81 
     82     return 0;
     83 }
     84