1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include <stdlib.h> 2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "utils.h" 3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgstatic const pixman_op_t pdf_ops[] = 5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_MULTIPLY, 7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_SCREEN, 8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_OVERLAY, 9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_DARKEN, 10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_LIGHTEN, 11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_COLOR_DODGE, 12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_COLOR_BURN, 13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_HARD_LIGHT, 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_SOFT_LIGHT, 15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_DIFFERENCE, 16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_EXCLUSION, 17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_HSL_HUE, 18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_HSL_SATURATION, 19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_HSL_COLOR, 20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_OP_HSL_LUMINOSITY 21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}; 22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgstatic const uint32_t pixels[] = 24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0x00808080, 26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0x80123456, 27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0x00000000, 28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0xffffffff, 29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0x00ffffff, 30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0x80808080, 31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0x00123456, 32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}; 33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgint 35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgmain () 36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int o, s, m, d; 38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enable_divbyzero_exceptions(); 40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (o = 0; o < ARRAY_LENGTH (pdf_ops); ++o) 42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_op_t op = pdf_ops[o]; 44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (s = 0; s < ARRAY_LENGTH (pixels); ++s) 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_t *src; 48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org src = pixman_image_create_bits ( 50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[s]), 4); 51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (m = -1; m < ARRAY_LENGTH (pixels); ++m) 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_t *msk = NULL; 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (m >= 0) 56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org msk = pixman_image_create_bits ( 58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[m]), 4); 59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (d = 0; d < ARRAY_LENGTH (pixels); ++d) 62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_t *dst; 64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org uint32_t dp = pixels[d]; 65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org dst = pixman_image_create_bits ( 67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PIXMAN_a8r8g8b8, 1, 1, &dp, 4); 68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_composite (op, src, msk, dst, 70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 0, 0, 0, 0, 0, 0, 1, 1); 71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_unref (dst); 73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (msk) 75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_unref (msk); 76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pixman_image_unref (src); 79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org return 0; 83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org