]> git.wh0rd.org Git - ICEs.git/blob - sh-ghostscript/gdevifno.i.0
more ices
[ICEs.git] / sh-ghostscript / gdevifno.i.0
1 typedef unsigned char __u_char;
2 typedef unsigned short int __u_short;
3 typedef unsigned int __u_int;
4 typedef unsigned long int __u_long;
5 typedef signed char __int8_t;
6 typedef unsigned char __uint8_t;
7 typedef signed short int __int16_t;
8 typedef unsigned short int __uint16_t;
9 typedef signed int __int32_t;
10 typedef unsigned int __uint32_t;
11 __extension__ typedef signed long long int __int64_t;
12 __extension__ typedef unsigned long long int __uint64_t;
13 __extension__ typedef long long int __quad_t;
14 __extension__ typedef unsigned long long int __u_quad_t;
15 __extension__ typedef __u_quad_t __dev_t;
16 __extension__ typedef unsigned int __uid_t;
17 __extension__ typedef unsigned int __gid_t;
18 __extension__ typedef unsigned long int __ino_t;
19 __extension__ typedef __u_quad_t __ino64_t;
20 __extension__ typedef unsigned int __mode_t;
21 __extension__ typedef unsigned int __nlink_t;
22 __extension__ typedef long int __off_t;
23 __extension__ typedef __quad_t __off64_t;
24 __extension__ typedef int __pid_t;
25 __extension__ typedef struct { int __val[2]; } __fsid_t;
26 __extension__ typedef long int __clock_t;
27 __extension__ typedef unsigned long int __rlim_t;
28 __extension__ typedef __u_quad_t __rlim64_t;
29 __extension__ typedef unsigned int __id_t;
30 __extension__ typedef long int __time_t;
31 __extension__ typedef unsigned int __useconds_t;
32 __extension__ typedef long int __suseconds_t;
33 __extension__ typedef int __daddr_t;
34 __extension__ typedef long int __swblk_t;
35 __extension__ typedef int __key_t;
36 __extension__ typedef int __clockid_t;
37 __extension__ typedef void * __timer_t;
38 __extension__ typedef long int __blksize_t;
39 __extension__ typedef long int __blkcnt_t;
40 __extension__ typedef __quad_t __blkcnt64_t;
41 __extension__ typedef unsigned long int __fsblkcnt_t;
42 __extension__ typedef __u_quad_t __fsblkcnt64_t;
43 __extension__ typedef unsigned long int __fsfilcnt_t;
44 __extension__ typedef __u_quad_t __fsfilcnt64_t;
45 __extension__ typedef int __ssize_t;
46 typedef __off64_t __loff_t;
47 typedef __quad_t *__qaddr_t;
48 typedef char *__caddr_t;
49 __extension__ typedef int __intptr_t;
50 __extension__ typedef unsigned int __socklen_t;
51 typedef __u_char u_char;
52 typedef __u_short u_short;
53 typedef __u_int u_int;
54 typedef __u_long u_long;
55 typedef __quad_t quad_t;
56 typedef __u_quad_t u_quad_t;
57 typedef __fsid_t fsid_t;
58 typedef __loff_t loff_t;
59 typedef __ino_t ino_t;
60 typedef __ino64_t ino64_t;
61 typedef __dev_t dev_t;
62 typedef __gid_t gid_t;
63 typedef __mode_t mode_t;
64 typedef __nlink_t nlink_t;
65 typedef __uid_t uid_t;
66 typedef __off_t off_t;
67 typedef __off64_t off64_t;
68 typedef __pid_t pid_t;
69 typedef __id_t id_t;
70 typedef __ssize_t ssize_t;
71 typedef __daddr_t daddr_t;
72 typedef __caddr_t caddr_t;
73 typedef __key_t key_t;
74 typedef __time_t time_t;
75 typedef __clockid_t clockid_t;
76 typedef __timer_t timer_t;
77 typedef unsigned int size_t;
78 typedef unsigned long int ulong_;
79 typedef unsigned short int ushort_;
80 typedef unsigned int uint_;
81 typedef int int8_t __attribute__ ((__mode__ (__QI__)));
82 typedef int int16_t __attribute__ ((__mode__ (__HI__)));
83 typedef int int32_t __attribute__ ((__mode__ (__SI__)));
84 typedef int int64_t __attribute__ ((__mode__ (__DI__)));
85 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
86 typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
87 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
88 typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
89 typedef int register_t __attribute__ ((__mode__ (__word__)));
90 typedef int __sig_atomic_t;
91 typedef struct
92   {
93     unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
94   } __sigset_t;
95 typedef __sigset_t sigset_t;
96 struct timespec
97   {
98     __time_t tv_sec;
99     long int tv_nsec;
100   };
101 struct timeval
102   {
103     __time_t tv_sec;
104     __suseconds_t tv_usec;
105   };
106 typedef __suseconds_t suseconds_t;
107 typedef long int __fd_mask;
108 typedef struct
109   {
110     __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
111   } fd_set;
112 typedef __fd_mask fd_mask;
113 extern int select (int __nfds, fd_set *__restrict __readfds,
114      fd_set *__restrict __writefds,
115      fd_set *__restrict __exceptfds,
116      struct timeval *__restrict __timeout);
117 extern int pselect (int __nfds, fd_set *__restrict __readfds,
118       fd_set *__restrict __writefds,
119       fd_set *__restrict __exceptfds,
120       const struct timespec *__restrict __timeout,
121       const __sigset_t *__restrict __sigmask);
122 __extension__
123 extern unsigned int gnu_dev_major (unsigned long long int __dev)
124      __attribute__ ((__nothrow__));
125 __extension__
126 extern unsigned int gnu_dev_minor (unsigned long long int __dev)
127      __attribute__ ((__nothrow__));
128 __extension__
129 extern unsigned long long int gnu_dev_makedev (unsigned int __major,
130             unsigned int __minor)
131      __attribute__ ((__nothrow__));
132 __extension__ extern __inline unsigned int
133 __attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
134 {
135   return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
136 }
137 __extension__ extern __inline unsigned int
138 __attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
139 {
140   return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
141 }
142 __extension__ extern __inline unsigned long long int
143 __attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
144 {
145   return ((__minor & 0xff) | ((__major & 0xfff) << 8)
146    | (((unsigned long long int) (__minor & ~0xff)) << 12)
147    | (((unsigned long long int) (__major & ~0xfff)) << 32));
148 }
149 typedef __blkcnt_t blkcnt_t;
150 typedef __fsblkcnt_t fsblkcnt_t;
151 typedef __fsfilcnt_t fsfilcnt_t;
152 typedef __blkcnt64_t blkcnt64_t;
153 typedef __fsblkcnt64_t fsblkcnt64_t;
154 typedef __fsfilcnt64_t fsfilcnt64_t;
155 typedef unsigned long int pthread_t;
156 typedef union
157 {
158   char __size[36];
159   long int __align;
160 } pthread_attr_t;
161 typedef struct __pthread_internal_slist
162 {
163   struct __pthread_internal_slist *__next;
164 } __pthread_slist_t;
165 typedef union
166 {
167   struct __pthread_mutex_s
168   {
169     int __lock;
170     unsigned int __count;
171     int __owner;
172     int __kind;
173     unsigned int __nusers;
174     __extension__ union
175     {
176       int __spins;
177       __pthread_slist_t __list;
178     };
179   } __data;
180   char __size[24];
181   long int __align;
182 } pthread_mutex_t;
183 typedef union
184 {
185   char __size[4];
186   long int __align;
187 } pthread_mutexattr_t;
188 typedef union
189 {
190   struct
191   {
192     int __lock;
193     unsigned int __futex;
194     __extension__ unsigned long long int __total_seq;
195     __extension__ unsigned long long int __wakeup_seq;
196     __extension__ unsigned long long int __woken_seq;
197     void *__mutex;
198     unsigned int __nwaiters;
199     unsigned int __broadcast_seq;
200   } __data;
201   char __size[48];
202   __extension__ long long int __align;
203 } pthread_cond_t;
204 typedef union
205 {
206   char __size[4];
207   long int __align;
208 } pthread_condattr_t;
209 typedef unsigned int pthread_key_t;
210 typedef int pthread_once_t;
211 typedef union
212 {
213   struct
214   {
215     int __lock;
216     unsigned int __nr_readers;
217     unsigned int __readers_wakeup;
218     unsigned int __writer_wakeup;
219     unsigned int __nr_readers_queued;
220     unsigned int __nr_writers_queued;
221     unsigned char __flags;
222     unsigned char __shared;
223     unsigned char __pad1;
224     unsigned char __pad2;
225     pthread_t __writer;
226   } __data;
227   char __size[32];
228   long int __align;
229 } pthread_rwlock_t;
230 typedef union
231 {
232   char __size[8];
233   long int __align;
234 } pthread_rwlockattr_t;
235 typedef volatile int pthread_spinlock_t;
236 typedef union
237 {
238   char __size[20];
239   long int __align;
240 } pthread_barrier_t;
241 typedef union
242 {
243   char __size[4];
244   int __align;
245 } pthread_barrierattr_t;
246 typedef int bool;
247 typedef const char *ptr_ord_t;
248 typedef double floatp;
249 typedef const char *client_name_t;
250 typedef unsigned short bits16;
251 typedef unsigned int bits32;
252 struct _IO_FILE;
253 typedef struct _IO_FILE FILE;
254 typedef struct _IO_FILE __FILE;
255 typedef struct
256 {
257   int __count;
258   union
259   {
260     unsigned int __wch;
261     char __wchb[4];
262   } __value;
263 } __mbstate_t;
264 typedef struct
265 {
266   __off_t __pos;
267   __mbstate_t __state;
268 } _G_fpos_t;
269 typedef struct
270 {
271   __off64_t __pos;
272   __mbstate_t __state;
273 } _G_fpos64_t;
274 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
275 typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
276 typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
277 typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
278 typedef __builtin_va_list __gnuc_va_list;
279 struct _IO_jump_t; struct _IO_FILE;
280 typedef void _IO_lock_t;
281 struct _IO_marker {
282   struct _IO_marker *_next;
283   struct _IO_FILE *_sbuf;
284   int _pos;
285 };
286 enum __codecvt_result
287 {
288   __codecvt_ok,
289   __codecvt_partial,
290   __codecvt_error,
291   __codecvt_noconv
292 };
293 struct _IO_FILE {
294   int _flags;
295   char* _IO_read_ptr;
296   char* _IO_read_end;
297   char* _IO_read_base;
298   char* _IO_write_base;
299   char* _IO_write_ptr;
300   char* _IO_write_end;
301   char* _IO_buf_base;
302   char* _IO_buf_end;
303   char *_IO_save_base;
304   char *_IO_backup_base;
305   char *_IO_save_end;
306   struct _IO_marker *_markers;
307   struct _IO_FILE *_chain;
308   int _fileno;
309   int _flags2;
310   __off_t _old_offset;
311   unsigned short _cur_column;
312   signed char _vtable_offset;
313   char _shortbuf[1];
314   _IO_lock_t *_lock;
315   __off64_t _offset;
316   void *__pad1;
317   void *__pad2;
318   void *__pad3;
319   void *__pad4;
320   size_t __pad5;
321   int _mode;
322   char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
323 };
324 typedef struct _IO_FILE _IO_FILE;
325 struct _IO_FILE_plus;
326 extern struct _IO_FILE_plus _IO_2_1_stdin_;
327 extern struct _IO_FILE_plus _IO_2_1_stdout_;
328 extern struct _IO_FILE_plus _IO_2_1_stderr_;
329 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
330 typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
331      size_t __n);
332 typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
333 typedef int __io_close_fn (void *__cookie);
334 extern int __underflow (_IO_FILE *);
335 extern int __uflow (_IO_FILE *);
336 extern int __overflow (_IO_FILE *, int);
337 extern int _IO_getc (_IO_FILE *__fp);
338 extern int _IO_putc (int __c, _IO_FILE *__fp);
339 extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
340 extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
341 extern int _IO_peekc_locked (_IO_FILE *__fp);
342 extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
343 extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
344 extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
345 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
346    __gnuc_va_list, int *__restrict);
347 extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
348     __gnuc_va_list);
349 extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
350 extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
351 extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
352 extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
353 extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
354 typedef _G_fpos_t fpos_t;
355 typedef _G_fpos64_t fpos64_t;
356 extern struct _IO_FILE *stdin;
357 extern struct _IO_FILE *stdout;
358 extern struct _IO_FILE *stderr;
359 extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
360 extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
361 extern FILE *tmpfile (void) ;
362 extern FILE *tmpfile64 (void) ;
363 extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
364 extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
365 extern char *tempnam (__const char *__dir, __const char *__pfx)
366      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
367 extern int fclose (FILE *__stream);
368 extern int fflush (FILE *__stream);
369 extern int fflush_unlocked (FILE *__stream);
370 extern FILE *fopen (__const char *__restrict __filename,
371       __const char *__restrict __modes) ;
372 extern FILE *freopen (__const char *__restrict __filename,
373         __const char *__restrict __modes,
374         FILE *__restrict __stream) ;
375 extern FILE *fopen64 (__const char *__restrict __filename,
376         __const char *__restrict __modes) ;
377 extern FILE *freopen64 (__const char *__restrict __filename,
378    __const char *__restrict __modes,
379    FILE *__restrict __stream) ;
380 extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
381 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
382 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
383       int __modes, size_t __n) __attribute__ ((__nothrow__));
384 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
385          size_t __size) __attribute__ ((__nothrow__));
386 extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
387 extern int fprintf (FILE *__restrict __stream,
388       __const char *__restrict __format, ...);
389 extern int printf (__const char *__restrict __format, ...);
390 extern int sprintf (char *__restrict __s,
391       __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
392 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
393        __gnuc_va_list __arg);
394 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
395 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
396        __gnuc_va_list __arg) __attribute__ ((__nothrow__));
397 extern int snprintf (char *__restrict __s, size_t __maxlen,
398        __const char *__restrict __format, ...)
399      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
400 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
401         __const char *__restrict __format, __gnuc_va_list __arg)
402      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
403 extern int fscanf (FILE *__restrict __stream,
404      __const char *__restrict __format, ...) ;
405 extern int scanf (__const char *__restrict __format, ...) ;
406 extern int sscanf (__const char *__restrict __s,
407      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
408 extern int fgetc (FILE *__stream);
409 extern int getc (FILE *__stream);
410 extern int getchar (void);
411 extern int getc_unlocked (FILE *__stream);
412 extern int getchar_unlocked (void);
413 extern int fgetc_unlocked (FILE *__stream);
414 extern int fputc (int __c, FILE *__stream);
415 extern int putc (int __c, FILE *__stream);
416 extern int putchar (int __c);
417 extern int fputc_unlocked (int __c, FILE *__stream);
418 extern int putc_unlocked (int __c, FILE *__stream);
419 extern int putchar_unlocked (int __c);
420 extern int getw (FILE *__stream);
421 extern int putw (int __w, FILE *__stream);
422 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
423      ;
424 extern char *gets (char *__s) ;
425 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
426 extern int puts (__const char *__s);
427 extern int ungetc (int __c, FILE *__stream);
428 extern size_t fread (void *__restrict __ptr, size_t __size,
429        size_t __n, FILE *__restrict __stream) ;
430 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
431         size_t __n, FILE *__restrict __s) ;
432 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
433          size_t __n, FILE *__restrict __stream) ;
434 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
435           size_t __n, FILE *__restrict __stream) ;
436 extern int fseek (FILE *__stream, long int __off, int __whence);
437 extern long int ftell (FILE *__stream) ;
438 extern void rewind (FILE *__stream);
439 extern int fseeko (FILE *__stream, __off_t __off, int __whence);
440 extern __off_t ftello (FILE *__stream) ;
441 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
442 extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
443 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
444 extern __off64_t ftello64 (FILE *__stream) ;
445 extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
446 extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
447 extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
448 extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
449 extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
450 extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
451 extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
452 extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
453 extern void perror (__const char *__s);
454 extern int sys_nerr;
455 extern __const char *__const sys_errlist[];
456 extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
457 extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
458 extern FILE *popen (__const char *__command, __const char *__modes) ;
459 extern int pclose (FILE *__stream);
460 extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
461 extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
462 extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
463 extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
464 extern __inline int
465 vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
466 {
467   return vfprintf (stdout, __fmt, __arg);
468 }
469 extern __inline int
470 getchar (void)
471 {
472   return _IO_getc (stdin);
473 }
474 extern __inline int
475 fgetc_unlocked (FILE *__fp)
476 {
477   return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
478 }
479 extern __inline int
480 getc_unlocked (FILE *__fp)
481 {
482   return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
483 }
484 extern __inline int
485 getchar_unlocked (void)
486 {
487   return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
488 }
489 extern __inline int
490 putchar (int __c)
491 {
492   return _IO_putc (__c, stdout);
493 }
494 extern __inline int
495 fputc_unlocked (int __c, FILE *__stream)
496 {
497   return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
498 }
499 extern __inline int
500 putc_unlocked (int __c, FILE *__stream)
501 {
502   return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
503 }
504 extern __inline int
505 putchar_unlocked (int __c)
506 {
507   return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
508 }
509 extern __inline int
510 __attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
511 {
512   return (((__stream)->_flags & 0x10) != 0);
513 }
514 extern __inline int
515 __attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
516 {
517   return (((__stream)->_flags & 0x20) != 0);
518 }
519 typedef struct gs_memory_s gs_memory_t;
520 int outwrite(const gs_memory_t *mem, const char *str, int len);
521 int errwrite(const char *str, int len);
522 void outflush(const gs_memory_t *mem);
523 void errflush(void);
524 int outprintf(const gs_memory_t *mem, const char *fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
525 int errprintf(const char *fmt, ...) __attribute__((__format__ (__printf__, 1, 2)));
526 void dprintf_file_and_line(const char *, int);
527 void dflush(void);
528 void printf_program_ident(const gs_memory_t *mem, const char *program_name, long revision_number);
529 void eprintf_program_ident(const char *program_name, long revision_number);
530 const char *gs_program_name(void);
531 long gs_revision_number(void);
532 void lprintf_file_and_line(const char *, int);
533 extern void *memcpy (void *__restrict __dest,
534        __const void *__restrict __src, size_t __n)
535      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
536 extern void *memmove (void *__dest, __const void *__src, size_t __n)
537      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
538 extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
539         int __c, size_t __n)
540      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
541 extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
542 extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
543      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
544 extern void *memchr (__const void *__s, int __c, size_t __n)
545       __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
546 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
547      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
548 extern char *strncpy (char *__restrict __dest,
549         __const char *__restrict __src, size_t __n)
550      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
551 extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
552      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
553 extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
554         size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
555 extern int strcmp (__const char *__s1, __const char *__s2)
556      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
557 extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
558      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
559 extern int strcoll (__const char *__s1, __const char *__s2)
560      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
561 extern size_t strxfrm (char *__restrict __dest,
562          __const char *__restrict __src, size_t __n)
563      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
564 extern char *strdup (__const char *__s)
565      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
566 extern char *strchr (__const char *__s, int __c)
567      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
568 extern char *strrchr (__const char *__s, int __c)
569      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
570 extern size_t strcspn (__const char *__s, __const char *__reject)
571      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
572 extern size_t strspn (__const char *__s, __const char *__accept)
573      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
574 extern char *strpbrk (__const char *__s, __const char *__accept)
575      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
576 extern char *strstr (__const char *__haystack, __const char *__needle)
577      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
578 extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
579      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
580 extern char *__strtok_r (char *__restrict __s,
581     __const char *__restrict __delim,
582     char **__restrict __save_ptr)
583      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
584 extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
585          char **__restrict __save_ptr)
586      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
587 extern size_t strlen (__const char *__s)
588      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
589 extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
590 extern int strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
591 extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
592 extern void bcopy (__const void *__src, void *__dest, size_t __n)
593      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
594 extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
595 extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
596      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
597 extern char *index (__const char *__s, int __c)
598      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
599 extern char *rindex (__const char *__s, int __c)
600      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
601 extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
602 extern int strcasecmp (__const char *__s1, __const char *__s2)
603      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
604 extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
605      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
606 extern char *strsep (char **__restrict __stringp,
607        __const char *__restrict __delim)
608      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
609 typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
610 typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
611 typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
612 typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
613 typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
614 typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
615 typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
616 extern void *__rawmemchr (const void *__s, int __c);
617 extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
618 extern __inline size_t
619 __strcspn_c1 (__const char *__s, int __reject)
620 {
621   register size_t __result = 0;
622   while (__s[__result] != '\0' && __s[__result] != __reject)
623     ++__result;
624   return __result;
625 }
626 extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
627          int __reject2);
628 extern __inline size_t
629 __strcspn_c2 (__const char *__s, int __reject1, int __reject2)
630 {
631   register size_t __result = 0;
632   while (__s[__result] != '\0' && __s[__result] != __reject1
633   && __s[__result] != __reject2)
634     ++__result;
635   return __result;
636 }
637 extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
638          int __reject2, int __reject3);
639 extern __inline size_t
640 __strcspn_c3 (__const char *__s, int __reject1, int __reject2,
641        int __reject3)
642 {
643   register size_t __result = 0;
644   while (__s[__result] != '\0' && __s[__result] != __reject1
645   && __s[__result] != __reject2 && __s[__result] != __reject3)
646     ++__result;
647   return __result;
648 }
649 extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
650 extern __inline size_t
651 __strspn_c1 (__const char *__s, int __accept)
652 {
653   register size_t __result = 0;
654   while (__s[__result] == __accept)
655     ++__result;
656   return __result;
657 }
658 extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
659         int __accept2);
660 extern __inline size_t
661 __strspn_c2 (__const char *__s, int __accept1, int __accept2)
662 {
663   register size_t __result = 0;
664   while (__s[__result] == __accept1 || __s[__result] == __accept2)
665     ++__result;
666   return __result;
667 }
668 extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
669         int __accept2, int __accept3);
670 extern __inline size_t
671 __strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
672 {
673   register size_t __result = 0;
674   while (__s[__result] == __accept1 || __s[__result] == __accept2
675   || __s[__result] == __accept3)
676     ++__result;
677   return __result;
678 }
679 extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
680          int __accept2);
681 extern __inline char *
682 __strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
683 {
684   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
685     ++__s;
686   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
687 }
688 extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
689          int __accept2, int __accept3);
690 extern __inline char *
691 __strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
692        int __accept3)
693 {
694   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
695   && *__s != __accept3)
696     ++__s;
697   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
698 }
699 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
700 extern __inline char *
701 __strtok_r_1c (char *__s, char __sep, char **__nextp)
702 {
703   char *__result;
704   if (__s == ((void *)0))
705     __s = *__nextp;
706   while (*__s == __sep)
707     ++__s;
708   __result = ((void *)0);
709   if (*__s != '\0')
710     {
711       __result = __s++;
712       while (*__s != '\0')
713  if (*__s++ == __sep)
714    {
715      __s[-1] = '\0';
716      break;
717    }
718       *__nextp = __s;
719     }
720   return __result;
721 }
722 extern char *__strsep_g (char **__stringp, __const char *__delim);
723 extern __inline char *__strsep_1c (char **__s, char __reject);
724 extern __inline char *
725 __strsep_1c (char **__s, char __reject)
726 {
727   register char *__retval = *__s;
728   if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
729     *(*__s)++ = '\0';
730   return __retval;
731 }
732 extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
733 extern __inline char *
734 __strsep_2c (char **__s, char __reject1, char __reject2)
735 {
736   register char *__retval = *__s;
737   if (__retval != ((void *)0))
738     {
739       register char *__cp = __retval;
740       while (1)
741  {
742    if (*__cp == '\0')
743      {
744        __cp = ((void *)0);
745    break;
746      }
747    if (*__cp == __reject1 || *__cp == __reject2)
748      {
749        *__cp++ = '\0';
750        break;
751      }
752    ++__cp;
753  }
754       *__s = __cp;
755     }
756   return __retval;
757 }
758 extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
759        char __reject3);
760 extern __inline char *
761 __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
762 {
763   register char *__retval = *__s;
764   if (__retval != ((void *)0))
765     {
766       register char *__cp = __retval;
767       while (1)
768  {
769    if (*__cp == '\0')
770      {
771        __cp = ((void *)0);
772    break;
773      }
774    if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
775      {
776        *__cp++ = '\0';
777        break;
778      }
779    ++__cp;
780  }
781       *__s = __cp;
782     }
783   return __retval;
784 }
785 extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
786 extern void *calloc (size_t __nmemb, size_t __size)
787      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
788 extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
789 extern char *__strndup (__const char *__string, size_t __n)
790      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
791 int unlink(const char *);
792 int gs_log_error(int, const char *, int);
793 const char *gs_errstr(int code);
794 int gs_throw_imp(const char *func, const char *file, int line,
795         int op, int code, const char *fmt, ...) __attribute__((__format__ (__printf__, 6, 7)));
796 typedef unsigned long gs_id;
797 typedef struct gs_string_s {
798     unsigned char *data; unsigned int size;
799 } gs_string;
800 typedef struct gs_const_string_s {
801     const unsigned char *data; unsigned int size;
802 } gs_const_string;
803 typedef struct gs_param_string_s {
804     const unsigned char *data; unsigned int size;
805     bool persistent;
806 } gs_param_string;
807 typedef struct gs_bytestring_s {
808     unsigned char *data; unsigned int size;
809     unsigned char *bytes;
810 } gs_bytestring;
811 typedef struct gs_const_bytestring_s {
812     const unsigned char *data; unsigned int size;
813     const unsigned char *bytes;
814 } gs_const_bytestring;
815 typedef struct gs_point_s {
816     double x, y;
817 } gs_point;
818 typedef struct gs_int_point_s {
819     int x, y;
820 } gs_int_point;
821 typedef struct gs_log2_scale_point_s {
822     int x, y;
823 } gs_log2_scale_point;
824 typedef struct gs_rect_s {
825     gs_point p, q;
826 } gs_rect;
827 typedef struct gs_int_rect_s {
828     gs_int_point p, q;
829 } gs_int_rect;
830 typedef struct gs_range_s {
831     float rmin, rmax;
832 } gs_range_t;
833 typedef struct name_table_s *name_table_ptr;
834 typedef struct gs_lib_ctx_s
835 {
836     gs_memory_t *memory;
837     FILE *fstdin;
838     FILE *fstdout;
839     FILE *fstderr;
840     FILE *fstdout2;
841     bool stdout_is_redirected;
842     bool stdout_to_stderr;
843     bool stdin_is_interactive;
844     void *caller_handle;
845     void *custom_color_callback;
846     int ( *stdin_fn)(void *caller_handle, char *buf, int len);
847     int ( *stdout_fn)(void *caller_handle, const char *str, int len);
848     int ( *stderr_fn)(void *caller_handle, const char *str, int len);
849     int ( *poll_fn)(void *caller_handle);
850     unsigned long gs_next_id;
851     void *top_of_system;
852     name_table_ptr gs_name_table;
853     bool dict_auto_expand;
854 } gs_lib_ctx_t;
855 int gs_lib_ctx_init( gs_memory_t *mem );
856 void *gs_lib_ctx_get_interp_instance( gs_memory_t *mem );
857 gs_memory_t * gs_lib_ctx_get_non_gc_memory_t(void);
858 typedef struct gs_memory_struct_type_s gs_memory_struct_type_t;
859 typedef const gs_memory_struct_type_t *gs_memory_type_ptr_t;
860 typedef struct gs_ptr_procs_s gs_ptr_procs_t;
861 typedef const gs_ptr_procs_t *gs_ptr_type_t;
862 typedef struct gs_gc_root_s gs_gc_root_t;
863 typedef client_name_t struct_name_t;
864 unsigned int gs_struct_type_size(gs_memory_type_ptr_t);
865 struct_name_t gs_struct_type_name(gs_memory_type_ptr_t);
866 typedef struct gs_memory_status_s {
867     unsigned long allocated;
868     unsigned long used;
869 } gs_memory_status_t;
870 typedef struct gs_memory_procs_s {
871     unsigned char *(*alloc_bytes_immovable)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname); void *(*resize_object)(gs_memory_t *mem, void *obj, unsigned int new_num_elements, client_name_t cname); void (*free_object)(gs_memory_t *mem, void *data, client_name_t cname); gs_memory_t *(*stable)(gs_memory_t *mem); void (*status)(gs_memory_t *mem, gs_memory_status_t *status); void (*free_all)(gs_memory_t *mem, unsigned int free_mask, client_name_t cname); void (*consolidate_free)(gs_memory_t *mem);
872     unsigned char *(*alloc_bytes)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname);
873     void *(*alloc_struct)(gs_memory_t *mem, gs_memory_type_ptr_t pstype, client_name_t cname);
874     void *(*alloc_struct_immovable)(gs_memory_t *mem, gs_memory_type_ptr_t pstype, client_name_t cname);
875     unsigned char *(*alloc_byte_array)(gs_memory_t *mem, unsigned int num_elements, unsigned int elt_size, client_name_t cname);
876     unsigned char *(*alloc_byte_array_immovable)(gs_memory_t *mem, unsigned int num_elements, unsigned int elt_size, client_name_t cname);
877     void *(*alloc_struct_array)(gs_memory_t *mem, unsigned int num_elements, gs_memory_type_ptr_t pstype, client_name_t cname);
878     void *(*alloc_struct_array_immovable)(gs_memory_t *mem, unsigned int num_elements, gs_memory_type_ptr_t pstype, client_name_t cname);
879     unsigned int (*object_size)(gs_memory_t *mem, const void *obj);
880     gs_memory_type_ptr_t (*object_type)(const gs_memory_t *mem, const void *obj);
881     unsigned char *(*alloc_string)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname);
882     unsigned char *(*alloc_string_immovable)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname);
883     unsigned char *(*resize_string)(gs_memory_t *mem, unsigned char *data, unsigned int old_num, unsigned int new_num, client_name_t cname);
884     void (*free_string)(gs_memory_t *mem, unsigned char *data, unsigned int nbytes, client_name_t cname);
885     int (*register_root)(gs_memory_t *mem, gs_gc_root_t *root, gs_ptr_type_t ptype, void **pp, client_name_t cname);
886     void (*unregister_root)(gs_memory_t *mem, gs_gc_root_t *root, client_name_t cname);
887     void (*enable_free)(gs_memory_t *mem, bool enable);
888 } gs_memory_procs_t;
889 void gs_free_const_object(gs_memory_t *mem, const void *data,
890      client_name_t cname);
891 void gs_free_const_string(gs_memory_t *mem, const unsigned char *data, unsigned int nbytes,
892      client_name_t cname);
893 void gs_free_bytestring(gs_memory_t *mem, gs_bytestring *pbs,
894    client_name_t cname);
895 void gs_free_const_bytestring(gs_memory_t *mem, gs_const_bytestring *pbs,
896          client_name_t cname);
897 void *gs_resize_struct_array(gs_memory_t *mem, void *obj, unsigned int num_elements,
898         gs_memory_type_ptr_t pstype,
899         client_name_t cname);
900 int gs_register_struct_root(gs_memory_t *mem, gs_gc_root_t *root,
901        void **pp, client_name_t cname);
902 void gs_ignore_free_object(gs_memory_t *mem, void *data, client_name_t cname);
903 void gs_ignore_free_string(gs_memory_t *mem, unsigned char *data, unsigned int nbytes, client_name_t cname);
904 void gs_ignore_consolidate_free(gs_memory_t *mem);
905 void *gs_raw_alloc_struct_immovable(gs_memory_t * rmem,
906         gs_memory_type_ptr_t pstype,
907         client_name_t cname);
908 typedef struct pl_mem_node_s pl_mem_node_t;
909 struct gs_memory_s {
910     gs_memory_t *stable_memory; gs_memory_procs_t procs; gs_lib_ctx_t *gs_lib_ctx; pl_mem_node_t *head; gs_memory_t *non_gc_memory;
911 };
912 extern char gs_debug[128];
913 bool gs_debug_c(int );
914 extern FILE *gs_debug_out;
915 void debug_dump_bytes(const unsigned char * from, const unsigned char * to,
916         const char *msg);
917 void debug_dump_bitmap(const unsigned char * from, unsigned int raster, unsigned int height,
918          const char *msg);
919 void debug_print_string(const unsigned char * str, unsigned int len);
920 void debug_print_string_hex(const unsigned char * str, unsigned int len);
921 typedef struct gs_imager_state_s gs_imager_state;
922 typedef struct gs_state_s gs_state;
923 int gp_getenv(const char *key, char *ptr, int *plen);
924 typedef struct stream_s stream;
925 extern int sreadline(stream *s_in, stream *s_out, void *readline_data, gs_const_string *prompt, gs_string *buf, gs_memory_t *bufmem, unsigned int *pcount, bool *pin_eol, bool (*is_stdin)(const stream *));
926 typedef unsigned char uint8_t;
927 typedef unsigned short int uint16_t;
928 typedef unsigned int uint32_t;
929 __extension__
930 typedef unsigned long long int uint64_t;
931 typedef signed char int_least8_t;
932 typedef short int int_least16_t;
933 typedef int int_least32_t;
934 __extension__
935 typedef long long int int_least64_t;
936 typedef unsigned char uint_least8_t;
937 typedef unsigned short int uint_least16_t;
938 typedef unsigned int uint_least32_t;
939 __extension__
940 typedef unsigned long long int uint_least64_t;
941 typedef signed char int_fast8_t;
942 typedef int int_fast16_t;
943 typedef int int_fast32_t;
944 __extension__
945 typedef long long int int_fast64_t;
946 typedef unsigned char uint_fast8_t;
947 typedef unsigned int uint_fast16_t;
948 typedef unsigned int uint_fast32_t;
949 __extension__
950 typedef unsigned long long int uint_fast64_t;
951 typedef int intptr_t;
952 typedef unsigned int uintptr_t;
953 __extension__
954 typedef long long int intmax_t;
955 __extension__
956 typedef unsigned long long int uintmax_t;
957 void gp_init(void);
958 void gp_exit(int exit_status, int code);
959 void gp_do_exit(int exit_status);
960 const char *gp_strerror(int);
961 void gp_get_realtime(long ptm[2]);
962 void gp_get_usertime(long ptm[2]);
963 int gp_readline_init(void **preadline_data, gs_memory_t *mem);
964 int gp_readline(stream *s_in, stream *s_out, void *readline_data,
965   gs_const_string *prompt, gs_string *buf,
966   gs_memory_t *bufmem, unsigned int *pcount, bool *pin_eol,
967   bool (*is_stdin)(const stream *));
968 void gp_readline_finit(void *readline_data);
969 int gp_stdin_read(char *buf, int len, int interactive, FILE *f);
970 const char *gp_getenv_display(void);
971 extern const char gp_file_name_list_separator;
972 extern const char gp_scratch_file_name_prefix[];
973 extern const char gp_null_file_name[];
974 extern const char gp_current_directory_name[];
975 extern const char gp_fmode_binary_suffix[];
976 extern const char gp_fmode_rb[];
977 extern const char gp_fmode_wb[];
978 FILE *gp_open_scratch_file(const char *prefix,
979       char fname[260],
980       const char *mode);
981 FILE *gp_fopen(const char *fname, const char *mode);
982 int gp_setmode_binary(FILE * pfile, bool mode);
983 typedef enum {
984     gp_combine_small_buffer = -1,
985     gp_combine_cant_handle = 0,
986     gp_combine_success = 1
987 } gp_file_name_combine_result;
988 gp_file_name_combine_result gp_file_name_combine(const char *prefix, unsigned int plen,
989      const char *fname, unsigned int flen, bool no_sibling, char *buffer, unsigned int *blen);
990 unsigned int gp_file_name_root(const char *fname, unsigned int len);
991 unsigned int gs_file_name_check_separator(const char *fname, int len, const char *item);
992 bool gp_file_name_is_parent(const char *fname, unsigned int len);
993 bool gp_file_name_is_current(const char *fname, unsigned int len);
994 const char *gp_file_name_current(void);
995 const char *gp_file_name_separator(void);
996 const char *gp_file_name_directory_separator(void);
997 const char *gp_file_name_parent(void);
998 bool gp_file_name_is_partent_allowed(void);
999 bool gp_file_name_is_empty_item_meanful(void);
1000 int gp_read_macresource(unsigned char *buf, const char *fname,
1001                                      const unsigned int type, const unsigned short id);
1002 int gp_cache_insert(int type, unsigned char *key, int keylen, void *buffer, int buflen);
1003 typedef void *(*gp_cache_alloc)(void *userdata, int bytes);
1004 int gp_cache_query(int type, unsigned char* key, int keylen, void **buffer,
1005     gp_cache_alloc alloc, void *userdata);
1006 FILE *gp_open_printer(char fname[260], int binary_mode);
1007 void gp_close_printer(FILE * pfile, const char *fname);
1008 typedef struct file_enum_s file_enum;
1009 file_enum *gp_enumerate_files_init(const char *pat, unsigned int patlen,
1010        gs_memory_t * memory);
1011 unsigned int gp_enumerate_files_next(file_enum * pfen, char *ptr, unsigned int maxlen);
1012 void gp_enumerate_files_close(file_enum * pfen);
1013 void *gp_enumerate_fonts_init(gs_memory_t *mem);
1014 int gp_enumerate_fonts_next(void *enum_state, char **fontname, char **path);
1015 void gp_enumerate_fonts_free(void *enum_state);
1016 FILE *gp_fopen_64(const char *filename, const char *mode);
1017 FILE *gp_open_scratch_file_64(const char *prefix,
1018       char fname[260],
1019       const char *mode);
1020 FILE *gp_open_printer_64(char fname[260], int binary_mode);
1021 int64_t gp_ftell_64(FILE *strm);
1022 int gp_fseek_64(FILE *strm, int64_t offset, int origin);
1023 struct gs_matrix_s {
1024     float xx, xy, yx, yy, tx, ty;
1025 };
1026 struct gs_matrix_double_s {
1027   double xx, xy, yx, yy, tx, ty;
1028 };
1029 typedef struct gs_matrix_s gs_matrix;
1030 typedef struct gs_matrix_double_s gs_matrix_double;
1031 void gs_make_identity(gs_matrix *);
1032 int gs_make_translation(floatp, floatp, gs_matrix *),
1033     gs_make_scaling(floatp, floatp, gs_matrix *),
1034     gs_make_rotation(floatp, gs_matrix *);
1035 int gs_matrix_multiply(const gs_matrix *, const gs_matrix *, gs_matrix *),
1036     gs_matrix_multiply_double(const gs_matrix_double *, const gs_matrix *, gs_matrix_double *),
1037     gs_matrix_invert(const gs_matrix *, gs_matrix *),
1038     gs_matrix_invert_to_double(const gs_matrix *, gs_matrix_double *),
1039     gs_matrix_translate(const gs_matrix *, floatp, floatp, gs_matrix *),
1040     gs_matrix_scale(const gs_matrix *, floatp, floatp, gs_matrix *),
1041     gs_matrix_rotate(const gs_matrix *, floatp, gs_matrix *);
1042 int gs_point_transform(floatp, floatp, const gs_matrix *, gs_point *),
1043     gs_point_transform_inverse(floatp, floatp, const gs_matrix *, gs_point *),
1044     gs_distance_transform(floatp, floatp, const gs_matrix *, gs_point *),
1045     gs_distance_transform_inverse(floatp, floatp, const gs_matrix *, gs_point *),
1046     gs_points_bbox(const gs_point[4], gs_rect *),
1047     gs_bbox_transform_only(const gs_rect *, const gs_matrix *, gs_point[4]),
1048     gs_bbox_transform(const gs_rect *, const gs_matrix *, gs_rect *),
1049     gs_bbox_transform_inverse(const gs_rect *, const gs_matrix *, gs_rect *);
1050 int sget_matrix(stream *, gs_matrix *);
1051 int sput_matrix(stream *, const gs_matrix *);
1052 gs_id gs_next_ids(const gs_memory_t *mem, unsigned int count);
1053 void memflip8x8(const unsigned char * inp, int line_size, unsigned char * outp, int dist);
1054 unsigned long get_u32_msb(const unsigned char *p);
1055 int bytes_compare(const unsigned char * str1, unsigned int len1,
1056     const unsigned char * str2, unsigned int len2);
1057 typedef struct string_match_params_s {
1058     int any_substring;
1059     int any_char;
1060     int quote_next;
1061     bool ignore_case;
1062     bool slash_equiv;
1063 } string_match_params;
1064 extern const string_match_params string_match_params_default;
1065 bool string_match(const unsigned char * str, unsigned int len,
1066     const unsigned char * pstr, unsigned int plen,
1067     const string_match_params * psmp);
1068 typedef enum {
1069     GS_DEVICE_DOESNT_SUPPORT_TAGS = 0,
1070     GS_UNKNOWN_TAG = 0x1,
1071     GS_TEXT_TAG = 0x2,
1072     GS_IMAGE_TAG = 0x4,
1073     GS_PATH_TAG = 0x8,
1074     GS_UNTOUCHED_TAG = 0x10
1075 } gs_object_tag_type_t;
1076 gs_object_tag_type_t gs_current_object_tag(void);
1077 typedef struct gc_state_s gc_state_t;
1078 typedef struct enum_ptr_s {
1079     const void *ptr;
1080     unsigned int size;
1081 } enum_ptr_t;
1082 typedef struct struct_shared_procs_s struct_shared_procs_t;
1083 struct gs_memory_struct_type_s {
1084  unsigned int ssize;
1085  struct_name_t sname;
1086  const struct_shared_procs_t *shared;
1087  void (*clear_marks)(const gs_memory_t *cmem, void *pre, unsigned int size, const gs_memory_struct_type_t *pstype);
1088  gs_ptr_type_t (*enum_ptrs)(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
1089  void (*reloc_ptrs)(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
1090  void (*finalize)(void *ptr);
1091  const void *proc_data;
1092 };
1093 typedef struct gs_pattern_instance_s gs_pattern_instance_t;
1094 typedef struct gs_paint_color_s {
1095     float values[(8)];
1096 } gs_paint_color;
1097 typedef struct gs_client_color_s gs_client_color;
1098 struct gs_client_color_s {
1099     gs_pattern_instance_t *pattern;
1100     gs_paint_color paint;
1101 };
1102 extern const gs_memory_struct_type_t st_client_color;
1103 typedef struct gx_image_type_s gx_image_type_t;
1104 typedef struct gs_image_common_s {
1105     const gx_image_type_t *type; gs_matrix ImageMatrix;
1106 } gs_image_common_t;
1107 typedef struct gs_data_image_s {
1108     const gx_image_type_t *type; gs_matrix ImageMatrix; int Width; int Height; int BitsPerComponent; float Decode[((8) + 1) * 2]; bool Interpolate;
1109 } gs_data_image_t;
1110 typedef enum {
1111     gs_image_format_chunky = 0,
1112     gs_image_format_component_planar = 1,
1113     gs_image_format_bit_planar = 2
1114 } gs_image_format_t;
1115 typedef struct gs_color_space_s gs_color_space;
1116 typedef struct gs_pixel_image_s {
1117     const gx_image_type_t *type; gs_matrix ImageMatrix; int Width; int Height; int BitsPerComponent; float Decode[((8) + 1) * 2]; bool Interpolate; gs_image_format_t format; bool CombineWithColor; gs_color_space *ColorSpace;
1118 } gs_pixel_image_t;
1119 extern const gs_memory_struct_type_t st_gs_pixel_image;
1120 typedef enum {
1121     gs_image_alpha_none = 0,
1122     gs_image_alpha_first,
1123     gs_image_alpha_last
1124 } gs_image_alpha_t;
1125 typedef struct gs_image1_s {
1126     const gx_image_type_t *type; gs_matrix ImageMatrix; int Width; int Height; int BitsPerComponent; float Decode[((8) + 1) * 2]; bool Interpolate; gs_image_format_t format; bool CombineWithColor; gs_color_space *ColorSpace;
1127     bool ImageMask;
1128     bool adjust;
1129     gs_image_alpha_t Alpha;
1130 } gs_image1_t;
1131 extern const gs_memory_struct_type_t st_gs_image1;
1132 typedef gs_image1_t gs_image_t;
1133 void
1134      gs_image_common_t_init(gs_image_common_t * pic),
1135      gs_data_image_t_init(gs_data_image_t * pim, int num_components),
1136     gs_pixel_image_t_init(gs_pixel_image_t * pim,
1137      gs_color_space * color_space);
1138 void gs_image_t_init_adjust(gs_image_t * pim, gs_color_space * pcs,
1139        bool adjust);
1140 void gs_image_t_init_mask_adjust(gs_image_t * pim, bool write_1s,
1141      bool adjust);
1142 typedef struct rc_header_s rc_header;
1143 struct rc_header_s {
1144     long ref_count;
1145     gs_memory_t *memory;
1146     void (*free)(gs_memory_t *, void *, client_name_t);
1147 };
1148 void rc_free_struct_only(gs_memory_t *, void *, client_name_t);
1149 typedef enum {
1150     gs_color_space_index_DeviceGray = 0,
1151     gs_color_space_index_DeviceRGB,
1152     gs_color_space_index_DeviceCMYK,
1153     gs_color_space_index_DevicePixel,
1154     gs_color_space_index_DeviceN,
1155     gs_color_space_index_CIEDEFG,
1156     gs_color_space_index_CIEDEF,
1157     gs_color_space_index_CIEABC,
1158     gs_color_space_index_CIEA,
1159     gs_color_space_index_Separation,
1160     gs_color_space_index_Indexed,
1161     gs_color_space_index_Pattern,
1162     gs_color_space_index_CIEICC
1163 } gs_color_space_index;
1164 typedef struct gs_color_space_type_s gs_color_space_type;
1165 typedef struct gs_device_pixel_params_s {
1166     int depth;
1167 } gs_device_pixel_params;
1168 typedef struct gs_cie_a_s gs_cie_a;
1169 typedef struct gs_cie_abc_s gs_cie_abc;
1170 typedef struct gs_cie_def_s gs_cie_def;
1171 typedef struct gs_cie_defg_s gs_cie_defg;
1172 typedef struct gs_cie_icc_s gs_cie_icc;
1173 typedef struct gs_cieicc_params_s {
1174     gs_cie_icc * picc_info;
1175 } gs_icc_params;
1176 typedef struct gs_device_n_map_s gs_device_n_map;
1177 typedef struct gs_device_n_attributes_s gs_device_n_attributes;
1178 typedef unsigned long gs_separation_name;
1179 typedef int (gs_callback_func_get_colorname_string)
1180      (const gs_memory_t *mem, gs_separation_name colorname, unsigned char **ppstr, unsigned int *plen);
1181 typedef enum { SEP_NONE, SEP_ALL, SEP_OTHER } separation_type;
1182 typedef struct gs_separation_params_s {
1183     gs_separation_name sep_name;
1184     gs_device_n_map *map;
1185     separation_type sep_type;
1186     bool use_alt_cspace;
1187     gs_callback_func_get_colorname_string *get_colorname_string;
1188 } gs_separation_params;
1189 typedef struct gs_device_n_params_s {
1190     gs_separation_name *names;
1191     unsigned int num_components;
1192     gs_device_n_map *map;
1193     gs_device_n_attributes *colorants;
1194     bool use_alt_cspace;
1195     gs_callback_func_get_colorname_string *get_colorname_string;
1196 } gs_device_n_params;
1197 typedef struct client_color_space_data_s client_color_space_data_t;
1198 typedef struct gs_indexed_map_s gs_indexed_map;
1199 typedef struct gs_indexed_params_s {
1200     int hival;
1201     int n_comps;
1202     union {
1203  gs_const_string table;
1204  gs_indexed_map *map;
1205     } lookup;
1206     bool use_proc;
1207 } gs_indexed_params;
1208 typedef struct gs_pattern_params_s {
1209     bool has_base_space;
1210 } gs_pattern_params;
1211 struct gs_color_space_s {
1212     const gs_color_space_type *type;
1213     rc_header rc;
1214     gs_id id;
1215     gs_color_space *base_space;
1216     client_color_space_data_t *pclient_color_space_data;
1217     union {
1218  gs_device_pixel_params pixel;
1219  gs_cie_defg * defg;
1220  gs_cie_def * def;
1221  gs_cie_abc * abc;
1222  gs_cie_a * a;
1223  gs_separation_params separation;
1224  gs_device_n_params device_n;
1225  gs_indexed_params indexed;
1226  gs_pattern_params pattern;
1227  gs_icc_params icc;
1228     } params;
1229 };
1230 gs_color_space *gs_cspace_new_DeviceGray(gs_memory_t *mem);
1231 gs_color_space *gs_cspace_new_DeviceRGB(gs_memory_t *mem);
1232 gs_color_space *gs_cspace_new_DeviceCMYK(gs_memory_t *mem);
1233 gs_color_space_index gs_color_space_get_index(const gs_color_space *);
1234 int gs_color_space_num_components(const gs_color_space *);
1235 bool gs_color_space_equal(const gs_color_space *pcs1,
1236      const gs_color_space *pcs2);
1237 void gs_color_space_restrict_color(gs_client_color *, const gs_color_space *);
1238 const gs_color_space *gs_cspace_base_space(const gs_color_space * pcspace);
1239 gs_memory_t *gs_state_memory(const gs_state *);
1240 gs_state *gs_state_saved(const gs_state *);
1241 gs_state *gs_state_swap_saved(gs_state *, gs_state *);
1242 gs_memory_t *gs_state_swap_memory(gs_state *, gs_memory_t *);
1243 typedef void *(*gs_state_alloc_proc_t) (gs_memory_t * mem);
1244 typedef int (*gs_state_copy_proc_t) (void *to, const void *from);
1245 typedef void (*gs_state_free_proc_t) (void *old, gs_memory_t * mem);
1246 typedef enum {
1247     copy_for_gsave,
1248     copy_for_grestore,
1249     copy_for_gstate,
1250     copy_for_setgstate,
1251     copy_for_copygstate,
1252     copy_for_currentgstate
1253 } gs_state_copy_reason_t;
1254 typedef int (*gs_state_copy_for_proc_t) (void *to, void *from,
1255       gs_state_copy_reason_t reason);
1256 typedef struct gs_state_client_procs_s {
1257     gs_state_alloc_proc_t alloc;
1258     gs_state_copy_proc_t copy;
1259     gs_state_free_proc_t free;
1260     gs_state_copy_for_proc_t copy_for;
1261 } gs_state_client_procs;
1262 void gs_state_set_client(gs_state *, void *, const gs_state_client_procs *,
1263        bool client_has_pattern_streams);
1264 void *gs_state_client_data(const gs_state *);
1265 gs_id gx_get_clip_path_id(gs_state *);
1266 void gs_set_object_tag(gs_state * pgs, const gs_object_tag_type_t tag);
1267 void gs_enable_object_tagging(void);
1268 typedef struct gs_composite_s gs_composite_t;
1269 gs_id gs_composite_id(const gs_composite_t * pcte);
1270 int imod(int m, int n);
1271 int igcd(int x, int y);
1272 int idivmod(int a, int b, int m);
1273 int ilog2(int n);
1274 typedef gs_id gs_bitmap_id;
1275 typedef struct gs_bitmap_s {
1276     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
1277 } gs_bitmap;
1278 typedef struct gs_const_bitmap_s {
1279     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
1280 } gs_const_bitmap;
1281 typedef struct gs_tile_bitmap_s {
1282     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
1283 } gs_tile_bitmap;
1284 typedef struct gs_const_tile_bitmap_s {
1285     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
1286 } gs_const_tile_bitmap;
1287 typedef struct gs_depth_bitmap_s {
1288     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned char pix_depth; unsigned char num_comps;
1289 } gs_depth_bitmap;
1290 typedef struct gs_const_depth_bitmap_s {
1291     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned char pix_depth; unsigned char num_comps;
1292 } gs_const_depth_bitmap;
1293 typedef struct gs_tile_depth_bitmap_s {
1294     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned char pix_depth; unsigned char num_comps;
1295 } gs_tile_depth_bitmap;
1296 typedef struct gs_const_tile_depth_bitmap_s {
1297     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned char pix_depth; unsigned char num_comps;
1298 } gs_const_tile_depth_bitmap;
1299 extern const gs_memory_struct_type_t st_gs_bitmap;
1300 extern const gs_memory_struct_type_t st_gs_tile_bitmap;
1301 extern const gs_memory_struct_type_t st_gs_depth_bitmap;
1302 extern const gs_memory_struct_type_t st_gs_tile_depth_bitmap;
1303 typedef gs_bitmap_id gx_bitmap_id;
1304 typedef struct gx_bitmap_s {
1305     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
1306 } gx_bitmap;
1307 typedef struct gx_const_bitmap_s {
1308     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
1309 } gx_const_bitmap;
1310 typedef struct gx_tile_bitmap_s {
1311     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
1312 } gx_tile_bitmap;
1313 typedef struct gx_const_tile_bitmap_s {
1314     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
1315 } gx_const_tile_bitmap;
1316 typedef struct gx_strip_bitmap_s {
1317     unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned short rep_shift; unsigned short shift;
1318 } gx_strip_bitmap;
1319 typedef struct gx_const_strip_bitmap_s {
1320     const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned short rep_shift; unsigned short shift;
1321 } gx_const_strip_bitmap;
1322 extern const gs_memory_struct_type_t st_gx_strip_bitmap;
1323 typedef struct gx_ht_tile_s gx_ht_tile;
1324 struct gx_ht_tile_s {
1325     gx_strip_bitmap tiles;
1326     int level;
1327     unsigned int index;
1328 };
1329 void bits_fill_rectangle(unsigned char * dest, int dest_bit, unsigned int raster,
1330         unsigned int pattern, int width_bits, int height);
1331 void bits_fill_rectangle_masked(unsigned char * dest, int dest_bit, unsigned int raster,
1332         unsigned int pattern, unsigned int src_mask,
1333         int width_bits, int height);
1334 void bits_replicate_horizontally(unsigned char * data, unsigned int width, unsigned int height,
1335         unsigned int raster, unsigned int replicated_width, unsigned int replicated_raster);
1336 void bits_replicate_vertically(unsigned char * data, unsigned int height, unsigned int raster,
1337     unsigned int replicated_height);
1338 void bits_bounding_box(const unsigned char * data, unsigned int height, unsigned int raster,
1339     gs_int_rect * pbox);
1340 void bits_compress_scaled(const unsigned char * src, int srcx, unsigned int width,
1341     unsigned int height, unsigned int sraster, unsigned char * dest, unsigned int draster,
1342     const gs_log2_scale_point * plog2_scale, int log2_out_bits);
1343 typedef struct bits_plane_s {
1344     union bpd_ {
1345  unsigned char *write;
1346  const unsigned char *read;
1347     } data;
1348     int raster;
1349     int depth;
1350     int x;
1351 } bits_plane_t;
1352 int bits_extract_plane(const bits_plane_t *dest ,
1353     const bits_plane_t *source , int shift, int width, int height);
1354 int bits_expand_plane(const bits_plane_t *dest ,
1355     const bits_plane_t *source , int shift, int width, int height);
1356 void bytes_fill_rectangle(unsigned char * dest, unsigned int raster,
1357     unsigned char value, int width_bytes, int height);
1358 void bytes_copy_rectangle(unsigned char * dest, unsigned int dest_raster,
1359     const unsigned char * src, unsigned int src_raster, int width_bytes, int height);
1360 typedef unsigned long long gx_color_index_data;
1361 typedef gx_color_index_data gx_color_index;
1362 typedef bits16 wts_screen_sample_t;
1363 typedef struct wts_screen_s wts_screen_t;
1364 typedef enum {
1365     WTS_SCREEN_RAT,
1366     WTS_SCREEN_J,
1367     WTS_SCREEN_H
1368 } wts_screen_type;
1369 struct wts_screen_s {
1370     wts_screen_type type;
1371     int cell_width;
1372     int cell_height;
1373     int cell_shift;
1374     wts_screen_sample_t *samples;
1375 };
1376 typedef struct {
1377     int tag;
1378     int x;
1379     int y;
1380     int nsamples;
1381 } wts_j_cache_el;
1382 typedef struct {
1383     wts_screen_t base;
1384     int pa;
1385     int pb;
1386     int pc;
1387     int pd;
1388     int XA;
1389     int YA;
1390     int XB;
1391     int YB;
1392     int XC;
1393     int YC;
1394     int XD;
1395     int YD;
1396     wts_j_cache_el xcache[512];
1397     wts_j_cache_el ycache[512];
1398 } wts_screen_j_t;
1399 typedef struct {
1400     wts_screen_t base;
1401     double px;
1402     double py;
1403     int x1;
1404     int y1;
1405 } wts_screen_h_t;
1406 int
1407 wts_get_samples(wts_screen_t *ws, int x, int y,
1408   int *pcellx, int *pcelly, int *p_nsamples);
1409 typedef struct gx_device_color_s gx_device_color;
1410 typedef struct gx_device_color_saved_s gx_device_color_saved;
1411 typedef struct gx_device_halftone_s gx_device_halftone;
1412 bool gx_device_color_equal(const gx_device_color *pdevc1,
1413       const gx_device_color *pdevc2);
1414 void gx_complete_halftone(gx_device_color *pdevc, int num_comps,
1415                           gx_device_halftone *pdht);
1416 typedef struct gx_color_tile_s gx_color_tile;
1417 typedef struct gx_device_color_type_s gx_device_color_type_t;
1418 typedef const gx_device_color_type_t *gx_device_color_type;
1419 struct gx_device_color_s {
1420     gx_device_color_type type;
1421     union _c {
1422  gx_color_index pure;
1423  struct _bin {
1424      const gx_device_halftone *b_ht;
1425      gx_color_index color[2];
1426      unsigned int b_level;
1427      int b_index;
1428      gx_ht_tile *b_tile;
1429  } binary;
1430  struct _col {
1431      gx_device_halftone *c_ht;
1432      unsigned short num_components;
1433      unsigned char c_base[(8 * 8)];
1434      unsigned int c_level[(8 * 8)];
1435      unsigned short alpha;
1436      gx_color_index plane_mask;
1437  } colored;
1438  struct _wts {
1439      const gx_device_halftone *w_ht;
1440      wts_screen_sample_t levels[(8 * 8)];
1441      unsigned short num_components;
1442      gx_color_index plane_vector[(8 * 8)];
1443  } wts;
1444  struct _pat {
1445      gx_color_tile *p_tile;
1446  } pattern;
1447     } colors;
1448     gs_int_point phase;
1449     bool ccolor_valid;
1450     gs_client_color ccolor;
1451     struct _mask {
1452  struct mp_ {
1453      short x, y;
1454  } m_phase;
1455  gx_bitmap_id id;
1456  gx_color_tile *m_tile;
1457     } mask;
1458 };
1459 struct gx_device_color_saved_s {
1460     gx_device_color_type type;
1461     union _svc {
1462         gx_color_index pure;
1463         struct _svbin {
1464             gx_color_index b_color[2];
1465             unsigned int b_level;
1466             int b_index;
1467         } binary;
1468         struct _svcol {
1469             unsigned char c_base[(8 * 8)];
1470             unsigned int c_level[(8 * 8)];
1471             unsigned short alpha;
1472         } colored;
1473         struct _swts {
1474             wts_screen_sample_t levels[(8 * 8)];
1475         } wts;
1476  struct _pattern {
1477      gs_id id;
1478      gs_int_point phase;
1479  } pattern;
1480  struct _pattern2 {
1481      gs_id id;
1482      bool shfill;
1483  } pattern2;
1484     } colors;
1485     gs_int_point phase;
1486 };
1487 extern const gx_device_color_type_t *const gx_dc_type_none;
1488 extern const gx_device_color_type_t *const gx_dc_type_null;
1489 extern const gx_device_color_type_t *const gx_dc_type_pure;
1490 extern const gx_device_color_type_t *const gx_dc_type_ht_binary;
1491 extern const gx_device_color_type_t *const gx_dc_type_ht_colored;
1492 extern const gx_device_color_type_t *const gx_dc_type_wts;
1493 typedef enum {
1494     rop2_0 = 0,
1495     rop2_S = 0xc,
1496     rop2_D = 0xa,
1497     rop2_1 = 0xf,
1498     rop2_default = rop2_S
1499 } gs_rop2_t;
1500 typedef enum {
1501     rop3_0 = 0,
1502     rop3_T = 0xf0,
1503     rop3_S = 0xcc,
1504     rop3_D = 0xaa,
1505     rop3_1 = 0xff,
1506     rop3_default = rop3_T | rop3_S
1507 } gs_rop3_t;
1508 typedef unsigned int gs_logical_operation_t;
1509 typedef unsigned long rop_operand;
1510 typedef rop_operand (*rop_proc)(rop_operand D, rop_operand S, rop_operand T);
1511 typedef enum {
1512     rop_usage_none = 0,
1513     rop_usage_D = 1,
1514     rop_usage_S = 2,
1515     rop_usage_DS = 3,
1516     rop_usage_T = 4,
1517     rop_usage_DT = 5,
1518     rop_usage_ST = 6,
1519     rop_usage_DST = 7
1520 } rop_usage_t;
1521 extern const rop_proc rop_proc_table[256];
1522 extern const unsigned char rop_usage_table[256];
1523 typedef struct obj_header_s obj_header_t;
1524 struct gs_ptr_procs_s {
1525     void (*unmark)(enum_ptr_t *, gc_state_t *);
1526     bool (*mark)(enum_ptr_t *, gc_state_t *);
1527     void *(*reloc)(const void *, gc_state_t *);
1528 };
1529 extern const gs_ptr_procs_t ptr_struct_procs;
1530 extern const gs_ptr_procs_t ptr_string_procs;
1531 extern const gs_ptr_procs_t ptr_const_string_procs;
1532 struct gs_gc_root_s {
1533     gs_gc_root_t *next;
1534     gs_ptr_type_t ptype;
1535     void **p;
1536     bool free_on_unregister;
1537 };
1538 typedef struct gc_procs_common_s {
1539     void *(*reloc_struct_ptr)(const void *, gc_state_t *); void (*reloc_string)(gs_string *, gc_state_t *); void (*reloc_const_string)(gs_const_string *, gc_state_t *); void (*reloc_param_string)(gs_param_string *, gc_state_t *);
1540 } gc_procs_common_t;
1541 gs_ptr_type_t gs_no_struct_enum_ptrs(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
1542 void gs_no_struct_reloc_ptrs(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
1543 extern const gs_memory_struct_type_t st_free;
1544 extern const gs_memory_struct_type_t st_bytes;
1545 extern const gs_memory_struct_type_t st_gc_root_t;
1546 extern const gs_memory_struct_type_t st_const_string_element;
1547 typedef enum {
1548     GC_ELT_OBJ,
1549     GC_ELT_STRING,
1550     GC_ELT_CONST_STRING
1551 } gc_ptr_type_index_t;
1552 typedef struct gc_ptr_element_s {
1553     unsigned short type;
1554     unsigned short offset;
1555 } gc_ptr_element_t;
1556 typedef struct gc_struct_data_s {
1557     unsigned short num_ptrs;
1558     unsigned short super_offset;
1559     const gs_memory_struct_type_t *super_type;
1560     const gc_ptr_element_t *ptrs;
1561 } gc_struct_data_t;
1562 gs_ptr_type_t basic_enum_ptrs(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
1563 void basic_reloc_ptrs(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
1564 extern gs_ptr_type_t
1565     enum_bytestring(enum_ptr_t *pep, const gs_bytestring *pbs);
1566 extern gs_ptr_type_t
1567     enum_const_bytestring(enum_ptr_t *pep, const gs_const_bytestring *pbs);
1568 extern void reloc_bytestring(gs_bytestring *pbs, gc_state_t *gcst);
1569 extern void reloc_const_bytestring(gs_const_bytestring *pbs, gc_state_t *gcst);
1570 typedef enum {
1571     BLEND_MODE_Compatible,
1572     BLEND_MODE_Normal,
1573     BLEND_MODE_Multiply,
1574     BLEND_MODE_Screen,
1575     BLEND_MODE_Difference,
1576     BLEND_MODE_Darken,
1577     BLEND_MODE_Lighten,
1578     BLEND_MODE_ColorDodge,
1579     BLEND_MODE_ColorBurn,
1580     BLEND_MODE_Exclusion,
1581     BLEND_MODE_HardLight,
1582     BLEND_MODE_Overlay,
1583     BLEND_MODE_SoftLight,
1584     BLEND_MODE_Luminosity,
1585     BLEND_MODE_Hue,
1586     BLEND_MODE_Saturation,
1587     BLEND_MODE_Color
1588 } gs_blend_mode_t;
1589 typedef enum {
1590     TRANSPARENCY_STATE_Group = 1,
1591     TRANSPARENCY_STATE_Mask
1592 } gs_transparency_state_type_t;
1593 typedef struct gs_transparency_state_s gs_transparency_state_t;
1594 struct gs_transparency_state_s {
1595     gs_transparency_state_t *saved; gs_transparency_state_type_t type;
1596 };
1597 typedef struct gs_transparency_mask_s {
1598     rc_header rc;
1599 } gs_transparency_mask_t;
1600 typedef struct gs_function_s gs_function_t;
1601 typedef struct gs_transparency_group_params_s {
1602     const gs_color_space *ColorSpace;
1603     bool Isolated;
1604     bool Knockout;
1605     bool image_with_SMask;
1606     bool idle;
1607     unsigned int mask_id;
1608 } gs_transparency_group_params_t;
1609 typedef enum {
1610     TRANSPARENCY_MASK_Alpha,
1611     TRANSPARENCY_MASK_Luminosity
1612 } gs_transparency_mask_subtype_t;
1613 typedef struct gs_transparency_mask_params_s {
1614     gs_transparency_mask_subtype_t subtype;
1615     int Background_components;
1616     float Background[(8)];
1617     float GrayBackground;
1618     int (*TransferFunction)(floatp in, float *out, void *proc_data);
1619     gs_function_t *TransferFunction_data;
1620     bool replacing;
1621 } gs_transparency_mask_params_t;
1622 typedef struct gx_transparency_mask_params_s {
1623     gs_transparency_mask_subtype_t subtype;
1624     int Background_components;
1625     float Background[(8)];
1626     float GrayBackground;
1627     bool function_is_identity;
1628     bool idle;
1629     bool replacing;
1630     unsigned int mask_id;
1631     unsigned char transfer_fn[256];
1632 } gx_transparency_mask_params_t;
1633 typedef enum {
1634     TRANSPARENCY_CHANNEL_Opacity = 0,
1635     TRANSPARENCY_CHANNEL_Shape = 1
1636 } gs_transparency_channel_selector_t;
1637 typedef unsigned long gx_xglyph;
1638 struct gx_xfont_procs_s;
1639 typedef struct gx_xfont_procs_s gx_xfont_procs;
1640 struct gx_xfont_s;
1641 typedef struct gx_xfont_s gx_xfont;
1642 typedef unsigned short gx_color_value;
1643 typedef long fixed;
1644 typedef unsigned long ufixed;
1645 fixed fixed_mult_quo(fixed A, fixed B, fixed C);
1646 bool
1647 gx_intersect_small_bars(fixed q0x, fixed q0y, fixed q1x, fixed q1y, fixed q2x, fixed q2y,
1648    fixed q3x, fixed q3y, fixed *ry, fixed *ey);
1649 typedef struct gs_fixed_point_s {
1650     fixed x, y;
1651 } gs_fixed_point;
1652 typedef struct gs_fixed_rect_s {
1653     gs_fixed_point p, q;
1654 } gs_fixed_rect;
1655 typedef unsigned long gs_char;
1656 typedef unsigned long gs_glyph;
1657 typedef bool (*gs_glyph_mark_proc_t)(const gs_memory_t *mem, gs_glyph glyph, void *proc_data);
1658 typedef enum {
1659     ENCODING_INDEX_UNKNOWN = -1,
1660     ENCODING_INDEX_STANDARD = 0,
1661     ENCODING_INDEX_ISOLATIN1,
1662     ENCODING_INDEX_SYMBOL,
1663     ENCODING_INDEX_DINGBATS,
1664     ENCODING_INDEX_WINANSI,
1665     ENCODING_INDEX_MACROMAN,
1666     ENCODING_INDEX_MACEXPERT,
1667     ENCODING_INDEX_MACGLYPH,
1668     ENCODING_INDEX_ALOGLYPH,
1669     ENCODING_INDEX_ALXGLYPH,
1670     ENCODING_INDEX_CFFSTRINGS
1671 } gs_encoding_index_t;
1672 typedef enum gs_glyph_space_s {
1673     GLYPH_SPACE_NAME,
1674     GLYPH_SPACE_INDEX,
1675     GLYPH_SPACE_NOGEN
1676 } gs_glyph_space_t;
1677 typedef int (*gs_glyph_name_proc_t)(const gs_memory_t *mem,
1678         gs_glyph glyph, gs_const_string *pstr,
1679         void *proc_data);
1680 typedef enum {
1681     cpm_show,
1682     cpm_charwidth,
1683     cpm_false_charpath,
1684     cpm_true_charpath,
1685     cpm_false_charboxpath,
1686     cpm_true_charboxpath
1687 } gs_char_path_mode;
1688 typedef enum {
1689     CACHE_DEVICE_NONE = 0,
1690     CACHE_DEVICE_NOT_CACHING,
1691     CACHE_DEVICE_NONE_AND_CLIP,
1692     CACHE_DEVICE_CACHING
1693 } gs_in_cache_device_t;
1694 typedef struct gs_text_params_s {
1695     unsigned int operation;
1696     union sd_ {
1697  const unsigned char *bytes;
1698  const gs_char *chars;
1699  const gs_glyph *glyphs;
1700  gs_char d_char;
1701  gs_glyph d_glyph;
1702     } data;
1703     unsigned int size;
1704     gs_point delta_all;
1705     gs_point delta_space;
1706     union s_ {
1707  gs_char s_char;
1708  gs_glyph s_glyph;
1709     } space;
1710     const float *x_widths;
1711     const float *y_widths;
1712     unsigned int widths_size;
1713 } gs_text_params_t;
1714 int gs_text_replaced_width(const gs_text_params_t *text, unsigned int index,
1715       gs_point *pwidth);
1716 typedef struct gs_text_enum_s gs_text_enum_t;
1717 typedef struct gx_device_s gx_device;
1718 typedef struct gs_font_s gs_font;
1719 typedef struct gx_path_s gx_path;
1720 typedef struct gx_clip_path_s gx_clip_path;
1721 int gx_device_text_begin(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte);
1722 int gs_text_begin(gs_state * pgs, const gs_text_params_t * text,
1723     gs_memory_t * mem, gs_text_enum_t ** ppenum);
1724 int gs_text_update_dev_color(gs_state * pgs, gs_text_enum_t * pte);
1725 int
1726 gs_show_begin(gs_state *, const unsigned char *, unsigned int,
1727        gs_memory_t *, gs_text_enum_t **),
1728     gs_ashow_begin(gs_state *, floatp, floatp, const unsigned char *, unsigned int,
1729      gs_memory_t *, gs_text_enum_t **),
1730     gs_widthshow_begin(gs_state *, floatp, floatp, gs_char,
1731          const unsigned char *, unsigned int,
1732          gs_memory_t *, gs_text_enum_t **),
1733     gs_awidthshow_begin(gs_state *, floatp, floatp, gs_char,
1734    floatp, floatp, const unsigned char *, unsigned int,
1735    gs_memory_t *, gs_text_enum_t **),
1736     gs_kshow_begin(gs_state *, const unsigned char *, unsigned int,
1737      gs_memory_t *, gs_text_enum_t **),
1738     gs_xyshow_begin(gs_state *, const unsigned char *, unsigned int,
1739       const float *, const float *, unsigned int,
1740       gs_memory_t *, gs_text_enum_t **),
1741     gs_glyphshow_begin(gs_state *, gs_glyph,
1742          gs_memory_t *, gs_text_enum_t **),
1743     gs_cshow_begin(gs_state *, const unsigned char *, unsigned int,
1744      gs_memory_t *, gs_text_enum_t **),
1745     gs_stringwidth_begin(gs_state *, const unsigned char *, unsigned int,
1746     gs_memory_t *, gs_text_enum_t **),
1747     gs_charpath_begin(gs_state *, const unsigned char *, unsigned int, bool,
1748         gs_memory_t *, gs_text_enum_t **),
1749     gs_glyphpath_begin(gs_state *, gs_glyph, bool,
1750          gs_memory_t *, gs_text_enum_t **),
1751     gs_glyphwidth_begin(gs_state *, gs_glyph,
1752    gs_memory_t *, gs_text_enum_t **),
1753     gs_charboxpath_begin(gs_state *, const unsigned char *, unsigned int, bool,
1754     gs_memory_t *, gs_text_enum_t **);
1755 int gs_text_size(gs_state * pgs, gs_text_params_t *text, gs_memory_t * mem);
1756 gs_text_params_t *gs_get_text_params(gs_text_enum_t *pte);
1757 int gs_text_restart(gs_text_enum_t *pte, const gs_text_params_t *text);
1758 int gs_text_resync(gs_text_enum_t *pte, const gs_text_enum_t *pfrom);
1759 int gs_text_process(gs_text_enum_t *pte);
1760 gs_font *gs_text_current_font(const gs_text_enum_t *pte);
1761 gs_char gs_text_current_char(const gs_text_enum_t *pte);
1762 gs_char gs_text_next_char(const gs_text_enum_t *pte);
1763 gs_glyph gs_text_current_glyph(const gs_text_enum_t *pte);
1764 int gs_text_total_width(const gs_text_enum_t *pte, gs_point *pwidth);
1765 bool gs_text_is_width_only(const gs_text_enum_t *pte);
1766 int gs_text_current_width(const gs_text_enum_t *pte, gs_point *pwidth);
1767 typedef enum {
1768     TEXT_SET_CHAR_WIDTH,
1769     TEXT_SET_CACHE_DEVICE,
1770     TEXT_SET_CACHE_DEVICE2
1771 } gs_text_cache_control_t;
1772 int
1773     gs_text_set_cache(gs_text_enum_t *pte, const double *values,
1774         gs_text_cache_control_t control),
1775     gs_text_setcharwidth(gs_text_enum_t *pte, const double wxy[2]),
1776     gs_text_setcachedevice(gs_text_enum_t *pte, const double wbox[6]),
1777     gs_text_setcachedevice2(gs_text_enum_t *pte, const double wbox2[10]);
1778 int gs_text_retry(gs_text_enum_t *pte);
1779 void gs_text_release(gs_text_enum_t *pte, client_name_t cname);
1780 int gs_text_count_chars(gs_state * pgs, gs_text_params_t *text, gs_memory_t * mem);
1781 typedef struct gs_text_enum_procs_s gs_text_enum_procs_t;
1782 typedef struct cached_fm_pair_s cached_fm_pair;
1783 typedef struct gs_text_returned_s {
1784     gs_char current_char;
1785     gs_glyph current_glyph;
1786     gs_point total_width;
1787 } gs_text_returned_t;
1788 typedef struct gx_font_stack_item_s {
1789     gs_font *font;
1790     unsigned int index;
1791 } gx_font_stack_item_t;
1792 typedef struct gx_font_stack_s {
1793     int depth;
1794     gx_font_stack_item_t items[1 + 5];
1795 } gx_font_stack_t;
1796 void rc_free_text_enum(gs_memory_t *, void *, client_name_t);
1797 struct gs_text_enum_s {
1798     gs_text_params_t text; gx_device *dev; gx_device *imaging_dev; gs_imager_state *pis; gs_font *orig_font; gx_path *path; const gx_device_color *pdcolor; const gx_clip_path *pcpath; gs_memory_t *memory; const gs_text_enum_procs_t *procs; rc_header rc; void *enum_client_data; gs_font *current_font; gs_glyph outer_CID; bool is_pure_color; gs_log2_scale_point log2_scale; cached_fm_pair *pair; unsigned int index; unsigned int xy_index; gx_font_stack_t fstack; int cmap_code; gs_point FontBBox_as_Metrics2; unsigned long text_enum_id; bool device_disabled_grid_fitting; gs_text_returned_t returned;
1799 };
1800 int gs_text_enum_init(gs_text_enum_t *pte,
1801         const gs_text_enum_procs_t *procs,
1802         gx_device *dev, gs_imager_state *pis,
1803         const gs_text_params_t *text,
1804         gs_font *font, gx_path *path,
1805         const gx_device_color *pdcolor,
1806         const gx_clip_path *pcpath,
1807         gs_memory_t *mem);
1808 void gs_text_enum_copy_dynamic(gs_text_enum_t *pto,
1809           const gs_text_enum_t *pfrom,
1810           bool for_return);
1811 struct gs_text_enum_procs_s {
1812     int (*resync)(gs_text_enum_t *pte, const gs_text_enum_t *pfrom);
1813     int (*process)(gs_text_enum_t *pte);
1814     bool (*is_width_only)(const gs_text_enum_t *pte);
1815     int (*current_width)(const gs_text_enum_t *pte, gs_point *pwidth);
1816     int (*set_cache)(gs_text_enum_t *pte, const double *values, gs_text_cache_control_t control);
1817     int (*retry)(gs_text_enum_t *pte);
1818     void (*release)(gs_text_enum_t *pte, client_name_t cname);
1819 };
1820 void gx_default_text_release(gs_text_enum_t *pte, client_name_t cname);
1821 typedef enum {
1822     gs_color_select_all = -1,
1823     gs_color_select_texture = 0,
1824     gs_color_select_source = 1
1825 } gs_color_select_t;
1826 typedef short frac;
1827 typedef short signed_frac;
1828 typedef struct gx_transfer_map_s gx_transfer_map;
1829 typedef float (*gs_mapping_proc) (floatp, const gx_transfer_map *);
1830 typedef float (*gs_mapping_closure_proc_t) (floatp value,
1831          const gx_transfer_map * pmap,
1832          const void *proc_data);
1833 typedef struct gs_mapping_closure_s {
1834     gs_mapping_closure_proc_t proc;
1835     const void *data;
1836 } gs_mapping_closure_t;
1837 struct gx_transfer_map_s {
1838     rc_header rc;
1839     gs_mapping_proc proc;
1840     gs_mapping_closure_t closure;
1841     gs_id id;
1842     frac values[(1 << 8)];
1843 };
1844 extern const gs_memory_struct_type_t st_transfer_map;
1845 void gx_set_identity_transfer(gx_transfer_map *);
1846 frac gx_color_frac_map(frac, const frac *);
1847 float gs_mapped_transfer(floatp, const gx_transfer_map *);
1848 float gs_identity_transfer(floatp, const gx_transfer_map *);
1849 struct gx_cm_color_map_procs_s {
1850     void (*map_gray) (gx_device * dev, frac gray, frac * out);
1851     void (*map_rgb) (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1852     void (*map_cmyk) (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1853 };
1854 typedef struct gx_cm_color_map_procs_s gx_cm_color_map_procs;
1855 void gray_cs_to_gray_cm (gx_device * dev, frac gray, frac * out);
1856 void rgb_cs_to_rgb_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1857 void cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1858 struct gx_color_map_procs_s {
1859     void (*map_gray)(frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1860     void (*map_rgb)(frac, frac, frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1861     void (*map_cmyk)(frac, frac, frac, frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1862     void (*map_rgb_alpha)(frac, frac, frac, frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1863     void (*map_separation)(frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1864     void (*map_devicen)(const frac *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1865     bool (*is_halftoned)(const gs_imager_state *, gx_device *);
1866 };
1867 typedef struct gx_color_map_procs_s gx_color_map_procs;
1868 const gx_color_map_procs *
1869     gx_get_cmap_procs(const gs_imager_state *, const gx_device *);
1870 const gx_color_map_procs *
1871     gx_default_get_cmap_procs(const gs_imager_state *, const gx_device *);
1872 void gx_set_cmap_procs(gs_imager_state *, const gx_device *);
1873 extern void gx_default_gray_cs_to_gray_cm (gx_device * dev, frac gray, frac * out);
1874 extern void gx_default_rgb_cs_to_gray_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1875 extern void gx_default_cmyk_cs_to_gray_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1876 extern void gx_default_gray_cs_to_rgb_cm (gx_device * dev, frac gray, frac * out);
1877 extern void gx_default_rgb_cs_to_rgb_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1878 extern void gx_default_cmyk_cs_to_rgb_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1879 extern void gx_default_gray_cs_to_cmyk_cm (gx_device * dev, frac gray, frac * out);
1880 extern void gx_default_rgb_cs_to_cmyk_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1881 extern void gx_default_cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1882 extern void gx_default_gray_cs_to_cmyk_cm (gx_device * dev, frac gray, frac * out);
1883 extern void gx_default_rgb_cs_to_cmyk_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1884 extern void gx_default_cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1885 extern void gx_error_gray_cs_to_cmyk_cm (gx_device * dev, frac gray, frac * out);
1886 extern void gx_error_rgb_cs_to_cmyk_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
1887 extern void gx_error_cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
1888 int (gx_error_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
1889 int (gx_default_DevGray_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
1890 int (gx_default_DevRGB_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
1891 int (gx_default_DevCMYK_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
1892 int (gx_default_DevRGBK_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
1893 const gx_cm_color_map_procs * (gx_error_get_color_mapping_procs)(const gx_device * dev);
1894 const gx_cm_color_map_procs * (gx_default_DevGray_get_color_mapping_procs)(const gx_device * dev);
1895 const gx_cm_color_map_procs * (gx_default_DevRGB_get_color_mapping_procs)(const gx_device * dev);
1896 const gx_cm_color_map_procs * (gx_default_DevCMYK_get_color_mapping_procs)(const gx_device * dev);
1897 const gx_cm_color_map_procs * (gx_default_DevRGBK_get_color_mapping_procs)(const gx_device * dev);
1898 gx_color_index (gx_error_encode_color)(gx_device * dev, const gx_color_value colors[]);
1899 gx_color_index (gx_default_encode_color)(gx_device * dev, const gx_color_value colors[]);
1900 gx_color_index (gx_default_gray_fast_encode)(gx_device * dev, const gx_color_value colors[]);
1901 gx_color_index (gx_default_gray_encode)(gx_device * dev, const gx_color_value colors[]);
1902 gx_color_index (gx_backwards_compatible_gray_encode)(gx_device * dev, const gx_color_value colors[]);
1903 int (gx_error_decode_color)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
1904 int (gx_default_decode_color)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
1905 frac gx_unit_frac(float fvalue);
1906 struct gs_color_space_type_s {
1907     gs_color_space_index index;
1908     bool can_be_base_space;
1909     bool can_be_alt_space;
1910     gs_memory_type_ptr_t stype;
1911  int (*num_components)(const gs_color_space *);
1912  void (*init_color)(gs_client_color *, const gs_color_space *);
1913  void (*restrict_color)(gs_client_color *, const gs_color_space *);
1914  const gs_color_space *(*concrete_space)(const gs_color_space *, const gs_imager_state *);
1915  int (*concretize_color)(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
1916  int (*remap_concrete_color)(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1917  int (*remap_color)(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1918  int (*install_cspace)(gs_color_space *, gs_state *);
1919  int (*set_overprint)(const gs_color_space *, gs_state *);
1920  void (*final)(const gs_color_space *);
1921  void (*adjust_color_count)(const gs_client_color *, const gs_color_space *, int);
1922  int (*serialize)(const gs_color_space *, stream *);
1923  int (*is_linear)(const gs_color_space *cs, const gs_imager_state * pis, gx_device *dev, const gs_client_color *c0, const gs_client_color *c1, const gs_client_color *c2, const gs_client_color *c3, float smoothness);
1924 };
1925 extern const gs_memory_struct_type_t st_base_color_space;
1926 int gx_num_components_1(const gs_color_space *);
1927 int gx_num_components_3(const gs_color_space *);
1928 int gx_num_components_4(const gs_color_space *);
1929 void gx_init_paint_1(gs_client_color *, const gs_color_space *);
1930 void gx_init_paint_3(gs_client_color *, const gs_color_space *);
1931 void gx_init_paint_4(gs_client_color *, const gs_color_space *);
1932 void gx_restrict01_paint_1(gs_client_color *, const gs_color_space *);
1933 void gx_restrict01_paint_3(gs_client_color *, const gs_color_space *);
1934 void gx_restrict01_paint_4(gs_client_color *, const gs_color_space *);
1935 const gs_color_space *gx_no_concrete_space(const gs_color_space *, const gs_imager_state *);
1936 const gs_color_space *gx_same_concrete_space(const gs_color_space *, const gs_imager_state *);
1937 int gx_no_concretize_color(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
1938 int gx_default_remap_color(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1939 int gx_no_install_cspace(gs_color_space *, gs_state *);
1940 int gx_spot_colors_set_overprint(const gs_color_space *, gs_state *);
1941 void gx_no_adjust_color_count(const gs_client_color *, const gs_color_space *, int);
1942 int gx_serialize_cspace_type(const gs_color_space *, stream *);
1943 int gx_cspace_no_linear(const gs_color_space *cs, const gs_imager_state * pis, gx_device *dev, const gs_client_color *c0, const gs_client_color *c1, const gs_client_color *c2, const gs_client_color *c3, float smoothness);
1944 int gx_cspace_is_linear_default(const gs_color_space *cs, const gs_imager_state * pis, gx_device *dev, const gs_client_color *c0, const gs_client_color *c1, const gs_client_color *c2, const gs_client_color *c3, float smoothness);
1945 int gx_remap_DeviceGray(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1946 int gx_concretize_DeviceGray(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
1947 int gx_remap_concrete_DGray(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1948 int gx_remap_DeviceRGB(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1949 int gx_concretize_DeviceRGB(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
1950 int gx_remap_concrete_DRGB(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1951 int gx_remap_DeviceCMYK(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1952 int gx_concretize_DeviceCMYK(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
1953 int gx_remap_concrete_DCMYK(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
1954 extern const gs_memory_struct_type_t st_color_space;
1955 gs_color_space *
1956 gs_cspace_alloc(gs_memory_t *mem, const gs_color_space_type *pcstype);
1957 gx_color_index check_cmyk_color_model_comps(gx_device * dev);
1958 typedef struct gs_context_state_s i_ctx_t;
1959 typedef struct gs_param_list_s gs_param_list;
1960 int custom_color_callback_put_params(gs_state * pgs, gs_param_list * plist);
1961 int custom_color_callback_get_params(gs_state * pgs, gs_param_list * plist);
1962 bool custom_color_callback_install_Separation(gs_color_space * pcs,
1963               gs_state * pgs);
1964 bool custom_color_callback_install_DeviceN(gs_color_space * pcs, gs_state * pgs);
1965 int gx_remap_concrete_custom_color_Separation(const frac * pconc,
1966  const gs_color_space * pcs, gx_device_color * pdc,
1967         const gs_imager_state * pis, gx_device * dev, gs_color_select_t select);
1968 int gx_remap_concrete_custom_color_DeviceN(const frac * pconc,
1969  const gs_color_space * pcs, gx_device_color * pdc,
1970         const gs_imager_state * pis, gx_device * dev, gs_color_select_t select);
1971 typedef struct client_custom_color_params_s {
1972     struct client_custom_color_procs_s * client_procs;
1973     void * data;
1974 } client_custom_color_params_t;
1975 typedef struct client_color_space_data_s {
1976  void (*client_adjust_cspace_count)(const gs_color_space *, int);
1977 } client_color_space__data_t;
1978 typedef struct client_custom_color_procs_s {
1979     bool (* install_DeviceGray)(client_custom_color_params_t * pparams,
1980      gs_color_space * pcs, gs_state * pgs);
1981     int (* remap_DeviceGray)(client_custom_color_params_t * pparams,
1982      const frac * pconc, const gs_color_space * pcs,
1983      gx_device_color * pdc, const gs_imager_state * pis,
1984      gx_device * dev, gs_color_select_t select);
1985     bool (* install_DeviceRGB)(client_custom_color_params_t * pparams,
1986      gs_color_space * pcs, gs_state * pgs);
1987     int (* remap_DeviceRGB)(client_custom_color_params_t * pparams,
1988      const frac * pconc, const gs_color_space * pcs,
1989      gx_device_color * pdc, const gs_imager_state * pis,
1990      gx_device * dev, gs_color_select_t select);
1991     bool (* install_DeviceCMYK)(client_custom_color_params_t * pparams,
1992      gs_color_space * pcs, gs_state * pgs);
1993     int (* remap_DeviceCMYK)(client_custom_color_params_t * pparams,
1994      const frac * pconc, const gs_color_space * pcs,
1995      gx_device_color * pdc, const gs_imager_state * pis,
1996      gx_device * dev, gs_color_select_t select);
1997     bool (* install_Separation)(client_custom_color_params_t * pparams,
1998      gs_color_space * pcs, gs_state * pgs);
1999     int (* remap_Separation)(client_custom_color_params_t * pparams,
2000      const frac * pconc, const gs_color_space * pcs,
2001      gx_device_color * pdc, const gs_imager_state * pis,
2002      gx_device * dev, gs_color_select_t select);
2003     bool (* install_DeviceN)(client_custom_color_params_t * pparams,
2004      gs_color_space * pcs, gs_state * pgs);
2005     int (* remap_DeviceN)(client_custom_color_params_t * pparams,
2006      const frac * pconc, const gs_color_space * pcs,
2007      gx_device_color * pdc, const gs_imager_state * pis,
2008      gx_device * dev, gs_color_select_t select);
2009     bool (* install_CIEBasedA)(client_custom_color_params_t * pparams,
2010      gs_color_space * pcs, gs_state * pgs);
2011     int (* remap_CIEBasedA)(client_custom_color_params_t * pparams,
2012      const gs_client_color * pc, const gs_color_space * pcs,
2013      gx_device_color * pdc, const gs_imager_state * pis,
2014      gx_device * dev, gs_color_select_t select);
2015     bool (* install_CIEBasedABC)(client_custom_color_params_t * pparams,
2016      gs_color_space * pcs, gs_state * pgs);
2017     int (* remap_CIEBasedABC)(client_custom_color_params_t * pparams,
2018      const gs_client_color * pc, const gs_color_space * pcs,
2019      gx_device_color * pdc, const gs_imager_state * pis,
2020      gx_device * dev, gs_color_select_t select);
2021     bool (* install_CIEBasedDEF)(client_custom_color_params_t * pparams,
2022      gs_color_space * pcs, gs_state * pgs);
2023     int (* remap_CIEBasedDEF)(client_custom_color_params_t * pparams,
2024      const gs_client_color * pc, const gs_color_space * pcs,
2025      gx_device_color * pdc, const gs_imager_state * pis,
2026      gx_device * dev, gs_color_select_t select);
2027     bool (* install_CIEBasedDEFG)(client_custom_color_params_t * pparams,
2028      gs_color_space * pcs, gs_state * pgs);
2029     int (* remap_CIEBasedDEFG)(client_custom_color_params_t * pparams,
2030      const gs_client_color * pc, const gs_color_space * pcs,
2031      gx_device_color * pdc, const gs_imager_state * pis,
2032      gx_device * dev, gs_color_select_t select);
2033     bool (* install_ICCBased)(client_custom_color_params_t * pparams,
2034      gs_color_space * pcs, gs_state * pgs);
2035     int (* remap_ICCBased)(client_custom_color_params_t * pparams,
2036      const gs_client_color * pc, const gs_color_space * pcs,
2037      gx_device_color * pdc, const gs_imager_state * pis,
2038      gx_device * dev, gs_color_select_t select);
2039 } client_custom_color_procs_t;
2040 typedef struct gx_fill_params_s gx_fill_params;
2041 typedef struct gx_stroke_params_s gx_stroke_params;
2042 typedef struct patch_fill_state_s patch_fill_state_t;
2043 typedef struct gx_image_enum_common_s gx_image_enum_common_t;
2044 typedef struct gs_pattern1_instance_s gs_pattern1_instance_t;
2045 typedef gx_device_color gx_drawing_color;
2046 typedef enum {
2047     go_text,
2048     go_graphics
2049 } graphics_object_type;
2050 typedef struct gs_fixed_edge_s {
2051     gs_fixed_point start;
2052     gs_fixed_point end;
2053 } gs_fixed_edge;
2054 typedef struct gs_get_bits_params_s gs_get_bits_params_t;
2055 typedef struct gx_device_anti_alias_info_s {
2056     int text_bits;
2057     int graphics_bits;
2058 } gx_device_anti_alias_info;
2059 typedef int32_t frac31;
2060 typedef struct gs_linear_color_edge_s {
2061     gs_fixed_point start;
2062     gs_fixed_point end;
2063     const frac31 *c0, *c1;
2064     fixed clip_x;
2065 } gs_linear_color_edge;
2066 typedef enum {
2067     GX_CINFO_UNKNOWN_SEP_LIN = -1,
2068     GX_CINFO_SEP_LIN_NONE = 0,
2069     GX_CINFO_SEP_LIN
2070 } gx_color_enc_sep_lin_t;
2071 typedef enum {
2072     GX_CINFO_POLARITY_UNKNOWN = -1,
2073     GX_CINFO_POLARITY_SUBTRACTIVE = 0,
2074     GX_CINFO_POLARITY_ADDITIVE
2075 } gx_color_polarity_t;
2076 typedef enum {
2077     GX_CINFO_OPMODE_UNKNOWN = -1,
2078     GX_CINFO_OPMODE_NOT = 0,
2079     GX_CINFO_OPMODE
2080 } gx_cm_opmode_t;
2081 typedef struct gx_device_color_info_s {
2082     int max_components;
2083     int num_components;
2084     gx_color_polarity_t polarity;
2085     unsigned char depth;
2086     unsigned char gray_index;
2087     unsigned int max_gray;
2088     unsigned int max_color;
2089     unsigned int dither_grays;
2090     unsigned int dither_colors;
2091     gx_device_anti_alias_info anti_alias;
2092     gx_color_enc_sep_lin_t separable_and_linear;
2093     unsigned char comp_shift[(8 * 8)];
2094     unsigned char comp_bits[(8 * 8)];
2095     gx_color_index comp_mask[(8 * 8)];
2096     const char * cm_name;
2097     gx_cm_opmode_t opmode;
2098     gx_color_index process_comps;
2099     int black_component;
2100 } gx_device_color_info;
2101 typedef struct gx_device_procs_s gx_device_procs;
2102 typedef struct gx_page_device_procs_s {
2103     int (*install)(gx_device *dev, gs_state *pgs);
2104     int (*begin_page)(gx_device *dev, gs_state *pgs);
2105     int (*end_page)(gx_device *dev, int reason, gs_state *pgs);
2106 } gx_page_device_procs;
2107 int gx_default_install(gx_device *dev, gs_state *pgs);
2108 int gx_default_begin_page(gx_device *dev, gs_state *pgs);
2109 int gx_default_end_page(gx_device *dev, int reason, gs_state *pgs);
2110 typedef struct gx_stroked_gradient_recognizer_s {
2111     bool stroke_stored;
2112     gs_fixed_point orig[4], adjusted[4];
2113 } gx_stroked_gradient_recognizer_t;
2114 typedef struct gx_device_cached_colors_s {
2115     gx_color_index black, white;
2116 } gx_device_cached_colors_t;
2117 typedef enum {
2118     pattern_manage__can_accum,
2119     pattern_manage__start_accum,
2120     pattern_manage__finish_accum,
2121     pattern_manage__load,
2122     pattern_manage__shading_area,
2123     pattern_manage__is_cpath_accum,
2124     pattern_manage__shfill_doesnt_need_path,
2125     pattern_manage__handles_clip_path
2126 } pattern_manage_t;
2127 typedef struct gs_fill_attributes_s {
2128       const gs_fixed_rect *clip;
2129       bool swap_axes;
2130       const gx_device_halftone *ht;
2131       gs_logical_operation_t lop;
2132       fixed ystart, yend;
2133       patch_fill_state_t *pfs;
2134 } gs_fill_attributes;
2135 typedef struct gs_devn_params_s gs_devn_params;
2136 typedef struct gx_image_plane_s {
2137     const unsigned char *data;
2138     int data_x;
2139     unsigned int raster;
2140 } gx_image_plane_t;
2141 int gx_image_data(gx_image_enum_common_t *info, const unsigned char **planes,
2142     int data_x, unsigned int raster, int height);
2143 int gx_image_plane_data(gx_image_enum_common_t *info,
2144    const gx_image_plane_t *planes, int height);
2145 int gx_image_plane_data_rows(gx_image_enum_common_t *info,
2146         const gx_image_plane_t *planes, int height,
2147         int *rows_used);
2148 int gx_image_flush(gx_image_enum_common_t *info);
2149 bool gx_image_planes_wanted(const gx_image_enum_common_t *info, unsigned char *wanted);
2150 int gx_image_end(gx_image_enum_common_t *info, bool draw_last);
2151 struct gx_device_procs_s { int (*open_device)(gx_device *dev); void (*get_initial_matrix)(gx_device *dev, gs_matrix *pmat); int (*sync_output)(gx_device *dev); int (*output_page)(gx_device *dev, int num_copies, int flush); int (*close_device)(gx_device *dev); gx_color_index (*map_rgb_color)(gx_device *dev, const gx_color_value cv[]); int (*map_color_rgb)(gx_device *dev, gx_color_index color, gx_color_value rgb[3]); int (*fill_rectangle)(gx_device *dev, int x, int y, int width, int height, gx_color_index color); int (*tile_rectangle)(gx_device *dev, const gx_tile_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y); int (*copy_mono)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1); int (*copy_color)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height); int (*obsolete_draw_line)(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color); int (*get_bits)(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data); int (*get_params)(gx_device *dev, gs_param_list *plist); int (*put_params)(gx_device *dev, gs_param_list *plist); gx_color_index (*map_cmyk_color)(gx_device *dev, const gx_color_value cv[]); const gx_xfont_procs *(*get_xfont_procs)(gx_device *dev); gx_device *(*get_xfont_device)(gx_device *dev); gx_color_index (*map_rgb_alpha_color)(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue, gx_color_value alpha); gx_device *(*get_page_device)(gx_device *dev); int (*get_alpha_bits)(gx_device *dev, graphics_object_type type); int (*copy_alpha)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth); int (*get_band)(gx_device *dev, int y, int *band_start); int (*copy_rop)(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop); int (*fill_path)(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_fill_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath); int (*stroke_path)(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_stroke_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath); int (*fill_mask)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, const gx_drawing_color *pdcolor, int depth, gs_logical_operation_t lop, const gx_clip_path *pcpath); int (*fill_trapezoid)(gx_device *dev, const gs_fixed_edge *left, const gs_fixed_edge *right, fixed ybot, fixed ytop, bool swap_axes, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*fill_parallelogram)(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*fill_triangle)(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*draw_thin_line)(gx_device *dev, fixed fx0, fixed fy0, fixed fx1, fixed fy1, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*begin_image)(gx_device *dev, const gs_imager_state *pis, const gs_image_t *pim, gs_image_format_t format, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo); int (*image_data)(gx_device *dev, gx_image_enum_common_t *info, const unsigned char **planes, int data_x, unsigned int raster, int height); int (*end_image)(gx_device *dev, gx_image_enum_common_t *info, bool draw_last); int (*strip_tile_rectangle)(gx_device *dev, const gx_strip_bitmap *tiles, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y); int (*strip_copy_rop)(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop); void (*get_clipping_box)(gx_device *dev, gs_fixed_rect *pbox); int (*begin_typed_image)(gx_device *dev, const gs_imager_state *pis, const gs_matrix *pmat, const gs_image_common_t *pim, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo); int (*get_bits_rectangle)(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread); int (*map_color_rgb_alpha)(gx_device *dev, gx_color_index color, gx_color_value rgba[4]); int (*create_compositor)(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory); int (*get_hardware_params)(gx_device *dev, gs_param_list *plist); int (*text_begin)(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte); int (*finish_copydevice)(gx_device *dev, const gx_device *from_dev); int (*begin_transparency_group)(gx_device *dev, const gs_transparency_group_params_t *ptgp, const gs_rect *pbbox, gs_imager_state *pis, gs_transparency_state_t **ppts, gs_memory_t *mem); int (*end_transparency_group)(gx_device *dev, gs_imager_state *pis, gs_transparency_state_t **ppts); int (*begin_transparency_mask)(gx_device *dev, const gx_transparency_mask_params_t *ptmp, const gs_rect *pbbox, gs_imager_state *pis, gs_transparency_state_t **ppts, gs_memory_t *mem); int (*end_transparency_mask)(gx_device *dev, gs_transparency_mask_t **pptm); int (*discard_transparency_layer)(gx_device *dev, gs_transparency_state_t **ppts); const gx_cm_color_map_procs * ((*get_color_mapping_procs))(const gx_device * dev); int ((*get_color_comp_index))(gx_device * dev, const char * pname, int name_size, int component_type); gx_color_index ((*encode_color))(gx_device * dev, const gx_color_value colors[]); int ((*decode_color))(gx_device * dev, gx_color_index cindex, gx_color_value colors[]); int (*pattern_manage)(gx_device *pdev, gx_bitmap_id id, gs_pattern1_instance_t *pinst, pattern_manage_t function); int (*fill_rectangle_hl_color)(gx_device *dev, const gs_fixed_rect *rect, const gs_imager_state *pis, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath); int (*include_color_space)(gx_device *dev, gs_color_space *cspace, const unsigned char *res_name, int name_length); int (*fill_linear_color_scanline)(gx_device *dev, const gs_fill_attributes *fa, int i, int j, int w, const frac31 *c0, const int32_t *c0_f, const int32_t *cg_num, int32_t cg_den ); int (*fill_linear_color_trapezoid)(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const gs_fixed_point *p3, const frac31 *c0, const frac31 *c1, const frac31 *c2, const frac31 *c3); int (*fill_linear_color_triangle)(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const frac31 *c0, const frac31 *c1, const frac31 *c2); int (*update_spot_equivalent_colors)(gx_device *dev, const gs_state * pgs); gs_devn_params * (*ret_devn_params)(gx_device *dev); };
2152 int gx_copy_mono_unaligned(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1);
2153 int gx_copy_color_unaligned(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height);
2154 int gx_copy_alpha_unaligned(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
2155 struct gx_device_s {
2156     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs;
2157 };
2158 extern const gs_memory_struct_type_t st_device;
2159 void gx_device_finalize(void *ptr);
2160 gx_device *gx_device_enum_ptr(gx_device *);
2161 gx_device *gx_device_reloc_ptr(gx_device *, gc_state_t *);
2162 typedef gx_color_index (*dev_proc_map_rgb_color_t)(gx_device *dev, const gx_color_value cv[]);
2163 typedef int (*dev_proc_map_color_rgb_t)(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2164 typedef struct gx_device_forward_s {
2165     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target;
2166 } gx_device_forward;
2167 extern const gs_memory_struct_type_t st_device_forward;
2168 typedef struct gx_device_null_s gx_device_null;
2169 struct gx_device_null_s {
2170     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target;
2171 };
2172 extern const gx_device_null gs_null_device;
2173 extern const gs_memory_struct_type_t st_device_null;
2174 void gx_device_init(gx_device * dev, const gx_device * proto,
2175       gs_memory_t * mem, bool internal);
2176 void gs_make_null_device(gx_device_null *dev_null, gx_device *target,
2177     gs_memory_t *mem);
2178 bool gs_is_null_device(gx_device *dev);
2179 void gx_device_set_target(gx_device_forward *fdev, gx_device *target);
2180 void gx_device_retain(gx_device *dev, bool retained);
2181 unsigned int gx_device_raster(const gx_device * dev, bool pad_to_word);
2182 int gx_device_adjust_resolution(gx_device * dev, int actual_width, int actual_height, int fit);
2183 void gx_device_set_margins(gx_device * dev, const float *margins ,
2184       bool move_origin);
2185 void gx_device_set_width_height(gx_device * dev, int width, int height);
2186 void gx_device_set_resolution(gx_device * dev, floatp x_dpi, floatp y_dpi);
2187 void gx_device_set_media_size(gx_device * dev, floatp media_width, floatp media_height);
2188 void gx_set_device_only(gs_state *, gx_device *);
2189 int gs_closedevice(gx_device *);
2190 void gx_device_free_local(gx_device *);
2191 typedef struct gx_device_type_s {
2192     gs_memory_type_ptr_t stype;
2193     int (*initialize)(gx_device *);
2194 } gx_device_type;
2195 typedef struct gx_io_device_s gx_io_device;
2196 typedef struct gs_parsed_file_name_s {
2197     gs_memory_t *memory;
2198     gx_io_device *iodev;
2199     const char *fname;
2200     unsigned int len;
2201 } gs_parsed_file_name_t;
2202 int gs_parse_file_name(gs_parsed_file_name_t *, const char *, unsigned int);
2203 int gs_parse_real_file_name(gs_parsed_file_name_t *, const char *, unsigned int,
2204        gs_memory_t *, client_name_t);
2205 int gs_terminate_file_name(gs_parsed_file_name_t *, gs_memory_t *,
2206       client_name_t);
2207 void gs_free_file_name(gs_parsed_file_name_t *, client_name_t);
2208 typedef const char *gs_param_name;
2209 typedef enum {
2210     gs_param_type_null, gs_param_type_bool, gs_param_type_int,
2211     gs_param_type_long, gs_param_type_float,
2212     gs_param_type_string, gs_param_type_name,
2213     gs_param_type_int_array, gs_param_type_float_array,
2214     gs_param_type_string_array, gs_param_type_name_array,
2215     gs_param_type_dict, gs_param_type_dict_int_keys, gs_param_type_array
2216 } gs_param_type;
2217 typedef struct gs_param_int_array_s { const int *data; unsigned int size; bool persistent; } gs_param_int_array;
2218 typedef struct gs_param_float_array_s { const float *data; unsigned int size; bool persistent; } gs_param_float_array;
2219 typedef struct gs_param_string_array_s { const gs_param_string *data; unsigned int size; bool persistent; } gs_param_string_array;
2220 typedef struct gs_param_collection_s {
2221     gs_param_list *list;
2222     unsigned int size;
2223 } gs_param_collection;
2224 typedef gs_param_collection gs_param_dict;
2225 typedef gs_param_collection gs_param_array;
2226 extern const unsigned char gs_param_type_sizes[];
2227 extern const unsigned char gs_param_type_base_sizes[];
2228 typedef union gs_param_value_s {
2229     bool b; int i; long l; float f; gs_param_string s; gs_param_string n; gs_param_int_array ia; gs_param_float_array fa; gs_param_string_array sa; gs_param_string_array na; gs_param_collection d;
2230 } gs_param_value;
2231 typedef struct gs_param_typed_value_s {
2232     gs_param_value value;
2233     gs_param_type type;
2234 } gs_param_typed_value;
2235 gs_ptr_type_t gs_param_typed_value_enum_ptrs(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
2236 void gs_param_typed_value_reloc_ptrs(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
2237 typedef enum {
2238     gs_param_collection_dict_any = 0,
2239     gs_param_collection_dict_int_keys = 1,
2240     gs_param_collection_array = 2
2241 } gs_param_collection_type_t;
2242 typedef union gs_param_enumerator_s {
2243     int intval;
2244     long longval;
2245     void *pvoid;
2246     char *pchar;
2247 } gs_param_enumerator_t;
2248 typedef gs_param_string gs_param_key_t;
2249 typedef struct gs_param_list_procs_s {
2250   int (*xmit_typed)(gs_param_list *, gs_param_name, gs_param_typed_value *);
2251   int (*begin_xmit_collection)(gs_param_list *, gs_param_name, gs_param_dict *, gs_param_collection_type_t);
2252   int (*end_xmit_collection)(gs_param_list *, gs_param_name, gs_param_dict *);
2253   int (*next_key)(gs_param_list *, gs_param_enumerator_t *, gs_param_key_t *);
2254   int (*request)(gs_param_list *, gs_param_name);
2255   int (*requested)(const gs_param_list *, gs_param_name);
2256   int (*get_policy)(gs_param_list *, gs_param_name);
2257   int (*signal_error)(gs_param_list *, gs_param_name, int);
2258   int (*commit)(gs_param_list *);
2259 } gs_param_list_procs;
2260 int param_read_requested_typed(gs_param_list *, gs_param_name,
2261       gs_param_typed_value *);
2262 int param_read_null(gs_param_list *, gs_param_name);
2263 int param_write_null(gs_param_list *, gs_param_name);
2264 int param_read_bool(gs_param_list *, gs_param_name, bool *);
2265 int param_write_bool(gs_param_list *, gs_param_name, const bool *);
2266 int param_read_int(gs_param_list *, gs_param_name, int *);
2267 int param_write_int(gs_param_list *, gs_param_name, const int *);
2268 int param_read_long(gs_param_list *, gs_param_name, long *);
2269 int param_write_long(gs_param_list *, gs_param_name, const long *);
2270 int param_read_float(gs_param_list *, gs_param_name, float *);
2271 int param_write_float(gs_param_list *, gs_param_name, const float *);
2272 int param_read_string(gs_param_list *, gs_param_name, gs_param_string *);
2273 int param_write_string(gs_param_list *, gs_param_name,
2274          const gs_param_string *);
2275 int param_read_name(gs_param_list *, gs_param_name, gs_param_string *);
2276 int param_write_name(gs_param_list *, gs_param_name,
2277        const gs_param_string *);
2278 int param_read_int_array(gs_param_list *, gs_param_name,
2279     gs_param_int_array *);
2280 int param_write_int_array(gs_param_list *, gs_param_name,
2281      const gs_param_int_array *);
2282 int param_write_int_values(gs_param_list *, gs_param_name,
2283       const int *, unsigned int, bool);
2284 int param_read_float_array(gs_param_list *, gs_param_name,
2285       gs_param_float_array *);
2286 int param_write_float_array(gs_param_list *, gs_param_name,
2287        const gs_param_float_array *);
2288 int param_write_float_values(gs_param_list *, gs_param_name,
2289         const float *, unsigned int, bool);
2290 int param_read_string_array(gs_param_list *, gs_param_name,
2291        gs_param_string_array *);
2292 int param_write_string_array(gs_param_list *, gs_param_name,
2293         const gs_param_string_array *);
2294 int param_read_name_array(gs_param_list *, gs_param_name,
2295      gs_param_string_array *);
2296 int param_write_name_array(gs_param_list *, gs_param_name,
2297       const gs_param_string_array *);
2298 struct gs_param_list_s {
2299     const gs_param_list_procs *procs; gs_memory_t *memory; bool persistent_keys;
2300 };
2301 void gs_param_list_set_persist_keys(gs_param_list *, bool);
2302 void param_init_enumerator(gs_param_enumerator_t * penum);
2303 typedef struct gs_param_item_s {
2304     const char *key;
2305     unsigned char type;
2306     short offset;
2307 } gs_param_item_t;
2308 int gs_param_read_items(gs_param_list * plist, void *obj,
2309    const gs_param_item_t * items);
2310 int gs_param_write_items(gs_param_list * plist, const void *obj,
2311     const void *default_obj,
2312     const gs_param_item_t * items);
2313 void gs_param_list_init(gs_param_list *, const gs_param_list_procs *,
2314    gs_memory_t *);
2315 int param_coerce_typed(gs_param_typed_value * pvalue,
2316          gs_param_type req_type, gs_memory_t * mem);
2317 int gs_param_request_default(gs_param_list *, gs_param_name);
2318 int gs_param_requested_default(const gs_param_list *, gs_param_name);
2319 typedef struct gs_c_param_s gs_c_param;
2320 typedef struct gs_c_param_list_s {
2321     const gs_param_list_procs *procs; gs_memory_t *memory; bool persistent_keys;
2322     gs_c_param *head;
2323     gs_param_list *target;
2324     unsigned int count;
2325     bool any_requested;
2326     gs_param_collection_type_t coll_type;
2327 } gs_c_param_list;
2328 void gs_c_param_list_set_target(gs_c_param_list *, gs_param_list *);
2329 gs_c_param_list *gs_c_param_list_alloc(gs_memory_t *, client_name_t);
2330 void gs_c_param_list_write(gs_c_param_list *, gs_memory_t *);
2331 void gs_c_param_list_write_more(gs_c_param_list *);
2332 void gs_c_param_list_read(gs_c_param_list *);
2333 void gs_c_param_list_release(gs_c_param_list *);
2334 typedef struct {
2335     void *dummy_;
2336 } gp_semaphore;
2337 unsigned int gp_semaphore_sizeof(void);
2338 int gp_semaphore_open(gp_semaphore * sema);
2339 int gp_semaphore_close(gp_semaphore * sema);
2340 int gp_semaphore_wait(gp_semaphore * sema);
2341 int gp_semaphore_signal(gp_semaphore * sema);
2342 typedef struct {
2343     void *dummy_;
2344 } gp_monitor;
2345 unsigned int gp_monitor_sizeof(void);
2346 int gp_monitor_open(gp_monitor * mon);
2347 int gp_monitor_close(gp_monitor * mon);
2348 int gp_monitor_enter(gp_monitor * mon);
2349 int gp_monitor_leave(gp_monitor * mon);
2350 typedef void (*gp_thread_creation_callback_t) (void *);
2351 int gp_create_thread(gp_thread_creation_callback_t, void *);
2352 typedef struct gx_semaphore_s {
2353     gs_memory_t *memory;
2354     gp_semaphore native;
2355 } gx_semaphore_t;
2356 gx_semaphore_t *
2357     gx_semaphore_alloc(
2358          gs_memory_t * memory
2359          );
2360 void
2361     gx_semaphore_free(
2362         gx_semaphore_t * sema
2363         );
2364 typedef struct gx_monitor_s {
2365     gs_memory_t *memory;
2366     gp_monitor native;
2367 } gx_monitor_t;
2368 gx_monitor_t *
2369     gx_monitor_alloc(
2370        gs_memory_t * memory
2371        );
2372 void
2373     gx_monitor_free(
2374       gx_monitor_t * mon
2375       );
2376 typedef struct gs_malloc_block_s gs_malloc_block_t;
2377 typedef struct gs_malloc_memory_s {
2378     gs_memory_t *stable_memory; gs_memory_procs_t procs; gs_lib_ctx_t *gs_lib_ctx; pl_mem_node_t *head; gs_memory_t *non_gc_memory;
2379     gs_malloc_block_t *allocated;
2380     long limit;
2381     long used;
2382     long max_used;
2383     gx_monitor_t *monitor;
2384 } gs_malloc_memory_t;
2385 gs_malloc_memory_t *gs_malloc_memory_init(void);
2386 gs_memory_t * gs_malloc_init(const gs_memory_t *parent);
2387 void gs_malloc_release(gs_memory_t *mem);
2388 int gs_malloc_wrap(gs_memory_t **wrapped, gs_malloc_memory_t *contents);
2389 gs_malloc_memory_t *gs_malloc_wrapped_contents(gs_memory_t *wrapped);
2390 gs_malloc_memory_t *gs_malloc_unwrap(gs_memory_t *wrapped);
2391 int gx_default_open_device(gx_device *dev);
2392 void gx_default_get_initial_matrix(gx_device *dev, gs_matrix *pmat);
2393 void gx_upright_get_initial_matrix(gx_device *dev, gs_matrix *pmat);
2394 int gx_default_sync_output(gx_device *dev);
2395 int gx_default_output_page(gx_device *dev, int num_copies, int flush);
2396 int gx_default_close_device(gx_device *dev);
2397 gx_color_index gx_default_w_b_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
2398 int gx_default_w_b_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2399 int gx_default_tile_rectangle(gx_device *dev, const gx_tile_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
2400 int gx_default_copy_mono(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1);
2401 int gx_default_copy_color(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height);
2402 int gx_default_draw_line(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color);
2403 int gx_no_get_bits(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data);
2404 int gx_default_get_bits(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data);
2405 int gx_default_get_params(gx_device *dev, gs_param_list *plist);
2406 int gx_default_put_params(gx_device *dev, gs_param_list *plist);
2407 gx_color_index gx_default_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
2408 const gx_xfont_procs *gx_default_get_xfont_procs(gx_device *dev);
2409 gx_device *gx_default_get_xfont_device(gx_device *dev);
2410 gx_color_index gx_default_map_rgb_alpha_color(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue, gx_color_value alpha);
2411 gx_device *gx_default_get_page_device(gx_device *dev);
2412 gx_device *gx_page_device_get_page_device(gx_device *dev);
2413 int gx_default_get_alpha_bits(gx_device *dev, graphics_object_type type);
2414 int gx_no_copy_alpha(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
2415 int gx_default_copy_alpha(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
2416 int gx_default_get_band(gx_device *dev, int y, int *band_start);
2417 int gx_no_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
2418 int gx_default_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
2419 int gx_default_fill_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_fill_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
2420 int gx_default_stroke_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_stroke_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
2421 int gx_default_fill_mask(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, const gx_drawing_color *pdcolor, int depth, gs_logical_operation_t lop, const gx_clip_path *pcpath);
2422 int gx_default_fill_trapezoid(gx_device *dev, const gs_fixed_edge *left, const gs_fixed_edge *right, fixed ybot, fixed ytop, bool swap_axes, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2423 int gx_default_fill_parallelogram(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2424 int gx_default_fill_triangle(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2425 int gx_default_draw_thin_line(gx_device *dev, fixed fx0, fixed fy0, fixed fx1, fixed fy1, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2426 int gx_default_begin_image(gx_device *dev, const gs_imager_state *pis, const gs_image_t *pim, gs_image_format_t format, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
2427 int gx_default_image_data(gx_device *dev, gx_image_enum_common_t *info, const unsigned char **planes, int data_x, unsigned int raster, int height);
2428 int gx_default_end_image(gx_device *dev, gx_image_enum_common_t *info, bool draw_last);
2429 int gx_default_strip_tile_rectangle(gx_device *dev, const gx_strip_bitmap *tiles, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
2430 int gx_no_strip_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
2431 int gx_default_strip_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
2432 void gx_default_get_clipping_box(gx_device *dev, gs_fixed_rect *pbox);
2433 void gx_get_largest_clipping_box(gx_device *dev, gs_fixed_rect *pbox);
2434 int gx_default_begin_typed_image(gx_device *dev, const gs_imager_state *pis, const gs_matrix *pmat, const gs_image_common_t *pim, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
2435 int gx_no_get_bits_rectangle(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread);
2436 int gx_default_get_bits_rectangle(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread);
2437 int gx_default_map_color_rgb_alpha(gx_device *dev, gx_color_index color, gx_color_value rgba[4]);
2438 int gx_no_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory);
2439 int gx_default_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory);
2440 int gx_null_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory);
2441 int gx_default_get_hardware_params(gx_device *dev, gs_param_list *plist);
2442 int gx_default_text_begin(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte);
2443 int gx_default_finish_copydevice(gx_device *dev, const gx_device *from_dev);
2444 int gx_default_pattern_manage(gx_device *pdev, gx_bitmap_id id, gs_pattern1_instance_t *pinst, pattern_manage_t function);
2445 int gx_default_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect, const gs_imager_state *pis, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
2446 int gx_default_include_color_space(gx_device *dev, gs_color_space *cspace, const unsigned char *res_name, int name_length);
2447 int gx_default_fill_linear_color_scanline(gx_device *dev, const gs_fill_attributes *fa, int i, int j, int w, const frac31 *c0, const int32_t *c0_f, const int32_t *cg_num, int32_t cg_den );
2448 int gx_default_fill_linear_color_trapezoid(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const gs_fixed_point *p3, const frac31 *c0, const frac31 *c1, const frac31 *c2, const frac31 *c3);
2449 int gx_default_fill_linear_color_triangle(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const frac31 *c0, const frac31 *c1, const frac31 *c2);
2450 int gx_default_update_spot_equivalent_colors(gx_device *dev, const gs_state * pgs);
2451 gs_devn_params * gx_default_ret_devn_params(gx_device *dev);
2452 gx_color_index gx_default_b_w_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
2453 int gx_default_b_w_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2454 gx_color_index gx_default_gray_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
2455 int gx_default_gray_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2456 int gx_default_rgb_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2457 gx_color_index gx_default_rgb_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
2458 gx_color_index cmyk_1bit_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
2459 int cmyk_1bit_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2460 int (cmyk_1bit_map_color_cmyk)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
2461 gx_color_index cmyk_8bit_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
2462 int cmyk_8bit_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2463 int (cmyk_8bit_map_color_cmyk)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
2464 gx_color_index (gx_default_8bit_map_gray_color)(gx_device * dev, const gx_color_value colors[]);
2465 int (gx_default_8bit_map_color_gray)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
2466 int gx_forward_close_device(gx_device *dev);
2467 void gx_forward_get_initial_matrix(gx_device *dev, gs_matrix *pmat);
2468 int gx_forward_sync_output(gx_device *dev);
2469 int gx_forward_output_page(gx_device *dev, int num_copies, int flush);
2470 gx_color_index gx_forward_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
2471 int gx_forward_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
2472 int gx_forward_fill_rectangle(gx_device *dev, int x, int y, int width, int height, gx_color_index color);
2473 int gx_forward_tile_rectangle(gx_device *dev, const gx_tile_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
2474 int gx_forward_copy_mono(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1);
2475 int gx_forward_copy_color(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height);
2476 int gx_forward_get_bits(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data);
2477 int gx_forward_get_params(gx_device *dev, gs_param_list *plist);
2478 int gx_forward_put_params(gx_device *dev, gs_param_list *plist);
2479 gx_color_index gx_forward_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
2480 const gx_xfont_procs *gx_forward_get_xfont_procs(gx_device *dev);
2481 gx_device *gx_forward_get_xfont_device(gx_device *dev);
2482 gx_color_index gx_forward_map_rgb_alpha_color(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue, gx_color_value alpha);
2483 gx_device *gx_forward_get_page_device(gx_device *dev);
2484 int gx_forward_copy_alpha(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
2485 int gx_forward_get_band(gx_device *dev, int y, int *band_start);
2486 int gx_forward_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
2487 int gx_forward_fill_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_fill_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
2488 int gx_forward_stroke_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_stroke_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
2489 int gx_forward_fill_mask(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, const gx_drawing_color *pdcolor, int depth, gs_logical_operation_t lop, const gx_clip_path *pcpath);
2490 int gx_forward_fill_trapezoid(gx_device *dev, const gs_fixed_edge *left, const gs_fixed_edge *right, fixed ybot, fixed ytop, bool swap_axes, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2491 int gx_forward_fill_parallelogram(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2492 int gx_forward_fill_triangle(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2493 int gx_forward_draw_thin_line(gx_device *dev, fixed fx0, fixed fy0, fixed fx1, fixed fy1, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
2494 int gx_forward_begin_image(gx_device *dev, const gs_imager_state *pis, const gs_image_t *pim, gs_image_format_t format, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
2495 int gx_forward_strip_tile_rectangle(gx_device *dev, const gx_strip_bitmap *tiles, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
2496 int gx_forward_strip_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
2497 void gx_forward_get_clipping_box(gx_device *dev, gs_fixed_rect *pbox);
2498 int gx_forward_begin_typed_image(gx_device *dev, const gs_imager_state *pis, const gs_matrix *pmat, const gs_image_common_t *pim, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
2499 int gx_forward_get_bits_rectangle(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread);
2500 int gx_forward_map_color_rgb_alpha(gx_device *dev, gx_color_index color, gx_color_value rgba[4]);
2501 int gx_forward_get_hardware_params(gx_device *dev, gs_param_list *plist);
2502 int gx_forward_text_begin(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte);
2503 const gx_cm_color_map_procs * (gx_forward_get_color_mapping_procs)(const gx_device * dev);
2504 int (gx_forward_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
2505 gx_color_index (gx_forward_encode_color)(gx_device * dev, const gx_color_value colors[]);
2506 int (gx_forward_decode_color)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
2507 int gx_forward_pattern_manage(gx_device *pdev, gx_bitmap_id id, gs_pattern1_instance_t *pinst, pattern_manage_t function);
2508 int gx_forward_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect, const gs_imager_state *pis, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
2509 int gx_forward_include_color_space(gx_device *dev, gs_color_space *cspace, const unsigned char *res_name, int name_length);
2510 int gx_forward_fill_linear_color_scanline(gx_device *dev, const gs_fill_attributes *fa, int i, int j, int w, const frac31 *c0, const int32_t *c0_f, const int32_t *cg_num, int32_t cg_den );
2511 int gx_forward_fill_linear_color_trapezoid(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const gs_fixed_point *p3, const frac31 *c0, const frac31 *c1, const frac31 *c2, const frac31 *c3);
2512 int gx_forward_fill_linear_color_triangle(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const frac31 *c0, const frac31 *c1, const frac31 *c2);
2513 int gx_forward_update_spot_equivalent_colors(gx_device *dev, const gs_state * pgs);
2514 gs_devn_params * gx_forward_ret_devn_params(gx_device *dev);
2515 void gx_device_set_procs(gx_device *);
2516 void gx_device_fill_in_procs(gx_device *);
2517 void gx_device_forward_fill_in_procs(gx_device_forward *);
2518 void gx_device_forward_color_procs(gx_device_forward *);
2519 void check_device_separable(gx_device * dev);
2520 void set_linear_color_bits_mask_shift(gx_device * dev);
2521 void gx_device_copy_color_procs(gx_device *dev, const gx_device *target);
2522 gx_color_index gx_device_black(gx_device *dev);
2523 gx_color_index gx_device_white(gx_device *dev);
2524 void gx_device_decache_colors(gx_device *dev);
2525 void gx_device_copy_color_params(gx_device *dev, const gx_device *target);
2526 void gx_device_copy_params(gx_device *dev, const gx_device *target);
2527 int gx_parse_output_file_name(gs_parsed_file_name_t *pfn,
2528          const char **pfmt, const char *fname,
2529          unsigned int len);
2530 int gx_device_open_output_file(const gx_device * dev, char *fname,
2531           bool binary, bool positionable,
2532           FILE ** pfile);
2533 int gx_device_close_output_file(const gx_device * dev, const char *fname,
2534     FILE *file);
2535 int gx_finish_output_page(gx_device *dev, int num_copies, int flush);
2536 typedef struct gdev_input_media_s {
2537     float PageSize[4];
2538     const char *MediaColor;
2539     float MediaWeight;
2540     const char *MediaType;
2541 } gdev_input_media_t;
2542 extern const gdev_input_media_t gdev_input_media_default;
2543 void gdev_input_media_init(gdev_input_media_t * pim);
2544 int gdev_begin_input_media(gs_param_list * mlist, gs_param_dict * pdict,
2545       int count);
2546 int gdev_write_input_page_size(int index, gs_param_dict * pdict,
2547           floatp width_points, floatp height_points);
2548 int gdev_write_input_media(int index, gs_param_dict * pdict,
2549       const gdev_input_media_t * pim);
2550 int gdev_end_input_media(gs_param_list * mlist, gs_param_dict * pdict);
2551 typedef struct gdev_output_media_s {
2552     const char *OutputType;
2553 } gdev_output_media_t;
2554 extern const gdev_output_media_t gdev_output_media_default;
2555 int gdev_begin_output_media(gs_param_list * mlist, gs_param_dict * pdict,
2556        int count);
2557 int gdev_write_output_media(int index, gs_param_dict * pdict,
2558        const gdev_output_media_t * pom);
2559 int gdev_end_output_media(gs_param_list * mlist, gs_param_dict * pdict);
2560 void gx_device_request_leadingedge(gx_device *dev, int le_req);
2561 typedef struct gx_render_plane_s {
2562     int depth;
2563     int shift;
2564     int index;
2565 } gx_render_plane_t;
2566 int gx_render_plane_init(gx_render_plane_t *render_plane,
2567     const gx_device *dev, int index);
2568 typedef struct gx_device_memory_s gx_device_memory;
2569 struct gx_device_memory_s {
2570     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target;
2571     unsigned int raster;
2572     unsigned char *base;
2573     gs_memory_t *bitmap_memory;
2574     bool foreign_bits;
2575     gs_memory_t *line_pointer_memory;
2576     bool foreign_line_pointers;
2577     int num_planes;
2578     gx_render_plane_t planes[(8 * 8)];
2579     gs_matrix initial_matrix;
2580     unsigned char **line_ptrs;
2581     gs_const_string palette;
2582     struct _c24 {
2583  gx_color_index rgb;
2584  bits32 rgbr, gbrg, brgb;
2585     } color24;
2586     struct _c40 {
2587  gx_color_index abcde;
2588  bits32 abcd, bcde, cdea, deab, eabc;
2589     } color40;
2590     struct _c48 {
2591  gx_color_index abcdef;
2592  bits32 abcd, cdef, efab;
2593     } color48;
2594     struct _c56 {
2595  gx_color_index abcdefg;
2596  bits32 abcd, bcde, cdef, defg, efga, fgab, gabc;
2597     } color56;
2598     struct _c64 {
2599  gx_color_index abcdefgh;
2600  bits32 abcd, efgh;
2601     } color64;
2602     gs_log2_scale_point log2_scale;
2603     int log2_alpha_bits;
2604     int mapped_x;
2605     int mapped_y;
2606     int mapped_height;
2607     int mapped_start;
2608     gx_color_index save_color;
2609     int plane_depth;
2610     int band_y;
2611 };
2612 extern const gs_memory_struct_type_t st_device_memory;
2613 int gdev_mem_bits_size(const gx_device_memory *mdev, int width,
2614     int height, unsigned long *size);
2615 unsigned long gdev_mem_line_ptrs_size(const gx_device_memory *mdev, int width,
2616          int height);
2617 int gdev_mem_data_size(const gx_device_memory *mdev, int width,
2618     int height, unsigned long *size);
2619 int gdev_mem_max_height(const gx_device_memory * dev, int width, unsigned long size,
2620   bool page_uses_transparency);
2621 const gx_device_memory *gdev_mem_device_for_bits(int);
2622 const gx_device_memory *gdev_mem_word_device_for_bits(int);
2623 void gs_make_mem_mono_device(gx_device_memory * mdev, gs_memory_t * mem,
2624         gx_device * target);
2625 void gs_make_mem_device(gx_device_memory * mdev,
2626    const gx_device_memory * mdproto,
2627    gs_memory_t * mem, int page_device,
2628    gx_device * target);
2629 void gs_make_mem_abuf_device(gx_device_memory * adev, gs_memory_t * mem,
2630         gx_device * target,
2631         const gs_log2_scale_point * pscale,
2632         int alpha_bits, int mapped_x);
2633 void gs_make_mem_alpha_device(gx_device_memory * adev, gs_memory_t * mem,
2634          gx_device * target, int alpha_bits);
2635 int gdev_mem_open_scan_lines(gx_device_memory *mdev, int setup_height);
2636 int gdev_mem_set_line_ptrs(gx_device_memory *mdev,
2637       unsigned char *base, int raster, unsigned char **line_ptrs,
2638       int setup_height);
2639 void gdev_mem_mono_set_inverted(gx_device_memory * mdev, bool black_is_1);
2640 bool gs_device_is_memory(const gx_device *);
2641 bool gs_device_is_abuf(const gx_device *);
2642 typedef void *clist_file_ptr;
2643 struct clist_io_procs_s {
2644     int (*fopen)(char fname[260], const char *fmode,
2645       clist_file_ptr * pcf,
2646       gs_memory_t * mem, gs_memory_t *data_mem,
2647       bool ok_to_compress);
2648     int (*fclose)(clist_file_ptr cf, const char *fname, bool delete);
2649     int (*unlink)(const char *fname);
2650     int (*fwrite_chars)(const void *data, unsigned int len, clist_file_ptr cf);
2651     int (*fread_chars)(void *data, unsigned int len, clist_file_ptr cf);
2652     int (*set_memory_warning)(clist_file_ptr cf, int bytes_left);
2653     int (*ferror_code)(clist_file_ptr cf);
2654     int64_t (*ftell)(clist_file_ptr cf);
2655     void (*rewind)(clist_file_ptr cf, bool discard_data, const char *fname);
2656     int (*fseek)(clist_file_ptr cf, int64_t offset, int mode, const char *fname);
2657 };
2658 typedef struct clist_io_procs_s clist_io_procs_t;
2659 extern const clist_io_procs_t *clist_io_procs_file_global;
2660 extern const clist_io_procs_t *clist_io_procs_memory_global;
2661 typedef struct gx_band_params_s {
2662     bool page_uses_transparency;
2663     int BandWidth;
2664     int BandHeight;
2665     long BandBufferSpace;
2666 } gx_band_params_t;
2667 typedef struct gx_colors_used_s {
2668     gx_color_index or;
2669     bool slow_rop;
2670 } gx_colors_used_t;
2671 typedef struct gx_band_page_info_s {
2672     char cfname[260];
2673     clist_file_ptr cfile;
2674     char bfname[260];
2675     clist_file_ptr bfile;
2676     const clist_io_procs_t *io_procs;
2677     unsigned int tile_cache_size;
2678     int64_t bfile_end_pos;
2679     gx_band_params_t band_params;
2680     int scan_lines_per_colors_used;
2681     gx_colors_used_t band_colors_used[50];
2682 } gx_band_page_info_t;
2683 typedef struct gx_cached_bits_head_s {
2684     unsigned int size;
2685     unsigned int depth;
2686 } gx_cached_bits_head;
2687 typedef struct gx_cached_bits_s {
2688     gx_cached_bits_head head; unsigned short width, height, shift; unsigned short raster; gx_bitmap_id id;
2689 } gx_cached_bits;
2690 typedef struct gx_bits_cache_chunk_s gx_bits_cache_chunk;
2691 struct gx_bits_cache_chunk_s {
2692     gx_bits_cache_chunk *next;
2693     unsigned char *data;
2694     unsigned int size;
2695     unsigned int allocated;
2696 };
2697 typedef struct gx_bits_cache_s {
2698     gx_bits_cache_chunk *chunks; unsigned int cnext; unsigned int bsize; unsigned int csize;
2699 } gx_bits_cache;
2700 void gx_bits_cache_init(gx_bits_cache *, gx_bits_cache_chunk *);
2701 void gx_bits_cache_chunk_init(gx_bits_cache_chunk *, unsigned char *, unsigned int);
2702 int gx_bits_cache_alloc(gx_bits_cache *, unsigned long, gx_cached_bits_head **);
2703 void gx_bits_cache_shorten(gx_bits_cache *, gx_cached_bits_head *,
2704       unsigned int, gx_bits_cache_chunk *);
2705 void gx_bits_cache_free(gx_bits_cache *, gx_cached_bits_head *,
2706    gx_bits_cache_chunk *);
2707 typedef struct gx_device_buf_space_s {
2708     unsigned long bits;
2709     unsigned long line_ptrs;
2710     unsigned int raster;
2711 } gx_device_buf_space_t;
2712 typedef struct gx_band_complexity_s {
2713     bool uses_color;
2714     bool nontrivial_rops;
2715 } gx_band_complexity_t;
2716 typedef struct gx_device_buf_procs_s {
2717     int (*create_buf_device)(gx_device **pbdev, gx_device *target, int y, const gx_render_plane_t *render_plane, gs_memory_t *mem, gx_band_complexity_t *band_complexity);
2718     int (*size_buf_device)(gx_device_buf_space_t *space, gx_device *target, const gx_render_plane_t *render_plane, int height, bool for_band);
2719     int (*setup_buf_device)(gx_device *bdev, unsigned char *buffer, int bytes_per_line, unsigned char **line_ptrs , int y, int setup_height, int full_height);
2720     void (*destroy_buf_device)(gx_device *bdev);
2721 } gx_device_buf_procs_t;
2722 int gx_default_create_buf_device(gx_device **pbdev, gx_device *target, int y, const gx_render_plane_t *render_plane, gs_memory_t *mem, gx_band_complexity_t *band_complexity);
2723 int gx_default_size_buf_device(gx_device_buf_space_t *space, gx_device *target, const gx_render_plane_t *render_plane, int height, bool for_band);
2724 int gx_default_setup_buf_device(gx_device *bdev, unsigned char *buffer, int bytes_per_line, unsigned char **line_ptrs , int y, int setup_height, int full_height);
2725 void gx_default_destroy_buf_device(gx_device *bdev);
2726 typedef enum {
2727     gs_cap_butt = 0,
2728     gs_cap_round = 1,
2729     gs_cap_square = 2,
2730     gs_cap_triangle = 3,
2731     gs_cap_unknown = 4
2732 } gs_line_cap;
2733 typedef enum {
2734     gs_join_miter = 0,
2735     gs_join_round = 1,
2736     gs_join_bevel = 2,
2737     gs_join_none = 3,
2738     gs_join_triangle = 4,
2739     gs_join_unknown = 5
2740 } gs_line_join;
2741 typedef struct gx_dash_params_s {
2742     float *pattern;
2743     unsigned int pattern_size;
2744     float offset;
2745     bool adapt;
2746     float pattern_length;
2747     bool init_ink_on;
2748     int init_index;
2749     float init_dist_left;
2750 } gx_dash_params;
2751 typedef struct gx_line_params_s {
2752     float half_width;
2753     gs_line_cap cap;
2754     gs_line_join join;
2755     int curve_join;
2756     float miter_limit;
2757     float miter_check;
2758     float dot_length;
2759     bool dot_length_absolute;
2760     gs_matrix dot_orientation;
2761     gx_dash_params dash;
2762 } gx_line_params;
2763 int gx_set_miter_limit(gx_line_params *, floatp);
2764 int gx_set_dash(gx_dash_params *, const float *, unsigned int, floatp, gs_memory_t *);
2765 int gx_set_dot_length(gx_line_params *, floatp, bool);
2766 struct gs_matrix_fixed_s {
2767     float xx, xy, yx, yy, tx, ty;
2768     fixed tx_fixed, ty_fixed;
2769     bool txy_fixed_valid;
2770 };
2771 typedef struct gs_matrix_fixed_s gs_matrix_fixed;
2772 int gs_matrix_fixed_from_matrix(gs_matrix_fixed *, const gs_matrix *);
2773 int gs_point_transform2fixed(const gs_matrix_fixed *, floatp, floatp,
2774         gs_fixed_point *);
2775 int gs_distance_transform2fixed(const gs_matrix_fixed *, floatp, floatp,
2776     gs_fixed_point *);
2777 int gs_point_transform2fixed_rounding(const gs_matrix_fixed * pmat,
2778     floatp x, floatp y, gs_fixed_point * ppt);
2779 typedef struct {
2780     long xx, xy, yx, yy;
2781     int skewed;
2782     int shift;
2783     int max_bits;
2784     fixed round;
2785 } fixed_coeff;
2786 fixed fixed_coeff_mult(fixed, long, const fixed_coeff *, int);
2787 typedef unsigned long gx_bitmap_format_t;
2788 typedef struct gx_device_clist_writer_s gx_device_clist_writer;
2789 typedef struct gs_composite_type_procs_s {
2790     int (*create_default_compositor)(const gs_composite_t *pcte, gx_device **pcdev, gx_device *dev, gs_imager_state *pis, gs_memory_t *mem);
2791     bool (*equal)(const gs_composite_t *pcte, const gs_composite_t *pcte2);
2792     int (*write)(const gs_composite_t *pcte, unsigned char *data, unsigned int *psize, gx_device_clist_writer *cdev);
2793     int (*read)(gs_composite_t **ppcte, const unsigned char *data, unsigned int size, gs_memory_t *mem);
2794     int (*adjust_ctm)(gs_composite_t *pcte, int x0, int y0, gs_imager_state *pis);
2795     int (*is_closing)(const gs_composite_t *this, gs_composite_t **pcte, gx_device *dev);
2796     bool (*is_friendly)(const gs_composite_t *this, unsigned char cmd0, unsigned char cmd1);
2797     int (*clist_compositor_write_update)(const gs_composite_t * pcte, gx_device * dev, gx_device ** pcdev, gs_imager_state * pis, gs_memory_t * mem);
2798     int (*clist_compositor_read_update)(gs_composite_t * pcte, gx_device * cdev, gx_device * tdev, gs_imager_state * pis, gs_memory_t * mem);
2799     int (*get_cropping)(const gs_composite_t * pcte, int *ry, int *rheight);
2800 } gs_composite_type_procs_t;
2801 typedef struct gs_composite_type_s {
2802     unsigned char comp_id;
2803     gs_composite_type_procs_t procs;
2804 } gs_composite_type_t;
2805 int gx_default_composite_clist_write_update(const gs_composite_t * pcte, gx_device * dev, gx_device ** pcdev, gs_imager_state * pis, gs_memory_t * mem);
2806 int gx_default_composite_adjust_ctm(gs_composite_t *pcte, int x0, int y0, gs_imager_state *pis);
2807 int gx_default_composite_is_closing(const gs_composite_t *this, gs_composite_t **pcte, gx_device *dev);
2808 bool gx_default_composite_is_friendly(const gs_composite_t *this, unsigned char cmd0, unsigned char cmd1);
2809 int gx_default_composite_clist_read_update(gs_composite_t * pcte, gx_device * cdev, gx_device * tdev, gs_imager_state * pis, gs_memory_t * mem);
2810 int gx_default_composite_get_cropping(const gs_composite_t * pcte, int *ry, int *rheight);
2811 struct gs_composite_s {
2812     const gs_composite_type_t *type; gs_id id; bool idle; struct gs_composite_s *prev, *next;
2813 };
2814 typedef enum {
2815     PDF14_PUSH_DEVICE,
2816     PDF14_POP_DEVICE,
2817     PDF14_BEGIN_TRANS_GROUP,
2818     PDF14_END_TRANS_GROUP,
2819     PDF14_BEGIN_TRANS_MASK,
2820     PDF14_END_TRANS_MASK,
2821     PDF14_SET_BLEND_PARAMS
2822 } pdf14_compositor_operations;
2823 typedef struct gs_transparency_source_s {
2824     float alpha;
2825 } gs_transparency_source_t;
2826 struct gs_pdf14trans_params_s {
2827     pdf14_compositor_operations pdf14_op;
2828     int num_spot_colors;
2829     int changed;
2830     bool Isolated;
2831     bool Knockout;
2832     bool image_with_SMask;
2833     gs_rect bbox;
2834     gs_transparency_channel_selector_t csel;
2835     gs_transparency_mask_subtype_t subtype;
2836     int Background_components;
2837     bool function_is_identity;
2838     float Background[(8)];
2839     float GrayBackground;
2840     gs_function_t *transfer_function;
2841     unsigned char transfer_fn[256];
2842     gs_blend_mode_t blend_mode;
2843     bool text_knockout;
2844     gs_transparency_source_t opacity;
2845     gs_transparency_source_t shape;
2846     bool mask_is_image;
2847     gs_matrix ctm;
2848     bool replacing;
2849     bool idle;
2850     unsigned int mask_id;
2851 };
2852 typedef struct gs_pdf14trans_params_s gs_pdf14trans_params_t;
2853 typedef struct gs_pdf14trans_s {
2854     const gs_composite_type_t *type; gs_id id; bool idle; struct gs_composite_s *prev, *next;
2855     gs_pdf14trans_params_t params;
2856 } gs_pdf14trans_t;
2857 int gs_setblendmode(gs_state *, gs_blend_mode_t);
2858 gs_blend_mode_t gs_currentblendmode(const gs_state *);
2859 int gs_setopacityalpha(gs_state *, floatp);
2860 float gs_currentopacityalpha(const gs_state *);
2861 int gs_setshapealpha(gs_state *, floatp);
2862 float gs_currentshapealpha(const gs_state *);
2863 int gs_settextknockout(gs_state *, bool);
2864 bool gs_currenttextknockout(const gs_state *);
2865 gs_transparency_state_type_t
2866     gs_current_transparency_type(const gs_state *pgs);
2867 int gs_push_pdf14trans_device(gs_state * pgs);
2868 int gs_pop_pdf14trans_device(gs_state * pgs);
2869 void gs_trans_group_params_init(gs_transparency_group_params_t *ptgp);
2870 int gs_begin_transparency_group(gs_state * pgs,
2871     const gs_transparency_group_params_t *ptgp,
2872     const gs_rect *pbbox);
2873 int gs_end_transparency_group(gs_state *pgs);
2874 void gs_trans_mask_params_init(gs_transparency_mask_params_t *ptmp,
2875           gs_transparency_mask_subtype_t subtype);
2876 int gs_begin_transparency_mask(gs_state *pgs,
2877           const gs_transparency_mask_params_t *ptmp,
2878           const gs_rect *pbbox, bool mask_is_image);
2879 int gs_end_transparency_mask(gs_state *pgs,
2880         gs_transparency_channel_selector_t csel);
2881 int gs_discard_transparency_layer(gs_state *pgs);
2882 int gx_begin_transparency_group(gs_imager_state * pis, gx_device * pdev,
2883     const gs_pdf14trans_params_t * pparams);
2884 int gx_end_transparency_group(gs_imager_state * pis, gx_device * pdev);
2885 int gx_begin_transparency_mask(gs_imager_state * pis, gx_device * pdev,
2886     const gs_pdf14trans_params_t * pparams);
2887 int gx_end_transparency_mask(gs_imager_state * pis, gx_device * pdev,
2888     const gs_pdf14trans_params_t * pparams);
2889 int gx_discard_transparency_layer(gs_imager_state *pis);
2890 int gs_is_pdf14trans_compositor(const gs_composite_t * pct);
2891 typedef struct gs_halftone_s gs_halftone;
2892 typedef struct gx_transfer_s {
2893     int red_component_num;
2894     gx_transfer_map *red;
2895     int green_component_num;
2896     gx_transfer_map *green;
2897     int blue_component_num;
2898     gx_transfer_map *blue;
2899     int gray_component_num;
2900     gx_transfer_map *gray;
2901 } gx_transfer;
2902 typedef struct gs_devicen_color_map_s {
2903     bool use_alt_cspace;
2904     separation_type sep_type;
2905     unsigned int num_components;
2906     unsigned int num_colorants;
2907     gs_id cspace_id;
2908     int color_map[(8)];
2909 } gs_devicen_color_map;
2910 struct gs_imager_state_s {
2911     gs_memory_t *memory; void *client_data; gx_line_params line_params; gs_matrix_fixed ctm; bool current_point_valid; gs_point current_point; gs_point subpath_start; bool clamp_coordinates; gs_logical_operation_t log_op; gx_color_value alpha; gs_blend_mode_t blend_mode; gs_transparency_source_t opacity, shape; gs_id soft_mask_id; bool text_knockout; unsigned int text_rendering_mode; gs_transparency_state_t *transparency_stack; bool overprint; int overprint_mode; int effective_overprint_mode; float flatness; gs_fixed_point fill_adjust; bool stroke_adjust; bool accurate_curves; bool have_pattern_streams; float smoothness; int renderingintent; const gx_color_map_procs * (*get_cmap_procs)(const gs_imager_state *, const gx_device *); gs_halftone *halftone; gs_int_point screen_phase[2]; gx_device_halftone *dev_ht; struct gs_cie_render_s *cie_render; bool cie_to_xyz; gx_transfer_map *black_generation; gx_transfer_map *undercolor_removal; gx_transfer set_transfer; gx_transfer_map *effective_transfer[(8 * 8)]; int object_tag; struct gx_cie_joint_caches_s *cie_joint_caches; const struct gx_color_map_procs_s *cmap_procs; gs_devicen_color_map color_component_map; struct gx_pattern_cache_s *pattern_cache; gs_color_space *devicergb_cs; gs_color_space *devicecmyk_cs;
2912 };
2913 int gs_imager_state_initialize(gs_imager_state * pis, gs_memory_t * mem);
2914 gs_imager_state *
2915     gs_imager_state_copy(const gs_imager_state * pis, gs_memory_t * mem);
2916 void gs_imager_state_copied(gs_imager_state * pis);
2917 void gs_imager_state_pre_assign(gs_imager_state *to,
2918     const gs_imager_state *from);
2919 void gs_imager_state_release(gs_imager_state * pis);
2920 int gs_currentscreenphase_pis(const gs_imager_state *, gs_int_point *, gs_color_select_t);
2921 typedef struct gx_saved_page_s {
2922     gx_device device;
2923     char dname[8 + 1];
2924     gx_band_page_info_t info;
2925     int num_copies;
2926 } gx_saved_page;
2927 typedef struct gx_placed_page_s {
2928     gx_saved_page *page;
2929     gs_int_point offset;
2930 } gx_placed_page;
2931 typedef struct {
2932     unsigned long offset;
2933 } tile_hash;
2934 typedef struct {
2935     gx_cached_bits_head head; unsigned short width, height, shift; unsigned short raster; gx_bitmap_id id;
2936     unsigned char x_reps, y_reps;
2937     unsigned short rep_shift;
2938     unsigned short index;
2939     unsigned short num_bands;
2940 } tile_slot;
2941 typedef struct cmd_prefix_s cmd_prefix;
2942 struct cmd_prefix_s {
2943     cmd_prefix *next;
2944     unsigned int size;
2945     unsigned long id;
2946 };
2947 typedef struct cmd_list_s {
2948     cmd_prefix *head, *tail;
2949 } cmd_list;
2950 extern const gs_imager_state clist_imager_state_initial;
2951 typedef struct gx_clist_state_s gx_clist_state;
2952 typedef struct gx_device_clist_common_s {
2953     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target; gx_device_buf_procs_t buf_procs; gs_memory_t *bandlist_memory; unsigned char *data; unsigned int data_size; gx_band_params_t band_params; bool do_not_open_or_close_bandfiles; bool page_uses_transparency; gx_bits_cache_chunk chunk; gx_bits_cache bits; unsigned int tile_hash_mask; unsigned int tile_band_mask_size; tile_hash *tile_table; int ymin, ymax; gx_band_page_info_t page_info; int nbands;
2954 } gx_device_clist_common;
2955 typedef struct clist_writer_cropping_buffer_s clist_writer_cropping_buffer_t;
2956 struct clist_writer_cropping_buffer_s {
2957     int cropping_min, cropping_max;
2958     unsigned int mask_id, temp_mask_id;
2959     clist_writer_cropping_buffer_t *next;
2960 };
2961 typedef struct clist_color_space_s {
2962     unsigned char byte1;
2963     gs_id id;
2964     const gs_color_space *space;
2965 } clist_color_space_t;
2966 struct gx_device_clist_writer_s {
2967     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target; gx_device_buf_procs_t buf_procs; gs_memory_t *bandlist_memory; unsigned char *data; unsigned int data_size; gx_band_params_t band_params; bool do_not_open_or_close_bandfiles; bool page_uses_transparency; gx_bits_cache_chunk chunk; gx_bits_cache bits; unsigned int tile_hash_mask; unsigned int tile_band_mask_size; tile_hash *tile_table; int ymin, ymax; gx_band_page_info_t page_info; int nbands;
2968     int error_code;
2969     gx_clist_state *states;
2970     unsigned char *cbuf;
2971     unsigned char *cnext;
2972     unsigned char *cend;
2973     cmd_list *ccl;
2974     cmd_list band_range_list;
2975     int band_range_min, band_range_max;
2976     unsigned int tile_max_size;
2977     unsigned int tile_max_count;
2978     gx_strip_bitmap tile_params;
2979     int tile_depth;
2980     int tile_known_min, tile_known_max;
2981     gs_imager_state imager_state;
2982     float dash_pattern[11];
2983     const gx_clip_path *clip_path;
2984     gs_id clip_path_id;
2985     clist_color_space_t color_space;
2986     gs_id transfer_ids[4];
2987     gs_id black_generation_id;
2988     gs_id undercolor_removal_id;
2989     gs_id device_halftone_id;
2990     gs_id image_enum_id;
2991     int error_is_retryable;
2992     int permanent_error;
2993     int driver_call_nesting;
2994     int ignore_lo_mem_warnings;
2995     int (*free_up_bandlist_memory)(gx_device *dev, bool flush_current);
2996     int disable_mask;
2997     gs_pattern1_instance_t *pinst;
2998     int cropping_min, cropping_max;
2999     int save_cropping_min, save_cropping_max;
3000     int cropping_level;
3001     clist_writer_cropping_buffer_t *cropping_stack;
3002     unsigned long ins_count;
3003     unsigned int mask_id_count;
3004     unsigned int mask_id;
3005     unsigned int temp_mask_id;
3006 };
3007 typedef struct clist_render_thread_control_s clist_render_thread_control_t;
3008 typedef struct gx_device_clist_reader_s {
3009     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target; gx_device_buf_procs_t buf_procs; gs_memory_t *bandlist_memory; unsigned char *data; unsigned int data_size; gx_band_params_t band_params; bool do_not_open_or_close_bandfiles; bool page_uses_transparency; gx_bits_cache_chunk chunk; gx_bits_cache bits; unsigned int tile_hash_mask; unsigned int tile_band_mask_size; tile_hash *tile_table; int ymin, ymax; gx_band_page_info_t page_info; int nbands;
3010     gx_render_plane_t yplane;
3011     const gx_placed_page *pages;
3012     int num_pages;
3013     gx_band_complexity_t *band_complexity_array;
3014     void *offset_map;
3015     int num_render_threads;
3016     clist_render_thread_control_t *render_threads;
3017     unsigned char *main_thread_data;
3018     int curr_render_thread;
3019     int thread_lookahead_direction;
3020 } gx_device_clist_reader;
3021 union gx_device_clist_s {
3022     gx_device_clist_common common;
3023     gx_device_clist_reader reader;
3024     gx_device_clist_writer writer;
3025 };
3026 typedef union gx_device_clist_s gx_device_clist;
3027 extern const gs_memory_struct_type_t st_device_clist;
3028 extern const gx_device_procs gs_clist_device_procs;
3029 void clist_init_io_procs(gx_device_clist *pclist_dev, bool in_memory);
3030 int clist_finish_page(gx_device * dev, bool flush);
3031 int clist_close_output_file(gx_device *dev);
3032 int clist_close_page_info(gx_band_page_info_t *ppi);
3033 void clist_compute_colors_used(gx_device_clist_writer *cldev);
3034 typedef struct gx_device_printer_s gx_device_printer;
3035 int clist_setup_params(gx_device *dev);
3036 int clist_render_rectangle(gx_device_clist *cdev,
3037       const gs_int_rect *prect, gx_device *bdev,
3038       const gx_render_plane_t *render_plane,
3039       bool clear);
3040 gx_band_complexity_t *
3041 clist_get_band_complexity(gx_device *dev, int y);
3042 void gx_clist_reader_free_band_complexity_array(gx_device_clist *cldev);
3043 void
3044 clist_copy_band_complexity(gx_band_complexity_t *this, const gx_band_complexity_t *from);
3045 int clist_data_size(const gx_device_clist *cdev, int select);
3046 int clist_get_data(const gx_device_clist *cdev, int select, int offset, unsigned char *buf, int length);
3047 int clist_put_data(const gx_device_clist *cdev, int select, int offset, const unsigned char *buf, int length);
3048 int clist_render_init(gx_device_clist *dev);
3049 int
3050 clist_close_writer_and_init_reader(gx_device_clist *cldev);
3051 void
3052 clist_select_render_plane(gx_device *dev, int y, int height,
3053      gx_render_plane_t *render_plane, int index);
3054 int clist_rasterize_lines(gx_device *dev, int y, int lineCount,
3055       gx_device *bdev,
3056       const gx_render_plane_t *render_plane,
3057       int *pmy);
3058 int
3059 clist_enable_multi_thread_render(gx_device *dev);
3060 void
3061 clist_teardown_render_threads(gx_device *dev);
3062 typedef struct gdev_prn_start_render_params_s gdev_prn_start_render_params;
3063 typedef struct gx_page_queue_s gx_page_queue_t;
3064 typedef struct gdev_prn_space_params_s gdev_prn_space_params;
3065 typedef struct gx_printer_device_procs_s {
3066     int (*print_page)(gx_device_printer *, FILE *);
3067     int (*print_page_copies)(gx_device_printer *, FILE *, int);
3068     gx_device_buf_procs_t buf_procs;
3069     void (*get_space_params)(const gx_device_printer *, gdev_prn_space_params *);
3070     int (*start_render_thread)(gdev_prn_start_render_params *);
3071     int (*open_render_device)(gx_device_printer *);
3072     int (*close_render_device)(gx_device_printer *);
3073     int (*buffer_page)(gx_device_printer *, FILE *, int);
3074 } gx_printer_device_procs;
3075 typedef enum {
3076     BandingAuto = 0,
3077     BandingAlways,
3078     BandingNever
3079 } gdev_prn_banding_type;
3080 struct gdev_prn_space_params_s {
3081     long MaxBitmap;
3082     long BufferSpace;
3083     gx_band_params_t band;
3084     bool params_are_read_only;
3085     gdev_prn_banding_type banding_type;
3086 };
3087 struct gx_device_printer_s {
3088     int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs;
3089     unsigned char skip[(((sizeof(gx_device_memory)) > (sizeof(gx_device_clist))) ? (sizeof(gx_device_memory)) : (sizeof(gx_device_clist))) - sizeof(gx_device) + sizeof(double) ]; gx_printer_device_procs printer_procs; gdev_prn_space_params space_params; char fname[260]; bool OpenOutputFile; bool ReopenPerPage; bool page_uses_transparency; bool Duplex; int Duplex_set; bool file_is_new; FILE *file; long buffer_space; unsigned char *buf; gs_memory_t *buffer_memory; gs_memory_t *bandlist_memory; int (*free_up_bandlist_memory)(gx_device *dev, bool flush_current); gx_page_queue_t *page_queue; bool is_async_renderer; gx_device_printer *async_renderer; unsigned int clist_disable_mask; int num_render_threads_requested; gx_device_procs orig_procs;
3090 };
3091 extern const gs_memory_struct_type_t st_device_printer;
3092 typedef int (*dev_proc_print_page_t)(gx_device_printer *, FILE *);
3093 int gdev_prn_open(gx_device *dev);
3094 int gdev_prn_output_page(gx_device *dev, int num_copies, int flush);
3095 int gdev_prn_close(gx_device *dev);
3096 int gdev_prn_get_params(gx_device *dev, gs_param_list *plist);
3097 int gdev_prn_put_params(gx_device *dev, gs_param_list *plist);
3098 void gx_default_get_space_params(const gx_device_printer *, gdev_prn_space_params *);
3099 int gx_default_start_render_thread(gdev_prn_start_render_params *);
3100 int gx_default_open_render_device(gx_device_printer *);
3101 int gx_default_close_render_device(gx_device_printer *);
3102 int gx_default_buffer_page(gx_device_printer *, FILE *, int);
3103 extern const gx_device_procs prn_std_procs;
3104 int gdev_prn_open_printer_seekable(gx_device *dev, bool binary_mode,
3105        bool seekable);
3106 int gdev_prn_open_printer(gx_device * dev, bool binary_mode);
3107 bool gdev_prn_file_is_new(const gx_device_printer *pdev);
3108 int gdev_prn_colors_used(gx_device *dev, int y, int height,
3109     gx_colors_used_t *colors_used,
3110     int *range_start);
3111 int gx_page_info_colors_used(const gx_device *dev,
3112         const gx_band_page_info_t *page_info,
3113         int y, int height,
3114         gx_colors_used_t *colors_used,
3115         int *range_start);
3116 int gdev_prn_render_rectangle(gx_device_printer *pdev,
3117          const gs_int_rect *prect,
3118          gx_device *target,
3119          const gx_render_plane_t *render_plane,
3120          bool clear);
3121 int gdev_prn_get_lines(gx_device_printer *pdev, int y, int height,
3122          unsigned char *buffer, unsigned int bytes_per_line,
3123          unsigned char **actual_buffer, unsigned int *actual_bytes_per_line,
3124          const gx_render_plane_t *render_plane);
3125 int gdev_prn_get_bits(gx_device_printer *pdev, int y, unsigned char *buffer,
3126         unsigned char **actual_buffer);
3127 int gdev_prn_copy_scan_lines(gx_device_printer *, int, unsigned char *, unsigned int);
3128 void gdev_prn_clear_trailing_bits(unsigned char *data, unsigned int raster, int height,
3129       const gx_device *dev);
3130 int gdev_prn_close_printer(gx_device *);
3131 int gx_print_page_single_copy(gx_device_printer *, FILE *);
3132 int gx_default_print_page_copies(gx_device_printer *, FILE *, int);
3133 int gdev_prn_print_scan_lines(gx_device *);
3134 int gdev_prn_allocate_memory(gx_device *pdev,
3135         gdev_prn_space_params *space,
3136         int new_width, int new_height);
3137 int gdev_prn_reallocate_memory(gx_device *pdev,
3138           gdev_prn_space_params *space,
3139           int new_width, int new_height);
3140 int gdev_prn_free_memory(gx_device *pdev);
3141 typedef int (*create_buf_device_proc_t)(gx_device **pbdev, gx_device *target, int y, const gx_render_plane_t *render_plane, gs_memory_t *mem, gx_band_complexity_t *band_complexity);
3142 int gdev_create_buf_device(create_buf_device_proc_t cbd_proc,
3143       gx_device **pbdev, gx_device *target, int y,
3144       const gx_render_plane_t *render_plane,
3145       gs_memory_t *mem, gx_band_complexity_t *band_complexity);
3146 int gdev_prn_initialize(gx_device *, const char *, int (*)(gx_device_printer *, FILE *));
3147 void gdev_prn_init_color(gx_device *, int, gx_color_index (*)(gx_device *dev, const gx_color_value cv[]), int (*)(gx_device *dev, gx_color_index color, gx_color_value rgb[3]));
3148 typedef long int wchar_t;
3149 typedef struct
3150   {
3151     int quot;
3152     int rem;
3153   } div_t;
3154 typedef struct
3155   {
3156     long int quot;
3157     long int rem;
3158   } ldiv_t;
3159 extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
3160 extern double atof (__const char *__nptr)
3161      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
3162 extern int atoi (__const char *__nptr)
3163      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
3164 extern long int atol (__const char *__nptr)
3165      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
3166 __extension__ extern long long int atoll (__const char *__nptr)
3167      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
3168 extern double strtod (__const char *__restrict __nptr,
3169         char **__restrict __endptr)
3170      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3171 extern long int strtol (__const char *__restrict __nptr,
3172    char **__restrict __endptr, int __base)
3173      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3174 extern unsigned long int strtoul (__const char *__restrict __nptr,
3175       char **__restrict __endptr, int __base)
3176      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3177 __extension__
3178 extern long long int strtoq (__const char *__restrict __nptr,
3179         char **__restrict __endptr, int __base)
3180      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3181 __extension__
3182 extern unsigned long long int strtouq (__const char *__restrict __nptr,
3183            char **__restrict __endptr, int __base)
3184      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3185 __extension__
3186 extern long long int strtoll (__const char *__restrict __nptr,
3187          char **__restrict __endptr, int __base)
3188      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3189 __extension__
3190 extern unsigned long long int strtoull (__const char *__restrict __nptr,
3191      char **__restrict __endptr, int __base)
3192      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3193 extern __inline double
3194 __attribute__ ((__nothrow__)) atof (__const char *__nptr)
3195 {
3196   return strtod (__nptr, (char **) ((void *)0));
3197 }
3198 extern __inline int
3199 __attribute__ ((__nothrow__)) atoi (__const char *__nptr)
3200 {
3201   return (int) strtol (__nptr, (char **) ((void *)0), 10);
3202 }
3203 extern __inline long int
3204 __attribute__ ((__nothrow__)) atol (__const char *__nptr)
3205 {
3206   return strtol (__nptr, (char **) ((void *)0), 10);
3207 }
3208 __extension__ extern __inline long long int
3209 __attribute__ ((__nothrow__)) atoll (__const char *__nptr)
3210 {
3211   return strtoll (__nptr, (char **) ((void *)0), 10);
3212 }
3213 extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
3214 extern long int a64l (__const char *__s)
3215      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
3216 extern long int random (void) __attribute__ ((__nothrow__));
3217 extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
3218 extern char *initstate (unsigned int __seed, char *__statebuf,
3219    size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
3220 extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3221 struct random_data
3222   {
3223     int32_t *fptr;
3224     int32_t *rptr;
3225     int32_t *state;
3226     int rand_type;
3227     int rand_deg;
3228     int rand_sep;
3229     int32_t *end_ptr;
3230   };
3231 extern int random_r (struct random_data *__restrict __buf,
3232        int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3233 extern int srandom_r (unsigned int __seed, struct random_data *__buf)
3234      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
3235 extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
3236    size_t __statelen,
3237    struct random_data *__restrict __buf)
3238      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
3239 extern int setstate_r (char *__restrict __statebuf,
3240          struct random_data *__restrict __buf)
3241      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3242 extern int rand (void) __attribute__ ((__nothrow__));
3243 extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
3244 extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
3245 extern double drand48 (void) __attribute__ ((__nothrow__));
3246 extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3247 extern long int lrand48 (void) __attribute__ ((__nothrow__));
3248 extern long int nrand48 (unsigned short int __xsubi[3])
3249      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3250 extern long int mrand48 (void) __attribute__ ((__nothrow__));
3251 extern long int jrand48 (unsigned short int __xsubi[3])
3252      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3253 extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
3254 extern unsigned short int *seed48 (unsigned short int __seed16v[3])
3255      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3256 extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3257 struct drand48_data
3258   {
3259     unsigned short int __x[3];
3260     unsigned short int __old_x[3];
3261     unsigned short int __c;
3262     unsigned short int __init;
3263     unsigned long long int __a;
3264   };
3265 extern int drand48_r (struct drand48_data *__restrict __buffer,
3266         double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3267 extern int erand48_r (unsigned short int __xsubi[3],
3268         struct drand48_data *__restrict __buffer,
3269         double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3270 extern int lrand48_r (struct drand48_data *__restrict __buffer,
3271         long int *__restrict __result)
3272      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3273 extern int nrand48_r (unsigned short int __xsubi[3],
3274         struct drand48_data *__restrict __buffer,
3275         long int *__restrict __result)
3276      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3277 extern int mrand48_r (struct drand48_data *__restrict __buffer,
3278         long int *__restrict __result)
3279      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3280 extern int jrand48_r (unsigned short int __xsubi[3],
3281         struct drand48_data *__restrict __buffer,
3282         long int *__restrict __result)
3283      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3284 extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
3285      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
3286 extern int seed48_r (unsigned short int __seed16v[3],
3287        struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3288 extern int lcong48_r (unsigned short int __param[7],
3289         struct drand48_data *__buffer)
3290      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3291 extern void *realloc (void *__ptr, size_t __size)
3292      __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
3293 extern void free (void *__ptr) __attribute__ ((__nothrow__));
3294 extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
3295 extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
3296 extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
3297 extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
3298      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3299 extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
3300 extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3301 extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
3302      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3303 extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
3304 extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3305 extern char *__secure_getenv (__const char *__name)
3306      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3307 extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3308 extern int setenv (__const char *__name, __const char *__value, int __replace)
3309      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
3310 extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
3311 extern int clearenv (void) __attribute__ ((__nothrow__));
3312 extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3313 extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
3314 extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
3315 extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3316 extern int system (__const char *__command) ;
3317 extern char *realpath (__const char *__restrict __name,
3318          char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
3319 typedef int (*__compar_fn_t) (__const void *, __const void *);
3320 extern void *bsearch (__const void *__key, __const void *__base,
3321         size_t __nmemb, size_t __size, __compar_fn_t __compar)
3322      __attribute__ ((__nonnull__ (1, 2, 5))) ;
3323 extern void qsort (void *__base, size_t __nmemb, size_t __size,
3324      __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
3325 extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3326 extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3327 extern div_t div (int __numer, int __denom)
3328      __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3329 extern ldiv_t ldiv (long int __numer, long int __denom)
3330      __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3331 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
3332      int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3333 extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
3334      int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3335 extern char *gcvt (double __value, int __ndigit, char *__buf)
3336      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
3337 extern char *qecvt (long double __value, int __ndigit,
3338       int *__restrict __decpt, int *__restrict __sign)
3339      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3340 extern char *qfcvt (long double __value, int __ndigit,
3341       int *__restrict __decpt, int *__restrict __sign)
3342      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3343 extern char *qgcvt (long double __value, int __ndigit, char *__buf)
3344      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
3345 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
3346      int *__restrict __sign, char *__restrict __buf,
3347      size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3348 extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
3349      int *__restrict __sign, char *__restrict __buf,
3350      size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3351 extern int qecvt_r (long double __value, int __ndigit,
3352       int *__restrict __decpt, int *__restrict __sign,
3353       char *__restrict __buf, size_t __len)
3354      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3355 extern int qfcvt_r (long double __value, int __ndigit,
3356       int *__restrict __decpt, int *__restrict __sign,
3357       char *__restrict __buf, size_t __len)
3358      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3359 extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
3360 extern int mbtowc (wchar_t *__restrict __pwc,
3361      __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
3362 extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
3363 extern size_t mbstowcs (wchar_t *__restrict __pwcs,
3364    __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
3365 extern size_t wcstombs (char *__restrict __s,
3366    __const wchar_t *__restrict __pwcs, size_t __n)
3367      __attribute__ ((__nothrow__));
3368 extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3369 extern int posix_openpt (int __oflag) ;
3370 extern int getloadavg (double __loadavg[], int __nelem)
3371      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3372 typedef struct WImage WImage;
3373 typedef struct Rectangle Rectangle;
3374 typedef struct Point Point;
3375 struct Point {
3376  int x;
3377  int y;
3378 };
3379 struct Rectangle {
3380  Point min;
3381  Point max;
3382 };
3383 static Point ZP = { 0, 0 };
3384 static WImage* initwriteimage(FILE *f, Rectangle r, int ldepth);
3385 static int writeimageblock(WImage *w, unsigned char *data, int ndata);
3386 static int bytesperline(Rectangle, int);
3387 static int rgb2cmap(int, int, int);
3388 static long cmap2rgb(int);
3389 static gx_color_index inferno_rgb2cmap(gx_device *dev, const gx_color_value cv[]);
3390 static int inferno_cmap2rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
3391 static int inferno_open(gx_device *dev);
3392 static int inferno_close(gx_device *dev);
3393 static int inferno_print_page(gx_device_printer *, FILE *);
3394 typedef struct inferno_device_s {
3395  int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs;
3396  unsigned char skip[(((sizeof(gx_device_memory)) > (sizeof(gx_device_clist))) ? (sizeof(gx_device_memory)) : (sizeof(gx_device_clist))) - sizeof(gx_device) + sizeof(double) ]; gx_printer_device_procs printer_procs; gdev_prn_space_params space_params; char fname[260]; bool OpenOutputFile; bool ReopenPerPage; bool page_uses_transparency; bool Duplex; int Duplex_set; bool file_is_new; FILE *file; long buffer_space; unsigned char *buf; gs_memory_t *buffer_memory; gs_memory_t *bandlist_memory; int (*free_up_bandlist_memory)(gx_device *dev, bool flush_current); gx_page_queue_t *page_queue; bool is_async_renderer; gx_device_printer *async_renderer; unsigned int clist_disable_mask; int num_render_threads_requested; gx_device_procs orig_procs;
3397  int ldepth;
3398  int lastldepth;
3399  int color, gray;
3400  int cmapcall;
3401  int nbits;
3402 } inferno_device;
3403 static const gx_device_procs inferno_procs =
3404  { inferno_open, ((void *)0), ((void *)0), gdev_prn_output_page, inferno_close, inferno_rgb2cmap, inferno_cmap2rgb, ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), gdev_prn_get_params, gdev_prn_put_params, ((void *)0), ((void *)0), ((void *)0), ((void *)0), gx_page_device_get_page_device, ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0) };
3405 inferno_device gs_inferno_device =
3406 { sizeof(gx_device_printer), &inferno_procs, "inferno", 0 , &st_device_printer, 0 , 0 , { 0 } , 0 , 0 , 0, {3 , 3 , ( (3) >= 4 ? GX_CINFO_POLARITY_SUBTRACTIVE : GX_CINFO_POLARITY_ADDITIVE ) , 16 , ((3) == 3 ? 0xff : (3) - 1) , 255 , 255 , 0 , 0 , { 1, 1 } , GX_CINFO_UNKNOWN_SEP_LIN , { 0 } , { 0 } , { 0 } , ( (3) == 1 ? "DeviceGray" : ((3) == 3 ? "DeviceRGB" : "DeviceCMYK") ) , GX_CINFO_OPMODE_UNKNOWN , 0 }, { ((gx_color_index)(~0)), ((gx_color_index)(~0)) }, (int)((float)(85) * (100) / 10 + 0.5), (int)((float)(110) * (100) / 10 + 0.5), 0 , { (float)(((((int)((float)(85) * (100) / 10 + 0.5)) * 72.0 + 0.5) - 0.5) / (100)) , (float)(((((int)((float)(110) * (100) / 10 + 0.5)) * 72.0 + 0.5) - 0.5) / (100)) }, { 0, 0, 0, 0 } , 0 , { 100, 100 } , { 100, 100 }, {(float)(-(0) * (100)), (float)(-(0) * (100))}, {(float)((0) * 72.0), (float)((0) * 72.0), (float)((0) * 72.0), (float)((0) * 72.0)}, 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , {((bool)0)} , { gx_default_install, gx_default_begin_page, gx_default_end_page }, { 0 }, { 0 }, { inferno_print_page, gx_default_print_page_copies, { gx_default_create_buf_device, gx_default_size_buf_device, gx_default_setup_buf_device, gx_default_destroy_buf_device }, gx_default_get_space_params, gx_default_start_render_thread, gx_default_open_render_device, gx_default_close_render_device, gx_default_buffer_page }, { 10000000L, 4000000L, { 0, 0, 0 }, 0 , BandingAuto }, { 0 }, 0 , 0 , 0 , 0 , -1, 0 , 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, { 0 }
3407 };
3408 static gx_color_index
3409 inferno_rgb2cmap(gx_device *dev, const gx_color_value cv[]) {
3410  int shift;
3411  inferno_device *bdev = (inferno_device*) dev;
3412  int nbits = bdev->nbits;
3413  int mask = (1<<nbits)-1;
3414  gx_color_value red, green, blue;
3415  red = cv[0]; green = cv[1]; blue = cv[2];
3416  if((sizeof(gx_color_value) * 8) > nbits) {
3417   shift = (sizeof(gx_color_value) * 8) - nbits;
3418   red >>= shift;
3419   green >>= shift;
3420   blue >>= shift;
3421  } else if((sizeof(gx_color_value) * 8) < nbits) {
3422   shift = nbits - (sizeof(gx_color_value) * 8);
3423   red <<= shift;
3424   green <<= shift;
3425   blue <<= shift;
3426  }
3427  red &= mask;
3428  green &= mask;
3429  blue &= mask;
3430  if(red == green && green == blue && red != 0 && red != mask) {
3431   if(red == 5 || red == 10) {
3432    if(bdev->ldepth < 1)
3433     bdev->ldepth = 1;
3434   } else {
3435    if(bdev->ldepth < 2)
3436     bdev->ldepth = 2;
3437   }
3438  } else
3439   bdev->ldepth = 3;
3440  bdev->cmapcall = 1;
3441  return ((((blue<<4)|green)<<4)|red);
3442 }