| /* ICE: call insn does not satisfy its constraints, MMIX port. |
| Origin: ghostscript-6.52, reduction from hp@bitrange.com. */ |
| struct s0 |
| { |
| void (*init_color)(void *, void *); |
| }; |
| struct s1 |
| { |
| void (*map_cmyk)(short, void *, void **, void *); |
| void (*map_rgb_alpha)(short, void *, void **, void *); |
| }; |
| struct s5 |
| { |
| long fill1; int fill2; |
| long fill3; unsigned int fill4, fill5; |
| }; |
| struct s2 |
| { |
| struct s5 x, y; |
| }; |
| struct s3 |
| { |
| long dev_color; |
| unsigned int key; |
| }; |
| struct s4 |
| { |
| unsigned char spp; |
| int alpha; |
| struct mc_ |
| { |
| unsigned int values[14]; |
| unsigned int mask, test; |
| int exact; |
| } mask_color; |
| void **pis; |
| struct s0 *pcs; |
| struct dd_ |
| { |
| struct s2 row[2]; |
| struct s2 pixel0; |
| } dda; |
| struct s3 clues[256]; |
| }; |
| extern struct s1 *get_cmap_procs (void **, void *); |
| int image_render_color (struct s4 *, unsigned char *, int, void *); |
| int |
| image_render_color (struct s4 *penum, unsigned char *buffer, |
| int data_x, void *dev) |
| { |
| struct s3 *clues = penum->clues; |
| void **pis = penum->pis; |
| struct s2 pnext; |
| struct s0 *pcs = penum->pcs; |
| struct s1 *cmap_procs = get_cmap_procs(pis, dev); |
| void (*map_4)(short, void *, void **, void *) = |
| (penum->alpha ? cmap_procs->map_rgb_alpha : cmap_procs->map_cmyk); |
| unsigned int mask = penum->mask_color.mask; |
| unsigned int test = penum->mask_color.test; |
| struct s3 *pic_next = &clues[1]; |
| int spp = penum->spp; |
| unsigned char *psrc = buffer + data_x * spp; |
| unsigned char v[6]; |
| |
| pnext = penum->dda.pixel0; |
| __builtin_memset (&v, 0, sizeof(v)); |
| (*(pcs)->init_color) (0, 0); |
| |
| if (spp == 4) |
| { |
| v[0] = psrc[0]; |
| v[1] = psrc[1]; |
| if ((buffer[0] & mask) == test && penum->mask_color.exact) |
| pic_next->dev_color = 0; |
| (*map_4)(v[0], &pic_next->dev_color, pis, dev); |
| } |
| return 0; |
| } |