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 }