public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: maciej@imsa.edu To: gcc-gnats@gcc.gnu.org Subject: optimization/4133: heavy optimization and -march=pentium leads to ICE Date: Sun, 26 Aug 2001 21:56:00 -0000 [thread overview] Message-ID: <200108270445.f7R4j2O07008@apathy.killer-robot.net> (raw) >Number: 4133 >Category: optimization >Synopsis: heavy optimization and -march=pentium leads to ICE >Confidential: no >Severity: serious >Priority: low >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Sun Aug 26 21:56:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Maciej >Release: 3.0 >Organization: >Environment: System: Linux apathy 2.4.9 #6 Fri Aug 24 00:57:59 CDT 2001 i586 unknown Architecture: i586 Pentium 200MMX, Linux 2.4.9, glibc-2.2.3 host: i586-pc-linux-gnu build: i586-pc-linux-gnu target: i586-pc-linux-gnu configured with: ./configure --prefix=/usr/opt/packages/gcc-3.0 : (reconfigured) ./configure --prefix=/usr/opt/packages/gcc-3.0 >Description: Setting -O3 produces an ICE. Full text: >How-To-Repeat: Command line: gcc -DHAVE_CONFIG_H -I. -I. -I/usr/opt -O3 -I/usr/opt/include -I./term -I./term -c term.c Full preprocessed text included at bottom. >Fix: Turn optimization down. # 2 "term.c" static char *RCSid = "$Id: term.c,v 1.19.2.3 1999/10/01 10:37:23 lhecking Exp $"; # 77 "term.c" # 1 "plot.h" 1 # 43 "plot.h" # 1 "config.h" 1 # 44 "plot.h" 2 # 1 "ansichek.h" 1 # 47 "plot.h" 2 # 1 "stdfn.h" 1 # 48 "stdfn.h" # 1 "/usr/include/ctype.h" 1 3 # 26 "/usr/include/ctype.h" 3 # 1 "/usr/include/features.h" 1 3 # 283 "/usr/include/features.h" 3 # 1 "/usr/include/sys/cdefs.h" 1 3 # 284 "/usr/include/features.h" 2 3 # 311 "/usr/include/features.h" 3 # 1 "/usr/include/gnu/stubs.h" 1 3 # 312 "/usr/include/features.h" 2 3 # 27 "/usr/include/ctype.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 26 "/usr/include/bits/types.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/bits/types.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 199 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 3 typedef unsigned int size_t; # 30 "/usr/include/bits/types.h" 2 3 typedef unsigned char __u_char; typedef unsigned short __u_short; typedef unsigned int __u_int; typedef unsigned long __u_long; __extension__ typedef unsigned long long int __u_quad_t; __extension__ typedef long long int __quad_t; # 49 "/usr/include/bits/types.h" 3 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; typedef __quad_t *__qaddr_t; typedef __u_quad_t __dev_t; typedef __u_int __uid_t; typedef __u_int __gid_t; typedef __u_long __ino_t; typedef __u_int __mode_t; typedef __u_int __nlink_t; typedef long int __off_t; typedef __quad_t __loff_t; typedef int __pid_t; typedef int __ssize_t; typedef __u_long __rlim_t; typedef __u_quad_t __rlim64_t; typedef __u_int __id_t; typedef struct { int __val[2]; } __fsid_t; typedef int __daddr_t; typedef char *__caddr_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t; typedef long int __swblk_t; typedef long int __clock_t; typedef int __clockid_t; typedef int __timer_t; typedef int __key_t; typedef unsigned short int __ipc_pid_t; typedef long int __blksize_t; typedef long int __blkcnt_t; typedef __quad_t __blkcnt64_t; typedef __u_long __fsblkcnt_t; typedef __u_quad_t __fsblkcnt64_t; typedef __u_long __fsfilcnt_t; typedef __u_quad_t __fsfilcnt64_t; typedef __u_quad_t __ino64_t; typedef __loff_t __off64_t; typedef long int __t_scalar_t; typedef unsigned long int __t_uscalar_t; typedef int __intptr_t; typedef unsigned int __socklen_t; # 1 "/usr/include/bits/pthreadtypes.h" 1 3 # 23 "/usr/include/bits/pthreadtypes.h" 3 # 1 "/usr/include/bits/sched.h" 1 3 # 68 "/usr/include/bits/sched.h" 3 struct __sched_param { int __sched_priority; }; # 24 "/usr/include/bits/pthreadtypes.h" 2 3 struct _pthread_fastlock { long int __status; int __spinlock; }; typedef struct _pthread_descr_struct *_pthread_descr; typedef struct __pthread_attr_s { int __detachstate; int __schedpolicy; struct __sched_param __schedparam; int __inheritsched; int __scope; size_t __guardsize; int __stackaddr_set; void *__stackaddr; size_t __stacksize; } pthread_attr_t; typedef struct { struct _pthread_fastlock __c_lock; _pthread_descr __c_waiting; } pthread_cond_t; typedef struct { int __dummy; } pthread_condattr_t; typedef unsigned int pthread_key_t; typedef struct { int __m_reserved; int __m_count; _pthread_descr __m_owner; int __m_kind; struct _pthread_fastlock __m_lock; } pthread_mutex_t; typedef struct { int __mutexkind; } pthread_mutexattr_t; typedef int pthread_once_t; # 140 "/usr/include/bits/pthreadtypes.h" 3 typedef unsigned long int pthread_t; # 144 "/usr/include/bits/types.h" 2 3 # 28 "/usr/include/ctype.h" 2 3 # 40 "/usr/include/ctype.h" 3 # 1 "/usr/include/endian.h" 1 3 # 22 "/usr/include/endian.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/endian.h" 2 3 # 37 "/usr/include/endian.h" 3 # 1 "/usr/include/bits/endian.h" 1 3 # 38 "/usr/include/endian.h" 2 3 # 41 "/usr/include/ctype.h" 2 3 enum { _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) }; # 75 "/usr/include/ctype.h" 3 extern __const unsigned short int *__ctype_b; extern __const __int32_t *__ctype_tolower; extern __const __int32_t *__ctype_toupper; # 91 "/usr/include/ctype.h" 3 extern int isalnum (int) ; extern int isalpha (int) ; extern int iscntrl (int) ; extern int isdigit (int) ; extern int islower (int) ; extern int isgraph (int) ; extern int isprint (int) ; extern int ispunct (int) ; extern int isspace (int) ; extern int isupper (int) ; extern int isxdigit (int) ; extern int tolower (int __c) ; extern int toupper (int __c) ; extern int isascii (int __c) ; extern int toascii (int __c) ; extern int _toupper (int) ; extern int _tolower (int) ; # 168 "/usr/include/ctype.h" 3 extern __inline int tolower (int __c) { return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c; } extern __inline int toupper (int __c) { return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c; } # 49 "stdfn.h" 2 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 1 3 # 36 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 # 1 "/usr/include/features.h" 1 3 # 37 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 43 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 45 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 2 3 # 53 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 typedef struct _IO_FILE FILE; # 63 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 typedef struct _IO_FILE __FILE; # 73 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 # 1 "/usr/include/libio.h" 1 3 # 30 "/usr/include/libio.h" 3 # 1 "/usr/include/_G_config.h" 1 3 # 9 "/usr/include/_G_config.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 10 "/usr/include/_G_config.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 287 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 3 typedef long int wchar_t; # 312 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 3 typedef unsigned int wint_t; # 15 "/usr/include/_G_config.h" 2 3 # 24 "/usr/include/_G_config.h" 3 # 1 "/usr/include/wchar.h" 1 3 # 48 "/usr/include/wchar.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 49 "/usr/include/wchar.h" 2 3 # 1 "/usr/include/bits/wchar.h" 1 3 # 51 "/usr/include/wchar.h" 2 3 # 67 "/usr/include/wchar.h" 3 typedef struct { int __count; union { wint_t __wch; char __wchb[4]; } __value; } __mbstate_t; # 25 "/usr/include/_G_config.h" 2 3 typedef struct { __off_t __pos; __mbstate_t __state; } _G_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __state; } _G_fpos64_t; # 44 "/usr/include/_G_config.h" 3 # 1 "/usr/include/gconv.h" 1 3 # 26 "/usr/include/gconv.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/gconv.h" 2 3 # 1 "/usr/include/wchar.h" 1 3 # 48 "/usr/include/wchar.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 49 "/usr/include/wchar.h" 2 3 # 1 "/usr/include/bits/wchar.h" 1 3 # 51 "/usr/include/wchar.h" 2 3 # 29 "/usr/include/gconv.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 31 "/usr/include/gconv.h" 2 3 enum { __GCONV_OK = 0, __GCONV_NOCONV, __GCONV_NODB, __GCONV_NOMEM, __GCONV_EMPTY_INPUT, __GCONV_FULL_OUTPUT, __GCONV_ILLEGAL_INPUT, __GCONV_INCOMPLETE_INPUT, __GCONV_ILLEGAL_DESCRIPTOR, __GCONV_INTERNAL_ERROR }; enum { __GCONV_IS_LAST = 0x0001, __GCONV_IGNORE_ERRORS = 0x0002 }; struct __gconv_step; struct __gconv_step_data; struct __gconv_loaded_object; struct __gconv_trans_data; typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *, int, int); typedef int (*__gconv_init_fct) (struct __gconv_step *); typedef void (*__gconv_end_fct) (struct __gconv_step *); typedef int (*__gconv_trans_fct) (struct __gconv_step *, struct __gconv_step_data *, void *, __const unsigned char *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *); typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, __const unsigned char *, unsigned char *, unsigned char *); typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, size_t *); typedef int (*__gconv_trans_init_fct) (void **, const char *); typedef void (*__gconv_trans_end_fct) (void *); struct __gconv_trans_data { __gconv_trans_fct __trans_fct; __gconv_trans_context_fct __trans_context_fct; __gconv_trans_end_fct __trans_end_fct; void *__data; struct __gconv_trans_data *__next; }; struct __gconv_step { struct __gconv_loaded_object *__shlib_handle; __const char *__modname; int __counter; char *__from_name; char *__to_name; __gconv_fct __fct; __gconv_init_fct __init_fct; __gconv_end_fct __end_fct; int __min_needed_from; int __max_needed_from; int __min_needed_to; int __max_needed_to; int __stateful; void *__data; }; struct __gconv_step_data { unsigned char *__outbuf; unsigned char *__outbufend; int __flags; int __invocation_counter; int __internal_use; __mbstate_t *__statep; __mbstate_t __state; struct __gconv_trans_data *__trans; }; typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; __extension__ struct __gconv_step_data __data []; } *__gconv_t; # 45 "/usr/include/_G_config.h" 2 3 typedef union { struct __gconv_info __cd; struct { struct __gconv_info __cd; struct __gconv_step_data __data; } __combined; } _G_iconv_t; typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); # 31 "/usr/include/libio.h" 2 3 # 51 "/usr/include/libio.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdarg.h" 1 3 # 43 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdarg.h" 3 typedef __builtin_va_list __gnuc_va_list; # 52 "/usr/include/libio.h" 2 3 # 158 "/usr/include/libio.h" 3 struct _IO_jump_t; struct _IO_FILE; # 168 "/usr/include/libio.h" 3 typedef void _IO_lock_t; struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; int _pos; # 191 "/usr/include/libio.h" 3 }; enum __codecvt_result { __codecvt_ok, __codecvt_partial, __codecvt_error, __codecvt_noconv }; # 259 "/usr/include/libio.h" 3 struct _IO_FILE { int _flags; char* _IO_read_ptr; char* _IO_read_end; char* _IO_read_base; char* _IO_write_base; char* _IO_write_ptr; char* _IO_write_end; char* _IO_buf_base; char* _IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _blksize; __off_t _old_offset; unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock; # 303 "/usr/include/libio.h" 3 __off64_t _offset; void *__pad1; void *__pad2; int _mode; char _unused2[15 * sizeof (int) - 2 * sizeof (void *)]; }; typedef struct _IO_FILE _IO_FILE; struct _IO_FILE_plus; extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; # 342 "/usr/include/libio.h" 3 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, size_t __n); typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); typedef int __io_close_fn (void *__cookie); # 394 "/usr/include/libio.h" 3 extern int __underflow (_IO_FILE *) ; extern int __uflow (_IO_FILE *) ; extern int __overflow (_IO_FILE *, int) ; extern wint_t __wunderflow (_IO_FILE *) ; extern wint_t __wuflow (_IO_FILE *) ; extern wint_t __woverflow (_IO_FILE *, wint_t) ; # 424 "/usr/include/libio.h" 3 extern int _IO_getc (_IO_FILE *__fp) ; extern int _IO_putc (int __c, _IO_FILE *__fp) ; extern int _IO_feof (_IO_FILE *__fp) ; extern int _IO_ferror (_IO_FILE *__fp) ; extern int _IO_peekc_locked (_IO_FILE *__fp) ; extern void _IO_flockfile (_IO_FILE *) ; extern void _IO_funlockfile (_IO_FILE *) ; extern int _IO_ftrylockfile (_IO_FILE *) ; # 454 "/usr/include/libio.h" 3 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict) ; extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gnuc_va_list) ; extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ; extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ; extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ; extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ; extern void _IO_free_backup_area (_IO_FILE *) ; # 74 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 2 3 # 88 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 typedef _G_fpos_t fpos_t; # 137 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 # 1 "/usr/include/bits/stdio_lim.h" 1 3 # 138 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 2 3 extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; extern int remove (__const char *__filename) ; extern int rename (__const char *__old, __const char *__new) ; extern FILE *tmpfile (void) ; # 169 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern char *tmpnam (char *__s) ; extern char *tmpnam_r (char *__s) ; # 186 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern char *tempnam (__const char *__dir, __const char *__pfx) __attribute__ ((__malloc__)); extern int fclose (FILE *__stream) ; extern int fflush (FILE *__stream) ; extern int fflush_unlocked (FILE *__stream) ; # 209 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) ; extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) ; # 239 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern FILE *fdopen (int __fd, __const char *__modes) ; # 262 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ; extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ; extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ; extern void setlinebuf (FILE *__stream) ; extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) ; extern int printf (__const char *__restrict __format, ...) ; extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) ; extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) ; extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); # 333 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) ; extern int scanf (__const char *__restrict __format, ...) ; extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ; # 359 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern int fgetc (FILE *__stream) ; extern int getc (FILE *__stream) ; extern int getchar (void) ; extern int getc_unlocked (FILE *__stream) ; extern int getchar_unlocked (void) ; extern int fgetc_unlocked (FILE *__stream) ; extern int fputc (int __c, FILE *__stream) ; extern int putc (int __c, FILE *__stream) ; extern int putchar (int __c) ; extern int fputc_unlocked (int __c, FILE *__stream) ; extern int putc_unlocked (int __c, FILE *__stream) ; extern int putchar_unlocked (int __c) ; extern int getw (FILE *__stream) ; extern int putw (int __w, FILE *__stream) ; extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) ; # 425 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern char *gets (char *__s) ; # 449 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) ; # 459 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern int puts (__const char *__s) ; extern int ungetc (int __c, FILE *__stream) ; extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) ; extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern int fseek (FILE *__stream, long int __off, int __whence) ; extern long int ftell (FILE *__stream) ; extern void rewind (FILE *__stream) ; # 503 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) ; extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ; # 539 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void clearerr_unlocked (FILE *__stream) ; extern int feof_unlocked (FILE *__stream) ; extern int ferror_unlocked (FILE *__stream) ; extern void perror (__const char *__s) ; extern int sys_nerr; extern __const char *__const sys_errlist[]; # 570 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern int fileno (FILE *__stream) ; extern int fileno_unlocked (FILE *__stream) ; extern FILE *popen (__const char *__command, __const char *__modes) ; extern int pclose (FILE *__stream) ; extern char *ctermid (char *__s) ; # 617 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 extern void flockfile (FILE *__stream) ; extern int ftrylockfile (FILE *__stream) ; extern void funlockfile (FILE *__stream) ; # 638 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 3 # 1 "/usr/include/bits/stdio.h" 1 3 # 39 "/usr/include/bits/stdio.h" 3 extern __inline int vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } extern __inline int getchar (void) { return _IO_getc (stdin); } extern __inline int getc_unlocked (FILE *__fp) { return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); } extern __inline int getchar_unlocked (void) { return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); } extern __inline int putchar (int __c) { return _IO_putc (__c, stdout); } extern __inline int fputc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline int putc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline int putchar_unlocked (int __c) { return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); } # 117 "/usr/include/bits/stdio.h" 3 extern __inline int feof_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x10) != 0); } extern __inline int ferror_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x20) != 0); } # 639 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stdio.h" 2 3 # 50 "stdfn.h" 2 # 1 "syscfg.h" 1 # 46 "syscfg.h" # 1 "config.h" 1 # 47 "syscfg.h" 2 # 1 "ansichek.h" 1 # 50 "syscfg.h" 2 # 52 "stdfn.h" 2 # 1 "/usr/include/string.h" 1 3 # 26 "/usr/include/string.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/string.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 34 "/usr/include/string.h" 2 3 extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern void *memmove (void *__dest, __const void *__src, size_t __n) ; extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) ; extern void *memset (void *__s, int __c, size_t __n) ; extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern void *memchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)); # 77 "/usr/include/string.h" 3 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *strcat (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern int strcmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); extern int strcoll (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; # 120 "/usr/include/string.h" 3 extern char *strdup (__const char *__s) __attribute__ ((__malloc__)); # 155 "/usr/include/string.h" 3 extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__)); # 167 "/usr/include/string.h" 3 extern size_t strcspn (__const char *__s, __const char *__reject) __attribute__ ((__pure__)); extern size_t strspn (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strpbrk (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strstr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)); # 187 "/usr/include/string.h" 3 extern char *strtok (char *__restrict __s, __const char *__restrict __delim) ; extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; # 218 "/usr/include/string.h" 3 extern size_t strlen (__const char *__s) __attribute__ ((__pure__)); # 229 "/usr/include/string.h" 3 extern char *strerror (int __errnum) ; extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern void __bzero (void *__s, size_t __n) ; extern void bcopy (__const void *__src, void *__dest, size_t __n) ; extern void bzero (void *__s, size_t __n) ; extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern char *index (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__)); extern int ffs (int __i) __attribute__ ((__const__)); # 272 "/usr/include/string.h" 3 extern int strcasecmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); # 294 "/usr/include/string.h" 3 extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) ; # 356 "/usr/include/string.h" 3 # 1 "/usr/include/bits/string.h" 1 3 # 357 "/usr/include/string.h" 2 3 # 1 "/usr/include/bits/string2.h" 1 3 # 52 "/usr/include/bits/string2.h" 3 # 1 "/usr/include/endian.h" 1 3 # 53 "/usr/include/bits/string2.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 54 "/usr/include/bits/string2.h" 2 3 # 371 "/usr/include/bits/string2.h" 3 extern void *__rawmemchr (const void *__s, int __c); # 395 "/usr/include/bits/string2.h" 3 extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t, __uint32_t, __uint32_t, size_t); extern __inline char * __strcpy_small (char *__dest, __uint16_t __src0_2, __uint16_t __src4_2, __uint32_t __src0_4, __uint32_t __src4_4, size_t __srclen) { union { __uint32_t __ui; __uint16_t __usi; unsigned char __uc; } *__u = (void *) __dest; switch ((unsigned int) __srclen) { case 1: __u->__uc = '\0'; break; case 2: __u->__usi = __src0_2; break; case 3: __u->__usi = __src0_2; __u = __extension__ ((void *) __u + 2); __u->__uc = '\0'; break; case 4: __u->__ui = __src0_4; break; case 5: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__uc = '\0'; break; case 6: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__usi = __src4_2; break; case 7: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__usi = __src4_2; __u = __extension__ ((void *) __u + 2); __u->__uc = '\0'; break; case 8: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__ui = __src4_4; break; } return __dest; } # 873 "/usr/include/bits/string2.h" 3 extern __inline size_t __strcspn_c1 (__const char *__s, char __reject); extern __inline size_t __strcspn_c1 (__const char *__s, char __reject) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject) ++__result; return __result; } extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1, char __reject2); extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1, char __reject2) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2) ++__result; return __result; } extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1, char __reject2, char __reject3); extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1, char __reject2, char __reject3) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2 && __s[__result] != __reject3) ++__result; return __result; } # 928 "/usr/include/bits/string2.h" 3 extern __inline size_t __strspn_c1 (__const char *__s, char __accept); extern __inline size_t __strspn_c1 (__const char *__s, char __accept) { register size_t __result = 0; while (__s[__result] == __accept) ++__result; return __result; } extern __inline size_t __strspn_c2 (__const char *__s, char __accept1, char __accept2); extern __inline size_t __strspn_c2 (__const char *__s, char __accept1, char __accept2) { register size_t __result = 0; while (__s[__result] == __accept1 || __s[__result] == __accept2) ++__result; return __result; } extern __inline size_t __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3); extern __inline size_t __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3) { register size_t __result = 0; while (__s[__result] == __accept1 || __s[__result] == __accept2 || __s[__result] == __accept3) ++__result; return __result; } # 983 "/usr/include/bits/string2.h" 3 extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1, int __accept2); extern __inline char * __strpbrk_c2 (__const char *__s, int __accept1, int __accept2) { while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) ++__s; return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s; } extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1, int __accept2, int __accept3); extern __inline char * __strpbrk_c3 (__const char *__s, int __accept1, int __accept2, int __accept3) { while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 && *__s != __accept3) ++__s; return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s; } # 1045 "/usr/include/bits/string2.h" 3 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp); extern __inline char * __strtok_r_1c (char *__s, char __sep, char **__nextp) { char *__result; if (__s == ((void *)0)) __s = *__nextp; while (*__s == __sep) ++__s; if (*__s == '\0') __result = ((void *)0); else { __result = __s; while (*__s != '\0' && *__s != __sep) ++__s; if (*__s == '\0') *__nextp = __s; else { *__s = '\0'; *__nextp = __s + 1; } } return __result; } # 1095 "/usr/include/bits/string2.h" 3 extern __inline char *__strsep_1c (char **__s, char __reject); extern __inline char * __strsep_1c (char **__s, char __reject) { register char *__retval = *__s; if (__retval == ((void *)0)) return *__s = ((void *)0); if (*__retval == __reject) *(*__s)++ = '\0'; else if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0)) *(*__s)++ = '\0'; else *__s = ((void *)0); return __retval; } extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2); extern __inline char * __strsep_2c (char **__s, char __reject1, char __reject2) { register char *__retval = *__s; if (__retval == ((void *)0)) return *__s = ((void *)0); if (*__retval == __reject1 || *__retval == __reject2) *(*__s)++ = '\0'; else { register char *__cp = __retval; while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2) ++__cp; if (*__cp != '\0') { *__s = __cp; *(*__s)++ = '\0'; } else *__s = ((void *)0); } return __retval; } extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3); extern __inline char * __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3) { register char *__retval = *__s; if (__retval == ((void *)0)) return *__s = ((void *)0); if (*__retval == __reject1 || *__retval == __reject2 || *__retval == __reject3) *(*__s)++ = '\0'; else { register char *__cp = __retval; while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2 && *__cp != __reject3) ++__cp; if (*__cp != '\0') { *__s = __cp; *(*__s)++ = '\0'; } else *__s = ((void *)0); } return __retval; } extern __inline char *__strsep_g (char **__s, __const char *__reject); extern __inline char * __strsep_g (char **__s, __const char *__reject) { register char *__retval = *__s; if (__retval == ((void *)0)) return ((void *)0); if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void) (__retval), ((void *)0)) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0)) *(*__s)++ = '\0'; return __retval; } # 1188 "/usr/include/bits/string2.h" 3 # 1 "/usr/include/stdlib.h" 1 3 # 25 "/usr/include/stdlib.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/stdlib.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 34 "/usr/include/stdlib.h" 2 3 # 528 "/usr/include/stdlib.h" 3 extern void *malloc (size_t __size) __attribute__ ((__malloc__)); extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__malloc__)); # 1189 "/usr/include/bits/string2.h" 2 3 extern char *__strdup (__const char *__string) __attribute__ ((__malloc__)); # 1212 "/usr/include/bits/string2.h" 3 extern char *__strndup (__const char *__string, size_t __n) __attribute__ ((__malloc__)); # 360 "/usr/include/string.h" 2 3 # 55 "stdfn.h" 2 # 98 "stdfn.h" # 1 "/usr/include/stdlib.h" 1 3 # 25 "/usr/include/stdlib.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/stdlib.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 34 "/usr/include/stdlib.h" 2 3 # 94 "/usr/include/stdlib.h" 3 typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; # 133 "/usr/include/stdlib.h" 3 extern size_t __ctype_get_mb_cur_max (void) ; extern double atof (__const char *__nptr) __attribute__ ((__pure__)); extern int atoi (__const char *__nptr) __attribute__ ((__pure__)); extern long int atol (__const char *__nptr) __attribute__ ((__pure__)); __extension__ extern long long int atoll (__const char *__nptr) __attribute__ ((__pure__)); extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ; # 163 "/usr/include/stdlib.h" 3 extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; # 250 "/usr/include/stdlib.h" 3 extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long double __strtold_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) ; # 294 "/usr/include/stdlib.h" 3 extern __inline double strtod (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtod_internal (__nptr, __endptr, 0); } extern __inline long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoul_internal (__nptr, __endptr, __base, 0); } # 326 "/usr/include/stdlib.h" 3 __extension__ extern __inline long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } extern __inline double atof (__const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } extern __inline int atoi (__const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline long int atol (__const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline long long int atoll (__const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } # 385 "/usr/include/stdlib.h" 3 extern char *l64a (long int __n) ; extern long int a64l (__const char *__s) __attribute__ ((__pure__)); # 1 "/usr/include/sys/types.h" 1 3 # 26 "/usr/include/sys/types.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 31 "/usr/include/sys/types.h" 2 3 typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; typedef __loff_t loff_t; typedef __ino_t ino_t; # 58 "/usr/include/sys/types.h" 3 typedef __dev_t dev_t; typedef __gid_t gid_t; typedef __mode_t mode_t; typedef __nlink_t nlink_t; typedef __uid_t uid_t; typedef __off_t off_t; # 96 "/usr/include/sys/types.h" 3 typedef __pid_t pid_t; typedef __id_t id_t; typedef __ssize_t ssize_t; typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; typedef __key_t key_t; # 126 "/usr/include/sys/types.h" 3 # 1 "/usr/include/time.h" 1 3 # 67 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 68 "/usr/include/time.h" 2 3 typedef __time_t time_t; # 79 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 80 "/usr/include/time.h" 2 3 typedef __clockid_t clockid_t; # 91 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 92 "/usr/include/time.h" 2 3 typedef __timer_t timer_t; # 127 "/usr/include/sys/types.h" 2 3 # 140 "/usr/include/sys/types.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 141 "/usr/include/sys/types.h" 2 3 typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; # 184 "/usr/include/sys/types.h" 3 typedef int int8_t __attribute__ ((__mode__ (__QI__))); typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); typedef int int64_t __attribute__ ((__mode__ (__DI__))); typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); typedef int register_t __attribute__ ((__mode__ (__word__))); # 206 "/usr/include/sys/types.h" 3 # 1 "/usr/include/endian.h" 1 3 # 207 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/select.h" 1 3 # 25 "/usr/include/sys/select.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 29 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/select.h" 1 3 # 32 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/sigset.h" 1 3 # 23 "/usr/include/bits/sigset.h" 3 typedef int __sig_atomic_t; typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; # 35 "/usr/include/sys/select.h" 2 3 typedef __sigset_t sigset_t; # 1 "/usr/include/time.h" 1 3 # 106 "/usr/include/time.h" 3 struct timespec { long int tv_sec; long int tv_nsec; }; # 44 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/time.h" 1 3 # 63 "/usr/include/bits/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 64 "/usr/include/bits/time.h" 2 3 struct timeval { __time_t tv_sec; __suseconds_t tv_usec; }; # 46 "/usr/include/sys/select.h" 2 3 typedef long int __fd_mask; typedef struct { __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))]; } fd_set; typedef __fd_mask fd_mask; # 96 "/usr/include/sys/select.h" 3 extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) ; # 210 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/sysmacros.h" 1 3 # 213 "/usr/include/sys/types.h" 2 3 # 224 "/usr/include/sys/types.h" 3 typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; # 392 "/usr/include/stdlib.h" 2 3 extern long int random (void) ; extern void srandom (unsigned int __seed) ; extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) ; extern char *setstate (char *__statebuf) ; struct random_data { int32_t *fptr; int32_t *rptr; int32_t *state; int rand_type; int rand_deg; int rand_sep; int32_t *end_ptr; }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) ; extern int srandom_r (unsigned int __seed, struct random_data *__buf) ; extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ; extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) ; extern int rand (void) ; extern void srand (unsigned int __seed) ; extern int rand_r (unsigned int *__seed) ; extern double drand48 (void) ; extern double erand48 (unsigned short int __xsubi[3]) ; extern long int lrand48 (void) ; extern long int nrand48 (unsigned short int __xsubi[3]) ; extern long int mrand48 (void) ; extern long int jrand48 (unsigned short int __xsubi[3]) ; extern void srand48 (long int __seedval) ; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ; extern void lcong48 (unsigned short int __param[7]) ; struct drand48_data { unsigned short int __x[3]; unsigned short int __old_x[3]; unsigned short int __c; unsigned short int __init; unsigned long long int __a; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ; extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ; extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ; # 537 "/usr/include/stdlib.h" 3 extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__)); extern void free (void *__ptr) ; extern void cfree (void *__ptr) ; # 1 "/usr/include/alloca.h" 1 3 # 22 "/usr/include/alloca.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/alloca.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 26 "/usr/include/alloca.h" 2 3 extern void *alloca (size_t __size) ; # 548 "/usr/include/stdlib.h" 2 3 extern void *valloc (size_t __size) __attribute__ ((__malloc__)); # 562 "/usr/include/stdlib.h" 3 extern void abort (void) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) ; extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) ; extern void exit (int __status) __attribute__ ((__noreturn__)); # 588 "/usr/include/stdlib.h" 3 extern char *getenv (__const char *__name) ; extern char *__secure_getenv (__const char *__name) ; extern int putenv (char *__string) ; extern int setenv (__const char *__name, __const char *__value, int __replace) ; extern int unsetenv (__const char *__name) ; extern int clearenv (void) ; # 624 "/usr/include/stdlib.h" 3 extern char *mktemp (char *__template) ; extern int mkstemp (char *__template) ; # 651 "/usr/include/stdlib.h" 3 extern char *mkdtemp (char *__template) ; extern int system (__const char *__command) ; # 673 "/usr/include/stdlib.h" 3 extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ; typedef int (*__compar_fn_t) (__const void *, __const void *); # 690 "/usr/include/stdlib.h" 3 extern void *bsearch (__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern int abs (int __x) __attribute__ ((__const__)); extern long int labs (long int __x) __attribute__ ((__const__)); # 711 "/usr/include/stdlib.h" 3 extern div_t div (int __numer, int __denom) __attribute__ ((__const__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__const__)); # 729 "/usr/include/stdlib.h" 3 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *gcvt (double __value, int __ndigit, char *__buf) ; extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qgcvt (long double __value, int __ndigit, char *__buf) ; extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int mblen (__const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ; extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ; extern int rpmatch (__const char *__response) ; # 859 "/usr/include/stdlib.h" 3 extern int getloadavg (double __loadavg[], int __nelem) ; # 99 "stdfn.h" 2 # 125 "stdfn.h" # 1 "/usr/include/unistd.h" 1 3 # 26 "/usr/include/unistd.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/unistd.h" 2 3 # 175 "/usr/include/unistd.h" 3 # 1 "/usr/include/bits/posix_opt.h" 1 3 # 176 "/usr/include/unistd.h" 2 3 # 190 "/usr/include/unistd.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 191 "/usr/include/unistd.h" 2 3 # 199 "/usr/include/unistd.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 200 "/usr/include/unistd.h" 2 3 # 240 "/usr/include/unistd.h" 3 typedef __intptr_t intptr_t; typedef __socklen_t socklen_t; # 260 "/usr/include/unistd.h" 3 extern int access (__const char *__name, int __type) ; # 290 "/usr/include/unistd.h" 3 extern __off_t lseek (int __fd, __off_t __offset, int __whence) ; # 306 "/usr/include/unistd.h" 3 extern int close (int __fd) ; extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ; extern ssize_t write (int __fd, __const void *__buf, size_t __n) ; # 353 "/usr/include/unistd.h" 3 extern int pipe (int __pipedes[2]) ; # 362 "/usr/include/unistd.h" 3 extern unsigned int alarm (unsigned int __seconds) ; # 371 "/usr/include/unistd.h" 3 extern unsigned int sleep (unsigned int __seconds) ; extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) ; extern int usleep (__useconds_t __useconds) ; extern int pause (void) ; extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ; extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int chdir (__const char *__path) ; extern int fchdir (int __fd) ; # 423 "/usr/include/unistd.h" 3 extern char *getcwd (char *__buf, size_t __size) ; # 436 "/usr/include/unistd.h" 3 extern char *getwd (char *__buf) ; extern int dup (int __fd) ; extern int dup2 (int __fd, int __fd2) ; extern char **__environ; extern int execve (__const char *__path, char *__const __argv[], char *__const __envp[]) ; # 467 "/usr/include/unistd.h" 3 extern int execv (__const char *__path, char *__const __argv[]) ; extern int execle (__const char *__path, __const char *__arg, ...) ; extern int execl (__const char *__path, __const char *__arg, ...) ; extern int execvp (__const char *__file, char *__const __argv[]) ; extern int execlp (__const char *__file, __const char *__arg, ...) ; extern int nice (int __inc) ; extern void _exit (int __status) __attribute__ ((__noreturn__)); # 1 "/usr/include/bits/confname.h" 1 3 # 25 "/usr/include/bits/confname.h" 3 enum { _PC_LINK_MAX, _PC_MAX_CANON, _PC_MAX_INPUT, _PC_NAME_MAX, _PC_PATH_MAX, _PC_PIPE_BUF, _PC_CHOWN_RESTRICTED, _PC_NO_TRUNC, _PC_VDISABLE, _PC_SYNC_IO, _PC_ASYNC_IO, _PC_PRIO_IO, _PC_SOCK_MAXBUF, _PC_FILESIZEBITS, _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE, _PC_REC_MIN_XFER_SIZE, _PC_REC_XFER_ALIGN, _PC_ALLOC_SIZE_MIN, _PC_SYMLINK_MAX }; enum { _SC_ARG_MAX, _SC_CHILD_MAX, _SC_CLK_TCK, _SC_NGROUPS_MAX, _SC_OPEN_MAX, _SC_STREAM_MAX, _SC_TZNAME_MAX, _SC_JOB_CONTROL, _SC_SAVED_IDS, _SC_REALTIME_SIGNALS, _SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO, _SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES, _SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS, _SC_AIO_LISTIO_MAX, _SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX, _SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_VERSION, _SC_PAGESIZE, _SC_RTSIG_MAX, _SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, _SC_TIMER_MAX, _SC_BC_BASE_MAX, _SC_BC_DIM_MAX, _SC_BC_SCALE_MAX, _SC_BC_STRING_MAX, _SC_COLL_WEIGHTS_MAX, _SC_EQUIV_CLASS_MAX, _SC_EXPR_NEST_MAX, _SC_LINE_MAX, _SC_RE_DUP_MAX, _SC_CHARCLASS_NAME_MAX, _SC_2_VERSION, _SC_2_C_BIND, _SC_2_C_DEV, _SC_2_FORT_DEV, _SC_2_FORT_RUN, _SC_2_SW_DEV, _SC_2_LOCALEDEF, _SC_PII, _SC_PII_XTI, _SC_PII_SOCKET, _SC_PII_INTERNET, _SC_PII_OSI, _SC_POLL, _SC_SELECT, _SC_UIO_MAXIOV, _SC_IOV_MAX = _SC_UIO_MAXIOV, _SC_PII_INTERNET_STREAM, _SC_PII_INTERNET_DGRAM, _SC_PII_OSI_COTS, _SC_PII_OSI_CLTS, _SC_PII_OSI_M, _SC_T_IOV_MAX, _SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_GETGR_R_SIZE_MAX, _SC_GETPW_R_SIZE_MAX, _SC_LOGIN_NAME_MAX, _SC_TTY_NAME_MAX, _SC_THREAD_DESTRUCTOR_ITERATIONS, _SC_THREAD_KEYS_MAX, _SC_THREAD_STACK_MIN, _SC_THREAD_THREADS_MAX, _SC_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT, _SC_THREAD_PROCESS_SHARED, _SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES, _SC_ATEXIT_MAX, _SC_PASS_MAX, _SC_XOPEN_VERSION, _SC_XOPEN_XCU_VERSION, _SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N, _SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, _SC_2_UPE, _SC_XOPEN_XPG2, _SC_XOPEN_XPG3, _SC_XOPEN_XPG4, _SC_CHAR_BIT, _SC_CHAR_MAX, _SC_CHAR_MIN, _SC_INT_MAX, _SC_INT_MIN, _SC_LONG_BIT, _SC_WORD_BIT, _SC_MB_LEN_MAX, _SC_NZERO, _SC_SSIZE_MAX, _SC_SCHAR_MAX, _SC_SCHAR_MIN, _SC_SHRT_MAX, _SC_SHRT_MIN, _SC_UCHAR_MAX, _SC_UINT_MAX, _SC_ULONG_MAX, _SC_USHRT_MAX, _SC_NL_ARGMAX, _SC_NL_LANGMAX, _SC_NL_MSGMAX, _SC_NL_NMAX, _SC_NL_SETMAX, _SC_NL_TEXTMAX, _SC_XBS5_ILP32_OFF32, _SC_XBS5_ILP32_OFFBIG, _SC_XBS5_LP64_OFF64, _SC_XBS5_LPBIG_OFFBIG, _SC_XOPEN_LEGACY, _SC_XOPEN_REALTIME, _SC_XOPEN_REALTIME_THREADS, _SC_ADVISORY_INFO, _SC_BARRIERS, _SC_BASE, _SC_C_LANG_SUPPORT, _SC_C_LANG_SUPPORT_R, _SC_CLOCK_SELECTION, _SC_CPUTIME, _SC_THREAD_CPUTIME, _SC_DEVICE_IO, _SC_DEVICE_SPECIFIC, _SC_DEVICE_SPECIFIC_R, _SC_FD_MGMT, _SC_FIFO, _SC_PIPE, _SC_FILE_ATTRIBUTES, _SC_FILE_LOCKING, _SC_FILE_SYSTEM, _SC_MONOTONIC_CLOCK, _SC_MULTI_PROCESS, _SC_SINGLE_PROCESS, _SC_NETWORKING, _SC_READER_WRITER_LOCKS, _SC_SPIN_LOCKS, _SC_REGEXP, _SC_REGEX_VERSION, _SC_SHELL, _SC_SIGNALS, _SC_SPAWN, _SC_SPORADIC_SERVER, _SC_THREAD_SPORADIC_SERVER, _SC_SYSTEM_DATABASE, _SC_SYSTEM_DATABASE_R, _SC_TIMEOUTS, _SC_TYPED_MEMORY_OBJECTS, _SC_USER_GROUPS, _SC_USER_GROUPS_R, _SC_2_PBS, _SC_2_PBS_ACCOUNTING, _SC_2_PBS_LOCATE, _SC_2_PBS_MESSAGE, _SC_2_PBS_TRACK, _SC_SYMLOOP_MAX, _SC_STREAMS, _SC_2_PBS_CHECKPOINT, _SC_V6_ILP32_OFF32, _SC_V6_ILP32_OFFBIG, _SC_V6_LP64_OFF64, _SC_V6_LPBIG_OFFBIG, _SC_HOST_NAME_MAX, _SC_TRACE, _SC_TRACE_EVENT_FILTER, _SC_TRACE_INHERIT, _SC_TRACE_LOG }; enum { _CS_PATH, # 563 "/usr/include/bits/confname.h" 3 _CS_V6_WIDTH_RESTRICTED_ENVS }; # 501 "/usr/include/unistd.h" 2 3 extern long int pathconf (__const char *__path, int __name) ; extern long int fpathconf (int __fd, int __name) ; extern long int sysconf (int __name) __attribute__ ((__const__)); extern size_t confstr (int __name, char *__buf, size_t __len) ; extern __pid_t getpid (void) ; extern __pid_t getppid (void) ; extern __pid_t getpgrp (void) ; # 536 "/usr/include/unistd.h" 3 extern __pid_t __getpgid (__pid_t __pid) ; # 545 "/usr/include/unistd.h" 3 extern int setpgid (__pid_t __pid, __pid_t __pgid) ; # 562 "/usr/include/unistd.h" 3 extern int setpgrp (void) ; # 580 "/usr/include/unistd.h" 3 extern __pid_t setsid (void) ; extern __uid_t getuid (void) ; extern __uid_t geteuid (void) ; extern __gid_t getgid (void) ; extern __gid_t getegid (void) ; extern int getgroups (int __size, __gid_t __list[]) ; # 613 "/usr/include/unistd.h" 3 extern int setuid (__uid_t __uid) ; extern int setreuid (__uid_t __ruid, __uid_t __euid) ; extern int seteuid (__uid_t __uid) ; extern int setgid (__gid_t __gid) ; extern int setregid (__gid_t __rgid, __gid_t __egid) ; extern int setegid (__gid_t __gid) ; extern __pid_t fork (void) ; extern __pid_t vfork (void) ; extern char *ttyname (int __fd) ; extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ; extern int isatty (int __fd) ; extern int ttyslot (void) ; extern int link (__const char *__from, __const char *__to) ; extern int symlink (__const char *__from, __const char *__to) ; extern int readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) ; extern int unlink (__const char *__name) ; extern int rmdir (__const char *__path) ; extern __pid_t tcgetpgrp (int __fd) ; extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ; extern char *getlogin (void) ; # 717 "/usr/include/unistd.h" 3 extern int setlogin (__const char *__name) ; # 726 "/usr/include/unistd.h" 3 # 1 "/usr/include/getopt.h" 1 3 # 47 "/usr/include/getopt.h" 3 extern char *optarg; # 61 "/usr/include/getopt.h" 3 extern int optind; extern int opterr; extern int optopt; # 145 "/usr/include/getopt.h" 3 extern int getopt (int __argc, char *const *__argv, const char *__shortopts); # 727 "/usr/include/unistd.h" 2 3 extern int gethostname (char *__name, size_t __len) ; extern int sethostname (__const char *__name, size_t __len) ; extern int sethostid (long int __id) ; extern int getdomainname (char *__name, size_t __len) ; extern int setdomainname (__const char *__name, size_t __len) ; extern int vhangup (void) ; extern int revoke (__const char *__file) ; extern int profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) ; extern int acct (__const char *__name) ; extern char *getusershell (void) ; extern void endusershell (void) ; extern void setusershell (void) ; extern int daemon (int __nochdir, int __noclose) ; extern int chroot (__const char *__path) ; extern char *getpass (__const char *__prompt) ; extern int fsync (int __fd) ; extern long int gethostid (void) ; extern void sync (void) ; extern int getpagesize (void) __attribute__ ((__const__)); extern int truncate (__const char *__file, __off_t __length) ; # 841 "/usr/include/unistd.h" 3 extern int ftruncate (int __fd, __off_t __length) ; # 857 "/usr/include/unistd.h" 3 extern int getdtablesize (void) ; # 866 "/usr/include/unistd.h" 3 extern int brk (void *__addr) ; extern void *sbrk (intptr_t __delta) ; # 887 "/usr/include/unistd.h" 3 extern long int syscall (long int __sysno, ...) ; # 907 "/usr/include/unistd.h" 3 extern int lockf (int __fd, int __cmd, __off_t __len) ; # 938 "/usr/include/unistd.h" 3 extern int fdatasync (int __fildes) ; # 983 "/usr/include/unistd.h" 3 extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) ; # 126 "stdfn.h" 2 # 1 "/usr/include/errno.h" 1 3 # 29 "/usr/include/errno.h" 3 # 1 "/usr/include/features.h" 1 3 # 30 "/usr/include/errno.h" 2 3 # 1 "/usr/include/bits/errno.h" 1 3 # 25 "/usr/include/bits/errno.h" 3 # 1 "/usr/include/linux/errno.h" 1 3 # 1 "/usr/include/asm/errno.h" 1 3 # 5 "/usr/include/linux/errno.h" 2 3 # 26 "/usr/include/bits/errno.h" 2 3 # 36 "/usr/include/bits/errno.h" 3 extern int errno; extern int *__errno_location (void) __attribute__ ((__const__)); # 37 "/usr/include/errno.h" 2 3 # 134 "stdfn.h" 2 # 1 "/usr/include/sys/types.h" 1 3 # 141 "stdfn.h" 2 # 1 "/usr/include/sys/stat.h" 1 3 # 26 "/usr/include/sys/stat.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/sys/stat.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 29 "/usr/include/sys/stat.h" 2 3 # 98 "/usr/include/sys/stat.h" 3 # 1 "/usr/include/bits/stat.h" 1 3 # 36 "/usr/include/bits/stat.h" 3 struct stat { __dev_t st_dev; unsigned short int __pad1; __ino_t st_ino; __mode_t st_mode; __nlink_t st_nlink; __uid_t st_uid; __gid_t st_gid; __dev_t st_rdev; unsigned short int __pad2; __off_t st_size; __blksize_t st_blksize; __blkcnt_t st_blocks; __time_t st_atime; unsigned long int __unused1; __time_t st_mtime; unsigned long int __unused2; __time_t st_ctime; unsigned long int __unused3; unsigned long int __unused4; unsigned long int __unused5; }; # 99 "/usr/include/sys/stat.h" 2 3 # 200 "/usr/include/sys/stat.h" 3 extern int stat (__const char *__restrict __file, struct stat *__restrict __buf) ; extern int fstat (int __fd, struct stat *__buf) ; # 228 "/usr/include/sys/stat.h" 3 extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) ; # 249 "/usr/include/sys/stat.h" 3 extern int chmod (__const char *__file, __mode_t __mode) ; extern int fchmod (int __fd, __mode_t __mode) ; extern __mode_t umask (__mode_t __mask) ; # 268 "/usr/include/sys/stat.h" 3 extern int mkdir (__const char *__path, __mode_t __mode) ; extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) ; extern int mkfifo (__const char *__path, __mode_t __mode) ; # 306 "/usr/include/sys/stat.h" 3 extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) ; extern int __xstat (int __ver, __const char *__filename, struct stat *__stat_buf) ; extern int __lxstat (int __ver, __const char *__filename, struct stat *__stat_buf) ; # 337 "/usr/include/sys/stat.h" 3 extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, __dev_t *__dev) ; extern __inline__ int stat (__const char *__path, struct stat *__statbuf) { return __xstat (3, __path, __statbuf); } extern __inline__ int lstat (__const char *__path, struct stat *__statbuf) { return __lxstat (3, __path, __statbuf); } extern __inline__ int fstat (int __fd, struct stat *__statbuf) { return __fxstat (3, __fd, __statbuf); } extern __inline__ int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) { return __xmknod (1, __path, __mode, &__dev); } # 145 "stdfn.h" 2 # 217 "stdfn.h" # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/limits.h" 1 3 # 11 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/limits.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/syslimits.h" 1 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/limits.h" 1 3 # 130 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/limits.h" 3 # 1 "/usr/include/limits.h" 1 3 # 26 "/usr/include/limits.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/limits.h" 2 3 # 144 "/usr/include/limits.h" 3 # 1 "/usr/include/bits/posix1_lim.h" 1 3 # 126 "/usr/include/bits/posix1_lim.h" 3 # 1 "/usr/include/bits/local_lim.h" 1 3 # 36 "/usr/include/bits/local_lim.h" 3 # 1 "/usr/include/linux/limits.h" 1 3 # 37 "/usr/include/bits/local_lim.h" 2 3 # 127 "/usr/include/bits/posix1_lim.h" 2 3 # 145 "/usr/include/limits.h" 2 3 # 1 "/usr/include/bits/posix2_lim.h" 1 3 # 149 "/usr/include/limits.h" 2 3 # 131 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/limits.h" 2 3 # 8 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/syslimits.h" 2 3 # 12 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/limits.h" 2 3 # 218 "stdfn.h" 2 # 229 "stdfn.h" # 1 "/usr/include/time.h" 1 3 # 28 "/usr/include/time.h" 3 # 1 "/usr/include/features.h" 1 3 # 29 "/usr/include/time.h" 2 3 # 38 "/usr/include/time.h" 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 39 "/usr/include/time.h" 2 3 # 1 "/usr/include/bits/time.h" 1 3 # 39 "/usr/include/bits/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 40 "/usr/include/bits/time.h" 2 3 extern long int __sysconf (int); # 43 "/usr/include/time.h" 2 3 # 56 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 57 "/usr/include/time.h" 2 3 typedef __clock_t clock_t; # 118 "/usr/include/time.h" 3 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; __const char *tm_zone; }; struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct sigevent; # 163 "/usr/include/time.h" 3 extern clock_t clock (void) ; extern time_t time (time_t *__timer) ; extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) ; extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) ; # 194 "/usr/include/time.h" 3 extern struct tm *gmtime (__const time_t *__timer) ; extern struct tm *localtime (__const time_t *__timer) ; extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern char *asctime (__const struct tm *__tp) ; extern char *ctime (__const time_t *__timer) ; extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) ; extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) ; extern char *__tzname[2]; extern int __daylight; extern long int __timezone; extern char *tzname[2]; extern void tzset (void) ; extern int daylight; extern long int timezone; extern int stime (__const time_t *__when) ; # 271 "/usr/include/time.h" 3 extern time_t timegm (struct tm *__tp) ; extern time_t timelocal (struct tm *__tp) ; extern int dysize (int __year) __attribute__ ((__const__)); extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining) ; extern int clock_getres (clockid_t __clock_id, struct timespec *__res) ; extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ; extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) ; # 309 "/usr/include/time.h" 3 extern int timer_create (clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) ; extern int timer_delete (timer_t __timerid) ; extern int timer_settime (timer_t __timerid, int __flags, __const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) ; extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) ; extern int timer_getoverrun (timer_t __timerid) ; # 230 "stdfn.h" 2 # 238 "stdfn.h" # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/float.h" 1 3 # 239 "stdfn.h" 2 # 1 "/usr/include/locale.h" 1 3 # 26 "/usr/include/locale.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/locale.h" 2 3 # 1 "/usr/opt/packages/gcc-3.0/lib/gcc-lib/i586-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 30 "/usr/include/locale.h" 2 3 # 1 "/usr/include/bits/locale.h" 1 3 # 27 "/usr/include/bits/locale.h" 3 enum { __LC_CTYPE = 0, __LC_NUMERIC = 1, __LC_TIME = 2, __LC_COLLATE = 3, __LC_MONETARY = 4, __LC_MESSAGES = 5, __LC_ALL = 6, __LC_PAPER = 7, __LC_NAME = 8, __LC_ADDRESS = 9, __LC_TELEPHONE = 10, __LC_MEASUREMENT = 11, __LC_IDENTIFICATION = 12 }; # 31 "/usr/include/locale.h" 2 3 # 52 "/usr/include/locale.h" 3 struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; # 112 "/usr/include/locale.h" 3 char __int_p_cs_precedes; char __int_p_sep_by_space; char __int_n_cs_precedes; char __int_n_sep_by_space; char __int_p_sign_posn; char __int_n_sign_posn; }; extern char *setlocale (int __category, __const char *__locale) ; extern struct lconv *localeconv (void) ; # 243 "stdfn.h" 2 # 1 "/usr/include/math.h" 1 3 # 27 "/usr/include/math.h" 3 # 1 "/usr/include/features.h" 1 3 # 28 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/huge_val.h" 1 3 # 25 "/usr/include/bits/huge_val.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/bits/huge_val.h" 2 3 # 34 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/mathdef.h" 1 3 # 41 "/usr/include/math.h" 2 3 # 63 "/usr/include/math.h" 3 # 1 "/usr/include/bits/mathcalls.h" 1 3 # 54 "/usr/include/bits/mathcalls.h" 3 extern double acos (double __x) ; extern double __acos (double __x) ; extern double asin (double __x) ; extern double __asin (double __x) ; extern double atan (double __x) ; extern double __atan (double __x) ; extern double atan2 (double __y, double __x) ; extern double __atan2 (double __y, double __x) ; extern double cos (double __x) ; extern double __cos (double __x) ; extern double sin (double __x) ; extern double __sin (double __x) ; extern double tan (double __x) ; extern double __tan (double __x) ; # 78 "/usr/include/bits/mathcalls.h" 3 extern double cosh (double __x) ; extern double __cosh (double __x) ; extern double sinh (double __x) ; extern double __sinh (double __x) ; extern double tanh (double __x) ; extern double __tanh (double __x) ; extern double acosh (double __x) ; extern double __acosh (double __x) ; extern double asinh (double __x) ; extern double __asinh (double __x) ; extern double atanh (double __x) ; extern double __atanh (double __x) ; extern double exp (double __x) ; extern double __exp (double __x) ; # 106 "/usr/include/bits/mathcalls.h" 3 extern double frexp (double __x, int *__exponent) ; extern double __frexp (double __x, int *__exponent) ; extern double ldexp (double __x, int __exponent) ; extern double __ldexp (double __x, int __exponent) ; extern double log (double __x) ; extern double __log (double __x) ; extern double log10 (double __x) ; extern double __log10 (double __x) ; extern double modf (double __x, double *__iptr) ; extern double __modf (double __x, double *__iptr) ; extern double expm1 (double __x) ; extern double __expm1 (double __x) ; extern double log1p (double __x) ; extern double __log1p (double __x) ; extern double logb (double __x) ; extern double __logb (double __x) ; # 143 "/usr/include/bits/mathcalls.h" 3 extern double pow (double __x, double __y) ; extern double __pow (double __x, double __y) ; extern double sqrt (double __x) ; extern double __sqrt (double __x) ; extern double hypot (double __x, double __y) ; extern double __hypot (double __x, double __y) ; extern double cbrt (double __x) ; extern double __cbrt (double __x) ; extern double ceil (double __x) ; extern double __ceil (double __x) ; extern double fabs (double __x) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__const__)); extern double floor (double __x) ; extern double __floor (double __x) ; extern double fmod (double __x, double __y) ; extern double __fmod (double __x, double __y) ; extern int __isinf (double __value) __attribute__ ((__const__)); extern int __finite (double __value) __attribute__ ((__const__)); extern int isinf (double __value) __attribute__ ((__const__)); extern int finite (double __value) __attribute__ ((__const__)); extern double drem (double __x, double __y) ; extern double __drem (double __x, double __y) ; extern double significand (double __x) ; extern double __significand (double __x) ; extern double copysign (double __x, double __y) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__const__)); # 209 "/usr/include/bits/mathcalls.h" 3 extern int __isnan (double __value) __attribute__ ((__const__)); extern int isnan (double __value) __attribute__ ((__const__)); extern double j0 (double) ; extern double __j0 (double) ; extern double j1 (double) ; extern double __j1 (double) ; extern double jn (int, double) ; extern double __jn (int, double) ; extern double y0 (double) ; extern double __y0 (double) ; extern double y1 (double) ; extern double __y1 (double) ; extern double yn (int, double) ; extern double __yn (int, double) ; extern double erf (double) ; extern double __erf (double) ; extern double erfc (double) ; extern double __erfc (double) ; extern double lgamma (double) ; extern double __lgamma (double) ; # 238 "/usr/include/bits/mathcalls.h" 3 extern double gamma (double) ; extern double __gamma (double) ; extern double lgamma_r (double, int *__signgamp) ; extern double __lgamma_r (double, int *__signgamp) ; extern double rint (double __x) ; extern double __rint (double __x) ; extern double nextafter (double __x, double __y) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__const__)); extern double remainder (double __x, double __y) ; extern double __remainder (double __x, double __y) ; extern double scalb (double __x, double __n) ; extern double __scalb (double __x, double __n) ; extern double scalbn (double __x, int __n) ; extern double __scalbn (double __x, int __n) ; extern int ilogb (double __x) ; extern int __ilogb (double __x) ; # 64 "/usr/include/math.h" 2 3 # 82 "/usr/include/math.h" 3 # 1 "/usr/include/bits/mathcalls.h" 1 3 # 54 "/usr/include/bits/mathcalls.h" 3 extern float acosf (float __x) ; extern float __acosf (float __x) ; extern float asinf (float __x) ; extern float __asinf (float __x) ; extern float atanf (float __x) ; extern float __atanf (float __x) ; extern float atan2f (float __y, float __x) ; extern float __atan2f (float __y, float __x) ; extern float cosf (float __x) ; extern float __cosf (float __x) ; extern float sinf (float __x) ; extern float __sinf (float __x) ; extern float tanf (float __x) ; extern float __tanf (float __x) ; # 78 "/usr/include/bits/mathcalls.h" 3 extern float coshf (float __x) ; extern float __coshf (float __x) ; extern float sinhf (float __x) ; extern float __sinhf (float __x) ; extern float tanhf (float __x) ; extern float __tanhf (float __x) ; extern float acoshf (float __x) ; extern float __acoshf (float __x) ; extern float asinhf (float __x) ; extern float __asinhf (float __x) ; extern float atanhf (float __x) ; extern float __atanhf (float __x) ; extern float expf (float __x) ; extern float __expf (float __x) ; # 106 "/usr/include/bits/mathcalls.h" 3 extern float frexpf (float __x, int *__exponent) ; extern float __frexpf (float __x, int *__exponent) ; extern float ldexpf (float __x, int __exponent) ; extern float __ldexpf (float __x, int __exponent) ; extern float logf (float __x) ; extern float __logf (float __x) ; extern float log10f (float __x) ; extern float __log10f (float __x) ; extern float modff (float __x, float *__iptr) ; extern float __modff (float __x, float *__iptr) ; extern float expm1f (float __x) ; extern float __expm1f (float __x) ; extern float log1pf (float __x) ; extern float __log1pf (float __x) ; extern float logbf (float __x) ; extern float __logbf (float __x) ; # 143 "/usr/include/bits/mathcalls.h" 3 extern float powf (float __x, float __y) ; extern float __powf (float __x, float __y) ; extern float sqrtf (float __x) ; extern float __sqrtf (float __x) ; extern float hypotf (float __x, float __y) ; extern float __hypotf (float __x, float __y) ; extern float cbrtf (float __x) ; extern float __cbrtf (float __x) ; extern float ceilf (float __x) ; extern float __ceilf (float __x) ; extern float fabsf (float __x) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__const__)); extern float floorf (float __x) ; extern float __floorf (float __x) ; extern float fmodf (float __x, float __y) ; extern float __fmodf (float __x, float __y) ; extern int __isinff (float __value) __attribute__ ((__const__)); extern int __finitef (float __value) __attribute__ ((__const__)); extern int isinff (float __value) __attribute__ ((__const__)); extern int finitef (float __value) __attribute__ ((__const__)); extern float dremf (float __x, float __y) ; extern float __dremf (float __x, float __y) ; extern float significandf (float __x) ; extern float __significandf (float __x) ; extern float copysignf (float __x, float __y) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__const__)); # 209 "/usr/include/bits/mathcalls.h" 3 extern int __isnanf (float __value) __attribute__ ((__const__)); extern int isnanf (float __value) __attribute__ ((__const__)); extern float j0f (float) ; extern float __j0f (float) ; extern float j1f (float) ; extern float __j1f (float) ; extern float jnf (int, float) ; extern float __jnf (int, float) ; extern float y0f (float) ; extern float __y0f (float) ; extern float y1f (float) ; extern float __y1f (float) ; extern float ynf (int, float) ; extern float __ynf (int, float) ; extern float erff (float) ; extern float __erff (float) ; extern float erfcf (float) ; extern float __erfcf (float) ; extern float lgammaf (float) ; extern float __lgammaf (float) ; # 238 "/usr/include/bits/mathcalls.h" 3 extern float gammaf (float) ; extern float __gammaf (float) ; extern float lgammaf_r (float, int *__signgamp) ; extern float __lgammaf_r (float, int *__signgamp) ; extern float rintf (float __x) ; extern float __rintf (float __x) ; extern float nextafterf (float __x, float __y) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__const__)); extern float remainderf (float __x, float __y) ; extern float __remainderf (float __x, float __y) ; extern float scalbf (float __x, float __n) ; extern float __scalbf (float __x, float __n) ; extern float scalbnf (float __x, int __n) ; extern float __scalbnf (float __x, int __n) ; extern int ilogbf (float __x) ; extern int __ilogbf (float __x) ; # 83 "/usr/include/math.h" 2 3 # 99 "/usr/include/math.h" 3 # 1 "/usr/include/bits/mathcalls.h" 1 3 # 54 "/usr/include/bits/mathcalls.h" 3 extern long double acosl (long double __x) ; extern long double __acosl (long double __x) ; extern long double asinl (long double __x) ; extern long double __asinl (long double __x) ; extern long double atanl (long double __x) ; extern long double __atanl (long double __x) ; extern long double atan2l (long double __y, long double __x) ; extern long double __atan2l (long double __y, long double __x) ; extern long double cosl (long double __x) ; extern long double __cosl (long double __x) ; extern long double sinl (long double __x) ; extern long double __sinl (long double __x) ; extern long double tanl (long double __x) ; extern long double __tanl (long double __x) ; # 78 "/usr/include/bits/mathcalls.h" 3 extern long double coshl (long double __x) ; extern long double __coshl (long double __x) ; extern long double sinhl (long double __x) ; extern long double __sinhl (long double __x) ; extern long double tanhl (long double __x) ; extern long double __tanhl (long double __x) ; extern long double acoshl (long double __x) ; extern long double __acoshl (long double __x) ; extern long double asinhl (long double __x) ; extern long double __asinhl (long double __x) ; extern long double atanhl (long double __x) ; extern long double __atanhl (long double __x) ; extern long double expl (long double __x) ; extern long double __expl (long double __x) ; # 106 "/usr/include/bits/mathcalls.h" 3 extern long double frexpl (long double __x, int *__exponent) ; extern long double __frexpl (long double __x, int *__exponent) ; extern long double ldexpl (long double __x, int __exponent) ; extern long double __ldexpl (long double __x, int __exponent) ; extern long double logl (long double __x) ; extern long double __logl (long double __x) ; extern long double log10l (long double __x) ; extern long double __log10l (long double __x) ; extern long double modfl (long double __x, long double *__iptr) ; extern long double __modfl (long double __x, long double *__iptr) ; extern long double expm1l (long double __x) ; extern long double __expm1l (long double __x) ; extern long double log1pl (long double __x) ; extern long double __log1pl (long double __x) ; extern long double logbl (long double __x) ; extern long double __logbl (long double __x) ; # 143 "/usr/include/bits/mathcalls.h" 3 extern long double powl (long double __x, long double __y) ; extern long double __powl (long double __x, long double __y) ; extern long double sqrtl (long double __x) ; extern long double __sqrtl (long double __x) ; extern long double hypotl (long double __x, long double __y) ; extern long double __hypotl (long double __x, long double __y) ; extern long double cbrtl (long double __x) ; extern long double __cbrtl (long double __x) ; extern long double ceill (long double __x) ; extern long double __ceill (long double __x) ; extern long double fabsl (long double __x) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__const__)); extern long double floorl (long double __x) ; extern long double __floorl (long double __x) ; extern long double fmodl (long double __x, long double __y) ; extern long double __fmodl (long double __x, long double __y) ; extern int __isinfl (long double __value) __attribute__ ((__const__)); extern int __finitel (long double __value) __attribute__ ((__const__)); extern int isinfl (long double __value) __attribute__ ((__const__)); extern int finitel (long double __value) __attribute__ ((__const__)); extern long double dreml (long double __x, long double __y) ; extern long double __dreml (long double __x, long double __y) ; extern long double significandl (long double __x) ; extern long double __significandl (long double __x) ; extern long double copysignl (long double __x, long double __y) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__const__)); # 209 "/usr/include/bits/mathcalls.h" 3 extern int __isnanl (long double __value) __attribute__ ((__const__)); extern int isnanl (long double __value) __attribute__ ((__const__)); extern long double j0l (long double) ; extern long double __j0l (long double) ; extern long double j1l (long double) ; extern long double __j1l (long double) ; extern long double jnl (int, long double) ; extern long double __jnl (int, long double) ; extern long double y0l (long double) ; extern long double __y0l (long double) ; extern long double y1l (long double) ; extern long double __y1l (long double) ; extern long double ynl (int, long double) ; extern long double __ynl (int, long double) ; extern long double erfl (long double) ; extern long double __erfl (long double) ; extern long double erfcl (long double) ; extern long double __erfcl (long double) ; extern long double lgammal (long double) ; extern long double __lgammal (long double) ; # 238 "/usr/include/bits/mathcalls.h" 3 extern long double gammal (long double) ; extern long double __gammal (long double) ; extern long double lgammal_r (long double, int *__signgamp) ; extern long double __lgammal_r (long double, int *__signgamp) ; extern long double rintl (long double __x) ; extern long double __rintl (long double __x) ; extern long double nextafterl (long double __x, long double __y) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__const__)); extern long double remainderl (long double __x, long double __y) ; extern long double __remainderl (long double __x, long double __y) ; extern long double scalbl (long double __x, long double __n) ; extern long double __scalbl (long double __x, long double __n) ; extern long double scalbnl (long double __x, int __n) ; extern long double __scalbnl (long double __x, int __n) ; extern int ilogbl (long double __x) ; extern int __ilogbl (long double __x) ; # 100 "/usr/include/math.h" 2 3 # 113 "/usr/include/math.h" 3 extern int signgam; # 240 "/usr/include/math.h" 3 typedef enum { _IEEE_ = -1, _SVID_, _XOPEN_, _POSIX_, _ISOC_ } _LIB_VERSION_TYPE; extern _LIB_VERSION_TYPE _LIB_VERSION; # 265 "/usr/include/math.h" 3 struct exception { int type; char *name; double arg1; double arg2; double retval; }; extern int matherr (struct exception *__exc); # 350 "/usr/include/math.h" 3 # 1 "/usr/include/bits/mathinline.h" 1 3 # 291 "/usr/include/bits/mathinline.h" 3 extern __inline double __sgn (double) ; extern __inline double __sgn (double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline float __sgnf (float) ; extern __inline float __sgnf (float __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline long double __sgnl (long double) ; extern __inline long double __sgnl (long double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } # 425 "/usr/include/bits/mathinline.h" 3 extern __inline double atan2 (double __y, double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline float atan2f (float __y, float __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline long double atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline long double __atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline double fmod (double __x, double __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline float fmodf (float __x, float __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline long double fmodl (long double __x, long double __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } # 440 "/usr/include/bits/mathinline.h" 3 extern __inline double sqrt (double __x) { register double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline float sqrtf (float __x) { register float __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline long double sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline long double __sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline double fabs (double __x) { return __builtin_fabs (__x); } extern __inline float fabsf (float __x) { return __builtin_fabsf (__x); } extern __inline long double fabsl (long double __x) { return __builtin_fabsl (__x); } extern __inline long double __fabsl (long double __x) { return __builtin_fabsl (__x); } # 466 "/usr/include/bits/mathinline.h" 3 extern __inline double atan (double __x) { register double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline float atanf (float __x) { register float __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline long double atanl (long double __x) { register long double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline long double __sgn1l (long double) ; extern __inline long double __sgn1l (long double __x) { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; } # 492 "/usr/include/bits/mathinline.h" 3 extern __inline double floor (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float floorf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double floorl (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstc! w %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } # 503 "/usr/include/bits/mathinline.h" 3 extern __inline double ceil (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float ceilf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double ceill (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %! 0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } # 521 "/usr/include/bits/mathinline.h" 3 extern __inline double ldexp (double __x, int __y) { register long double __value; __asm __volatile__ ("fscale" : "=t" (__value) : "0" (__x), "u" ((long double) __y)); return __value; } # 539 "/usr/include/bits/mathinline.h" 3 extern __inline double log1p (double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline float log1pf (float __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline long double log1pl (long double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } # 553 "/usr/include/bits/mathinline.h" 3 extern __inline double asinh (double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline float asinhf (float __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline long double asinhl (long double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline double acosh (double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline float acoshf (float __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline long double acoshl (long double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline double atanh (double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline float atanhf (float __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline long double atanhl (long double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline double hypot (double __x, double __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline float hypotf (float __x, float __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline long double hypotl (long double __x, long double __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline double logb (double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline float logbf (float __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline long double logbl (long double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } # 652 "/usr/include/bits/mathinline.h" 3 extern __inline double drem (double __x, double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline float dremf (float __x, float __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline long double dreml (long double __x, long double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } # 665 "/usr/include/bits/mathinline.h" 3 extern __inline int __finite (double __x) { return (__extension__ (((((union { double __d; int __i[2]; }) {__d: __x}).__i[1] | 0x800fffffu) + 1) >> 31)); } # 351 "/usr/include/math.h" 2 3 # 247 "stdfn.h" 2 # 289 "stdfn.h" # 1 "/usr/include/assert.h" 1 3 # 36 "/usr/include/assert.h" 3 # 1 "/usr/include/features.h" 1 3 # 37 "/usr/include/assert.h" 2 3 # 68 "/usr/include/assert.h" 3 extern void __assert_fail (__const char *__assertion, __const char *__file, unsigned int __line, __const char *__function) __attribute__ ((__noreturn__)); extern void __assert_perror_fail (int __errnum, __const char *__file, unsigned int __line, __const char *__function) __attribute__ ((__noreturn__)); extern void __assert (const char *__assertion, const char *__file, int __line) __attribute__ ((__noreturn__)); # 290 "stdfn.h" 2 # 49 "plot.h" 2 # 81 "plot.h" typedef int TBOOLEAN; # 222 "plot.h" typedef double coordval; # 343 "plot.h" typedef void (*sigfunc)(int); typedef int (*sortfunc) (const void *, const void *); enum operators { PUSH, PUSHC, PUSHD1, PUSHD2, PUSHD, CALL, CALLN, LNOT, BNOT, UMINUS, LOR, LAND, BOR, XOR, BAND, EQ, NE, GT, LT, GE, LE, PLUS, MINUS, MULT, DIV, MOD, POWER, FACTORIAL, BOOLE, DOLLARS, JUMP, JUMPZ, JUMPNZ, JTERN, SF_START }; enum DATA_TYPES { INTGR, CMPLX }; enum PLOT_TYPE { FUNC, DATA, FUNC3D, DATA3D }; enum PLOT_STYLE { LINES = 0*8 + 1, POINTSTYLE = 1*8 + 2, IMPULSES = 2*8 + 1, LINESPOINTS= 3*8 + 3, DOTS = 4*8 + 0, XERRORBARS = 5*8 + 6, YERRORBARS = 6*8 + 6, XYERRORBARS= 7*8 + 6, BOXXYERROR = 8*8 + 1, BOXES = 9*8 + 1, BOXERROR =10*8 + 1, STEPS =11*8 + 1, FSTEPS =12*8 + 1, HISTEPS =13*8 + 1, VECTOR =14*8 + 1, CANDLESTICKS=15*8 + 4, FINANCEBARS=16*8 + 1 }; enum PLOT_SMOOTH { NONE, UNIQUE, CSPLINES, ACSPLINES, BEZIER, SBEZIER }; enum JUSTIFY { LEFT, CENTRE, RIGHT }; struct cmplx { double real, imag; }; struct value { enum DATA_TYPES type; union { int int_val; struct cmplx cmplx_val; } v; }; struct lexical_unit { TBOOLEAN is_token; struct value l_val; int start_index; int length; }; struct udft_entry { struct udft_entry *next_udf; char udf_name[50 +1]; struct at_type *at; char *definition; struct value dummy_values[5]; }; struct udvt_entry { struct udvt_entry *next_udv; char udv_name[50 +1]; TBOOLEAN udv_undef; struct value udv_value; }; union argument { int j_arg; struct value v_arg; struct udvt_entry *udv_arg; struct udft_entry *udf_arg; }; struct at_entry { enum operators index; union argument arg; }; struct at_type { int a_count; struct at_entry actions[150]; }; typedef int (*FUNC_PTR) (union argument *arg); struct ft_entry { char *f_name; FUNC_PTR func; }; enum coord_type { INRANGE, OUTRANGE, UNDEFINED }; struct coordinate { enum coord_type type; coordval x, y, z; coordval ylow, yhigh; coordval xlow, xhigh; }; struct lp_style_type { int pointflag; int l_type, p_type; double l_width, p_size; }; struct curve_points { struct curve_points *next_cp; int token; enum PLOT_TYPE plot_type; enum PLOT_STYLE plot_style; enum PLOT_SMOOTH plot_smooth; char *title; struct lp_style_type lp_properties; int p_max; int p_count; int x_axis; int y_axis; struct coordinate *points; }; struct gnuplot_contours { struct gnuplot_contours *next; struct coordinate *coords; char isNewLevel; char label[32]; int num_pts; }; struct iso_curve { struct iso_curve *next; int p_max; int p_count; struct coordinate *points; }; struct surface_points { struct surface_points *next_sp; int token; enum PLOT_TYPE plot_type; enum PLOT_STYLE plot_style; char *title; struct lp_style_type lp_properties; int has_grid_topology; int num_iso_read; struct gnuplot_contours *contours; struct iso_curve *iso_crvs; }; # 591 "plot.h" struct TERMENTRY { char *name; char *description; unsigned int xmax,ymax,v_char,h_char,v_tic,h_tic; void (*options) (void); void (*init) (void); void (*reset) (void); void (*text) (void); int (*scale) (double, double); void (*graphics) (void); void (*move) (unsigned int, unsigned int); void (*vector) (unsigned int, unsigned int); void (*linetype) (int); void (*put_text) (unsigned int, unsigned int,char*); int (*text_angle) (int); int (*justify_text) (enum JUSTIFY); void (*point) (unsigned int, unsigned int,int); void (*arrow) (unsigned int, unsigned int, unsigned int, unsigned int, int); int (*set_font) (char *font); void (*pointsize) (double); int flags; void (*suspend) (void); void (*resume) (void); void (*fillbox) (int, unsigned int, unsigned int, unsigned int, unsigned int); void (*linewidth) (double linewidth); }; # 633 "plot.h" enum position_type { first_axes, second_axes, graph, screen }; struct position { enum position_type scalex,scaley,scalez; double x,y,z; }; struct text_label { struct text_label *next; int tag; struct position place; enum JUSTIFY pos; int rotate; char text[1024 +1]; char font[1024 +1]; }; struct arrow_def { struct arrow_def *next; int tag; struct position start; struct position end; TBOOLEAN head; struct lp_style_type lp_properties; }; struct linestyle_def { struct linestyle_def *next; int tag; struct lp_style_type lp_properties; }; struct ticdef { int type; union { struct { double start, incr; double end; } series; struct ticmark *user; } def; }; struct ticmark { double position; char *label; struct ticmark *next; }; # 718 "plot.h" extern TBOOLEAN screen_ok; extern struct TERMENTRY *term; extern TBOOLEAN undefined; extern char *input_line; extern int input_line_len; extern char *replot_line; extern struct lexical_unit *token; extern int token_table_size; extern int num_tokens, c_token; extern int inline_num; extern char c_dummy_var[5][50 +1]; extern struct ft_entry ft[]; extern struct udft_entry *first_udf; extern struct udvt_entry *first_udv; extern TBOOLEAN interactive; extern char *infile_name; extern struct udft_entry *dummy_func; extern char dummy_var[5][50 +1]; # 782 "plot.h" # 1 "protos.h" 1 # 38 "protos.h" # 1 "ansichek.h" 1 # 39 "protos.h" 2 void extend_input_line (void); void extend_token_table (void); void init_memory (void); int com_line (void); int do_line (void); void done (int status); void define (void); void bail_to_command_line (void); typedef double tri_diag[3]; struct gnuplot_contours *contour (int num_isolines, struct iso_curve *iso_lines, int ZLevels, int approx_pts, int int_kind, int order1, int levels_kind, double *levels_list); int solve_tri_diag (tri_diag m[], double r[], double x[], int n); int df_open (int max_using); int df_readline (double v[], int max); void df_close (void); int df_2dbinary (struct curve_points *this_plot); int df_3dmatrix (struct surface_points *this_plot); struct udvt_entry * add_udv (int t_num); struct udft_entry * add_udf (int t_num); int standard (int t_num); void execute_at (struct at_type *at_ptr); char *get_next_word (char **s, char *subst); void init_fit (void); void setvar (char *varname, struct value data); int getivar (char *varname); void update (char *pfile, char *npfile); void do_fit (void); size_t wri_to_fil_last_fit_cmd (FILE *fp); void graph_error (char *text); void fixup_range (int axis, char *axis_name); void timetic_format (int axis, double amin, double amax); void do_plot (struct curve_points *plots, int pcount); double time_tic_just (int level, double ticplace); double make_ltic (int tlevel, double incr); int label_width (char *str, int *lines); double set_tic (double l10, int guide); void setup_tics (int axis, struct ticdef *def, char *format, int max); typedef void (*tic_callback) (int axis, double place, char *text, struct lp_style_type grid); void gen_tics (int axis, struct ticdef *def, int grid, int minitic, double minifreq, tic_callback callback); void write_multiline (unsigned int x, unsigned int y, char *text_will_be_mangled, enum JUSTIFY hor, int vert, int angle, char *font); void map3d_xy (double x, double y, double z, unsigned int *xt, unsigned int *yt); int map3d_z (double x, double y, double z); void do_3dplot (struct surface_points *plots, int pcount); int help (char *keyword, char *path, TBOOLEAN *subtopics); void FreeHelp (void); void StartOutput (void); void OutLine (char *line); void EndOutput (void); void clip_move (unsigned int x, unsigned int y); void clip_vector (unsigned int x, unsigned int y); void set_hidden3doptions (void); void show_hidden3doptions (void); void save_hidden3doptions (FILE *fp); void init_hidden_line_removal (void); void reset_hidden_line_removal (void); void term_hidden_line_removal (void); void plot3d_hidden (struct surface_points *plots, int pcount); void draw_line_hidden (unsigned int, unsigned int, unsigned int, unsigned int); # 145 "protos.h" void reset_stack (void); void check_stack (void); struct value *pop (struct value *x); void push (struct value *x); void gen_interp (struct curve_points *plot); void sort_points (struct curve_points *plot); void cp_implode (struct curve_points *cp); struct curve_points * cp_alloc (int num); void cp_extend (struct curve_points *cp, int num); void cp_free (struct curve_points *cp); struct iso_curve * iso_alloc (int num); void iso_extend (struct iso_curve *ip, int num); void iso_free (struct iso_curve *ip); struct surface_points * sp_alloc (int num_samp_1, int num_iso_1, int num_samp_2, int num_iso_2); void sp_replace (struct surface_points *sp, int num_samp_1, int num_iso_1, int num_samp_2, int num_iso_2); void sp_free (struct surface_points *sp); void save_functions (FILE *fp); void save_variables (FILE *fp); void save_all (FILE *fp); void save_set (FILE *fp); void save_set_all (FILE *fp); void load_file (FILE *fp, char *name, TBOOLEAN subst_args); FILE *lf_top (void); void load_file_error (void); int instring (char *str, int c); void show_functions (void); void show_at (void); void disp_at (struct at_type *curr_at, int level); int find_maxl_keys (struct curve_points *plots, int count, int *kcnt); int find_maxl_keys3d (struct surface_points *plots, int count, int *kcnt); TBOOLEAN valid_format (const char *format); void evaluate_at (struct at_type *at_ptr, struct value *val_ptr); struct value * const_express (struct value *valptr); struct at_type * temp_at (void); struct at_type * perm_at (void); void interrupt_setup (void); void plotrequest (void); void plot3drequest (void); # 216 "protos.h" extern char *readline(); extern void add_history(); # 227 "protos.h" int scanner (char expression[]); char *safe_strncpy (char *, char *, size_t); void term_set_output (char *); void term_init (void); void term_start_plot (void); void term_end_plot (void); void term_start_multiplot (void); void term_end_multiplot (void); void term_reset (void); void term_apply_lp_properties (struct lp_style_type *lp); void term_check_multiplot_okay (TBOOLEAN); __inline__ int term_count (void); void list_terms (void); struct TERMENTRY *set_term (int); struct TERMENTRY *change_term (char *name, int length); void init_terminal (void); void test_term (void); void UP_redirect (int called); # 267 "protos.h" int null_text_angle (int ang); int null_justify_text (enum JUSTIFY just); int null_scale (double x, double y); int do_scale (double x, double y); void options_null (void); void UNKNOWN_null (void); void MOVE_null (unsigned int, unsigned int); void LINETYPE_null (int); void PUTTEXT_null (unsigned int, unsigned int, char *); char * gstrptime (char *, char *, struct tm *); int gstrftime (char *, int, char *, double); double gtimegm (struct tm *); int ggmtime (struct tm *, double); int chr_in_str (int t_num, int c); int equals (int t_num, char *str); int almost_equals (int t_num, char *str); int isstring (int t_num); int isanumber (int t_num); int isletter (int t_num); int is_definition (int t_num); void copy_str (char str[], int t_num, int max); int token_len (int t_num); void quote_str (char str[], int t_num, int max); void capture (char str[], int start, int end, int max); void m_capture (char **str, int start, int end); void m_quote_capture (char **str, int start, int end); void convert (struct value *val_ptr, int t_num); void disp_value (FILE *fp, struct value *val); double real (struct value *val); double imag (struct value *val); double magnitude (struct value *val); double angle (struct value *val); struct value * Gcomplex (struct value *a, double realpart, double imagpart); struct value * Ginteger (struct value *a, int i); void os_error (char str[], int t_num); void int_error (char str[], int t_num); void int_warn (char str[], int t_num); void lower_case (char *s); void squash_spaces (char *s); void draw_clip_line (unsigned int, unsigned int, unsigned int, unsigned int); int clip_line (int *, int *, int *, int *); void edge3d_intersect (struct coordinate *points, int i, double *ex, double *ey, double *ez); TBOOLEAN two_edge3d_intersect (struct coordinate *points, int i, double *lx, double *ly, double *lz); void mat_unit (double mat[4][4]); void mat_trans (double tx, double ty, double tz, double mat[4][4]); void mat_scale (double sx, double sy, double sz, double mat[4][4]); void mat_rot_x (double teta, double mat[4][4]); void mat_rot_y (double teta, double mat[4][4]); void mat_rot_z (double teta, double mat[4][4]); void mat_mult (double mat_res[4][4], double mat1[4][4], double mat2[4][4]); int clip_point (unsigned int x, unsigned int y); void clip_put_text (unsigned int x, unsigned int y, char *str); void clip_put_text_just (unsigned int x, unsigned int y, char *str, enum JUSTIFY just); # 1 "alloc.h" 1 # 39 "alloc.h" char *gp_alloc (unsigned long size, char *message); void *gp_realloc (void *p, unsigned long size, char *message); # 338 "protos.h" 2 # 783 "plot.h" 2 # 78 "term.c" 2 # 1 "bitmap.h" 1 # 37 "bitmap.h" typedef unsigned int char_row; typedef char_row * char_box; # 47 "bitmap.h" extern char_row fnt5x9[96][9]; extern char_row fnt9x17[96][17]; extern char_row fnt13x25[96][25]; typedef unsigned char pixels; typedef pixels *bitmap[]; extern bitmap *b_p; extern unsigned int b_currx, b_curry; extern unsigned int b_xsize, b_ysize; extern unsigned int b_planes; extern unsigned int b_psize; extern unsigned int b_rastermode; extern unsigned int b_linemask; extern unsigned int b_value; extern unsigned int b_hchar; extern unsigned int b_hbits; extern unsigned int b_vchar; extern unsigned int b_vbits; extern unsigned int b_angle; extern char_box b_font[96]; extern unsigned int b_pattern[]; extern int b_maskcount; extern unsigned int b_lastx, b_lasty; struct rgb { unsigned char r, g, b; }; extern struct rgb web_color_rgbs[]; void b_makebitmap (unsigned int x, unsigned int y, unsigned int planes); void b_freebitmap (void); void b_setpixel (unsigned int x, unsigned int y, unsigned int value); void b_line (unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2); void b_setmaskpixel (unsigned int x, unsigned int y, unsigned int value); void b_charsize (unsigned int size); void b_setvalue (unsigned int value); void b_setlinetype (int linetype); void b_move (unsigned int x, unsigned int y); void b_vector (unsigned int x, unsigned int y); void b_put_text (unsigned int x, unsigned int y, char *str); int b_text_angle (int ang); # 79 "term.c" 2 # 1 "setshow.h" 1 # 41 "setshow.h" # 1 "/usr/include/sys/utsname.h" 1 3 # 26 "/usr/include/sys/utsname.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/sys/utsname.h" 2 3 # 1 "/usr/include/bits/utsname.h" 1 3 # 31 "/usr/include/sys/utsname.h" 2 3 struct utsname { char sysname[65]; char nodename[65]; char release[65]; char version[65]; char machine[65]; char __domainname[65]; }; extern int uname (struct utsname *__name) ; # 42 "setshow.h" 2 # 53 "setshow.h" typedef struct { char text[1024 +1]; double xoffset, yoffset; char font[1024 +1]; } label_struct; extern TBOOLEAN multiplot; extern TBOOLEAN autoscale_r; extern TBOOLEAN autoscale_t; extern TBOOLEAN autoscale_u; extern TBOOLEAN autoscale_v; extern TBOOLEAN autoscale_x; extern TBOOLEAN autoscale_y; extern TBOOLEAN autoscale_z; extern TBOOLEAN autoscale_x2; extern TBOOLEAN autoscale_y2; extern TBOOLEAN autoscale_lt; extern TBOOLEAN autoscale_lu; extern TBOOLEAN autoscale_lv; extern TBOOLEAN autoscale_lx; extern TBOOLEAN autoscale_ly; extern TBOOLEAN autoscale_lz; extern double boxwidth; extern TBOOLEAN clip_points; extern TBOOLEAN clip_lines1; extern TBOOLEAN clip_lines2; extern struct lp_style_type border_lp; extern int draw_border; # 91 "setshow.h" extern TBOOLEAN draw_surface; extern char dummy_var[5][50 +1]; extern char default_font[]; extern char xformat[]; extern char yformat[]; extern char zformat[]; extern char x2format[]; extern char y2format[]; extern int format_is_numeric[]; extern char key_title[]; extern enum PLOT_STYLE data_style, func_style; extern double bar_size; extern struct lp_style_type work_grid, grid_lp, mgrid_lp; extern double polar_grid_angle; extern int key; extern struct position key_user_pos; extern int key_vpos, key_hpos, key_just; extern double key_swidth, key_vert_factor; extern double key_width_fix; extern TBOOLEAN key_reverse; extern struct lp_style_type key_box; extern TBOOLEAN is_log_x, is_log_y, is_log_z; extern double base_log_x, base_log_y, base_log_z; extern double log_base_log_x, log_base_log_y, log_base_log_z; extern TBOOLEAN is_log_x2, is_log_y2; extern double base_log_x2, base_log_y2; extern double log_base_log_x2, log_base_log_y2; extern char *outstr; extern TBOOLEAN parametric; extern double pointsize; extern TBOOLEAN polar; extern TBOOLEAN hidden3d; extern int angles_format; extern double ang2rad; extern int mapping3d; extern int samples; extern int samples_1; extern int samples_2; extern int iso_samples_1; extern int iso_samples_2; extern float xsize; extern float xoffset; extern float yoffset; extern float ysize; extern float zsize; extern float aspect_ratio; extern float surface_rot_z; extern float surface_rot_x; extern float surface_scale; extern float surface_zscale; extern char term_options[]; extern label_struct title, timelabel; extern label_struct xlabel, ylabel, zlabel; extern label_struct x2label, y2label; extern int timelabel_rotate; extern int timelabel_bottom; extern char timefmt[]; extern int datatype[]; extern int range_flags[]; extern double rmin, rmax; extern double tmin, tmax, umin, umax, vmin, vmax; extern double xmin, xmax, ymin, ymax, zmin, zmax; extern double x2min, x2max, y2min, y2max; extern double loff, roff, toff, boff; extern int draw_contour; extern TBOOLEAN label_contours; extern char contour_format[]; extern int contour_pts; extern int contour_kind; extern int contour_order; extern int contour_levels; extern double zero; extern int levels_kind; extern double levels_list[30]; extern int dgrid3d_row_fineness; extern int dgrid3d_col_fineness; extern int dgrid3d_norm_value; extern TBOOLEAN dgrid3d; extern int encoding; extern char *encoding_names[]; extern struct lp_style_type xzeroaxis; extern struct lp_style_type yzeroaxis; extern struct lp_style_type x2zeroaxis; extern struct lp_style_type y2zeroaxis; extern int xtics; extern int ytics; extern int ztics; extern int mxtics; extern int mytics; extern int mztics; extern int x2tics; extern int y2tics; extern int mx2tics; extern int my2tics; extern double mxtfreq; extern double mytfreq; extern double mztfreq; extern double mx2tfreq; extern double my2tfreq; extern TBOOLEAN rotate_xtics; extern TBOOLEAN rotate_ytics; extern TBOOLEAN rotate_ztics; extern TBOOLEAN rotate_x2tics; extern TBOOLEAN rotate_y2tics; extern float ticslevel; extern double ticscale; extern double miniticscale; extern struct ticdef xticdef; extern struct ticdef yticdef; extern struct ticdef zticdef; extern struct ticdef x2ticdef; extern struct ticdef y2ticdef; extern TBOOLEAN tic_in; extern struct text_label *first_label; extern struct arrow_def *first_arrow; extern struct linestyle_def *first_linestyle; extern int lmargin, bmargin,rmargin,tmargin; extern char cur_locale[50 +1]; extern char full_month_names[12][32]; extern char abbrev_month_names[12][8]; extern char full_day_names[7][32]; extern char abbrev_day_names[7][8]; void set_command (void); void reset_command (void); void show_command (void); enum PLOT_STYLE get_style (void); TBOOLEAN load_range (int axis, double *a, double *b, int autosc); void show_version (FILE *fp); void show_version_long (void); char * conv_text (char *s, char *t); void lp_use_properties (struct lp_style_type *lp, int tag, int pointflag ); extern char *missing_val; # 80 "term.c" 2 # 1 "term/driver.h" 1 # 47 "term/driver.h" void do_point (unsigned int x, unsigned int y, int number); void line_and_point (unsigned int x, unsigned int y, int number); void do_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, int head); int null_text_angle (int ang); int null_justify_text (enum JUSTIFY just); int null_scale (double x, double y); int do_scale (double x, double y); void options_null (void); void UNKNOWN_null (void); int set_font_null (char *s); void null_set_pointsize (double size); extern FILE *gpoutfile; extern struct TERMENTRY *term; extern float xsize, ysize; # 81 "term.c" 2 # 94 "term.c" static TBOOLEAN term_initialised; static TBOOLEAN term_graphics = 0; static TBOOLEAN term_suspended = 0; static TBOOLEAN opened_binary = 0; static TBOOLEAN term_force_init = 0; extern FILE *gpoutfile; extern char *outstr; extern float xsize, ysize; static double term_pointsize; static void term_suspend (void); static void term_close_output (void); static void null_linewidth (double); void do_point (unsigned int x, unsigned int y, int number); void do_pointsize (double size); void line_and_point (unsigned int x, unsigned int y, int number); void do_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, int head); # 148 "term.c" static int unixplot = 0; # 166 "term.c" static TBOOLEAN pipe_open = 0; static void term_close_output() { ; opened_binary = 0; if (!outstr) return; if (pipe_open) { (void) pclose(gpoutfile); pipe_open = 0; } else (void) fclose(gpoutfile); gpoutfile = stdout; free(outstr); outstr = ((void *)0); } # 205 "term.c" void term_set_output(dest) char *dest; { FILE *f; ; ((void) ((dest == ((void *)0) || dest != outstr) ? 0 : (__assert_fail ("dest == ((void *)0) || dest != outstr", "term.c", 211, __PRETTY_FUNCTION__), 0))); if (multiplot) { fputs("In multiplotmode you can't change the output\n", stderr); return; } if (term && term_initialised) { (*term->reset) (); term_initialised = 0; } if (dest == ((void *)0)) { UP_redirect(4); term_close_output(); } else { if (*dest == '|') { if ((f = popen(dest + 1, ("w"))) == (FILE *) ((void *)0)) os_error("cannot create pipe; output not changed", c_token); else pipe_open = 1; } else # 249 "term.c" { if (term && (term->flags & 4)) { f = fopen(dest, "wb"); } else f = fopen(dest, "w"); if (f == (FILE *) ((void *)0)) os_error("cannot open file; output not changed", c_token); } term_close_output(); gpoutfile = f; outstr = dest; opened_binary = (term && (term->flags & 4)); UP_redirect(1); } } void term_init() { ; if (!term) int_error("No terminal defined", (-1)); if (outstr && (((term->flags & 4) && !opened_binary) || ((!(term->flags & 4) && opened_binary)))) { char *temp = gp_alloc(strlen(outstr) + 1, "temp file string"); if (temp) { ; (__extension__ (__builtin_constant_p (outstr) ? (((size_t)(const void *)((outstr) + 1) - (size_t)(const void *)(outstr) == 1) && strlen (outstr) + 1 <= 8 ? __strcpy_small (temp, __extension__ (((__const unsigned char *) (__const char *) (outstr))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (outstr))[0]), __extension__ (((__const unsigned char *) (__const char *) (outstr))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (outstr))[4]), __extension__ (((((__const unsigned char *) (__const char *) (outstr))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (outstr))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (outstr))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (outstr))[0]), __extension__ (((((__const unsigned char *) (__const char *) (outstr))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (outstr))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (outstr))[4 + 1]) << 8 | ((__const ! unsigned char *) (__const char *) (outstr))[4]), strlen (outstr) + 1) : (char *) memcpy (temp, outstr, strlen (outstr) + 1)) : strcpy (temp, outstr))); term_set_output(temp); } else fputs("Cannot reopen output file in binary", stderr); } # 307 "term.c" if (!term_initialised || term_force_init) { ; (*term->init) (); term_initialised = 1; } } void term_start_plot() { ; if (!term_initialised) term_init(); if (!term_graphics) { ; (*term->graphics) (); term_graphics = 1; } else if (multiplot && term_suspended) { if (term->resume) { ; (*term->resume) (); } term_suspended = 0; } } void term_end_plot() { ; if (!term_initialised) return; if (!multiplot) { ; (*term->text) (); term_graphics = 0; } (void) fflush(gpoutfile); } void term_start_multiplot() { ; if (multiplot) term_end_multiplot(); multiplot = 1; term_start_plot(); } void term_end_multiplot() { ; if (!multiplot) return; if (term_suspended) { if (term->resume) (*term->resume) (); term_suspended = 0; } multiplot = 0; term_end_plot(); } static void term_suspend() { ; if (term_initialised && !term_suspended && term->suspend) { ; (*term->suspend) (); term_suspended = 1; } } void term_reset() { ; if (!term_initialised) return; if (term_suspended) { if (term->resume) { ; (*term->resume) (); } term_suspended = 0; } if (term_graphics) { (*term->text) (); term_graphics = 0; } if (term_initialised) { (*term->reset) (); term_initialised = 0; } } void term_apply_lp_properties(lp) struct lp_style_type *lp; { # 429 "term.c" if (lp->pointflag) { (*term->pointsize) (lp->p_size); } (*term->linewidth) (lp->l_width); (*term->linetype) (lp->l_type); } void term_check_multiplot_okay(f_interactive) TBOOLEAN f_interactive; { ; if (!term_initialised) return; # 462 "term.c" if (!f_interactive || (term->flags & 1) || ((gpoutfile != stdout) && !(term->flags & 2)) ) { term_suspend(); return; } term_end_multiplot(); if (term->flags & 2) int_error("This terminal does not support multiplot", (-1)); else int_error("Must set output to a file or put all multiplot commands on one input line", (-1)); } void do_point(x, y, number) unsigned int x, y; int number; { register int htic, vtic; register struct TERMENTRY *t = term; if (number < 0) { (*t->move) (x, y); (*t->vector) (x, y); return; } number %= 6; htic = (term_pointsize * t->h_tic / 2); vtic = (term_pointsize * t->v_tic / 2); switch (number) { case 0: (*t->move) (x - htic, y); (*t->vector) (x, y - vtic); (*t->vector) (x + htic, y); (*t->vector) (x, y + vtic); (*t->vector) (x - htic, y); (*t->move) (x, y); (*t->vector) (x, y); break; case 1: (*t->move) (x - htic, y); (*t->vector) (x - htic, y); (*t->vector) (x + htic, y); (*t->move) (x, y - vtic); (*t->vector) (x, y - vtic); (*t->vector) (x, y + vtic); break; case 2: (*t->move) (x - htic, y - vtic); (*t->vector) (x - htic, y - vtic); (*t->vector) (x + htic, y - vtic); (*t->vector) (x + htic, y + vtic); (*t->vector) (x - htic, y + vtic); (*t->vector) (x - htic, y - vtic); (*t->move) (x, y); (*t->vector) (x, y); break; case 3: (*t->move) (x - htic, y - vtic); (*t->vector) (x - htic, y - vtic); (*t->vector) (x + htic, y + vtic); (*t->move) (x - htic, y + vtic); (*t->vector) (x - htic, y + vtic); (*t->vector) (x + htic, y - vtic); break; case 4: (*t->move) (x, y + (4 * vtic / 3)); (*t->vector) (x - (4 * htic / 3), y - (2 * vtic / 3)); (*t->vector) (x + (4 * htic / 3), y - (2 * vtic / 3)); (*t->vector) (x, y + (4 * vtic / 3)); (*t->move) (x, y); (*t->vector) (x, y); break; case 5: (*t->move) (x - htic, y); (*t->vector) (x - htic, y); (*t->vector) (x + htic, y); (*t->move) (x, y - vtic); (*t->vector) (x, y - vtic); (*t->vector) (x, y + vtic); (*t->move) (x - htic, y - vtic); (*t->vector) (x - htic, y - vtic); (*t->vector) (x + htic, y + vtic); (*t->move) (x - htic, y + vtic); (*t->vector) (x - htic, y + vtic); (*t->vector) (x + htic, y - vtic); break; } } void do_pointsize(size) double size; { term_pointsize = (size >= 0 ? size : 1); } void line_and_point(x, y, number) unsigned int x, y; int number; { (*term->linetype) (0); do_point(x, y, number); } # 604 "term.c" void do_arrow(sx, sy, ex, ey, head) unsigned int sx, sy; unsigned int ex, ey; TBOOLEAN head; { register struct TERMENTRY *t = term; float len_tic = ((double) (t->h_tic + t->v_tic)) / 2.0; double dx = (double) sx - (double) ex; double dy = (double) sy - (double) ey; double len_arrow = sqrt(dx * dx + dy * dy); (*t->move) (sx, sy); (*t->vector) (ex, ey); if (head && fabs(len_arrow) >= 2.2204460492503131e-16) { double coeff_shortest = len_tic * (0.3) / len_arrow; double coeff_longest = len_tic * (2.0) / len_arrow; double head_coeff = ( (coeff_shortest) > (( ((0.3)) < (coeff_longest) ? ((0.3)) : (coeff_longest) )) ? (coeff_shortest) : (( ((0.3)) < (coeff_longest) ? ((0.3)) : (coeff_longest) )) ); int x, y; x = (int) (ex + ((0.96593) * dx - (0.25882) * dy) * head_coeff); y = (int) (ey + ((0.25882) * dx + (0.96593) * dy) * head_coeff); (*t->move) (x, y); (*t->vector) (ex, ey); x = (int) (ex + ((0.96593) * dx + (0.25882) * dy) * head_coeff); y = (int) (ey + (-(0.25882) * dx + (0.96593) * dy) * head_coeff); (*t->vector) (x, y); } } # 698 "term.c" # 1 "term.h" 1 # 220 "term.h" # 1 "term/aed.trm" 1 # 55 "term/aed.trm" # 1 "term/driver.h" 1 # 56 "term/aed.trm" 2 static void AED_init (void); static void AED_graphics (void); static void AED_text (void); static void AED_linetype (int linetype); static void AED_move (unsigned int x, unsigned int y); static void AED_vector (unsigned int x, unsigned int y); static void AED_put_text (unsigned int x, unsigned int y, char str[]); static void AED_reset (void); # 92 "term/aed.trm" static void AED_init() { fputs("\033SEN3DDDN.SEC.7.SCT.0.1.80.80.90.SBC.0.AAV2.MOV.0.9.CHR.0.FFD", gpoutfile); # 104 "term/aed.trm" } static void AED_graphics() { fputs("\033FFD\033", gpoutfile); } static void AED_text() { fputs("\033MOV.0.9.SEC.7.XXX", gpoutfile); } static void AED_linetype(linetype) int linetype; { static int color[2 + 9] = { 7, 1, 6, 2, 3, 5, 1, 6, 2, 3, 5 }; static int type[2 + 9] = { 85, 85, 255, 255, 255, 255, 255, 85, 85, 85, 85 }; if (linetype >= 10) linetype %= 10; fprintf(gpoutfile, "\033SLS%d.255.\033SEC%d.", type[linetype + 2], color[linetype + 2]); } static void AED_move(x, y) unsigned int x, y; { fprintf(gpoutfile, "\033MOV%d.%d.", x, y); } static void AED_vector(x, y) unsigned int x, y; { fprintf(gpoutfile, "\033DVA%d.%d.", x, y); } static void AED_put_text(x, y, str) unsigned int x, y; char str[]; { AED_move(x, y - 13 / 2 + 2); fprintf(gpoutfile, "\033XXX%s\033", str); } static void AED_reset() { fputs("\033SCT0.1.0.0.0.SBC.0.FFD", gpoutfile); } # 221 "term.h" 2 # 231 "term.h" # 1 "term/gpic.trm" 1 # 56 "term/gpic.trm" # 1 "term/driver.h" 1 # 57 "term/gpic.trm" 2 static void GPIC_options (void); static void GPIC_init (void); static void GPIC_graphics (void); static void GPIC_text (void); static void GPIC_linetype (int linetype); static void GPIC_move (unsigned int x, unsigned int y); static void GPIC_vector (unsigned int ux, unsigned int uy); static void GPIC_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void GPIC_put_text (unsigned int x, unsigned int y, char str[]); static int GPIC_justify_text (enum JUSTIFY mode); static int GPIC_text_angle (int ang); static void GPIC_reset (void); # 98 "term/gpic.trm" void GPIC_close_line (void); static float GPIC_x, GPIC_y; static unsigned int GPIC_ltype; enum JUSTIFY GPIC_justify = LEFT; static char *GPIC_lines[] = { "thickness 1.0", "", "", "dotted", "dashed 0.05", "dashed 0.075", }; static int GPIC_linecount = 0; static void GPIC_options() { float x, y; struct value a; GPIC_x = 0; GPIC_y = 0; if (!(c_token >= num_tokens || equals(c_token,";"))) { x = real(const_express(&a)); if (!(c_token >= num_tokens || equals(c_token,";"))) { y = real(const_express(&a)); GPIC_x = x; GPIC_y = y; } } sprintf(term_options, "Origin is at (%f,%f)", GPIC_x, GPIC_y); } static void GPIC_init() { GPIC_linetype(-1); fputs(".\\\"GNUPLOT: GROFF picture using the gpic preprocessor\n", gpoutfile); } static void GPIC_graphics() { register struct TERMENTRY *t = term; fprintf(gpoutfile, ".PS %f %f\n", ((float)t->xmax)/((float)(300)), ((float)t->ymax)/((float)(300))); fprintf(gpoutfile, "x=%f; y=%f\n", GPIC_x, GPIC_y); } static void GPIC_text() { GPIC_close_line(); fputs(".PE\n", gpoutfile); } static void GPIC_linetype(linetype) int linetype; { if (linetype >= (sizeof(GPIC_lines)/sizeof(char *)) - 2) linetype %= ((sizeof(GPIC_lines)/sizeof(char *)) - 2); GPIC_ltype = linetype; } void GPIC_close_line() { if (GPIC_linecount > 0) { fputs("; reset linewid\n", gpoutfile); GPIC_linecount = 0; } } static void GPIC_move(x, y) unsigned int x, y; { GPIC_close_line(); fprintf(gpoutfile, "move to (x+%f,y+%f)\n", ((float)x)/((float)(300)), ((float)y)/((float)(300))); GPIC_linecount = 1; } static void GPIC_vector(ux, uy) unsigned int ux, uy; { if (GPIC_linecount == 1) { fprintf(gpoutfile, "line %s to (x+%f,y+%f)", GPIC_lines[GPIC_ltype + 2], ((float)ux)/((float)(300)), ((float)uy)/((float)(300))); } else { fprintf(gpoutfile, " \\\n then to (x+%f,y+%f)", ((float)ux)/((float)(300)), ((float)uy)/((float)(300))); } GPIC_linecount++; } static void GPIC_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; TBOOLEAN head; { GPIC_close_line(); if (head) { fprintf(gpoutfile, "arrowhead=7; arrow from x+%f,y+%f to x+%f,y+%f\n", ((float)sx)/((float)(300)), ((float)sy)/((float)(300)), ((float)ex)/((float)(300)), ((float)ey)/((float)(300))); } else { fprintf(gpoutfile, "line from x+%f,y+%f to x+%f,y+%f\n", ((float)sx)/((float)(300)), ((float)sy)/((float)(300)), ((float)ex)/((float)(300)), ((float)ey)/((float)(300))); } } static void GPIC_put_text(x, y, str) unsigned int x, y; char str[]; { GPIC_close_line(); fprintf(gpoutfile, "\"%s\" ", str); switch (GPIC_justify) { case LEFT:{ fputs("ljust ", gpoutfile); break; } case CENTRE:{ fputs(" ", gpoutfile); break; } case RIGHT:{ fputs("rjust ", gpoutfile); break; } } fprintf(gpoutfile, "at x+%f,y+%f\n", ((float)x)/((float)(300)), ((float)y)/((float)(300))); } static int GPIC_justify_text(mode) enum JUSTIFY mode; { GPIC_justify = mode; return (1); } static int GPIC_text_angle(ang) int ang; { GPIC_close_line(); return (0); } static void GPIC_reset() { fflush(gpoutfile); } # 232 "term.h" 2 # 1 "term/regis.trm" 1 # 51 "term/regis.trm" # 1 "term/driver.h" 1 # 52 "term/regis.trm" 2 static void REGISinit (void); static void REGISgraphics (void); static void REGISinit (void); static void REGISgraphics (void); static void REGIStext (void); static void REGISlinetype (int linetype); static void REGISmove (unsigned int x, unsigned int y); static void REGISvector (unsigned int x, unsigned int y); static void REGISput_text (unsigned int x, unsigned int y, char *str); static int REGIStext_angle (int ang); static void REGISreset (void); static void REGISoptions (void); # 94 "term/regis.trm" static int REGIS16color = 0; static int REGISang = 0; static void REGISinit() { fputs("\033[r\033[24;1H", gpoutfile); } static void REGISgraphics() { fputs("\033[2J\033P1pS(C0)S(E)T(A0)\n", gpoutfile); (void) REGIStext_angle(0); } static void REGIStext() { fputs("\033\\\033[24;1H", gpoutfile); } static void REGISlinetype(linetype) int linetype; { static int in_16_map[15 + 2] = { 7, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; static int lt_16_map[15 + 2] = { 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static int in_map[9 + 2] = { 2, 2, 3, 2, 1, 3, 2, 1, 3, 2, 1 }; static int lt_map[9 + 2] = { 1, 4, 1, 1, 1, 4, 4, 4, 6, 6, 6 }; if (!REGIS16color) { if (linetype >= 9) linetype %= 9; fprintf(gpoutfile, "W(I%d)\n", in_map[linetype + 2]); fprintf(gpoutfile, "W(P%d)\n", lt_map[linetype + 2]); } else { if (linetype >= 15) linetype %= 15; fprintf(gpoutfile, "W(I%d)\n", in_16_map[linetype + 2]); fprintf(gpoutfile, "W(P%d)\n", lt_16_map[linetype + 2]); } } # 168 "term/regis.trm" static void REGISmove(x, y) unsigned int x, y; { fprintf(gpoutfile, "P[%d,%d]\n", x, (440 - 1) - y); } static void REGISvector(x, y) unsigned int x, y; { fprintf(gpoutfile, "v[]v[%d,%d]\n", x, (440 - 1) - y); } static void REGISput_text(x, y, str) unsigned int x, y; char *str; { if (REGISang == 1) REGISmove(x - 20 / 2 - 1, y); else REGISmove(x, y + 20 / 2 - 1); (void) _IO_putc ('T', gpoutfile); (void) _IO_putc ('\'', gpoutfile); while (*str) { (void) _IO_putc (*str, gpoutfile); if (*str == '\'') (void) _IO_putc ('\'', gpoutfile); str++; } (void) _IO_putc ('\'', gpoutfile); (void) _IO_putc ('\n', gpoutfile); } static int REGIStext_angle(ang) int ang; { REGISang = ang; if (ang == 1) fputs("T(D90,S1)\n", gpoutfile); else fputs("T(D0,S1)\n", gpoutfile); return 1; } static void REGISreset() { fputs("\033[2J\033[24;1H", gpoutfile); } static void REGISoptions() { int i = 0; struct value a; if (!(c_token >= num_tokens || equals(c_token,";"))) { i = (int) real(const_express(&a)); } REGIS16color = (i == 16); sprintf(term_options, "%s", REGIS16color ? "16" : "4"); } # 235 "term.h" 2 # 1 "term/t410x.trm" 1 # 67 "term/t410x.trm" # 1 "term/driver.h" 1 # 68 "term/t410x.trm" 2 static void T410X_init (void); static void T410X_reset (void); static void T410X_graphics (void); static void T410X_text (void); static void T410X_move (unsigned int x, unsigned int y); static void T410X_vector (unsigned int x, unsigned int y); static void T410X_point (unsigned int x, unsigned int y, int number); static void T410X_linetype (int linetype); static void T410X_put_text (unsigned int x, unsigned int y, char str[]); static int T410X_text_angle (int ang); # 95 "term/t410x.trm" void T410X_encode_x_y (unsigned int x, unsigned int y); void T410X_encode_int (int number); static int T410X_angle = 0; static void T410X_init() { fputs("\033%%!0\033MN0\033MCB7C;\033MQ1\033MT1", gpoutfile); fputs("\033MG1\033RK!\033SK!\033LZ\033%%!1", gpoutfile); # 117 "term/t410x.trm" (void) fflush(gpoutfile); } static void T410X_reset() { fputs("\033%%!0\033LZ\033%%!1", gpoutfile); (void) fflush(gpoutfile); } static void T410X_graphics() { fputs("\033%%!0\033\014\033LV0", gpoutfile); (void) fflush(gpoutfile); } static void T410X_text() { fputs("\033LV1\033%%!1", gpoutfile); (void) fflush(gpoutfile); } static void T410X_move(x, y) unsigned int x, y; { fputs("\033LF", gpoutfile); (void) T410X_encode_x_y(x, y); (void) fflush(gpoutfile); } static void T410X_vector(x, y) unsigned int x, y; { fputs("\033LG", gpoutfile); (void) T410X_encode_x_y(x, y); (void) fflush(gpoutfile); } static void T410X_point(x, y, number) unsigned int x, y; int number; { fputs("\033MM", gpoutfile); (void) T410X_encode_int(( (number) > (0) ? (number) : (0) ) % 11); fputs("\033LH", gpoutfile); (void) T410X_encode_x_y(x, y); (void) fflush(gpoutfile); } static void T410X_linetype(linetype) int linetype; { switch (linetype) { case -1: fputs("\033ML5", gpoutfile); break; case -2: fputs("\033ML?", gpoutfile); break; default: fputs("\033ML", gpoutfile); (void) T410X_encode_int(linetype % 14 + 2); break; } fputs("\033MV", gpoutfile); (void) T410X_encode_int(( (linetype) > (0) ? (linetype) : (0) ) % 8); (void) fflush(gpoutfile); } static void T410X_put_text(x, y, str) unsigned int x, y; char str[]; { if (T410X_angle == 0) { (void) T410X_move(x, y - 71 / 2 + 6); fputs("\033MR00", gpoutfile); } else { (void) T410X_move(x + 51 / 2 - 6, y); fputs("\033MRE:0", gpoutfile); } (void) fputs("\033LT", gpoutfile); (void) T410X_encode_int(strlen(str)); (void) fputs(str, gpoutfile); (void) fflush(gpoutfile); } static int T410X_text_angle(ang) int ang; { T410X_angle = ang; return (1); } void T410X_encode_x_y(x, y) unsigned int x, y; { static char chix = 0, chiy = 0, cloy = 0, ceb = 0; register unsigned int hix, lox, hiy, loy, eb, lx, ly; lx = (x <= 4095) ? x : 4095; ly = (y <= 3131) ? y : 3131; hix = lx / 128 + 32; lox = (lx / 4) % 32 + 64; hiy = ly / 128 + 32; loy = (ly / 4) % 32 + 96; eb = (ly % 4) * 4 + lx % 4 + 96; if (chiy != hiy) (void) _IO_putc (hiy, gpoutfile); if (ceb != eb) (void) _IO_putc (eb, gpoutfile); if ((cloy != loy) || (ceb != eb) || (chix != hix)) (void) _IO_putc (loy, gpoutfile); if (chix != hix) (void) _IO_putc (hix, gpoutfile); (void) _IO_putc (lox, gpoutfile); chix = hix; chiy = hiy; cloy = loy; ceb = eb; } void T410X_encode_int(number) int number; { register unsigned int mag, hi1, hi2, lo; mag = ((number) >= 0 ? (number) : -(number)); hi1 = mag / 1024 + 64; hi2 = (mag / 16) % 64 + 64; lo = mag % 16 + 32; if (number >= 0) lo += 16; if (hi1 != 64) (void) _IO_putc (hi1, gpoutfile); if ((hi2 != 64) || (hi1 != 64)) (void) _IO_putc (hi2, gpoutfile); (void) _IO_putc (lo, gpoutfile); } # 238 "term.h" 2 # 1 "term/tek.trm" 1 # 62 "term/tek.trm" # 1 "term/driver.h" 1 # 63 "term/tek.trm" 2 # 82 "term/tek.trm" static void TEK40init (void); static void TEK40graphics (void); static void TEK40text (void); static void TEK40linetype (int linetype); static void TEK40move (unsigned int x, unsigned int y); static void TEK40vector (unsigned int x, unsigned int y); static void TEK40put_text (unsigned int x, unsigned int y, char str[]); static void TEK40reset (void); static void BG_text (void); static void BG_put_text (unsigned int x, unsigned int y, char str[]); static void KTEK40graphics (void); static void KTEK40Ctext (void); static void KTEK40Clinetype (int linetype); static void KTEK40Mlinetype (int linetype); static void KTEK40reset (void); static void SEL_init (void); static void SEL_graphics (void); static void SEL_text (void); static void SEL_reset (void); static void VTTEK40init (void); static void VTTEK40reset (void); static void VTTEK40linetype (int linetype); static void VTTEK40put_text (unsigned int x, unsigned int y, char str[]); static void CTEK_linetype (int linetype); static void CTEK_move (unsigned int x, unsigned int y); static void CTEK_vector (unsigned int x, unsigned int y); # 136 "term/tek.trm" static void TEK40init() { } static void TEK40graphics() { fputs("\033\014", gpoutfile); (void) fflush(gpoutfile); sleep(1); } static void TEK40text() { TEK40move(0, 12); fputs("\037", gpoutfile); } static void TEK40linetype(linetype) int linetype; { } static void TEK40move(x, y) unsigned int x, y; { (void) _IO_putc ('\035', gpoutfile); TEK40vector(x, y); } static void TEK40vector(x, y) unsigned int x, y; { (void) _IO_putc ((0x20 | (y & (31<<5)) >> 5), gpoutfile); (void) _IO_putc ((0x60 | (y & 31)), gpoutfile); (void) _IO_putc ((0x20 | (x & (31<<5)) >> 5), gpoutfile); (void) _IO_putc ((0x40 | (x & 31)), gpoutfile); } static void TEK40put_text(x, y, str) unsigned int x, y; char str[]; { TEK40move(x, y - 11); fprintf(gpoutfile, "\037%s\n", str); } static void TEK40reset() { } # 241 "term/tek.trm" static void BG_text() { TEK40move(0, 1024 - 2 * 16); fputs("\037", gpoutfile); } static void BG_put_text(x, y, str) unsigned int x, y; char str[]; { TEK40move(x, y - 11); fprintf(gpoutfile, "\037%s\n", str); } # 275 "term/tek.trm" static void KTEK40graphics() { fputs("\033\014", gpoutfile); } static void KTEK40Ctext() { TEK40text(); KTEK40Clinetype(0); } static char *kermit_color[15] = {"\033[0;37m", "\033[1;30m", "\033[0;32m", "\033[0;36m", "\033[0;31m", "\033[0;35m", "\033[1;34m", "\033[1;33m", "\033[1;31m", "\033[1;37m", "\033[1;35m", "\033[1;32m", "\033[1;36m", "\033[0;34m", "\033[0;33m"}; static void KTEK40Clinetype(linetype) int linetype; { if (linetype >= 13) linetype %= 13; fprintf(gpoutfile, "%s", kermit_color[linetype + 2]); } static char *kerm_linetype = "`a`abcde"; static void KTEK40Mlinetype(linetype) int linetype; { if (linetype >= 6) linetype %= 6; fprintf(gpoutfile, "\033%c", kerm_linetype[linetype + 2]); } static void KTEK40reset() { fputs("\030\n", gpoutfile); } # 346 "term/tek.trm" static void SEL_init() { fputs("\033\062", gpoutfile); } static void SEL_graphics() { fputs("\033[H\033[J\033\061\033\014", gpoutfile); # 366 "term/tek.trm" } static void SEL_text() { TEK40move(0, 12); fputs("\033\062", gpoutfile); } static void SEL_reset() { fputs("\033\061\033\012\033\062\033[H\033[J", gpoutfile); } static void VTTEK40init() { fputs("\033[?38h", gpoutfile); fflush(gpoutfile); sleep(1); } static void VTTEK40reset() { fputs("\033[?38l", gpoutfile); fflush(gpoutfile); sleep(1); } static char *vt_linetype = "`a`abcdhijkl"; static int last_vt_linetype = 0; static void VTTEK40linetype(linetype) int linetype; { if (linetype >= 10) linetype %= 10; fprintf(gpoutfile, "\033%c", vt_linetype[linetype + 2]); last_vt_linetype = linetype; } static void VTTEK40put_text(x, y, str) unsigned int x, y; char str[]; { int linetype; linetype = last_vt_linetype; VTTEK40linetype(0); TEK40put_text(x, y, str); VTTEK40linetype(linetype); } # 471 "term/tek.trm" static void CT_solid_vector (int x, int y); static void CT_draw_vpoint (int x, int y, int last); static void CT_pattern_vector (int x1, int y1); static unsigned long CT_lines[] = {0xffffffff, 0x000fffff, 0x00ff00ff, 0x00f00fff, 0x00f07fff, 0x07070707, 0x07ff07ff, 0x070707ff}; static unsigned long *CT_pattern = &CT_lines[0]; static int CT_last_linetype = 0, CT_last_x, CT_last_y; static void CTEK_linetype(linetype) int linetype; { if (linetype < 0) linetype = 0; linetype %= (sizeof(CT_lines) / sizeof(unsigned long)); CT_pattern = &CT_lines[linetype]; CT_last_linetype = linetype; } static void CTEK_move(x, y) unsigned int x; unsigned int y; { TEK40move(x, y); CT_last_x = x; CT_last_y = y; } static void CT_solid_vector(x, y) int x; int y; { TEK40vector(x, y); CT_last_x = x; CT_last_y = y; } static int CT_penon = 0; static void CT_draw_vpoint(x, y, last) int x; int y; int last; { static int xx0, yy0, xx1, yy1; if ((*CT_pattern) & 1) { if (CT_penon) { xx1 = x; yy1 = y; } else { xx0 = xx1 = x; yy0 = yy1 = y; CT_penon = 1; } *CT_pattern = ((*CT_pattern) >> 1) | 0x80000000; if (last) { TEK40move(xx0, yy0); TEK40vector(xx1, yy1); CT_penon = 0; } } else { if (CT_penon) { TEK40move(xx0, yy0); TEK40vector(xx1, yy1); CT_penon = 0; } *CT_pattern = (*CT_pattern) >> 1; } } static void CT_pattern_vector(x1, y1) int x1; int y1; { int op; int x0 = CT_last_x; int y0 = CT_last_y; int dx = x1 - x0; int dy = y1 - y0; int ax = ((dx) >= 0 ? (dx) : -(dx)) << 1; int ay = ((dy) >= 0 ? (dy) : -(dy)) << 1; int sx = (((dx) >= 0)? 1:-1); int sy = (((dy) >= 0)? 1:-1); if (ax >= ay) { for (op = ay - (ax >> 1); x0 != x1; x0 += sx, op += ay) { CT_draw_vpoint(x0, y0, 0); if (op > 0 || (op == 0 && sx == 1)) { op -= ax; y0 += sy; } } } else { for (op = ax - (ay >> 1); y0 != y1; y0 += sy, op += ax) { CT_draw_vpoint(x0, y0, 0); if (op > 0 || (op == 0 && sy == 1)) { op -= ay; x0 += sx; } } } CT_draw_vpoint(x0, y0, 1); CT_last_x = x1; CT_last_y = y1; } static void CTEK_vector(x, y) unsigned int x; unsigned int y; { if (CT_last_linetype <= 0) CT_solid_vector(x, y); else CT_pattern_vector(x, y); } # 241 "term.h" 2 # 1 "term/xlib.trm" 1 # 47 "term/xlib.trm" # 1 "term/driver.h" 1 # 48 "term/xlib.trm" 2 static void Xlib_init (void); static void Xlib_graphics (void); static void Xlib_text (void); static void Xlib_reset (void); static void Xlib_move (unsigned int x, unsigned int y); static void Xlib_vector (unsigned int x, unsigned int y); static void Xlib_linetype (int lt); static void Xlib_put_text (unsigned int x, unsigned int y, char str[]); static int Xlib_justify_text (enum JUSTIFY mode); # 79 "term/xlib.trm" static void Xlib_init() { } static void Xlib_graphics() { fputs("G\n", gpoutfile); } static void Xlib_text() { fputs("E\n", gpoutfile); fflush(gpoutfile); } static void Xlib_reset() { fputs("R\n", gpoutfile); fflush(gpoutfile); } static void Xlib_move(x, y) unsigned int x, y; { fprintf(gpoutfile, "M%04d%04d\n", x, y); } static void Xlib_vector(x, y) unsigned int x, y; { fprintf(gpoutfile, "V%04d%04d\n", x, y); } static void Xlib_linetype(lt) int lt; { fprintf(gpoutfile, "L%04d\n", lt); } static void Xlib_put_text(x, y, str) unsigned int x, y; char str[]; { fprintf(gpoutfile, "T%04d%04d%s\n", x, y, str); } static int Xlib_justify_text(mode) enum JUSTIFY mode; { fprintf(gpoutfile, "J%04d\n", mode); return (1); } # 244 "term.h" 2 # 253 "term.h" # 1 "term/x11.trm" 1 # 40 "term/x11.trm" # 1 "term/driver.h" 1 # 41 "term/x11.trm" 2 int X11_args (int argc, char *argv[]); static void X11_options (void); static void X11_init (void); static void X11_graphics (void); static void X11_text (void); static void X11_reset (void); static void X11_move (unsigned int x, unsigned int y); static void X11_vector (unsigned int x, unsigned int y); static void X11_linewidth (double lw); static void X11_pointsize (double ps); static void X11_linetype (int lt); static void X11_put_text (unsigned int x, unsigned int y, char str[]); static int X11_justify_text (enum JUSTIFY mode); static void X11_point (unsigned int x, unsigned int y, int number); static void X11_fillbox (int style, unsigned int x, unsigned y, unsigned int width, unsigned int height); # 78 "term/x11.trm" int X11_Display = 0; # 101 "term/x11.trm" static void X11_atexit (void); typedef enum { hasNoArg, hasArg } OptionArg; static struct x11opt { const char *option; OptionArg arg; } X11_opts[] = { { "-mono", hasNoArg }, { "-gray", hasNoArg }, { "-clear", hasNoArg }, { "-tvtwm", hasNoArg }, { "-pointsize", hasArg }, { "-iconic", hasNoArg }, { "-rv", hasNoArg }, { "-reverse", hasNoArg }, { "+rv", hasNoArg }, { "-synchronous", hasNoArg }, { "-display", hasArg }, { "-geometry", hasArg }, { "-bg", hasArg }, { "-background", hasArg }, { "-bd", hasArg }, { "-bordercolor", hasArg }, { "-bw", hasArg }, { "-borderwidth", hasArg }, { "-fg", hasArg }, { "-foreground", hasArg }, { "-fn", hasArg }, { "-font", hasArg }, { "-name", hasArg }, { "-selectionTimeout", hasArg }, { "-title", hasArg }, { "-xnllanguage", hasArg }, { "-xrm", hasArg }, { "-raise", hasNoArg }, { "-noraise", hasNoArg }, { "-persist", hasNoArg } }; static FILE *X11_ipc; static char **xargv = (char **)((void *)0); static char *optvec[2*(sizeof(X11_opts) / sizeof(X11_opts[0]))+1]; static char X11_command[] = "gnuplot_x11"; int X11_args(argc, argv) int argc; char *argv[]; { int nx11 = 0, i = 0, n; xargv = (char **) gp_alloc (argc*sizeof(char *), "<xargv>"); if (!xargv) { fputs ("not enough memory to copy argv - quitting\n", stderr); exit (1); } memcpy (xargv, argv, argc*sizeof(char *)); optvec[i++] = X11_command; while (++argv, ++xargv, --argc > 0) { for (n = 0; n < (sizeof(X11_opts) / sizeof(X11_opts[0])); n++) { if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (*argv) && __builtin_constant_p (X11_opts[n].option) && (__s1_len = strlen (*argv), __s2_len = strlen (X11_opts[n].option), (!((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((X11_opts[n].option) + 1) - (size_t)(const void *)(X11_opts[n].option) == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (*argv), (__const char *) (X11_opts[n].option), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) && (__s1_len = strlen (*argv), __s1_len < 4) ? (__builtin_constant_p (X11_opts[n].option) && ((size_t)(const void *)((X11_opts[n].option) + 1) - (size_t)(const void *)(X11_opts[n].option) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - ((__const unsigned char *) (__co! nst char *)(X11_opts[n].option))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (X11_opts[n].option); register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) ! (__const char *) (*argv))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (X11_opts[n].option) && ((size_t)(const void *)((X11_opts[n].option) + 1) - (size_t)(const void *)(X11_opts[n].option) == 1) && (__s2_len = strlen (X11_opts[n].option), __s2_len < 4) ? (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - ((__const unsigned char *) (__const char *)(X11_opts[n].option))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - ((__const unsigned char *) (__const cha! r *) (X11_opts[n].option))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (*argv); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (X11_opts[n].option))[3]); } } __result; }))) : strcmp (*argv, X11_opts[n].option)))); }) == 0) { optvec[i++] = *xargv; if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (*argv) && __builtin_constant_p ("-display") && (__s1_len = strlen (*argv), __s2_len = strlen ("-display"), (!((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-display") + 1) - (size_t)(const void *)("-display") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (*argv), (__const char *) ("-display"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) && (__s1_len = strlen (*argv), __s1_len < 4) ? (__builtin_constant_p ("-display") && ((size_t)(const void *)(("-display") + 1) - (size_t)(const void *)("-display") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - ((__const unsigned char *) (__const char *)("-display"))[0]); if (__s1_len > 0 && __result =! = 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - ((__const unsigned char *) (__const char *) ("-display"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - ((__const unsigned char *) (__const char *) ("-display"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - ((__const unsigned char *) (__const char *) ("-display"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-display"); register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const un! signed char *) (__const char *) (*argv))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-display") && ((size_t)(const void *)(("-display") + 1) - (size_t)(const void *)("-display") == 1) && (__s2_len = strlen ("-display"), __s2_len < 4) ? (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - ((__const unsigned char *) (__const char *)("-display"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - ((__const unsigned char *) (__const char *) ("-display"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - ((__const unsigned char *) (__const char *) ("-display"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - ((__const unsigned ! char *) (__const char *) ("-display"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (*argv); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-display"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-display"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("-display"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("-display"))[3]); } } __result; }))) : strcmp (*argv, "-display")))); }) == 0) X11_Display++; if (X11_opts[n].arg == hasArg) { if (--argc <= 0) return nx11; optvec[i++] = *++xargv, ++argv; nx11++; } nx11++; break; } } if (n == (sizeof(X11_opts) / sizeof(X11_opts[0]))) break; } return (nx11); } static unsigned int X11_plot_number; static void X11_options() { if (almost_equals(c_token, "res$et")) { X11_atexit (); ++c_token; } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; X11_plot_number = (int) real(const_express(&a)); } sprintf(term_options, "%d", X11_plot_number); } # 240 "term/x11.trm" static void X11_atexit () { if (X11_ipc) { fputs("R\n", X11_ipc); fclose(X11_ipc); X11_ipc = ((void *)0); } } static void X11_init() { static int been_here = 0; if (!X11_ipc) { int fdes[2]; if (pipe(fdes)) perror("pipe() failed:"); if (fork() == 0) { close(fdes[1]); dup2(fdes[0], 0); execvp(X11_command, optvec); perror("exec failed"); exit(1); } close(fdes[0]); X11_ipc = fdopen(fdes[1], "w"); } if (!been_here) { atexit(X11_atexit); been_here++; } } static void X11_reset() { } # 529 "term/x11.trm" static void X11_graphics() { ; fprintf(X11_ipc, "G%d\n",X11_plot_number); } static void X11_text() { fprintf(X11_ipc, "E\n"); fflush(X11_ipc); ; } static void X11_move(x, y) unsigned int x, y; { fprintf(X11_ipc, "M%04d%04d\n",x,y); } static void X11_vector(x, y) unsigned int x, y; { fprintf(X11_ipc, "V%04d%04d\n",x,y); } static void X11_pointsize(ps) double ps; { fprintf(X11_ipc, "P7%04d%04d\n",(int) (term->h_tic * ps * 0.5),(int) (term->v_tic * ps * 0.5)); } static void X11_linewidth(lw) double lw; { fprintf(X11_ipc, "W%04d\n",(int) lw); } static void X11_linetype(lt) int lt; { fprintf(X11_ipc, "L%04d\n",lt); } static void X11_put_text(x, y, str) unsigned int x, y; char str[]; { if (x < 10000 && y < 10000) { fprintf(X11_ipc, "T%04d%04d%s\n",x,y,str); } } static int X11_justify_text(mode) enum JUSTIFY mode; { fprintf(X11_ipc, "J%04d\n",mode); return (1); } static void X11_point(x, y, number) unsigned int x, y; int number; { if (number >= 0) number %= 6; number += 1; fprintf(X11_ipc, "P%01d%04d%04d\n",number,x,y); } static void X11_fillbox(style, x, y, w, h) int style; unsigned int x, y, w, h; { fprintf(X11_ipc, "F%04d%04u%04u%04u%04u\n",style,x,y,w,h); } # 254 "term.h" 2 # 1 "term/ai.trm" 1 # 64 "term/ai.trm" # 1 "term/driver.h" 1 # 65 "term/ai.trm" 2 static void AI_init (void); static void AI_graphics (void); static void AI_text (void); static void AI_linetype (int linetype); static void AI_move (unsigned int x, unsigned int y); static void AI_vector (unsigned int x, unsigned int y); static void AI_put_text (unsigned int x, unsigned int y, char *str); static int AI_text_angle (int ang); static void AI_reset (void); static void AI_options (void); static int AI_justify_text (enum JUSTIFY mode); static void AI_suspend (); static void AI_resume (); static int AI_set_font (char *font); # 112 "term/ai.trm" extern char version[]; extern char patchlevel[]; char ai_font[50 + 1] = "Times-Roman"; int ai_fontsize = 14; char ai_oldfont[50 + 1] = "Times-Roman"; int ai_oldfontsize = 14; TBOOLEAN ai_color = 0; TBOOLEAN ai_stroke = 0; int ai_page = 0; int ai_path_count = 0; int ai_ang = 0; int ai_subgroup_level = 0; int ai_multiplot_group = 0; enum JUSTIFY ai_justify = LEFT; static void AI_options() { if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "d$efault")) { ai_color = 0; (__extension__ (__builtin_constant_p ("Times-Roman") ? (((size_t)(const void *)(("Times-Roman") + 1) - (size_t)(const void *)("Times-Roman") == 1) && strlen ("Times-Roman") + 1 <= 8 ? __strcpy_small (ai_font, __extension__ (((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Times-Roman"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Times-Roman"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Times-Ro! man"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[4]), strlen ("Times-Roman") + 1) : (char *) memcpy (ai_font, "Times-Roman", strlen ("Times-Roman") + 1)) : strcpy (ai_font, "Times-Roman"))); ai_fontsize = 14; (__extension__ (__builtin_constant_p ("Times-Roman") ? (((size_t)(const void *)(("Times-Roman") + 1) - (size_t)(const void *)("Times-Roman") == 1) && strlen ("Times-Roman") + 1 <= 8 ? __strcpy_small (ai_oldfont, __extension__ (((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Times-Roman"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Times-Roman"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Times! -Roman"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Times-Roman"))[4]), strlen ("Times-Roman") + 1) : (char *) memcpy (ai_oldfont, "Times-Roman", strlen ("Times-Roman") + 1)) : strcpy (ai_oldfont, "Times-Roman"))); ai_oldfontsize = 14; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "m$onochrome")) { ai_color = 0; c_token++; } else if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) { ai_color = 1; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";")) && isstring(c_token)) { quote_str(ai_font, c_token, 50); (__extension__ (__builtin_constant_p (ai_font) ? (((size_t)(const void *)((ai_font) + 1) - (size_t)(const void *)(ai_font) == 1) && strlen (ai_font) + 1 <= 8 ? __strcpy_small (ai_oldfont, __extension__ (((__const unsigned char *) (__const char *) (ai_font))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (ai_font))[0]), __extension__ (((__const unsigned char *) (__const char *) (ai_font))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (ai_font))[4]), __extension__ (((((__const unsigned char *) (__const char *) (ai_font))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (ai_font))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ai_font))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (ai_font))[0]), __extension__ (((((__const unsigned char *) (__const char *) (ai_font))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (ai_font))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ai_font))[4 + 1]) ! << 8 | ((__const unsigned char *) (__const char *) (ai_font))[4]), strlen (ai_font) + 1) : (char *) memcpy (ai_oldfont, ai_font, strlen (ai_font) + 1)) : strcpy (ai_oldfont, ai_font))); c_token++; } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; ai_fontsize = (int) real(const_express(&a)); ai_oldfontsize = ai_fontsize; c_token++; term->v_char = (unsigned int) (ai_fontsize * (10.0)); term->h_char = (unsigned int) (ai_fontsize * (10.0) * 6 / 10); } sprintf(term_options, "%s \"%s\" %d", ai_color ? "color" : "monochrome", ai_font, ai_fontsize); } static void AI_init() { ai_page = 0; fprintf(gpoutfile, "%%!PS-Adobe-2.0 EPSF-1.2\n%%%%Creator: Adobe Illustrator(TM) 3.2\n%%%%TrueCreator: gnuplot %s patchlevel %s ai terminal\n%%%%BoundingBox: %d %d %d %d\n%%%%Template:\n%%%%EndComments\n%%%%EndProlog\n", version, patchlevel, 50, 50, (int) ((5000) / (10.0) + 0.5 + 50), (int) ((3500) / (10.0) + 0.5 + 50)); } static void AI_graphics() { ai_page++; fputs("0 G\n1 j\n1 J\nu\n", gpoutfile); ai_path_count = 0; ai_stroke = 0; } static void AI_text() { if (ai_stroke) { fputs("S\n", gpoutfile); ai_stroke = 0; } while (ai_subgroup_level) { fputs("U\n", gpoutfile); ai_subgroup_level--; } fputs("U\n", gpoutfile); ai_path_count = 0; ai_multiplot_group = 0; } static void AI_reset() { fputs("%%%%Trailer\n", gpoutfile); } static void AI_linetype(linetype) int linetype; { if (ai_stroke) { fputs("S\n", gpoutfile); ai_stroke = 0; } if (ai_subgroup_level) { fputs("U\n", gpoutfile); ai_subgroup_level--; } if (linetype == -2 && multiplot) { switch (ai_multiplot_group) { case 0: fputs("u\n", gpoutfile); ai_subgroup_level++; ai_multiplot_group = 1; break; case 1: ai_multiplot_group = 2; break; case 2: ai_multiplot_group = 1; fputs("U\nu\n", gpoutfile); break; } } if (linetype == -2 && !multiplot) { if (ai_multiplot_group) { fputs("U\n", gpoutfile); ai_subgroup_level--; ai_multiplot_group = 0; } } fputs("u\n", gpoutfile); ai_subgroup_level++; switch (linetype) { case -2: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0) * 2.0); if (ai_color) { fputs("0 0 0 1 K\n", gpoutfile); } else { fputs("[] 0 d\n", gpoutfile); } break; case -1: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0) / 2.0); if (ai_color) { fputs("0 0 0 1 K\n", gpoutfile); } else { fputs("[1 2] 0 d\n", gpoutfile); } break; case 0: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("1 0 1 0 K\n", gpoutfile); } else { fputs("[] 0 d\n", gpoutfile); } break; case 1: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("1 1 0 0 K\n", gpoutfile); } else { fputs("[4 2] 0 d\n", gpoutfile); } break; case 2: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("0 1 1 0 K\n", gpoutfile); } else { fputs("[2 3] 0 d\n", gpoutfile); } break; case 3: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("0 1 0 0 K\n", gpoutfile); } else { fputs("[1 1.5] 0 d\n", gpoutfile); } break; case 4: fprintf(gpoutfile, "%f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("1 0 0 0 K\n", gpoutfile); } else { fputs("[5 2 1 2] 0 d\n", gpoutfile); } break; case 5: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("0 0 1 0 K\n", gpoutfile); } else { fputs("[4 3 1 3] 0 d\n", gpoutfile); } break; case 6: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("0 0 0 1 K\n", gpoutfile); } else { fputs("[2 2 2 4] 0 d\n", gpoutfile); } break; case 7: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("0 0.7 1 0 K\n", gpoutfile); } else { fputs("[2 2 2 2 2 4] 0 d\n", gpoutfile); } break; case 8: fprintf(gpoutfile, "%.2f w\n", (0.5*(10.0)) / (10.0)); if (ai_color) { fputs("0.5 0.5 0.5 0 K\n", gpoutfile); } else { fputs("[2 2 2 2 2 2 2 4] 0 d\n", gpoutfile); } break; } ai_path_count = 0; } static void AI_move(x, y) unsigned int x, y; { if (ai_stroke) fputs("S\n", gpoutfile); fprintf(gpoutfile, "%.2f %.2f m\n", x / (10.0), y / (10.0)); ai_path_count += 1; ai_stroke = 1; } static void AI_vector(x, y) unsigned int x, y; { fprintf(gpoutfile, "%.2f %.2f l\n", x / (10.0), y / (10.0)); ai_path_count += 1; ai_stroke = 1; if (ai_path_count >= 400) { fprintf(gpoutfile, "S\n%.2f %.2f m\n", x / (10.0), y / (10.0)); ai_path_count = 0; } } static void AI_put_text(x, y, str) unsigned int x, y; char *str; { char ch; if (ai_stroke) { fputs("S\n", gpoutfile); ai_stroke = 0; } switch (ai_justify) { case LEFT: fprintf(gpoutfile, "/_%s %d 0 0 0 z\n", ai_font, ai_fontsize); break; case CENTRE: fprintf(gpoutfile, "/_%s %d 0 0 1 z\n", ai_font, ai_fontsize); break; case RIGHT: fprintf(gpoutfile, "/_%s %d 0 0 2 z\n", ai_font, ai_fontsize); break; } if (ai_ang == 0) { fprintf(gpoutfile, "[ 1 0 0 1 %.2f %.2f] e\n", x / (10.0), y / (10.0) - ai_fontsize / 3.0); } else { fprintf(gpoutfile, "[ 0 1 -1 0 %.2f %.2f] e\n", x / (10.0) - ai_fontsize / 3.0, y / (10.0)); } _IO_putc ('(', gpoutfile); ch = *str++; while (ch != '\0') { if ((ch == '(') || (ch == ')') || (ch == '\\')) _IO_putc ('\\', gpoutfile); _IO_putc (ch, gpoutfile); ch = *str++; } fputs(") t\nT\n", gpoutfile); ai_path_count = 0; } static int AI_text_angle(ang) int ang; { ai_ang = ang; return 1; } static int AI_justify_text(mode) enum JUSTIFY mode; { ai_justify = mode; return 1; } static int AI_set_font(font) char *font; { char name[32]; int size, sep; if (font && *font) { sep = __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (",") && ((size_t)(const void *)((",") + 1) - (size_t)(const void *)(",") == 1) ? ((__r0 = ((__const char *) (","))[0], __r0 == '\0') ? strlen (font) : ((__r1 = ((__const char *) (","))[1], __r1 == '\0') ? __strcspn_c1 (font, __r0) : ((__r2 = ((__const char *) (","))[2], __r2 == '\0') ? __strcspn_c2 (font, __r0, __r1) : (((__const char *) (","))[3] == '\0' ? __strcspn_c3 (font, __r0, __r1, __r2) : strcspn (font, ","))))) : strcspn (font, ",")); }); (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (name, font, sep) : strncpy (name, font, sep)) : strncpy (name, font, sep))); name[sep] = '\0'; size = ai_fontsize; sscanf(&(font[sep + 1]), "%d", &size); if (*name) (__extension__ (__builtin_constant_p (name) ? (((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && strlen (name) + 1 <= 8 ? __strcpy_small (ai_font, __extension__ (((__const unsigned char *) (__const char *) (name))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (name))[0]), __extension__ (((__const unsigned char *) (__const char *) (name))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (name))[4]), __extension__ (((((__const unsigned char *) (__const char *) (name))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (name))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (name))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (name))[0]), __extension__ (((((__const unsigned char *) (__const char *) (name))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (name))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (name))[4 + 1]) << 8 | ((__const unsigned char *) (__const c! har *) (name))[4]), strlen (name) + 1) : (char *) memcpy (ai_font, name, strlen (name) + 1)) : strcpy (ai_font, name))); if (size) ai_fontsize = size; } else { ai_fontsize = ai_oldfontsize; (__extension__ (__builtin_constant_p (ai_oldfont) ? (((size_t)(const void *)((ai_oldfont) + 1) - (size_t)(const void *)(ai_oldfont) == 1) && strlen (ai_oldfont) + 1 <= 8 ? __strcpy_small (ai_font, __extension__ (((__const unsigned char *) (__const char *) (ai_oldfont))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[0]), __extension__ (((__const unsigned char *) (__const char *) (ai_oldfont))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[4]), __extension__ (((((__const unsigned char *) (__const char *) (ai_oldfont))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[0]), __extension__ (((((__const unsigned char *) (__const char *) (ai_oldfont))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[4 + 2]) << 8 | ((__const unsigned char ! *) (__const char *) (ai_oldfont))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (ai_oldfont))[4]), strlen (ai_oldfont) + 1) : (char *) memcpy (ai_font, ai_oldfont, strlen (ai_oldfont) + 1)) : strcpy (ai_font, ai_oldfont))); } return 1; } static void AI_suspend() { } static void AI_resume() { } # 258 "term.h" 2 # 1 "term/cgm.trm" 1 # 54 "term/cgm.trm" # 1 "term/driver.h" 1 # 55 "term/cgm.trm" 2 static void CGM_options (void); static void CGM_init (void); static void CGM_reset (void); static void CGM_text (void); static void CGM_graphics (void); static void CGM_move (unsigned int x, unsigned int y); static void CGM_dashed_vector (unsigned int ux, unsigned int uy); static void CGM_solid_vector (unsigned int ux, unsigned int uy); static void CGM_linetype (int linetype); static void CGM_linecolor (int color); static void CGM_dashtype (int dashtype); static void CGM_linewidth (double width); static void CGM_put_text (unsigned int x, unsigned int y, char *str); static int CGM_text_angle (int ang); static int CGM_justify_text (enum JUSTIFY mode); static void CGM_point (unsigned int x, unsigned int y, int number); static int CGM_find_font (char *font, int numchar); static int CGM_set_font (char *font); static void CGM_set_pointsize (double size); # 115 "term/cgm.trm" # 1 "/usr/include/ctype.h" 1 3 # 116 "term/cgm.trm" 2 # 127 "term/cgm.trm" # 1 "/usr/include/assert.h" 1 3 # 36 "/usr/include/assert.h" 3 # 1 "/usr/include/features.h" 1 3 # 37 "/usr/include/assert.h" 2 3 # 68 "/usr/include/assert.h" 3 extern void __assert_fail (__const char *__assertion, __const char *__file, unsigned int __line, __const char *__function) __attribute__ ((__noreturn__)); extern void __assert_perror_fail (int __errnum, __const char *__file, unsigned int __line, __const char *__function) __attribute__ ((__noreturn__)); extern void __assert (const char *__assertion, const char *__file, int __line) __attribute__ ((__noreturn__)); # 128 "term/cgm.trm" 2 static unsigned int cgm_posx; static unsigned int cgm_posy; static unsigned int cgm_linetype = 1; static unsigned int cgm_dashtype = 0; static unsigned int cgm_color = 0; static int cgm_polyline[104]; static int cgm_coords = 0; enum JUSTIFY cgm_justify = LEFT; static int cgm_vert_text = 0; static int cgm_vert_text_requested = 0; static int cgm_step_sizes[8]; static int cgm_step_index = 0; static int cgm_step = 0; static int cgm_tic, cgm_tic707, cgm_tic866, cgm_tic500, cgm_tic1241, cgm_tic1077, cgm_tic621; static char cgm_font_data[] = {"\005Arial\014Arial Italic\012Arial Bold\021Arial Bold Italic\013Times Roman\022Times Roman Italic\020Times Roman Bold\027Times Roman Bold Italic\011Helvetica\005Roman"}; # 164 "term/cgm.trm" static char cgm_font[32] = "Arial Bold"; static unsigned int cgm_fontsize = 10; static unsigned cgm_linewidth; static unsigned cgm_linewidth_pt = 1; static TBOOLEAN cgm_monochrome = 0; static int cgm_plotwidth = 432; static TBOOLEAN cgm_portrait = 0; static TBOOLEAN cgm_rotate = 1; static TBOOLEAN cgm_dashed = 1; static TBOOLEAN cgm_winword6_mode = 0; static void CGM_flush_polyline (void); static void CGM_flush_polygon (void); static void CGM_write_char_record (int class, int cgm_id, int length, char *data); static void CGM_write_code (int class, int cgm_id, int length); static void CGM_write_int (int value); static void CGM_write_int_record (int class, int cgm_id, int length, int *data); static void CGM_write_mixed_record (int class, int cgm_id, int numint, int *int_data, int numchar, char *char_data); static void CGM_write_byte_record (int class, int cgm_id, int length, char *data); static void CGM_init() { cgm_posx = cgm_posy = 0; cgm_linetype = 0; cgm_vert_text = 0; } static void CGM_graphics() { register struct TERMENTRY *t = term; static int version_data[] = { 1 }; static char description_data[] = "Computer Graphics Metafile version of Gnuplot"; static int vdc_type_data[] = { 0 }; static int integer_precision_data[] = { 16 }; static int real_precision_data[] = { 1, 16, 16 }; static int index_precision_data[] = { 16 }; static int color_precision_data[] = { 16 }; static int color_index_precision_data[] = { 16 }; static int maximum_color_index_data_data[] = { 7 }; static int scaling_mode_data[] = { 0, 0, 0 }; static int color_value_extent_data[] = { 0, 0, 0, 255, 255, 255 }; static int color_table_data[] = { 0, 255, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 0, 255, 0, 255, 0, 255, 255 }; static int color_selection_mode_data[] = { 0 }; static int linewidth_specification_mode_data[] = { 0 }; static int marker_size_specification_mode_data[] = { 0 }; static int vdc_extent_data[] = { 0, 0, 0, 0 }; static int vdc_integer_precision_data[] = { 16 }; static int transparency_data[] = { 1 }; static int clip_indicator_data[] = { 0 }; static int line_type_data[] = { 1 }; static int interior_style_data[] = { 1 }; static int elements_list_data[] = { 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 2, 1, 2, 2, 2, 3, 2, 4, 2, 6, 3, 1, 3, 4, 3, 6, 4, 1, 4, 3, 4, 4, 4, 7, 4, 11, 4, 12, 4, 15, 4, 16, 4, 17, 4, 18, 4, 19, 5, 2, 5, 3, 5, 4, 5, 6, 5, 7, 5, 8, 5, 10, 5, 14, 5, 15, 5, 16, 5, 18, 5, 22, 5, 23, 5, 24, 6, 1, 7, 2 }; if (!outstr) CGM_write_char_record(0, 1, 1, outstr); else CGM_write_char_record(0, 1, strlen(outstr) + 1, outstr); CGM_write_int_record(1, 1, 2, version_data); CGM_write_char_record(1, 2, sizeof(description_data), description_data); CGM_write_int_record(1, 3, 2, vdc_type_data); CGM_write_int_record(1, 4, 2, integer_precision_data); CGM_write_int_record(1, 5, 6, real_precision_data); CGM_write_int_record(1, 6, 2, index_precision_data); CGM_write_int_record(1, 7, 2, color_precision_data); CGM_write_int_record(1, 8, 2, color_index_precision_data); CGM_write_int_record(1, 9, 2, maximum_color_index_data_data); CGM_write_int_record(1, 10, sizeof(color_value_extent_data) / (sizeof(int)/sizeof(short)), color_value_extent_data); elements_list_data[0] = (sizeof(elements_list_data) / (sizeof(int)/sizeof(short)) - 2) / 4; CGM_write_int_record(1, 11, sizeof(elements_list_data) / (sizeof(int)/sizeof(short)), elements_list_data); if (cgm_winword6_mode == 0) CGM_write_byte_record(1, 13, strlen(cgm_font_data), cgm_font_data); CGM_write_char_record(0, 3, 8, "PICTURE1"); CGM_write_int_record(2, 1, 6, scaling_mode_data); CGM_write_int_record(2, 2, 2, color_selection_mode_data); CGM_write_int_record(2, 3, 2, linewidth_specification_mode_data); CGM_write_int_record(2, 4, 2, marker_size_specification_mode_data); vdc_extent_data[2] = t->xmax + (32767/180); vdc_extent_data[3] = t->ymax + (32767/180); CGM_write_int_record(2, 6, 8, vdc_extent_data); CGM_write_int_record(3, 1, 2, vdc_integer_precision_data); CGM_write_int_record(3, 4, sizeof(transparency_data) / (sizeof(int)/sizeof(short)), transparency_data); CGM_write_int_record(3, 6, sizeof(clip_indicator_data) / (sizeof(int)/sizeof(short)), clip_indicator_data); CGM_write_int_record(0, 4, 0, ((void *)0)); if (!cgm_winword6_mode) CGM_write_int_record(5, 34, sizeof(color_table_data) / (sizeof(int)/sizeof(short)), color_table_data); CGM_write_int_record(5, 2, sizeof(line_type_data) / (sizeof(int)/sizeof(short)), line_type_data); cgm_linewidth = cgm_linewidth_pt * ((term->xmax + (32767/180))/cgm_plotwidth); CGM_write_int_record(5, 3, sizeof(cgm_linewidth) / (sizeof(int)/sizeof(short)), (int *) &cgm_linewidth); CGM_linecolor(0); CGM_write_int_record(5, 15, 2, (int *) &t->v_char); CGM_write_int_record(5, 22, 2, interior_style_data); { char buf[45]; sprintf(buf, "%.31s,%d", cgm_font, cgm_fontsize); CGM_set_font(buf); } CGM_set_pointsize(pointsize); } static int CGM_find_font(font, numchar) char *font; int numchar; { int font_index = 1; char *s; for (s = cgm_font_data; s < cgm_font_data + strlen(cgm_font_data); s += (int) *s + 1) { if (numchar == (int) *s && strncasecmp(font, s + 1, numchar - 1) == 0) return font_index; font_index++; } return 0; } static int CGM_set_font(font) char *font; { register struct TERMENTRY *t = term; int size, font_index; char *comma; int sep; comma = (__extension__ (__builtin_constant_p (',') && (',') == '\0' ? (char *) __rawmemchr (font, ',') : strchr (font, ','))); if (comma == ((void *)0)) return 0; sep = comma - font; font_index = CGM_find_font(font, sep); if (font_index == 0) font_index = 1; CGM_write_int_record(5, 10, 2, &font_index); size = cgm_fontsize; sscanf(comma + 1, "%d", &size); if (sep > 31) sep = 31; (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (cgm_font, font, sep) : strncpy (cgm_font, font, sep)) : strncpy (cgm_font, font, sep))); cgm_font[sep] = ('\0'); t->v_char = size * ((term->xmax + (32767/180))/cgm_plotwidth); t->h_char = (t->v_char * 5) / 9; CGM_write_int_record(5, 15, 2, (int *) &t->v_char); return 1; } static void CGM_text() { CGM_flush_polyline(); CGM_write_int_record(0, 5, 0, ((void *)0)); CGM_write_int_record(0, 2, 0, ((void *)0)); } static void CGM_linetype(linetype) int linetype; { ((void) ((linetype >= -2) ? 0 : (__assert_fail ("linetype >= -2", "term/cgm.trm", 411, __PRETTY_FUNCTION__), 0))); if (linetype == cgm_linetype) return; cgm_linetype = linetype; CGM_linecolor(linetype); if (cgm_dashed) { CGM_dashtype(linetype); } else { CGM_dashtype(linetype == -1 ? 2 : 0); } } static void CGM_linecolor(linecolor) int linecolor; { ((void) ((linecolor >= -2) ? 0 : (__assert_fail ("linecolor >= -2", "term/cgm.trm", 430, __PRETTY_FUNCTION__), 0))); linecolor = (linecolor < 1) ? 1 : linecolor % 7 + 1; if (cgm_monochrome || linecolor == cgm_color) return; cgm_color = linecolor; CGM_flush_polyline(); CGM_write_int_record(5, 4, 2, (int *) &cgm_color); CGM_write_int_record(5, 23, 2, (int *) &cgm_color); } static void CGM_linewidth(width) double width; { int new_linewidth; ((void) ((width >= 0) ? 0 : (__assert_fail ("width >= 0", "term/cgm.trm", 446, __PRETTY_FUNCTION__), 0))); new_linewidth = width * cgm_linewidth_pt * ((term->xmax + (32767/180))/cgm_plotwidth); if (new_linewidth == cgm_linewidth) return; cgm_linewidth = new_linewidth; CGM_write_int_record(5, 3, sizeof(cgm_linewidth) / (sizeof(int)/sizeof(short)), (int *) &cgm_linewidth); CGM_dashtype(cgm_dashtype); } static void CGM_dashtype(dashtype) int dashtype; { int i, j; static int dot_length[9 * 8] = { 5, 8, 5, 8, 5, 8, 5, 8, 5, 3, 5, 3, 5, 3, 5, 3, 4, 1, 4, 1, 4, 1, 4, 1, 4, 8, 4, 1, 4, 8, 4, 1, 4, 9, 4, 1, 4, 1, 0, 0, 4, 10, 4, 1, 4, 1, 4, 1, 4, 10, 4, 10, 4, 1, 0, 0, 4, 10, 4, 10, 4, 1, 4, 1}; ((void) ((dashtype >= -2) ? 0 : (__assert_fail ("dashtype >= -2", "term/cgm.trm", 476, __PRETTY_FUNCTION__), 0))); if (dashtype == cgm_dashtype) return; cgm_dashtype = dashtype; CGM_flush_polyline(); if (dashtype >= 9) dashtype = dashtype % 9; if (dashtype < 1) { term->vector = CGM_solid_vector; return; } term->vector = CGM_dashed_vector; j = (dashtype - 1) * 8; for (i = 0; i < 8; i++, j++) { if (dot_length[j]) cgm_step_sizes[i] = (dot_length[j] * cgm_linewidth) * 2 / 3; else cgm_step_sizes[i] = 0; } cgm_step = cgm_step_sizes[1]; cgm_step_index = 1; } static void CGM_move(x, y) unsigned int x, y; { ((void) ((x < term->xmax && y < term->ymax) ? 0 : (__assert_fail ("x < term->xmax && y < term->ymax", "term/cgm.trm", 507, __PRETTY_FUNCTION__), 0))); if (x == cgm_posx && y == cgm_posy) return; CGM_flush_polyline(); cgm_posx = x; cgm_posy = y; } static void CGM_flush_polyline() { if (cgm_coords == 0) return; CGM_write_int_record(4, 1, cgm_coords * 2, cgm_polyline); cgm_coords = 0; } static void CGM_write_char_record(class, cgm_id, numbytes, data) int class, cgm_id, numbytes; char *data; { int i, pad, length; static unsigned char flag = 0xff; static unsigned char paddata = 0; char short_len; pad = 0; length = numbytes + 1; if (numbytes >= 255) length += 2; if (length & 1) pad = 1; CGM_write_code(class, cgm_id, length); if (numbytes < 255) { short_len = (char)numbytes; fwrite(&short_len, 1, 1, gpoutfile); } else { fwrite(&flag, 1, 1, gpoutfile); CGM_write_int(numbytes); } if (data) fwrite(data, 1, numbytes, gpoutfile); else for (i=0; i<numbytes+pad; i++) fputc('\0', gpoutfile); if(pad) fwrite(&paddata, 1, 1, gpoutfile); } static void CGM_write_byte_record(class, cgm_id, numbytes, data) int class, cgm_id, numbytes; char *data; { int pad; static unsigned char paddata = 0; pad = numbytes & 1; CGM_write_code(class, cgm_id, numbytes); fwrite(data, 1, numbytes, gpoutfile); if(pad) fwrite(&paddata, 1, 1, gpoutfile); } static void CGM_write_int_record(class, cgm_id, numbytes, data) int class, cgm_id, numbytes, *data; { int i; ((void) (((numbytes & 1) == 0) ? 0 : (__assert_fail ("(numbytes & 1) == 0", "term/cgm.trm", 576, __PRETTY_FUNCTION__), 0))); CGM_write_code(class, cgm_id, numbytes); numbytes >>= 1; for (i = 0; i < numbytes; i++) CGM_write_int(data[i]); } static void CGM_write_mixed_record(class, cgm_id, numint, int_data, numchar, char_data) int class, cgm_id, numint, *int_data, numchar; char *char_data; { int i, pad, length; static unsigned char paddata = 0; static unsigned char flag = 0xff; char short_len; pad = 0; length = numchar + 1; if (numchar >= 255) length += 2; if (length & 1) pad = 1; CGM_write_code(class, cgm_id, numint * 2 + length); for (i = 0; i < numint; i++) CGM_write_int(int_data[i]); if (numchar < 255) { short_len = (char)numchar; fwrite(&short_len, 1, 1, gpoutfile); } else { fwrite(&flag, 1, 1, gpoutfile); CGM_write_int(numchar); } fwrite(char_data, 1, numchar, gpoutfile); if(pad) fwrite(&paddata, 1, 1, gpoutfile); } # 627 "term/cgm.trm" static void CGM_write_code(class, cgm_id, length) int class, cgm_id, length; { unsigned code; ((void) (((0 <= class) &&(class <16)) ? 0 : (__assert_fail ("(0 <= class) &&(class <16)", "term/cgm.trm", 632, __PRETTY_FUNCTION__), 0))); ((void) (((0 <= cgm_id) && (cgm_id < 128)) ? 0 : (__assert_fail ("(0 <= cgm_id) && (cgm_id < 128)", "term/cgm.trm", 633, __PRETTY_FUNCTION__), 0))); ((void) ((0 <= length) ? 0 : (__assert_fail ("0 <= length", "term/cgm.trm", 634, __PRETTY_FUNCTION__), 0))); if (length < 31) { code = ((class &0x0f) <<12) | ((cgm_id & 0x7f) << 5) | ((length & 0x1f)); CGM_write_int(code); } else { code = ((class &0x0f) <<12) | ((cgm_id & 0x7f) << 5) | 0x1f; CGM_write_int(code); CGM_write_int(length); } } static void CGM_write_int(value) int value; { union { short s; char c[2]; } u; ((void) ((-32768 <= value && value <= 32767) ? 0 : (__assert_fail ("-32768 <= value && value <= 32767", "term/cgm.trm", 658, __PRETTY_FUNCTION__), 0))); u.c[0] = (value >> 8) & 255; u.c[1] = value & 255; fwrite(&u.s, 1, 2, gpoutfile); } static void CGM_dashed_vector(ux, uy) unsigned int ux, uy; { int xa, ya; int dx, dy, adx, ady; int dist; long remain; ((void) ((ux < term->xmax && uy < term->ymax) ? 0 : (__assert_fail ("ux < term->xmax && uy < term->ymax", "term/cgm.trm", 683, __PRETTY_FUNCTION__), 0))); dx = (ux - cgm_posx); dy = (uy - cgm_posy); adx = abs(dx); ady = abs(dy * 10); if (10 * adx < ady) dist = (ady / 2 + 25 * adx / ady * adx / 6 * 5) / 5; else { if (adx == 0) return; dist = (adx * 10 + (ady / 24) * (ady / adx)) / 10; } remain = dist; xa = cgm_posx; ya = cgm_posy; while (remain > cgm_step) { remain -= cgm_step; if (cgm_step_index & 1) CGM_solid_vector((int) (ux - (remain * dx) / dist), (int) (uy - (remain * dy) / dist)); else { xa = (int) (ux - (remain * dx) / dist); ya = (int) (uy - (remain * dy) / dist); CGM_move(xa, ya); } if (++cgm_step_index >= 8) cgm_step_index = 0; cgm_step = cgm_step_sizes[cgm_step_index]; } if (cgm_step_index & 1) CGM_solid_vector(ux, uy); else CGM_move(ux, uy); cgm_step -= (int) remain; } static void CGM_solid_vector(ux, uy) unsigned int ux, uy; { ((void) ((ux < term->xmax && uy < term->ymax) ? 0 : (__assert_fail ("ux < term->xmax && uy < term->ymax", "term/cgm.trm", 728, __PRETTY_FUNCTION__), 0))); if (ux == cgm_posx && uy == cgm_posy) return; if (cgm_coords > 104 - 2) { CGM_flush_polyline(); cgm_polyline[cgm_coords++] = cgm_posx; cgm_polyline[cgm_coords++] = cgm_posy + (32767/180); } else if (cgm_coords == 0) { cgm_polyline[cgm_coords++] = cgm_posx; cgm_polyline[cgm_coords++] = cgm_posy + (32767/180); } cgm_polyline[cgm_coords++] = ux; cgm_polyline[cgm_coords++] = uy + (32767/180); cgm_posx = ux; cgm_posy = uy; } static void CGM_put_text(x, y, str) unsigned int x, y; char str[]; { static int where[3] = { 0, 0, 1 }; int data[4]; char *s = str; while (*s) if (!(__ctype_b[(int) (((int) *s++))] & (unsigned short int) _ISspace)) goto showit; return; showit: if (cgm_vert_text != cgm_vert_text_requested) { cgm_vert_text = cgm_vert_text_requested; if (cgm_vert_text) { data[0] = -term->v_char; data[1] = data[2] = 0; data[3] = term->v_char; } else { data[1] = data[2] = term->v_char; data[0] = data[3] = 0; } CGM_write_int_record(5, 16, 8, data); } CGM_flush_polyline(); where[0] = x; where[1] = y + (32767/180); CGM_write_mixed_record(4, 4, 3, where, strlen(str), str); cgm_posx = cgm_posy = -2000; } static int CGM_text_angle(ang) int ang; { if (cgm_rotate) { cgm_vert_text_requested = ang; return 1; } return ang ? 0 : 1; } static int CGM_justify_text(mode) enum JUSTIFY mode; { static int data[6] = { 1, 3, 0, 0, 0, 0 }; switch (mode) { case LEFT: data[0] = 1; break; case CENTRE: data[0] = 2; break; case RIGHT: data[0] = 3; break; default: ((void) ((0) ? 0 : (__assert_fail ("0", "term/cgm.trm", 805, __PRETTY_FUNCTION__), 0))); } CGM_write_int_record(5, 18, 12, data); return (1); } static void CGM_reset() { cgm_posx = cgm_posy = 0; } static void CGM_point(x, y, number) unsigned int x, y; int number; { int old_dashtype; if (number < 0) { CGM_move(x, y); CGM_solid_vector(x + 1, y); return; } number %= 8; CGM_flush_polyline(); old_dashtype = cgm_dashtype; CGM_dashtype(0); switch (number) { case 0: CGM_move(x - cgm_tic, y); CGM_solid_vector(x, y - cgm_tic); CGM_solid_vector(x + cgm_tic, y); CGM_solid_vector(x, y + cgm_tic); CGM_flush_polygon(); break; case 1: CGM_move(x - cgm_tic, y); CGM_solid_vector(x + cgm_tic, y); CGM_move(x, y - cgm_tic); CGM_solid_vector(x, y + cgm_tic); break; case 2: CGM_move(x - cgm_tic707, y - cgm_tic707); CGM_solid_vector(x + cgm_tic707, y - cgm_tic707); CGM_solid_vector(x + cgm_tic707, y + cgm_tic707); CGM_solid_vector(x - cgm_tic707, y + cgm_tic707); CGM_flush_polygon(); break; case 3: CGM_move(x - cgm_tic707, y - cgm_tic707); CGM_solid_vector(x + cgm_tic707, y + cgm_tic707); CGM_move(x - cgm_tic707, y + cgm_tic707); CGM_solid_vector(x + cgm_tic707, y - cgm_tic707); break; case 4: CGM_move(x, y + cgm_tic1241); CGM_solid_vector(x - cgm_tic1077, y - cgm_tic621); CGM_solid_vector(x + cgm_tic1077, y - cgm_tic621); CGM_flush_polygon(); break; case 5: CGM_move(x, y - cgm_tic); CGM_solid_vector(x, y + cgm_tic); CGM_move(x + cgm_tic866, y - cgm_tic500); CGM_solid_vector(x - cgm_tic866, y + cgm_tic500); CGM_move(x + cgm_tic866, y + cgm_tic500); CGM_solid_vector(x - cgm_tic866, y - cgm_tic500); break; case 6: CGM_move(x, y - cgm_tic1241); CGM_solid_vector(x - cgm_tic1077, y + cgm_tic621); CGM_solid_vector(x + cgm_tic1077, y + cgm_tic621); CGM_flush_polygon(); break; case 7: CGM_move(x, y - cgm_tic); CGM_solid_vector(x + cgm_tic500, y - cgm_tic866); CGM_solid_vector(x + cgm_tic866, y - cgm_tic500); CGM_solid_vector(x + cgm_tic, y); CGM_solid_vector(x + cgm_tic866, y + cgm_tic500); CGM_solid_vector(x + cgm_tic500, y + cgm_tic866); CGM_solid_vector(x, y + cgm_tic); CGM_solid_vector(x - cgm_tic500, y + cgm_tic866); CGM_solid_vector(x - cgm_tic866, y + cgm_tic500); CGM_solid_vector(x - cgm_tic, y); CGM_solid_vector(x - cgm_tic866, y - cgm_tic500); CGM_solid_vector(x - cgm_tic500, y - cgm_tic866); CGM_flush_polygon(); break; } CGM_dashtype(old_dashtype); } static void CGM_set_pointsize(size) double size; { # 924 "term/cgm.trm" cgm_tic = (size * term->h_tic / 2); cgm_tic707 = cgm_tic * 12 / 17; cgm_tic866 = cgm_tic * 13 / 15; cgm_tic500 = cgm_tic / 2; cgm_tic1241 = cgm_tic * 36 / 29; cgm_tic1077 = cgm_tic * 14 / 13; cgm_tic621 = cgm_tic * 18 / 29; } static void CGM_flush_polygon() { if (cgm_coords == 0) return; CGM_write_int_record(4, 7, cgm_coords * 2, cgm_polyline); cgm_coords = 0; } static void CGM_options() { (__extension__ (__builtin_constant_p ("Arial Bold") ? (((size_t)(const void *)(("Arial Bold") + 1) - (size_t)(const void *)("Arial Bold") == 1) && strlen ("Arial Bold") + 1 <= 8 ? __strcpy_small (cgm_font, __extension__ (((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 2]) << 8 |! ((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4]), strlen ("Arial Bold") + 1) : (char *) memcpy (cgm_font, "Arial Bold", strlen ("Arial Bold") + 1)) : strcpy (cgm_font, "Arial Bold"))); cgm_fontsize = 10; term->v_char = (unsigned int) (cgm_fontsize * ((term->xmax + (32767/180))/cgm_plotwidth)); term->h_char = (unsigned int) (cgm_fontsize * ((term->xmax + (32767/180))/cgm_plotwidth) * 5 / 9); cgm_linewidth_pt = 1; cgm_monochrome = 0; cgm_plotwidth = 6 * 72; cgm_portrait = 0; cgm_rotate = 1; cgm_dashed = 1; cgm_winword6_mode = 0; while (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "p$ortrait")) { cgm_portrait = 1; c_token++; continue; } if (almost_equals(c_token, "la$ndscape")) { cgm_portrait = 0; c_token++; continue; } if (almost_equals(c_token, "de$fault")) { (__extension__ (__builtin_constant_p ("Arial Bold") ? (((size_t)(const void *)(("Arial Bold") + 1) - (size_t)(const void *)("Arial Bold") == 1) && strlen ("Arial Bold") + 1 <= 8 ? __strcpy_small (cgm_font, __extension__ (((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 2]! ) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Arial Bold"))[4]), strlen ("Arial Bold") + 1) : (char *) memcpy (cgm_font, "Arial Bold", strlen ("Arial Bold") + 1)) : strcpy (cgm_font, "Arial Bold"))); cgm_fontsize = 10; term->v_char = (unsigned int) (cgm_fontsize * ((term->xmax + (32767/180))/cgm_plotwidth)); term->h_char = (unsigned int) (cgm_fontsize * ((term->xmax + (32767/180))/cgm_plotwidth) * 5 / 9); cgm_linewidth_pt = 1; cgm_monochrome = 0; cgm_plotwidth = 6 * 72; cgm_portrait = 0; cgm_rotate = 1; cgm_dashed = 1; cgm_winword6_mode = 0; c_token++; continue; } if (almost_equals(c_token, "w$inword6")) { cgm_winword6_mode = 1; c_token++; continue; } if (almost_equals(c_token, "m$onochrome")) { cgm_monochrome = 1; c_token++; continue; } if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) { cgm_monochrome = 0; c_token++; continue; } if (almost_equals(c_token, "r$otate")) { cgm_rotate = 1; c_token++; continue; } if (almost_equals(c_token, "nor$otate")) { cgm_rotate = 0; c_token++; continue; } if (almost_equals(c_token, "da$shed")) { cgm_dashed = 1; c_token++; continue; } if (almost_equals(c_token, "s$olid")) { cgm_dashed = 0; c_token++; continue; } if (almost_equals(c_token, "li$newidth")) { c_token++; if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; cgm_linewidth_pt = (unsigned int) real(const_express(&a)); if (cgm_linewidth_pt > 10000) { fputs("gnuplot(cgm.trm): linewidth out of range\n", stderr); cgm_linewidth_pt = 1; } } continue; } if (almost_equals(c_token, "wid$th")) { c_token++; if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; cgm_plotwidth = (int) real(const_express(&a)); if (cgm_plotwidth < 0 || cgm_plotwidth > 10000) { fputs("gnuplot(cgm.trm): width out of range\n", stderr); cgm_plotwidth = 6 * 72; } } continue; } break; } if (!(c_token >= num_tokens || equals(c_token,";")) && isstring(c_token)) { quote_str(cgm_font, c_token, 50); if (CGM_find_font(cgm_font, strlen(cgm_font)) == 0) { int n; n = strlen(cgm_font); if (n + 1 <= sizeof(cgm_font_data) && n <= 255) { cgm_font_data[0] = n; (__extension__ (__builtin_constant_p (cgm_font) && __builtin_constant_p (n) ? (strlen (cgm_font) + 1 >= ((size_t) (n)) ? (char *) memcpy (cgm_font_data + 1, cgm_font, n) : strncpy (cgm_font_data + 1, cgm_font, n)) : strncpy (cgm_font_data + 1, cgm_font, n))); cgm_font_data[n + 1] = 0; } } c_token++; } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; cgm_fontsize = (int) real(const_express(&a)); term->v_char = (unsigned int) (cgm_fontsize * ((term->xmax + (32767/180))/cgm_plotwidth)); term->h_char = (unsigned int) (cgm_fontsize * ((term->xmax + (32767/180))/cgm_plotwidth) * 5 / 9); } if (cgm_portrait) { term->xmax = 32767/18*13 - (32767/180); term->ymax = 32767 - (32767/180); } else { term->xmax = 32767 - (32767/180); term->ymax = 32767/18*13 - (32767/180); } sprintf(default_font, "%s,%d", cgm_font, cgm_fontsize); sprintf(term_options, "%s %s %s %s %s width %d linewidth %d \"%s\" %d", cgm_portrait ? "portrait" : "landscape", cgm_monochrome ? "monochrome" : "color", cgm_rotate ? "rotate" : "norotate", cgm_dashed ? "dashed" : "solid", cgm_winword6_mode ? "winword6" : "", cgm_plotwidth, cgm_linewidth_pt, cgm_font, cgm_fontsize); } # 261 "term.h" 2 # 1 "term/corel.trm" 1 # 28 "term/corel.trm" # 1 "term/driver.h" 1 # 29 "term/corel.trm" 2 static void COREL_options (void); static void COREL_init (void); static void COREL_graphics (void); static void COREL_text (void); static void COREL_reset (void); static void COREL_linetype (int linetype); static void COREL_move (unsigned int x, unsigned int y); static void COREL_vector (unsigned int x, unsigned int y); static void COREL_put_text (unsigned int x, unsigned int y, char *str); static int COREL_text_angle (int ang); static int COREL_justify_text (enum JUSTIFY mode); # 59 "term/corel.trm" char corel_font[50 + 1] = "SwitzerlandLight"; int corel_fontsize = 22; TBOOLEAN corel_color = 0; TBOOLEAN corel_stroke = 0; int corel_path_count = 0; int corel_ang = 0; enum JUSTIFY corel_justify = LEFT; # 74 "term/corel.trm" unsigned int corel_xmax = 5960; unsigned int corel_ymax = 7200; float corel_lw = (1.2*(10.0)); static void COREL_options() { struct value a; if (!(c_token >= num_tokens || equals(c_token,";")) && almost_equals(c_token, "def$ault")) { corel_color = 0; (__extension__ (__builtin_constant_p ("SwitzerlandLight") ? (((size_t)(const void *)(("SwitzerlandLight") + 1) - (size_t)(const void *)("SwitzerlandLight") == 1) && strlen ("SwitzerlandLight") + 1 <= 8 ? __strcpy_small (corel_font, __extension__ (((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[4 + ! 3] << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("SwitzerlandLight"))[4]), strlen ("SwitzerlandLight") + 1) : (char *) memcpy (corel_font, "SwitzerlandLight", strlen ("SwitzerlandLight") + 1)) : strcpy (corel_font, "SwitzerlandLight"))); corel_fontsize = 22; corel_lw = (1.2*(10.0)); corel_xmax = 5960; corel_ymax = 7200; c_token++; } if (!(c_token >= num_tokens || equals(c_token,";")) && almost_equals(c_token, "mono$chrome")) { corel_color = 0; c_token++; } else if (!(c_token >= num_tokens || equals(c_token,";")) && (almost_equals(c_token, "color$") || almost_equals(c_token, "colour$"))) { corel_color = 1; c_token++; } if (!(c_token >= num_tokens || equals(c_token,";")) && isstring(c_token)) { quote_str(corel_font, c_token, 50); c_token++; } if (!(c_token >= num_tokens || equals(c_token,";"))) { corel_fontsize = (int) real(const_express(&a)); c_token++; term->v_char = (unsigned int) (corel_fontsize * (10.0)); term->h_char = (unsigned int) (corel_fontsize * (10.0) * 6 / 10); } if (!(c_token >= num_tokens || equals(c_token,";"))) { corel_xmax = (unsigned int) (real(const_express(&a)) * 720); c_token++; if (!(c_token >= num_tokens || equals(c_token,";"))) { corel_ymax = (unsigned int) (real(const_express(&a)) * 720); c_token++; } term->xmax = corel_xmax; term->ymax = corel_ymax; term->v_tic = corel_ymax / 80; term->h_tic = corel_ymax / 80; } if (!(c_token >= num_tokens || equals(c_token,";"))) { corel_lw = real(const_express(&a)) * (10.0); c_token++; } sprintf(term_options, "%s \"%s\" %d,%0.1f,%0.1f,%0.1f", corel_color ? "color" : "monochrome", corel_font, corel_fontsize, corel_xmax / 720.0, corel_ymax / 720.0, corel_lw / (10.0)); } static void COREL_init() { fprintf(gpoutfile, "%%!PS-Adobe-2.0 EPSF-1.2\n%%%%BoundingBox: %d %d %d %d\n%%%%TemplateBox: %d %d %d %d\n%%%%EndComments\n%%%%EndProlog\n%%%%BeginSetup\n%%%%EndSetup\n", 0, 0, (int) ((corel_xmax) / (10.0) + 0.5 + 0), (int) ((corel_ymax) / (10.0) + 0.5 + 0), 0, 0, (int) ((corel_xmax) / (10.0) + 0.5 + 0), (int) ((corel_ymax) / (10.0) + 0.5 + 0)); } static void COREL_graphics() { corel_path_count = 0; corel_stroke = 0; } static void COREL_text() { if (corel_stroke) { fputs("S\n", gpoutfile); corel_stroke = 0; } corel_path_count = 0; } static void COREL_reset() { fputs("%%%%Trailer\n", gpoutfile); } static void COREL_linetype(linetype) int linetype; { if (corel_stroke) { fputs("S\n", gpoutfile); corel_stroke = 0; } switch (linetype) { case -2: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 0 0 1 K\n", gpoutfile); } else { fputs("[] 0 d\n0 j\n0 G\n", gpoutfile); } break; case -1: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 0 0 1 K\n", gpoutfile); } else { fputs("[1 2] 0 d\n0 j\n0 G\n", gpoutfile); } break; case 0: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("1 0 1 0 K\n", gpoutfile); } else { fputs("[] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 1: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("1 1 0 0 K\n", gpoutfile); } else { fputs("[4 2] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 2: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 1 1 0 K\n", gpoutfile); } else { fputs("[2 3] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 3: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 1 0 0 K\n", gpoutfile); } else { fputs("[1 1.5] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 4: fprintf(gpoutfile, "%f w\n", corel_lw / (10.0)); if (corel_color) { fputs("1 0 0 0 K\n", gpoutfile); } else { fputs("[5 2 1 2] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 5: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 0 1 0 K\n", gpoutfile); } else { fputs("[4 3 1 3] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 6: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 0 0 1 K\n", gpoutfile); } else { fputs("[2 2 2 4] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 7: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0 0.7 1 0 K\n", gpoutfile); } else { fputs("[2 2 2 2 2 4] 0 d\n2 j\n0 G\n", gpoutfile); } break; case 8: fprintf(gpoutfile, "%.2f w\n", corel_lw / (10.0)); if (corel_color) { fputs("0.5 0.5 0.5 0 K\n", gpoutfile); } else { fputs("[2 2 2 2 2 2 2 4] 0 d\n2 j\n0 G\n", gpoutfile); } break; } corel_path_count = 0; } static void COREL_move(x, y) unsigned int x, y; { if (corel_stroke) fputs("S\n", gpoutfile); fprintf(gpoutfile, "%0.2f %0.2f m\n", x / (10.0), y / (10.0)); corel_path_count += 1; corel_stroke = 1; } static void COREL_vector(x, y) unsigned int x, y; { fprintf(gpoutfile, "%.2f %.2f l\n", x / (10.0), y / (10.0)); corel_path_count += 1; corel_stroke = 1; if (corel_path_count >= 400) { fprintf(gpoutfile, "S\n%.2f %.2f m\n", x / (10.0), y / (10.0)); corel_path_count = 0; } } static void COREL_put_text(x, y, str) unsigned int x, y; char *str; { char ch; if (corel_stroke) { fputs("S\n", gpoutfile); corel_stroke = 0; } switch (corel_justify) { case LEFT: fprintf(gpoutfile, "/_%s %d %d 0 0 z\n", corel_font, corel_fontsize, corel_fontsize); break; case CENTRE: fprintf(gpoutfile, "/_%s %d %d 0 1 z\n", corel_font, corel_fontsize, corel_fontsize); break; case RIGHT: fprintf(gpoutfile, "/_%s %d %d 0 2 z\n", corel_font, corel_fontsize, corel_fontsize); break; } if (corel_ang == 0) { fprintf(gpoutfile, "[1 0 0 1 %.2f %.2f]e\n0 g\n", x / (10.0), y / (10.0) - corel_fontsize / 3.0); } else { fprintf(gpoutfile, "[0 1 -1 0 %.2f %.2f]e\n0 g\n", x / (10.0) - corel_fontsize / 3.0, y / (10.0)); } _IO_putc ('(', gpoutfile); ch = *str++; while (ch != ('\0')) { if ((ch == '(') || (ch == ')') || (ch == '\\')) _IO_putc ('\\', gpoutfile); _IO_putc (ch, gpoutfile); ch = *str++; } fputs(")t\nT\n", gpoutfile); corel_path_count = 0; } static int COREL_text_angle(ang) int ang; { corel_ang = ang; return 1; } static int COREL_justify_text(mode) enum JUSTIFY mode; { corel_justify = mode; return 1; } # 264 "term.h" 2 # 1 "term/dumb.trm" 1 # 51 "term/dumb.trm" # 1 "term/driver.h" 1 # 52 "term/dumb.trm" 2 static void DUMB_options (void); static void DUMB_init (void); static void DUMB_graphics (void); static void DUMB_text (void); static void DUMB_reset (void); static void DUMB_linetype (int linetype); static void DUMB_move (unsigned int x, unsigned int y); static void DUMB_point (unsigned int x, unsigned int y, int point); static void DUMB_vector (unsigned int x, unsigned int y); static void DUMB_put_text (unsigned int x, unsigned int y, char *str); static void DUMB_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, int head); # 85 "term/dumb.trm" static char *dumb_matrix = ((void *)0); static char *dumb_priority = ((void *)0); static char dumb_pen; static int dumb_x; static int dumb_y; static int dumb_xmax = 79; static int dumb_ymax = 24; static int dumb_feed = 1; static void dumb_set_pixel (int x, int y, int v, int p); static void dumb_set_pixel(x, y, v, p) int x, y, v, p; { if ((unsigned) x <= dumb_xmax && (unsigned) y <= dumb_ymax && p > dumb_priority[dumb_xmax * y + x]) { dumb_matrix[dumb_xmax * y + x] = v; dumb_priority[dumb_xmax * y + x] = p; } } static void DUMB_options() { int x, y; struct value a; if (almost_equals(c_token, "f$eed")) ++c_token, dumb_feed = 1; else if (almost_equals(c_token, "nof$eed")) ++c_token, dumb_feed = 0; if (!(c_token >= num_tokens || equals(c_token,";"))) { x = (int) real(const_express(&a)); if (!(c_token >= num_tokens || equals(c_token,";"))) { y = (int) real(const_express(&a)); dumb_xmax = term->xmax = x; dumb_ymax = term->ymax = y; } } sprintf(term_options, "%sfeed %d %d", dumb_feed ? "" : "no", dumb_xmax, dumb_ymax); } static void DUMB_init() { if (dumb_matrix) free(dumb_matrix); dumb_matrix = gp_alloc((unsigned long) dumb_xmax * dumb_ymax * 2, "dumb terminal"); dumb_priority = dumb_matrix + dumb_xmax * dumb_ymax; } static void DUMB_graphics() { int i; char *pm = dumb_matrix, *pp = dumb_priority; for (i = dumb_xmax * dumb_ymax; i > 0; i--) { *pm++ = ' '; *pp++ = 0; } } static void DUMB_text() { int x, y, l; _IO_putc ('\f', gpoutfile); for (y = dumb_ymax - 1; y >= 0; y--) { for (l = dumb_xmax; l > 0 && dumb_matrix[dumb_xmax*(y)+(l - 1)] == ' '; l--); for (x = 0; x < l; x++) _IO_putc (dumb_matrix[dumb_xmax*(y)+(x)], gpoutfile); if (dumb_feed || y > 0) _IO_putc ('\n', gpoutfile); } fflush(gpoutfile); } static void DUMB_reset() { free(dumb_matrix); dumb_matrix = ((void *)0); } static void DUMB_linetype(linetype) int linetype; { static char pen_type[7] = { '*', '#', '$', '%', '@', '&', '=' }; if (linetype == -2) dumb_pen = '\2'; else if (linetype == -1) dumb_pen = '\1'; else { linetype = linetype % 7; dumb_pen = pen_type[linetype]; } } static void DUMB_move(x, y) unsigned int x, y; { dumb_x = x; dumb_y = y; } static void DUMB_point(x, y, point) unsigned int x, y; int point; { dumb_set_pixel(x, y, point == -1 ? '.' : point % 26 + 'A', 4); } static void DUMB_vector(_x, _y) unsigned int _x, _y; { int x = _x; int y = _y; char pen, pen1; int priority; int delta; if (((y - dumb_y) >= 0 ? (y - dumb_y) : -(y - dumb_y)) > ((x - dumb_x) >= 0 ? (x - dumb_x) : -(x - dumb_x))) { switch (dumb_pen) { case '\1': pen = ':'; pen1 = '+'; priority = 1; break; case '\2': pen = '|'; pen1 = '+'; priority = 2; break; default: pen = dumb_pen; pen1 = dumb_pen; priority = 3; break; } dumb_set_pixel(dumb_x, dumb_y, pen1, priority); for (delta = 1; delta < ((y - dumb_y) >= 0 ? (y - dumb_y) : -(y - dumb_y)); delta++) { dumb_set_pixel(dumb_x + (int) ((double) (x - dumb_x) * delta / ((y - dumb_y) >= 0 ? (y - dumb_y) : -(y - dumb_y)) + 0.5), dumb_y + delta * ((y - dumb_y) >= 0 ? 1 : -1), pen, priority); } dumb_set_pixel(x, y, pen1, priority); } else if (((x - dumb_x) >= 0 ? (x - dumb_x) : -(x - dumb_x)) > ((y - dumb_y) >= 0 ? (y - dumb_y) : -(y - dumb_y))) { switch (dumb_pen) { case '\1': pen = '.'; pen1 = '+'; priority = 1; break; case '\2': pen = '-'; pen1 = '+'; priority = 2; break; default: pen = dumb_pen; pen1 = dumb_pen; priority = 3; break; } dumb_set_pixel(dumb_x, dumb_y, pen1, priority); for (delta = 1; delta < ((x - dumb_x) >= 0 ? (x - dumb_x) : -(x - dumb_x)); delta++) dumb_set_pixel(dumb_x + delta * ((x - dumb_x) >= 0 ? 1 : -1), dumb_y + (int) ((double) (y - dumb_y) * delta / ((x - dumb_x) >= 0 ? (x - dumb_x) : -(x - dumb_x)) + 0.5), pen, priority); dumb_set_pixel(x, y, pen1, priority); } else { switch (dumb_pen) { case '\1': pen = '+'; priority = 1; break; case '\2': pen = '+'; priority = 2; break; default: pen = dumb_pen; priority = 3; break; } for (delta = 0; delta <= ((x - dumb_x) >= 0 ? (x - dumb_x) : -(x - dumb_x)); delta++) dumb_set_pixel(dumb_x + delta * ((x - dumb_x) >= 0 ? 1 : -1), dumb_y + delta * ((y - dumb_y) >= 0 ? 1 : -1), pen, priority); } dumb_x = x; dumb_y = y; } static void DUMB_put_text(x, y, str) unsigned int x, y; char *str; { int length; length = strlen(str); if (x + length > dumb_xmax) x = ( (0) > (dumb_xmax - length) ? (0) : (dumb_xmax - length) ); for (; x < dumb_xmax && *str; x++, str++) dumb_set_pixel(x, y, *str, 5); } static void DUMB_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; int head; { char saved_pen; char saved_x; char saved_y; saved_pen = dumb_pen; saved_x = dumb_x; saved_y = dumb_y; dumb_pen = '>'; dumb_x = sx; dumb_y = sy; DUMB_vector(ex, ey); dumb_pen = saved_pen; dumb_x = saved_x; dumb_y = saved_y; } # 272 "term.h" 2 # 1 "term/dxf.trm" 1 # 55 "term/dxf.trm" # 1 "term/driver.h" 1 # 56 "term/dxf.trm" 2 static void DXF_init (void); static void DXF_graphics (void); static void DXF_text (void); static void DXF_linetype (int linetype); static void DXF_move (unsigned int x, unsigned int y); static void DXF_vector (unsigned int ux, unsigned int uy); static void DXF_put_text (unsigned int x, unsigned int y, char str[]); static int DXF_text_angle (int ang); static int DXF_justify_text (enum JUSTIFY mode); static void DXF_reset (void); # 103 "term/dxf.trm" static unsigned int DXF_posx; static unsigned int DXF_posy; static unsigned int dxf_linetype; enum JUSTIFY dxf_justify = LEFT; static float dxf_angle = 0.0; static char *text_style = "STANDARD"; static char *layer_name[] ={ "0", "1", "2", "3", "4", "5", "6" }; static char *layer_colour[] = { "7", "1", "2", "3", "4", "5", "6" }; static char *layer_lines[] = { "CONTINUOUS", "DASHED", "HIDDEN", "CENTER", "PHANTOM", "DOT", "DASHDOT" }; static TBOOLEAN vector_was_last = 0; static void DXF_init() { DXF_posx = DXF_posy = 0; dxf_linetype = 0; dxf_angle = 0.0; vector_was_last = 0; } static void DXF_graphics() { register struct TERMENTRY *t = term; int i; static char dxfi1[] = "999\n%% GNUPLOT: dxf file for AutoCad\n 0\nSECTION\n 2\nHEADER\n 9\n$EXTMIN\n 10\n0.000\n 20\n0.000\n 9\n$EXTMAX\n 10\n%-6.3f\n 20\n%-6.3f\n 9\n$LIMMIN\n 10\n0.000\n 20\n0.000\n 9\n$LIMMAX\n 10\n%-6.3f\n 20\n%-6.3f\n 9\n$TEXTSTYLE\n 7\n%s\n 9\n$TEXTSIZE\n 40\n%-6.3f\n 9\n$PLINEWID\n 40\n%-6.4f\n 9\n$LTSCALE\n 40\n%-6.3f\n 9\n$COORDS\n 70\n 1\n 9\n$CELTYPE\n 6\nBYLAYER\n 9\n$CLAYER\n 8\n0\n 9\n$CECOLOR\n 62\n %s\n 9\n$MENU\n 1\nacad\n 0\nENDSEC\n 0\nSECTION\n 2\nTABLES\n"; # 165 "term/dxf.trm" static char dxfi2[] = "0\nTABLE\n 2\nLTYPE\n 70\n %d\n0\nLTYPE\n 2\nCONTINUOUS\n 70\n 64\n 3\nSolid line\n 72\n 65\n 73\n 0\n 40\n0.0\n 0\nLTYPE\n 2\nDASHED\n 70\n 64\n 3\n__ __ __ __ __ __ __ __ __ __ __ __ __ __ __\n 72\n 65\n 73\n 2\n 40\n0.75\n 49\n0.5\n 49\n-0.25\n 0\nLTYPE\n 2\nHIDDEN\n 70\n 64\n 3\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n 72\n 65\n 73\n 2\n 40\n0.375\n 49\n0.25\n 49\n-0.125\n 0\nLTYPE\n 2\nCENTER\n 70\n 64\n 3\n____ _ ____ _ ____ _ ____ _ ____ _ ____ _ ____\n 72\n 65\n 73\n 4\n 40\n2.0\n 49\n1.25\n 49\n-0.25\n 49\n0.25\n 49\n-0.25\n 0\nLTYPE\n 2\nPHANTOM\n 70\n 64\n 3\n_____ _ _ _____ _ _ _____ _ _ _____ _ _ ____\n 72\n 65\n 73\n 6\n 40\n2.5\n 49\n1.25\n 49\n-0.25\n 49\n0.25\n 49\n-0.25\n 49\n0.25\n 49\n-0.25\n 0\nLTYPE\n 2\nDOT\n 70\n 64\n 3\n...............................................\n 72\n 65\n 73\n 2\n 40\n0.25\n 49\n0.0\n 49\n-0.25\n 0\nLTYPE\n 2\n! DASHDOT\n 70\n 64\n 3\n__ . __ . __ . __ . __ . __ . __ . __ . __ . __\n 72\n 65\n 73\n 4\n 40\n1.0\n 49\n0.5\n 49\n-0.25\n 49\n0.0\n 49\n-0.25\n 0\nENDTAB\n"; # 192 "term/dxf.trm" fprintf(gpoutfile, dxfi1, t->xmax / 60.0, t->ymax / 60.0, t->xmax / 60.0, t->ymax / 60.0, text_style, (0.7 * (0.026 * (80.0 * 60.0))) / 60.0, 0.0351, (double) 1, layer_colour[0]); fprintf(gpoutfile, dxfi2, 7); fprintf(gpoutfile, " 0\nTABLE\n 2\nLAYER\n 70\n %-d\n", 7); for (i = 1; i <= 7; i++) fprintf(gpoutfile, " 0\nLAYER\n 2\n%s\n 70\n 64\n62\n %s\n 6\n%s\n", layer_name[i - 1], layer_colour[i - 1], layer_lines[i - 1]); fputs(" 0\nENDTAB\n0\nENDSEC\n 0\nSECTION\n 2\nBLOCKS\n 0\nENDSEC\n 0\nSECTION\n 2\nENTITIES\n", gpoutfile); } static void DXF_text() { if (vector_was_last) fputs(" 0\nSEQEND\n", gpoutfile); fputs(" 0\nENDSEC\n 0\nEOF\n", gpoutfile); } static void DXF_linetype(linetype) int linetype; { linetype = ((linetype) >= 0 ? (linetype) : -(linetype)); linetype = linetype % 7; dxf_linetype = linetype; } static void DXF_move(x, y) unsigned int x, y; { DXF_posx = x; DXF_posy = y; if (vector_was_last) fputs(" 0\nSEQEND\n", gpoutfile); vector_was_last = 0; fprintf(gpoutfile, " 0\nPOLYLINE\n 8\n%s\n 66\n 1\n 6\n%s\n 0\nVERTEX\n 8\n%s\n 6\n%s\n 10\n%-6.3f\n 20\n%-6.3f\n 30\n0.000\n", layer_name[dxf_linetype], layer_lines[dxf_linetype], layer_name[dxf_linetype], layer_lines[dxf_linetype], DXF_posx / 60.0, DXF_posy / 60.0); } static void DXF_vector(ux, uy) unsigned int ux, uy; { DXF_posx = ux; DXF_posy = uy; vector_was_last = 1; fprintf(gpoutfile, " 0\nVERTEX\n 8\n%s\n 6\n%s\n 10\n%-6.3f\n 20\n%-6.3f\n 30\n0.000\n", layer_name[dxf_linetype], layer_lines[dxf_linetype], DXF_posx / 60.0, DXF_posy / 60.0); } static void DXF_put_text(x, y, str) unsigned int x, y; char str[]; { int stl; float xleftpos, yleftpos, xrightpos, yrightpos; xleftpos = yleftpos = xrightpos = yrightpos = 1.0; if (str[0] == ('\0')) return; stl = 0; while (str[stl] != ('\0')) ++stl; if (vector_was_last) fputs(" 0\nSEQEND\n", gpoutfile); vector_was_last = 0; fprintf(gpoutfile, " 0\nTEXT\n 8\n%s\n", layer_name[0]); if (dxf_angle != 90.0) { switch (dxf_justify) { case LEFT: xleftpos = (float) x; yleftpos = (float) (y - (0.026 * (80.0 * 60.0)) / 4.0); xrightpos = (float) (x + stl * (0.7 * (0.014 * (120.0 * 60.0)))); yrightpos = yleftpos; break; case RIGHT: xleftpos = (float) (x - stl * (0.7 * (0.014 * (120.0 * 60.0)))); yleftpos = (float) (y - (0.026 * (80.0 * 60.0)) / 4.0); xrightpos = (float) x; yrightpos = yleftpos; break; case CENTRE: xleftpos = (float) (x - stl * (0.7 * (0.014 * (120.0 * 60.0))) / 2.0); yleftpos = (float) (y - (0.026 * (80.0 * 60.0)) / 4.0); xrightpos = (float) x; yrightpos = yleftpos; break; } } else { switch (dxf_justify) { case LEFT: xleftpos = (float) (x + (0.026 * (80.0 * 60.0)) / 4.0); yleftpos = (float) y; xrightpos = xleftpos; yrightpos = (float) (y + stl * (0.7 * (0.014 * (120.0 * 60.0)))); break; case RIGHT: xleftpos = (float) (x + (0.026 * (80.0 * 60.0)) / 4.0); yleftpos = (float) (y - stl * (0.014 * (120.0 * 60.0))); xrightpos = xleftpos; yrightpos = (float) y; break; case CENTRE: xleftpos = (float) (x + (0.026 * (80.0 * 60.0)) / 4.0); yleftpos = (float) (y - stl * (0.7 * (0.014 * (120.0 * 60.0))) / 2.0); xrightpos = xleftpos; yrightpos = (float) y; break; } } fprintf(gpoutfile, " 10\n%-6.3f\n 20\n%-6.3f\n 30\n0.000\n 40\n%-6.3f\n 1\n%s\n 50\n%-6.3f\n 7\n%s\n", xleftpos / 60.0, yleftpos / 60.0, (0.7 * (0.026 * (80.0 * 60.0))) / 60.0, str, dxf_angle, text_style); if (dxf_justify != LEFT) { fprintf(gpoutfile, " 72\n%d\n 11\n%-6.3f\n 21\n%-6.3f\n 31\n0.000\n", dxf_justify, xrightpos / 60.0, yrightpos / 60.0); } } static int DXF_text_angle(ang) int ang; { dxf_angle = 0.0; if (ang == 1) dxf_angle = 90.0; return (1); } static int DXF_justify_text(mode) enum JUSTIFY mode; { dxf_justify = mode; return (1); } static void DXF_reset() { DXF_posx = DXF_posy = 0; } # 275 "term.h" 2 # 1 "term/fig.trm" 1 # 63 "term/fig.trm" # 1 "term/driver.h" 1 # 64 "term/fig.trm" 2 static void FIG_options (void); static void FIG_init (void); static void FIG_graphics (void); static void FIG_text (void); static void FIG_linetype (int linetype); static void FIG_move (unsigned int x, unsigned int y); static void FIG_vector (unsigned int ux, unsigned int uy); static void FIG_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void FIG_put_text (unsigned int x, unsigned int y, char *str); static int FIG_justify_text (enum JUSTIFY mode); static int FIG_text_angle (int ang); static void FIG_pointsize (double arg_pointsize); static void FIG_linewidth (double linewidth); static void FIG_reset (void); static void FIG_lpoint (unsigned int x, unsigned int y, int number); # 1 "term/object.h" 1 # 49 "term/object.h" typedef struct f_point { int x, y; } F_point; typedef struct f_pos { int x, y; } F_pos; typedef struct f_arrow { int type; int style; float thickness; float wid; float ht; } F_arrow; typedef struct f_ellipse { int tagged; int distrib; int type; int style; int thickness; int pen_color; int fill_color; int fill_style; int depth; float style_val; int pen_style; float angle; int direction; struct f_pos center; struct f_pos radiuses; struct f_pos start; struct f_pos end; struct f_ellipse *next; } F_ellipse; typedef struct f_arc { int tagged; int distrib; int type; int style; int thickness; int pen_color; int fill_color; int fill_style; int depth; int pen_style; struct f_arrow *for_arrow; struct f_arrow *back_arrow; int cap_style; float style_val; int direction; struct { float x, y; } center; struct f_pos point[3]; struct f_arc *next; } F_arc; typedef struct f_pic { char file[4095]; int subtype; int flipped; unsigned char *bitmap; int numcols; float hw_ratio; int size_x, size_y; struct f_pos bit_size; int color; int pix_rotation, pix_width, pix_height, pix_flipped; } F_pic; extern char EMPTY_PIC[]; typedef struct f_line { int tagged; int distrib; int type; int style; int thickness; int pen_color; int fill_color; int fill_style; int depth; int pen_style; struct f_arrow *for_arrow; struct f_arrow *back_arrow; int cap_style; struct f_point *points; int join_style; float style_val; int radius; struct f_pic *pic; struct f_line *next; } F_line; typedef struct f_text { int tagged; int distrib; int type; int font; int size; int color; int depth; float angle; int flags; int ascent; int length; int descent; int base_x; int base_y; int pen_style; char *cstring; struct f_text *next; } F_text; # 250 "term/object.h" typedef struct f_control { float lx, ly, rx, ry; struct f_control *next; } F_control; # 263 "term/object.h" typedef struct f_spline { int tagged; int distrib; int type; int style; int thickness; int pen_color; int fill_color; int fill_style; int depth; int pen_style; struct f_arrow *for_arrow; struct f_arrow *back_arrow; int cap_style; struct f_point *points; float style_val; struct f_control *controls; struct f_spline *next; } F_spline; typedef struct f_compound { int tagged; int distrib; struct f_pos nwcorner; struct f_pos secorner; struct f_line *lines; struct f_ellipse *ellipses; struct f_spline *splines; struct f_text *texts; struct f_arc *arcs; struct f_compound *compounds; struct f_compound *next; } F_compound; typedef struct f_linkinfo { struct f_line *line; struct f_point *endpt; struct f_point *prevpt; int two_pts; struct f_linkinfo *next; } F_linkinfo; # 381 "term/object.h" extern F_compound objects; extern F_line *cur_l, *new_l, *old_l; extern F_arc *cur_a, *new_a, *old_a; extern F_ellipse *cur_e, *new_e, *old_e; extern F_text *cur_t, *new_t, *old_t; extern F_spline *cur_s, *new_s, *old_s; extern F_compound *cur_c, *new_c, *old_c; extern F_point *first_point, *cur_point; extern F_linkinfo *cur_links; extern int cur_linewidth; extern int cur_linestyle; extern int cur_joinstyle; extern int cur_capstyle; extern float cur_dashlength; extern float cur_dotgap; extern float cur_styleval; extern int cur_fillcolor, cur_pencolor; extern int cur_fillstyle, cur_penstyle; extern int cur_boxradius; extern int cur_arrowmode; extern int cur_arrowtype; extern int cur_arctype; extern int cur_fontsize; extern int cur_latex_font; extern int cur_ps_font; extern int cur_textjust; extern int cur_textflags; extern float cur_elltextangle; # 93 "term/fig.trm" 2 # 122 "term/fig.trm" enum FIG_poly_stat { FIG_poly_new, FIG_poly_part }; static int FIG_posx; static int FIG_posy; static long FIG_poly_vec_cnt; static int FIG_depth = 10; static int FIG_linedepth = 10; static int FIG_thickness = 1; static int FIG_default_thickness = 1; static double FIG_current_pointsize = 1.; static double FIG_current_linewidth = 1.; static int FIG_poly_vec_max = 999; static enum FIG_poly_stat FIG_polyvec_stat; # 156 "term/fig.trm" static F_point *FIG_points = ((void *)0); static F_line FIG_line; # 168 "term/fig.trm" static int FIG_type; static float FIG_spacing; static int FIG_justify; static float FIG_angle; static int FIG_use_color = 0; static int FIG_is_big = 0; static int FIG_color = (-1); static int FIG_xoff = ((1200)/4); static int FIG_yoff = ((1200)/4); static int FIG_font_s = (10); static int FIG_portrait = 0; static int FIG_inches = 0; static void FIG_poly_clean (enum FIG_poly_stat fig_stat); static void FIG_poly_clean(fig_stat) enum FIG_poly_stat fig_stat; { int i, j; if (fig_stat == FIG_poly_part) { fprintf(gpoutfile, "%d %d %d %d %d %d %d %d %d %9.3f %d %d %d %d %d %ld\n\t", 2, FIG_line.type, FIG_line.style, FIG_line.thickness, FIG_line.pen_color, FIG_line.fill_color, FIG_line.depth, FIG_line.pen_style, FIG_line.fill_style, FIG_line.style_val, FIG_line.join_style, FIG_line.cap_style, FIG_line.radius, 0, 0, FIG_poly_vec_cnt); j = 0; for (i = 0; i < FIG_poly_vec_cnt; i++) { fprintf(gpoutfile, " %d %d", FIG_points[i].x, FIG_points[i].y); if (j++ > 4 && i != FIG_poly_vec_cnt - 1) { fputs("\n\t", gpoutfile); j = 0; } } if (j != 0) { _IO_putc ('\n', gpoutfile); } free(FIG_points); FIG_points = ((void *)0); } FIG_polyvec_stat = FIG_poly_new; } static void FIG_options() { static char *options_list = "expecting monochrome, color, small, big, portrait, landscape,\n \t inches, metric, size <number> <number>, fontsize <number>,\n \t thickness <numer>, depth <number> or pointsmax <number>"; int parse_error = 0; long temp_max; struct value a; unsigned int tmax_t; double xsize_t, ysize_t; FIG_use_color = 0; FIG_is_big = 0; FIG_portrait = 0; FIG_font_s = 0; FIG_default_thickness = 1; xsize_t = ysize_t = 0.; FIG_inches = 1; while (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "mo$nochrome")) { FIG_use_color = 0; c_token++; } else if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) { FIG_use_color = 1; c_token++; } else if (almost_equals(c_token, "sm$all")) { FIG_is_big = 0; c_token++; } else if (almost_equals(c_token, "b$ig")) { FIG_is_big = 1; c_token++; } else if (almost_equals(c_token, "in$ches")) { FIG_inches = 1; c_token++; } else if (almost_equals(c_token, "me$tric")) { FIG_inches = 0; c_token++; } else if (almost_equals(c_token, "por$trait")) { FIG_portrait = 1; c_token++; } else if (almost_equals(c_token, "l$andscape")) { FIG_portrait = 0; c_token++; } else if (almost_equals(c_token, "si$ze")) { c_token++; if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("size: 2 numbers expected", c_token); } else { xsize_t = real(const_express(&a)); if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("size: 2 numbers expected", c_token); xsize_t = 0.; } else { ysize_t = real(const_express(&a)); } if (xsize_t < 2. || ysize_t < 2. || xsize_t > 99. || ysize_t > 99.) { if (xsize_t != 0. || ysize_t != 0.) int_error("size: out of range", c_token); xsize_t = ysize_t = 0.; } } } else if (almost_equals(c_token, "f$ontsize")) { c_token++; if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("fontsize: number expected", c_token); } else { FIG_font_s = (int) real(const_express(&a)); if (FIG_font_s < 5 || FIG_font_s > 36) { int_error("fontsize out of range", c_token - 1); FIG_font_s = 0; } } } else if (almost_equals(c_token, "t$hickness")) { c_token++; if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("thickness: number expected", c_token); } else { FIG_default_thickness = (int) real(const_express(&a)); if (FIG_default_thickness < 1 || FIG_default_thickness > 10) { int_error("thickness out of range", c_token - 1); FIG_default_thickness = 1; } } } else if (almost_equals(c_token, "d$epth")) { c_token++; if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("depth: number expected", c_token); } else { FIG_depth = (int) real(const_express(&a)); if (FIG_depth < 0 || FIG_depth > 99) { int_error("depth out of range", c_token - 1); FIG_depth = 10; } FIG_linedepth = FIG_depth; } } else if (almost_equals(c_token, "poi$ntsmax")) { c_token++; if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("max. points per polyline: number expected", c_token); } else { temp_max = (long) real(const_express(&a)); if ((temp_max > 1) && (temp_max < (99999L + 2))) { FIG_poly_vec_max = temp_max - 1; } else { char t[128]; sprintf(t, "pointsmax: number out of range (2,%ld)", (99999L + 1)); int_error(t, c_token); } } } else { parse_error = 1; int_error(options_list, c_token); } } sprintf(term_options, "%s %s %s %d %s %s %s %d %s %d %s %d", FIG_use_color ? "color" : "monochrome", FIG_is_big ? "big" : "small", "pointsmax", FIG_poly_vec_max + 1, FIG_portrait ? "portrait" : "landscape", FIG_inches ? "inches" : "metric", "fontsize", (FIG_font_s > 0 ? FIG_font_s : (FIG_is_big ? (16) : (10))), "thickness", FIG_default_thickness, "depth", FIG_depth); if (xsize_t > 0. && ysize_t > 0.) { if (xsize_t - (int) xsize_t == 0. && ysize_t - (int) ysize_t == 0.) sprintf(term_options + strlen(term_options), " size %d %d", (int) xsize_t, (int) ysize_t); else sprintf(term_options + strlen(term_options), " size %f %f", xsize_t, ysize_t); } if (!FIG_is_big) { if (FIG_font_s == 0) FIG_font_s = (10); term->xmax = (5 * (1200)); term->ymax = (3 * (1200)); term->v_tic = (5*(1200)/80); term->h_tic = (5*(1200)/80); FIG_xoff = ((1200)/4); FIG_yoff = ((1200)/4); } else { if (FIG_font_s == 0) FIG_font_s = (16); term->xmax = (8 * (1200)); term->ymax = (5 * (1200)); term->v_tic = (7*(1200)/80); term->h_tic = (7*(1200)/80); FIG_xoff = ((1200)/2); FIG_yoff = ((1200)/2); } if (FIG_portrait) { tmax_t = term->xmax; term->xmax = term->ymax; term->ymax = tmax_t; } if (xsize_t > 0. && ysize_t > 0.) { if (FIG_inches) { term->xmax = (unsigned int) (xsize_t * (1200)); term->ymax = (unsigned int) (ysize_t * (1200)); } else { term->xmax = (unsigned int) (xsize_t / 2.54 * (1200)); term->ymax = (unsigned int) (ysize_t / 2.54 * (1200)); } } term->v_char = ((FIG_font_s)*(1200)/72*3/4); term->h_char = (((FIG_font_s)*(1200)/72*3/4)*6/10); FIG_thickness = FIG_default_thickness; if (parse_error) { int_error(options_list, c_token); } } static void FIG_init() { FIG_posx = FIG_posy = 0; FIG_polyvec_stat = FIG_poly_new; FIG_linetype(-1); FIG_justify_text(LEFT); FIG_text_angle(0); FIG_line.tagged = (-1); FIG_line.distrib = (-1); FIG_line.type = 1; FIG_line.style = 0; FIG_line.thickness = FIG_thickness; FIG_line.fill_style = -1; FIG_line.depth = FIG_linedepth; FIG_line.pen_style = 0; FIG_line.for_arrow = ((void *)0); FIG_line.back_arrow = ((void *)0); FIG_line.cap_style = 0; FIG_line.join_style = 0; FIG_line.style_val = 0.0; FIG_line.radius = 0; FIG_line.pic = ((void *)0); FIG_line.next = ((void *)0); fprintf(gpoutfile, "%s\n%s\n%s\n%s\n%d %d\n", "#FIG 3.1", (FIG_portrait?"Portrait":"Landscape"), "Center", (FIG_inches?"Inches":"Metric"), (1200), 2); } static void FIG_graphics() { FIG_posx = FIG_posy = 0; FIG_polyvec_stat = FIG_poly_new; } static void FIG_text() { FIG_poly_clean(FIG_polyvec_stat); FIG_posx = FIG_posy = 0; fflush(gpoutfile); } # 473 "term/fig.trm" static void FIG_linetype(linetype) int linetype; { int last_FIG_type = FIG_type; int last_FIG_spacing = FIG_spacing; int last_FIG_color = FIG_color; int last_FIG_depth = FIG_linedepth; int last_FIG_thickness = FIG_thickness; FIG_linedepth = FIG_depth; FIG_thickness = FIG_current_linewidth * FIG_default_thickness; if (FIG_thickness < 1) FIG_thickness = 1; FIG_color = (-1); if (linetype < -2) linetype = -2; switch (linetype) { case 0: case -2:{ FIG_type = 0; FIG_spacing = 0.0; if (FIG_use_color) FIG_color = 0; break; } case -1:{ FIG_type = 2; FIG_spacing = 4.0; if (FIG_use_color) FIG_color = 0; break; } default:{ FIG_linedepth = FIG_depth + linetype / 1000; linetype %= 1000; if ((FIG_thickness = linetype / 100) == 0) FIG_thickness = FIG_current_linewidth * FIG_default_thickness; if (FIG_thickness < 1) FIG_thickness = 1; linetype %= 100; if (FIG_use_color) { FIG_type = (linetype >= 7); FIG_color = linetype % 7; FIG_spacing = (linetype / 7) * 3; } else { FIG_type = linetype % 2 + 1; FIG_spacing = (linetype + 1) / 2 * 3; } break; } } if (FIG_type != last_FIG_type || FIG_spacing != last_FIG_spacing || FIG_color != last_FIG_color || FIG_linedepth != last_FIG_depth || FIG_thickness != last_FIG_thickness) FIG_poly_clean(FIG_polyvec_stat); } static void FIG_move(x, y) unsigned int x, y; { int last_FIG_posx = FIG_posx; int last_FIG_posy = FIG_posy; FIG_posx = x; FIG_posy = y; if (FIG_posx != last_FIG_posx || FIG_posy != last_FIG_posy) FIG_poly_clean(FIG_polyvec_stat); } static void FIG_vector(ux, uy) unsigned int ux, uy; { int x = ux, y = uy; if (FIG_polyvec_stat != FIG_poly_part) { FIG_line.pen_color = FIG_color; FIG_line.fill_color = FIG_color; FIG_line.style = FIG_type; FIG_line.style_val = FIG_spacing; FIG_line.depth = FIG_linedepth; FIG_line.thickness = FIG_thickness; FIG_poly_vec_cnt = 0; FIG_points = (F_point *) gp_realloc(FIG_points, sizeof(F_point), "FIG_points"); FIG_points[FIG_poly_vec_cnt].x = FIG_xoff + FIG_posx; FIG_points[FIG_poly_vec_cnt].y = term->ymax + FIG_yoff - FIG_posy; FIG_poly_vec_cnt = 1; FIG_polyvec_stat = FIG_poly_part; } FIG_points = (F_point *) gp_realloc(FIG_points, (FIG_poly_vec_cnt + 1) * sizeof(F_point), "FIG_points"); FIG_points[FIG_poly_vec_cnt].x = FIG_xoff + x; FIG_points[FIG_poly_vec_cnt].y = term->ymax + FIG_yoff - y; FIG_poly_vec_cnt++; if (FIG_poly_vec_cnt > FIG_poly_vec_max) FIG_poly_clean(FIG_polyvec_stat); FIG_posx = x; FIG_posy = y; } static void FIG_arrow(sx, sy, ex, ey, head) unsigned int sx, sy; unsigned int ex, ey; TBOOLEAN head; { FIG_poly_clean(FIG_polyvec_stat); fprintf(gpoutfile, "%d %d %d %d %d %d %d %d %d %9.3f %d %d %d %d %d %d\n", 2, FIG_line.type, FIG_line.style, FIG_line.thickness, FIG_line.pen_color, FIG_line.fill_color, FIG_line.depth, FIG_line.pen_style, FIG_line.fill_style, FIG_line.style_val, FIG_line.join_style, FIG_line.cap_style, FIG_line.radius, head ? 1 : 0, 0, 2); if (head) fprintf(gpoutfile, "%d %d %.3f %.3f %.3f\n", 0, 0, 1.0, (double) (term->h_tic / 2 + 1), (double) term->h_tic); fprintf(gpoutfile, "%d %d %d %d\n", FIG_xoff + sx, FIG_yoff + term->ymax - sy, FIG_yoff + ex, FIG_yoff + term->ymax - ey); FIG_posx = ex; FIG_posy = ey; } static void FIG_put_text(x, y, str) unsigned int x, y; char *str; { if (strlen(str) == 0) return; FIG_poly_clean(FIG_polyvec_stat); y -= term->v_char / 2; fprintf(gpoutfile, "%d %d %d %d %d %d %6.3f %6.3f %d %6.3f %6.3f %d %d %s\\001\n", 4, FIG_justify, FIG_color, 0, (-1), (0), (float) FIG_font_s, FIG_angle, 2, (float) term->v_char, (float) term->h_char * strlen(str), FIG_xoff + x, term->ymax + FIG_yoff - y, str); } static int FIG_justify_text(mode) enum JUSTIFY mode; { switch (mode) { case LEFT: FIG_justify = 0; break; case CENTRE: FIG_justify = 1; break; case RIGHT: FIG_justify = 2; break; default: FIG_justify = 0; return (0); break; } return (1); } static int FIG_text_angle(ang) int ang; { if (ang) FIG_angle = 3.141592653589793 / 2.0; else FIG_angle = 0.0; return (1); } static void FIG_lpoint(x, y, number) unsigned int x, y; int number; { FIG_type = 0; if (number % 100 >= 49 && number % 100 < 99) { int r, d, h, xpc, ypc; int line_color, fill_color, fill_style; int cnum, tnum, color, depth; FIG_poly_clean(FIG_polyvec_stat); depth = FIG_linedepth - 1; if (number > 1000) depth = FIG_depth + number / 1000 - 1; number %= 1000; if (depth < 0) depth = 0; if (number < 100) color = FIG_color; else if (FIG_use_color) color = number / 100 - 1; else if (number / 100 >= 7) color = 7; else color = (-1); number %= 100; cnum = (number + 1) % 10; tnum = (number - 49) / 10; if (cnum < 5) line_color = (FIG_use_color ? 0 : (-1)); else line_color = FIG_color; fill_color = color; if (cnum == 0 || cnum == 5) fill_style = -1; else fill_style = (cnum % 5) * 5; xpc = FIG_xoff + x; ypc = term->ymax + FIG_yoff - y; if (tnum == 0) { r = FIG_current_pointsize * term->v_char / 4 + 1; fprintf(gpoutfile, "1 3 %d %d %d %d %d %d %d %6.3f 1 0.000 %d %d %d %d %d %d %d %d\n", FIG_type, FIG_thickness, line_color, fill_color, depth, 0, fill_style, FIG_spacing, xpc, ypc, r, r, xpc, ypc, xpc, ypc - r); } else { fprintf(gpoutfile, "2 3 %d %d %d %d %d %d %d %6.3f 0 0 0 0 0 ", FIG_type, FIG_thickness, line_color, fill_color, depth, 0, fill_style, FIG_spacing); if (tnum == 1) { d = FIG_current_pointsize * term->v_char / 4 + 1; fprintf(gpoutfile, "5\n\t%d %d %d %d %d %d %d %d %d %d\n", xpc - d, ypc - d, xpc - d, ypc + d, xpc + d, ypc + d, xpc + d, ypc - d, xpc - d, ypc - d); } else if (tnum == 2) { d = FIG_current_pointsize * term->v_char / 3 + 1; fprintf(gpoutfile, "5\n\t%d %d %d %d %d %d %d %d %d %d\n", xpc - d, ypc, xpc, ypc + d, xpc + d, ypc, xpc, ypc - d, xpc - d, ypc); } else if (tnum == 3) { d = FIG_current_pointsize * term->v_char / 3 + 1; h = d * 4 / 7; fprintf(gpoutfile, "4\n\t%d %d %d %d %d %d %d %d\n", xpc - d, ypc + h, xpc, ypc - 2 * h, xpc + d, ypc + h, xpc - d, ypc + h); } else if (tnum == 4) { d = FIG_current_pointsize * term->v_char / 3 + 1; h = d * 4 / 7; fprintf(gpoutfile, "4\n\t%d %d %d %d %d %d %d %d\n", xpc - d, ypc - h, xpc, ypc + 2 * h, xpc + d, ypc - h, xpc - d, ypc - h); } } } else do_point(x, y, number); } static void FIG_pointsize(arg_pointsize) double arg_pointsize; { FIG_current_pointsize = arg_pointsize; do_pointsize(arg_pointsize * FIG_font_s / (double) (10)); } static void FIG_linewidth(linewidth) double linewidth; { FIG_current_linewidth = linewidth; } static void FIG_reset() { FIG_poly_clean(FIG_polyvec_stat); FIG_posx = FIG_posy = 0; fflush(gpoutfile); } # 283 "term.h" 2 # 294 "term.h" # 1 "term/hp26.trm" 1 # 55 "term/hp26.trm" # 1 "term/driver.h" 1 # 56 "term/hp26.trm" 2 static void HP26_vector (unsigned int x, unsigned int y); static void HP26_move (unsigned int x, unsigned int y); static void HP26_init (void); static void HP26_graphics (void); static void HP26_text (void); static void HP26_reset (void); static int HP26_text_angle (int ang); static void HP26_put_text (unsigned int x, unsigned int y, char *str); static void HP26_linetype (int linetype); static void HP26_line_and_point (unsigned int x, unsigned int y, int number); # 90 "term/hp26.trm" void HP26_do_point (unsigned int x, unsigned int y, int number); int compact_slope (int xp[], int yp[], int isa_move[], int *sz, double delta); int compact_int (int xp[], int yp[], int isa_move[], int *size); struct _HP26_Buffer_Node *BN_create (int index, int size, int linetype); void BN_delete (struct _HP26_Buffer_Node * the_node); int HP26_flush (struct _HP26_Buffer_Node * the_buff); void HP26_handle_overflow (void); # 1 "term/compact.c" 1 # 44 "term/compact.c" int compact_slope(xp, yp, isa_move, sz, delta) int xp[], yp[], isa_move[]; int *sz; double delta; { int dx, dy, old_size, new_index, i, start; float slope, old_slope; old_size = *sz; new_index = 0; start = 0; if (xp[1] != xp[0]) old_slope = (float) (yp[1] - yp[0]) / (float) (xp[1] - xp[0]); else old_slope = (float) (yp[1] - yp[0]) / (float) (0.00001 + xp[1] - xp[0]); for (i = 2; i < old_size; i++) { dx = xp[i] - xp[i - 1]; dy = yp[i] - yp[i - 1]; if (dx != 0) slope = (float) dy / (float) dx; else slope = (float) dy / ((float) dx + 0.00001); if ((((slope - old_slope) >= 0 ? (slope - old_slope) : -(slope - old_slope)) > delta) || (isa_move[i])) { xp[new_index] = xp[start]; yp[new_index] = yp[start]; isa_move[new_index] = isa_move[start]; new_index++; if (start != i - 1) { xp[new_index] = xp[i - 1]; yp[new_index] = yp[i - 1]; isa_move[new_index] = isa_move[i - 1]; new_index++; } start = i; old_slope = slope; } } xp[new_index] = xp[old_size - 1]; yp[new_index] = yp[old_size - 1]; isa_move[new_index] = isa_move[old_size - 1]; new_index++; *sz = new_index; return (old_size - *sz); } int compact_int(xp, yp, isa_move, size) int xp[], yp[], isa_move[], *size; { int dx, dy, old_dx, old_dy, start, index, i, old_size; start = index = 0; old_dx = xp[1] - xp[0]; old_dy = yp[1] - yp[0]; for (i = 2; i < *size; i++) { dx = xp[i] - xp[i - 1]; dy = yp[i] - yp[i - 1]; if ((((dx - old_dx) >= 0 ? (dx - old_dx) : -(dx - old_dx)) + ((dy - old_dy) >= 0 ? (dy - old_dy) : -(dy - old_dy)) != 0) || (isa_move[i])) { xp[index] = xp[start]; yp[index] = yp[start]; isa_move[index] = isa_move[start]; index++; if (start != i - 1) { xp[index] = xp[i - 1]; yp[index] = yp[i - 1]; isa_move[index] = isa_move[i - 1]; index++; } start = i; old_dx = dx; old_dy = dy; } } xp[index] = xp[*size - 1]; yp[index] = yp[*size - 1]; isa_move[index] = isa_move[*size - 1]; index++; old_size = *size; *size = index; return (old_size - *size); } # 99 "term/hp26.trm" 2 typedef struct _HP26_Buffer_Node { int index; int size; int next; int linetype; int *x; int *y; TBOOLEAN *isa_move; } HP26_Buffer_Node; HP26_Buffer_Node *BN_create(index, size, linetype) int index, size, linetype; { HP26_Buffer_Node *the_node; the_node = (HP26_Buffer_Node *) malloc(sizeof(HP26_Buffer_Node)); the_node->index = index; the_node->linetype = linetype; the_node->size = size; the_node->next = 0; the_node->x = (int *) calloc(the_node->size, sizeof(int)); the_node->y = (int *) calloc(the_node->size, sizeof(int)); the_node->isa_move = (TBOOLEAN *) calloc(the_node->size, sizeof(TBOOLEAN)); if (the_node->x == ((void *)0) || the_node->y == ((void *)0) || the_node->isa_move == ((void *)0)) return (((void *)0)); else return (the_node); } void BN_delete(the_node) HP26_Buffer_Node *the_node; { free(the_node->x); free(the_node->y); free(the_node->isa_move); free(the_node); } HP26_Buffer_Node *HP26_gnu_map[12]; HP26_Buffer_Node *HP26_buff; int HP26_pen_x; int HP26_pen_y; int HP26_angle; int HP26_cursor_x; int HP26_cursor_y; TBOOLEAN HP26_in_text; int HP26_linetype_current; int HP26_reduction_int; int HP26_reduction_slope; int HP26_overflows; int HP26_nop_move; int HP26_nop_vect; int HP26_nop_line; # 176 "term/hp26.trm" char HP26_bin_short_table[32] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/' }; # 191 "term/hp26.trm" char HP26_bin_table[32] = { ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?' }; # 215 "term/hp26.trm" int HP26_flush(the_buff) HP26_Buffer_Node *the_buff; { int i, delta_x, delta_y, half_dx, half_dy; int *buff_x, *buff_y; TBOOLEAN *isa_move; TBOOLEAN bin_short; if (the_buff->next == 0) return (0); buff_x = the_buff->x; buff_y = the_buff->y; isa_move = the_buff->isa_move; if (HP26_in_text) { fputs("\033*dT", gpoutfile); HP26_in_text = 0; } if (HP26_linetype_current != the_buff->linetype && (the_buff->next > 1 || !isa_move[0])) { fprintf(gpoutfile, "\033*m%dB", the_buff->linetype); HP26_linetype_current = the_buff->linetype; } if (the_buff->next > 30 && the_buff->linetype != 11) { HP26_reduction_slope += compact_slope(buff_x, buff_y, isa_move, &(the_buff->next), 0.1); } fputs("\033*p", gpoutfile); delta_x = buff_x[0] - HP26_pen_x; delta_y = buff_y[0] - HP26_pen_y; if (((delta_x>-17)&&(delta_y>-17)&&(delta_x<16)&&(delta_y<16))) { fputc('j', gpoutfile); bin_short = 1; } else { fputc('i', gpoutfile); bin_short = 0; } for (i = 0; i < the_buff->next; i++) { if (i > 0) { delta_x = buff_x[i] - buff_x[i - 1]; delta_y = buff_y[i] - buff_y[i - 1]; } if ((delta_x == 0) && (delta_y == 0)) { if (i > 0 && !isa_move[i - 1] && !isa_move[i]) { HP26_nop_vect++; continue; } else if (isa_move[i]) { HP26_nop_move++; continue; } } else if (i > 0 && i + 1 < the_buff->next && isa_move[i] && isa_move[i + 1]) { HP26_nop_move++; continue; } else if (!((delta_x>-17)&&(delta_y>-17)&&(delta_x<16)&&(delta_y<16)) && i > 0 && i + 2 < the_buff->next && isa_move[i] && !isa_move[i + 1] && isa_move[i + 2] && ((buff_x[i + 1] - buff_x[i - 1]>-17)&&(buff_y[i + 1] - buff_y[i - 1]>-17)&&(buff_x[i + 1] - buff_x[i - 1]<16)&&(buff_y[i + 1] - buff_y[i - 1]<16))) { buff_x[i] ^= buff_x[i + 1]; buff_x[i + 1] ^= buff_x[i]; buff_x[i] ^= buff_x[i + 1];; buff_y[i] ^= buff_y[i + 1]; buff_y[i + 1] ^= buff_y[i]; buff_y[i] ^= buff_y[i + 1];; delta_x = buff_x[i] - buff_x[i - 1]; delta_y = buff_y[i] - buff_y[i - 1]; } if (((delta_x>-17)&&(delta_y>-17)&&(delta_x<16)&&(delta_y<16))) { if (!bin_short) { fputc('j', gpoutfile); bin_short = 1; } if (isa_move[i]) fputc('a', gpoutfile); fputc((HP26_bin_short_table[delta_x+16]), gpoutfile); fputc((HP26_bin_short_table[delta_y+16]), gpoutfile); } else { half_dx = (delta_x + (delta_x > 0 ? 1 : -1)) / 2; half_dy = (delta_y + (delta_y > 0 ? 1 : -1)) / 2; if (bin_short && ((half_dx>-17)&&(half_dy>-17)&&(half_dx<16)&&(half_dy<16))) { if (isa_move[i]) fputc('a', gpoutfile); fputc((HP26_bin_short_table[half_dx+16]), gpoutfile); fputc((HP26_bin_short_table[half_dy+16]), gpoutfile); if (isa_move[i]) fputc('a', gpoutfile); fputc((HP26_bin_short_table[delta_x - half_dx+16]), gpoutfile); fputc((HP26_bin_short_table[delta_y - half_dy+16]), gpoutfile); } else { if (bin_short) { bin_short = 0; fputc('i', gpoutfile); } if (isa_move[i]) fputc('a', gpoutfile); fputc((HP26_bin_table[buff_x[i]>>5]), gpoutfile); fputc((HP26_bin_table[buff_x[i] & 31]), gpoutfile); fputc((HP26_bin_table[buff_y[i]>>5]), gpoutfile); fputc((HP26_bin_table[buff_y[i] & 31]), gpoutfile); } } } fputc('Z', gpoutfile); HP26_pen_x = buff_x[the_buff->next - 1]; HP26_pen_y = buff_y[the_buff->next - 1]; the_buff->next = 0; return (1); } void HP26_handle_overflow() { HP26_Buffer_Node *bigger, *old; int x, y; x = (HP26_buff->x)[HP26_buff->next - 1]; y = (HP26_buff->y)[HP26_buff->next - 1]; HP26_flush(HP26_buff); bigger = BN_create(HP26_buff->index, HP26_buff->size * 2, HP26_buff->linetype); if (bigger != ((void *)0)) { old = HP26_buff; HP26_gnu_map[bigger->index] = bigger; if (bigger->index == 0) { HP26_gnu_map[1] = bigger; HP26_gnu_map[3] = bigger; } HP26_buff = bigger; BN_delete(old); } (HP26_buff->x)[0] = x; (HP26_buff->y)[0] = y; (HP26_buff->isa_move)[0] = 1; HP26_buff->next = 1; HP26_overflows++; } static void HP26_vector(x, y) unsigned int x, y; { if (HP26_buff->next > 2 && x == (HP26_buff->x)[HP26_buff->next - 1] && y == (HP26_buff->y)[HP26_buff->next - 1] && !(HP26_buff->isa_move)[HP26_buff->next - 1]) { HP26_nop_vect++; return; } if (HP26_buff->next == HP26_buff->size) HP26_handle_overflow(); (HP26_buff->x)[HP26_buff->next] = x; (HP26_buff->y)[HP26_buff->next] = y; (HP26_buff->isa_move)[HP26_buff->next] = 0; HP26_buff->next++; } static void HP26_move(x, y) unsigned int x, y; { if (HP26_buff->next > 0) { if (((HP26_buff->x)[HP26_buff->next - 1] == x) && ((HP26_buff->y)[HP26_buff->next - 1] == y)) { HP26_nop_move++; return; } else if ((HP26_buff->isa_move)[HP26_buff->next - 1]) { (HP26_buff->x)[HP26_buff->next - 1] = x; (HP26_buff->y)[HP26_buff->next - 1] = y; HP26_nop_move++; return; } } if (HP26_buff->next == HP26_buff->size) HP26_handle_overflow(); (HP26_buff->x)[HP26_buff->next] = x; (HP26_buff->y)[HP26_buff->next] = y; (HP26_buff->isa_move)[HP26_buff->next] = 1; HP26_buff->next++; return; } static void HP26_init() { HP26_gnu_map[-2 + 2] = BN_create(0, 2048, 7); HP26_gnu_map[-1 + 2] = HP26_gnu_map[-2 + 2]; HP26_gnu_map[0 + 2] = BN_create(2, 3072, 1); HP26_gnu_map[1 + 2] = HP26_gnu_map[-2 + 2]; HP26_gnu_map[2 + 2] = BN_create(4, 1024, 5); HP26_gnu_map[3 + 2] = BN_create(5, 256, 6); HP26_gnu_map[4 + 2] = BN_create(6, 256, 8); HP26_gnu_map[5 + 2] = BN_create(7, 128, 9); HP26_gnu_map[6 + 2] = BN_create(8, 128, 10); HP26_gnu_map[7 + 2] = BN_create(9, 64, 6); HP26_gnu_map[8 + 2] = BN_create(10, 64, 4); HP26_gnu_map[9 + 2] = BN_create(11, 512, 11); HP26_buff = HP26_gnu_map[10]; HP26_linetype_current = 0; HP26_angle = 1; fputs("\033*mp1m2a2Q", gpoutfile); fflush(gpoutfile); } static void HP26_graphics() { fputs("\033*daflsC", gpoutfile); HP26_pen_x = HP26_pen_y = -200; HP26_cursor_x = HP26_cursor_y = 800; HP26_in_text = 1; HP26_reduction_int = 0; HP26_reduction_slope = 0; HP26_nop_move = 0; HP26_nop_vect = 0; HP26_nop_line = 0; HP26_overflows = 0; } static void HP26_text() { int i, j, curr; for (i = 0; i < 12; i++) if ((HP26_gnu_map[i])->linetype == HP26_linetype_current) HP26_flush(HP26_gnu_map[i]); for (i = 0; i < 12; i++) { HP26_flush(HP26_gnu_map[i]); curr = HP26_gnu_map[i]->linetype; for (j = 0; j < 12; j++) if ((HP26_gnu_map[j])->linetype == curr) HP26_flush(HP26_gnu_map[j]); } fputs("\033*deT", gpoutfile); fflush(gpoutfile); # 506 "term/hp26.trm" } static void HP26_reset() { int i; for (i = 2; i < 12; i++) BN_delete(HP26_gnu_map[i]); } static int HP26_text_angle(ang) int ang; { HP26_angle = ang + 1; fprintf(gpoutfile, "\033*m%dN", HP26_angle); return (1); } static void HP26_put_text(x, y, str) unsigned int x, y; char *str; { char abs_str[10], rel_str[10]; if (!strlen(str)) return; else { fputs("\033*d", gpoutfile); if (!HP26_in_text) { fputc('s', gpoutfile); HP26_in_text = 1; } sprintf(rel_str, "%d,%dP", x - HP26_cursor_x, y - HP26_cursor_y); sprintf(abs_str, "%d,%dO", x, y); if (strlen(rel_str) < strlen(abs_str)) fputs(rel_str, gpoutfile); else fputs(abs_str, gpoutfile); fputs(str, gpoutfile); HP26_pen_x = HP26_cursor_x = x; HP26_pen_y = HP26_cursor_y = y; } # 557 "term/hp26.trm" return; } static void HP26_linetype(linetype) int linetype; { if (linetype > 8) linetype %= 9; linetype += 2; if (HP26_gnu_map[linetype] == HP26_buff) { HP26_nop_line++; return; } HP26_buff = HP26_gnu_map[linetype]; } static void HP26_line_and_point(x, y, number) unsigned int x, y; int number; { int line_save, not_solid; line_save = 0; not_solid = (HP26_buff->linetype != 1); if (not_solid) { line_save = HP26_buff->linetype; HP26_linetype(0); } HP26_do_point(x, y, number); if (not_solid) HP26_linetype(line_save); } void HP26_do_point(x, y, number) unsigned int x, y; int number; { int htic, vtic; HP26_Buffer_Node *tmp; vtic = 5 / 2; htic = 5 / 2; if (number < 0) { tmp = HP26_buff; HP26_buff = HP26_gnu_map[11]; HP26_vector(x, y); HP26_buff = tmp; } switch (number % 9) { case 0: HP26_move(x - htic, y - vtic); HP26_vector(x, y + vtic); HP26_vector(x + htic, y - vtic); HP26_vector(x - htic, y - vtic); break; case 1: HP26_move(x - htic, y + vtic); HP26_vector(x, y - vtic); HP26_vector(x + htic, y + vtic); HP26_vector(x - htic, y + vtic); break; case 2: HP26_move(x - htic, y); HP26_vector(x + htic, y + vtic); HP26_vector(x + htic, y - vtic); HP26_vector(x - htic, y); break; case 3: HP26_move(x + htic, y); HP26_vector(x - htic, y + vtic); HP26_vector(x - htic, y - vtic); HP26_vector(x + htic, y); break; case 4: HP26_move(x - htic, y - vtic); HP26_vector(x - htic, y + vtic); HP26_vector(x + htic, y + vtic); HP26_vector(x + htic, y - vtic); HP26_vector(x - htic, y - vtic); break; case 5: HP26_move(x, y + vtic); HP26_vector(x, y - vtic); HP26_move(x - htic, y); HP26_vector(x + htic, y); break; case 6: HP26_move(x + htic, y + vtic); HP26_vector(x - htic, y - vtic); HP26_move(x - htic, y + vtic); HP26_vector(x + htic, y - vtic); break; default: HP26_move(x, y - vtic); HP26_vector(x - htic, y); HP26_vector(x, y + vtic); HP26_vector(x + htic, y); HP26_vector(x, y - vtic); break; } } # 295 "term.h" 2 # 1 "term/hp2648.trm" 1 # 55 "term/hp2648.trm" # 1 "term/driver.h" 1 # 56 "term/hp2648.trm" 2 static void HP2648init (void); static void HP2648graphics (void); static void HP2648text (void); static void HP2648linetype (int linetype); static void HP2648move (unsigned int x, unsigned int y); static void HP2648vector (unsigned int x, unsigned int y); static void HP2648put_text (unsigned int x, unsigned int y, char *str); static int HP2648_text_angle (int ang); static void HP2648reset (void); # 87 "term/hp2648.trm" static void HP2648init() { fprintf(gpoutfile, "\033*m1m1n136,1cZ"); } static void HP2648graphics() { fprintf(gpoutfile, "\033*dacZ"); } static void HP2648text() { } static void HP2648linetype(linetype) int linetype; { static int hpline[] = { 1, 7, 1, 4, 5, 6, 8, 9, 10, 7, 2 }; fprintf(gpoutfile, "\033*m%dbZ", hpline[(linetype + 2) % 11]); } static void HP2648move(x, y) unsigned int x, y; { fprintf(gpoutfile, "\033*paf%d,%dZ", x, y); } static void HP2648vector(x, y) unsigned int x, y; { fprintf(gpoutfile, "\033*pbf%d,%dZ", x, y); } static void HP2648put_text(x, y, str) unsigned int x, y; char *str; { HP2648move(x, y - 12 / 2 + 1); fprintf(gpoutfile, "\033*l%s\n", str); } static int HP2648_text_angle(ang) int ang; { fprintf(gpoutfile, "\033*m%dnZ\n", ang + 1); return 1; } static void HP2648reset() { } # 298 "term.h" 2 # 1 "term/hp500c.trm" 1 # 69 "term/hp500c.trm" # 1 "term/driver.h" 1 # 70 "term/hp500c.trm" 2 static void HP500Coptions (void); static void HP500Cinit (void); static void HP500Creset (void); static void HP500Clinetype (int linetype); static void HP500Cgraphics (void); static void HP500Ctext (void); # 125 "term/hp500c.trm" static int HPcompress (unsigned char *op, unsigned char *oe, unsigned char *cp); static unsigned char HPcomplement (int c); static int HPcompress_to_TIFF (unsigned char *op, unsigned char *oe, unsigned char *cp); static int HPnocompress (unsigned char *op, unsigned char *oe, unsigned char *cp); static int hpdj_dpp = 4; static int HP_COMP_MODE = 0; static unsigned int b_300ppi_pattern[] = { 0xffff, 0x1111, 0xffff, 0x3333, 0x0f0f, 0x3f3f, 0x0fff, 0x00ff, 0x33ff }; static void HP500Coptions() { char opt[6]; while (!(c_token >= num_tokens || equals(c_token,";"))) { if (token[c_token].length > 4) int_error("expecting dots per inch size 75, 100, 150 or 300 and/or compression method", c_token); capture(opt, c_token, c_token, 6); if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("75") && (__s1_len = strlen (opt), __s2_len = strlen ("75"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("75"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("75") && ((size_t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("75"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__co! nst unsigned char *) (__const char *) ("75"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("75"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("75"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("75"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("75") && ((size_t)(! const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) && (__s2_len = strlen ("75"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("75"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("75"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("75"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("75"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (opt); register int __resu! lt = __s1[0] - ((__const unsigned char *) (__const char *) ("75"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("75"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("75"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("75"))[3]); } } __result; }))) : strcmp (opt, "75")))); })) { hpdj_dpp = 4; HP_COMP_MODE = 0; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("100") && (__s1_len = strlen (opt), __s2_len = strlen ("100"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("100"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("100") && ((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("100"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (o! pt))[1] - ((__const unsigned char *) (__const char *) ("100"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("100"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("100"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("100"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ! ("100") && ((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) && (__s2_len = strlen ("100"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("100"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("100"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("100"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("100"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *! ) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("100"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("100"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("100"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("100"))[3]); } } __result; }))) : strcmp (opt, "100")))); })) { hpdj_dpp = 3; HP_COMP_MODE = 0; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("150") && (__s1_len = strlen (opt), __s2_len = strlen ("150"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("150"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("150") && ((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("150"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (o! pt))[1] - ((__const unsigned char *) (__const char *) ("150"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("150"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("150"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("150"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ! ("150") && ((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) && (__s2_len = strlen ("150"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("150"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("150"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("150"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("150"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *! ) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("150"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("150"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("150"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("150"))[3]); } } __result; }))) : strcmp (opt, "150")))); })) { hpdj_dpp = 2; HP_COMP_MODE = 0; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("300") && (__s1_len = strlen (opt), __s2_len = strlen ("300"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("300"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("300") && ((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("300"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (o! pt))[1] - ((__const unsigned char *) (__const char *) ("300"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("300"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("300"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("300"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ! ("300") && ((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) && (__s2_len = strlen ("300"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("300"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("300"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("300"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("300"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *! ) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("300"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("300"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("300"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("300"))[3]); } } __result; }))) : strcmp (opt, "300")))); })) { hpdj_dpp = 1; HP_COMP_MODE = 0; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("rle") && (__s1_len = strlen (opt), __s2_len = strlen ("rle"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("rle") + 1) - (size_t)(const void *)("rle") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("rle"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("rle") && ((size_t)(const void *)(("rle") + 1) - (size_t)(const void *)("rle") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("rle"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (o! pt))[1] - ((__const unsigned char *) (__const char *) ("rle"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("rle"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("rle"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("rle"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ! ("rle") && ((size_t)(const void *)(("rle") + 1) - (size_t)(const void *)("rle") == 1) && (__s2_len = strlen ("rle"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("rle"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("rle"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("rle"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("rle"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *! ) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("rle"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("rle"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("rle"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("rle"))[3]); } } __result; }))) : strcmp (opt, "rle")))); })) { HP_COMP_MODE = 1; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("tiff") && (__s1_len = strlen (opt), __s2_len = strlen ("tiff"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("tiff") + 1) - (size_t)(const void *)("tiff") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("tiff"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("tiff") && ((size_t)(const void *)(("tiff") + 1) - (size_t)(const void *)("tiff") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("tiff"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const c! har *) (opt))[1] - ((__const unsigned char *) (__const char *) ("tiff"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("tiff"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("tiff"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("tiff"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builti! n_constant_p ("tiff") && ((size_t)(const void *)(("tiff") + 1) - (size_t)(const void *)("tiff") == 1) && (__s2_len = strlen ("tiff"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("tiff"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("tiff"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("tiff"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("tiff"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned ch! ar *) (__const char *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("tiff"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("tiff"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("tiff"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("tiff"))[3]); } } __result; }))) : strcmp (opt, "tiff")))); })) { HP_COMP_MODE = 2; } c_token++; } term->xmax = (8*(unsigned int)(xsize*1920/(hpdj_dpp)/8.0+0.9)); term->ymax = (8*(unsigned int)(ysize*1920/(hpdj_dpp)/8.0+0.9)); switch (hpdj_dpp) { case 1: (__extension__ (__builtin_constant_p ("300") ? (((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) && strlen ("300") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("300"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("300"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("300"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("300"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("300"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("300"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("300"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("300"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("300"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("300"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("300"))[4 + 1]) << 8 | ((__const unsigned ch! ar *) (__const char *) ("300"))[4]), strlen ("300") + 1) : (char *) memcpy (term_options, "300", strlen ("300") + 1)) : strcpy (term_options, "300"))); term->v_tic = 15; term->h_tic = 15; break; case 2: (__extension__ (__builtin_constant_p ("150") ? (((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) && strlen ("150") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("150"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("150"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("150"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("150"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("150"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("150"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("150"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("150"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("150"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("150"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("150"))[4 + 1]) << 8 | ((__const unsigned ch! ar *) (__const char *) ("150"))[4]), strlen ("150") + 1) : (char *) memcpy (term_options, "150", strlen ("150") + 1)) : strcpy (term_options, "150"))); term->v_tic = 8; term->h_tic = 8; break; case 3: (__extension__ (__builtin_constant_p ("100") ? (((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) && strlen ("100") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("100"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("100"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("100"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("100"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("100"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("100"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("100"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("100"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("100"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("100"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("100"))[4 + 1]) << 8 | ((__const unsigned ch! ar *) (__const char *) ("100"))[4]), strlen ("100") + 1) : (char *) memcpy (term_options, "100", strlen ("100") + 1)) : strcpy (term_options, "100"))); term->v_tic = 6; term->h_tic = 6; break; case 4: (__extension__ (__builtin_constant_p ("75") ? (((size_t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) && strlen ("75") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("75"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("75"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("75"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("75"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("75"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("75"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("75"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("75"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("75"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("75"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("75"))[4 + 1]) << 8 | ((__const unsigned char *) (__const ! char *) ("75"))[4]), strlen ("75") + 1) : (char *) memcpy (term_options, "75", strlen ("75") + 1)) : strcpy (term_options, "75"))); term->v_tic = 5; term->h_tic = 5; break; } switch (HP_COMP_MODE) { case 0: strcat(term_options, " no comp"); break; case 1: strcat(term_options, " RLE"); break; case 2: strcat(term_options, " TIFF"); break; case 3: strcat(term_options, " Delta Row"); break; } } static void HP500Cinit() { switch (hpdj_dpp) { case 1: b_charsize(2); term->v_char = 31; term->h_char = 19; break; case 2: b_charsize(2); term->v_char = 31; term->h_char = 19; break; case 3: b_charsize(1); term->v_char = 21; term->h_char = 13; break; case 4: b_charsize(0); term->v_char = 11; term->h_char = 7; break; } } static void HP500Creset() { } static void HP500Clinetype(linetype) int linetype; { if (linetype < 0) linetype = 7; else if (linetype >= 8) { linetype %= 8; } switch (linetype) { case 0: linetype = 6; break; case 1: linetype = 5; break; case 2: linetype = 3; break; case 3: linetype = 2; break; case 4: linetype = 1; break; case 5: linetype = 4; break; case 6: linetype = 7; } b_setvalue(linetype); } # 303 "term/hp500c.trm" static void HP500Cgraphics() { b_makebitmap((8*(unsigned int)(ysize*1920/(hpdj_dpp)/8.0+0.9)), (8*(unsigned int)(xsize*1920/(hpdj_dpp)/8.0+0.9)), 3); b_rastermode = 1; } static int HPcompress(op, oe, cp) unsigned char *op, *oe, *cp; { unsigned char *ce = cp; while (op < oe) { unsigned char prevchar; unsigned char count; prevchar = *op; count = 1; while (++op < oe && *op == prevchar && count < 255) { count++; } *ce++ = --count; *ce++ = prevchar; } *ce = 0; return ce - cp; } static unsigned char HPcomplement(c) int c; { return (unsigned char) (256 - c); } static int HPcompress_to_TIFF(op, oe, cp) unsigned char *op; unsigned char *oe; unsigned char *cp; { unsigned char *countposition; unsigned char *ce = cp; while (op < oe) { unsigned char prevchar; unsigned char count; prevchar = *op; count = 1; while (++op < oe && *op == prevchar && count < 128) { count++; } *ce = HPcomplement(count - 1); countposition = ce++; *ce++ = prevchar; if (count < 2) { while (op < oe && (prevchar != *op || *op != *(op + 1))) { *ce++ = *op; count++; prevchar = *op++; if (op > oe) puts("FATAL op> oe!!\n"); } if (op < oe && prevchar == *op) { op--; count--; ce--; } *countposition = count - 1; } } return ce - cp; } static int HPnocompress(op, oe, cp) unsigned char *op; unsigned char *oe; unsigned char *cp; { unsigned char *ce = cp; while (op < oe) *ce++ = *op++; return ce - cp; } static void HP500Ctext() { register int x, j, row, count = 0; unsigned char *obuf, *oe, *cbuf, *ce; if ((obuf = (unsigned char *) malloc(100 * b_psize)) == 0) puts("FATAL!-- couldn't get enough memory for obuf"); if ((cbuf = (unsigned char *) malloc(400 * b_psize)) == 0) puts("FATAL!-- couldn't get enough memory for cbuf"); oe = obuf; fprintf(gpoutfile, "\033*t%dR\033*r1A\033*b%1dM\033*r%dS\033*r-3U", (300/(hpdj_dpp)), HP_COMP_MODE, b_ysize); for (x = b_xsize - 1; x >= 0; x--) { row = (b_ysize / 8) - 1; for (j = row; j >= 0; j--) { *oe++ = (char) (*((*b_p)[j] + x)); } switch (HP_COMP_MODE) { case 2: count = HPcompress_to_TIFF(obuf, oe, cbuf); break; case 1: count = HPcompress(obuf, oe, cbuf); break; case 0: count = HPnocompress(obuf, oe, cbuf); break; } fprintf(gpoutfile, "\033*b%dV", count); ce = cbuf; while (count--) fputc(*ce++, gpoutfile); oe = obuf; for (j = row; j >= 0; j--) { *oe++ = (char) (*((*b_p)[j + b_psize] + x)); } switch (HP_COMP_MODE) { case 2: count = HPcompress_to_TIFF(obuf, oe, cbuf); break; case 1: count = HPcompress(obuf, oe, cbuf); break; case 0: count = HPnocompress(obuf, oe, cbuf); break; } fprintf(gpoutfile, "\033*b%dV", count); ce = cbuf; while (count--) fputc(*ce++, gpoutfile); oe = obuf; for (j = row; j >= 0; j--) { *oe++ = (char) (*((*b_p)[j + (2 * b_psize)] + x)); } switch (HP_COMP_MODE) { case 2: count = HPcompress_to_TIFF(obuf, oe, cbuf); break; case 1: count = HPcompress(obuf, oe, cbuf); break; case 0: count = HPnocompress(obuf, oe, cbuf); break; } fprintf(gpoutfile, "\033*b%dW", count); ce = cbuf; while (count--) fputc(*ce++, gpoutfile); oe = obuf; } fputs("\033*rbC", gpoutfile); free(cbuf); free(obuf); b_freebitmap(); _IO_putc ('\f', gpoutfile); } # 301 "term.h" 2 # 1 "term/hpgl.trm" 1 # 64 "term/hpgl.trm" # 1 "term/driver.h" 1 # 65 "term/hpgl.trm" 2 static void HPGL_options (void); static void HPGL2_options (void); static void PCL_options (void); static void HPGL_init (void); static void PCL_init (void); static void HPGL_graphics (void); static void HPGL2_graphics (void); static void PCL_graphics (void); static void HPGL_text (void); static void PCL_text (void); static void HPGL_linetype (int linetype); static void HPGL2_linetype (int linetype); static void HPGL_put_text (unsigned int x, unsigned int y, char *str); static void HPGL2_put_text (unsigned int x, unsigned int y, char *str); static void HPGL_move (unsigned int x, unsigned int y); static void HPGL_vector (unsigned int x, unsigned int y); static void HPGL2_move (unsigned int x, unsigned int y); static void HPGL2_vector (unsigned int x, unsigned int y); static void HPGL2_encode (int d); static int HPGL_text_angle (int ang); static int HPGL2_text_angle (int ang); static void HPGL_reset (void); static void PCL_reset (void); static int HPGL2_justify_text (enum JUSTIFY just); # 185 "term/hpgl.trm" struct HPGL2_font_str { char *compare, *name; int symbol_set, spacing; double pitch, height; int posture, stroke_weight, typeface; }; struct PCL_mode_str { char *compare, *name, *command; int xmax, ymax; }; static struct HPGL2_font_str HPGL2_font_table[] = { {"u$nivers", "univers", 277, 1, 0.0, 14, 0, 0, 4148}, {"s$tick", "stick", 277, 0, (3 * 72 / (14 * 2)), 0.0, 0, 0, 48}, {"c$g_times", "cg_times", 277, 1, 0.0, 14, 0, 0, 4101} }; static struct HPGL2_font_str *HPGL2_font = &HPGL2_font_table[0]; static struct PCL_mode_str PCL_mode_table[] = { {"l$andscape", "landscape", "\033&l1O", 10000, (7500 -60)}, {"p$ortrait", "portrait", "\033&l0O", (7500 -60), 10000} }; static struct PCL_mode_str *PCL_mode = &PCL_mode_table[0]; static char *HPGL2_lt[] = { "", "4,2", "5,2", "6,2", "7,2", "8,2" }, *HPGL2_pw[] = { ".15", ".12", ".08" }; static char hpgl_cp_850[128][4] = { "\0164\017", "\016O\017", "\016E\017", "\016@\017", "\016L\017", "\016H\017", "\016T\017", "\0165\017", "\016A\017", "\016M\017", "\016I\017", "\016]\017", "\016Q\017", "\016Y\017", "\016X\017", "\016P\017", "\016\134\017", "\016W\017", "\016S\017", "\016B\017", "\016N\017", "\016J\017", "\016C\017", "\016K\017", "\016o\017", "\016Z\017", "\016[\017", "\016V\017", "\016;\017", "\016R\017", "", "\016>\017", "\016D\017", "\016U\017", "\016F\017", "\016G\017", "\0167\017", "\0166\017", "\016y\017", "\016z\017", "\0169\017", "", "", "\016x\017", "\016w\017", "\0168\017", "\016{\017", "\016}\017", "", "", "", "", "", "\016`\017", "\016\042\017", "\016!\017", "", "", "", "", "", "\016?\017", "\016<\017", "", "", "", "", "", "", "", "\016b\017", "\016a\017", "", "", "", "", "", "", "", "\016:\017", "\016d\017", "\016c\017", "\016$\017", "\016%\017", "\016#\017", "", "\016e\017", "\016&\017", "\016'\017", "", "", "", "", "", "\016f\017", "", "\016g\017", "\016^\017", "\016_\017", "\016h\017", "\016j\017", "\016i\017", "", "\016q\017", "\016p\017", "\016m\017", "\016.\017", "\016-\017", "", "", "\0160\017", "\016(\017", "\016v\017", "\016~\017", "", "", "", "\016=\017", "", "", "\016z\017", "\016+\017", "", "", "", "", "", "" }; static char hpgl_iso_8859_1[128][4] = { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "\016\017", "\016\017", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "\0168\017", "\0165\017", "\016;\017", "\016:\017", "\016<\017", "\017|\017", "\016=\017", "\016+\017", "", "\016y\017", "\016{\017", "", "", "", "\0160\017", "\016z\017", "\016~\017", "", "", "", "", "", "", "", "", "\016z\017", "\016}\017", "\016w\017", "\016x\017", "", "\0169\017", "\016!\017", "\016`\017", "\016\042\017", "\016a\017", "\016X\017", "\016P\017", "\016S\017", "\0164\017", "\016#\017", "\016\134\017", "\016$\017", "\016%\017", "\016f\017", "\016e\017", "\016\046\017", "\016'\017", "\016c\017", "\0166\017", "\016h\017", "\016g\017", "\016_\017", "\016i\017", "\016Z\017", "", "\016R\017", "\016-\017", "\016m\017", "\016.\017", "\016[\017", "", "\016p\017", "\016^\017", "\016H\017", "\016D\017", "\016@\017", "\016b\017", "\016L\017", "\016T\017", "\016W\017", "\0165\017", "\016I\017", "\016E\017", "\016A\017", "\016M\017", "\016Y\017", "\016U\017", "\016Q\017", "\016]\017", "\016d\017", "\0167\017", "\016J\017", "\016F\017", "\016B\017", "\016j\017", "\016N\017", "", "\016V\017", "\016K\017", "\016G\017", "\016C\017", "\016O\017", "", "\016q\017", "\016o\017" }; static int HPGL_ang = 0, HPGL_x = -10, HPGL_y = -10, HPGL_penstate = -10, HPGL_pentype = -10, HPGL2_in_pe, HPGL2_lost; static int HPGL_numpen, HPGL_eject; static void HPGL_options() { HPGL_numpen = 6; HPGL_eject = 0; while (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "eje$ct")) HPGL_eject = 1; else if (isanumber(c_token)) { HPGL_numpen = (int) real(&token[c_token].l_val); if (HPGL_numpen <= 0) { HPGL_numpen = 6; int_error("Number of pens must be positive", c_token); } } else int_error("expecting \"eject\" or number of pens", c_token); c_token++; } sprintf(term_options, "%d pens %s", HPGL_numpen, HPGL_eject ? "eject" : "noeject"); } static void HPGL2_options() { struct TERMENTRY *t = term; int i; double point_size; char tmp_options[50]; if (!(c_token >= num_tokens || equals(c_token,";"))) { for (i = 0; i < (sizeof(HPGL2_font_table) / sizeof (struct HPGL2_font_str)) && !almost_equals(c_token, HPGL2_font_table[i].compare); i++); if (i < (sizeof(HPGL2_font_table) / sizeof (struct HPGL2_font_str))) { HPGL2_font = &HPGL2_font_table[i]; } else int_error("expecting font: stick, cg_times, or univers", c_token); c_token++; if (!(c_token >= num_tokens || equals(c_token,";"))) { if ((point_size = real(&token[c_token].l_val)) > 0.0) { t->v_char = (int) 1016 *point_size / 72; t->h_char = t->v_char * 2 / 3; if (HPGL2_font->spacing) HPGL2_font->height = point_size; else HPGL2_font->pitch = 72 * 3 / (point_size * 2); } else int_error("expecting font point size: real number", c_token); c_token++; } } sprintf(tmp_options, " %s", HPGL2_font->name); strcat(term_options, tmp_options); if (HPGL2_font->spacing) { sprintf(tmp_options, " %f", HPGL2_font->height); strcat(term_options, tmp_options); } else { sprintf(tmp_options, " %f", HPGL2_font->pitch); strcat(term_options, tmp_options); } } static void PCL_options() { int i; if (!(c_token >= num_tokens || equals(c_token,";"))) { for (i = 0; i < (sizeof(PCL_mode_table) / sizeof (struct PCL_mode_str)) && !almost_equals(c_token, PCL_mode_table[i].compare); i++); if (i < (sizeof(PCL_mode_table) / sizeof (struct PCL_mode_str))) PCL_mode = &PCL_mode_table[i]; else int_error("expecting mode: portrait or landscape", c_token); c_token++; } sprintf(term_options, " %s", PCL_mode->name); HPGL2_options(); } static void HPGL_init() { } static void PCL_init() { struct TERMENTRY *t = term; fprintf(gpoutfile, "\033E\033&l1X%s\n", PCL_mode->command); t->xmax = PCL_mode->xmax; t->ymax = PCL_mode->ymax; } static void HPGL_graphics() { fputs("\033.Y\n\033.I81;;17:\033.N;19:\033.M500:\n", gpoutfile); fprintf(gpoutfile, "IN;%s\nSC0,%d,0,%d;\nSR%f,%f;\n", ((encoding == 3) || (encoding == 1)) ? "CA7;" : "", 10000, 7500, ((double) ((10000/100*12/10)) * 200 / 3 / 10000), ((double) ((7500/100*32/10)) * 100 / 2 / 7500)); HPGL_ang = 0; } static void HPGL2_graphics() { fprintf(gpoutfile, "INSP1SD1,%d,2,%d,", HPGL2_font->symbol_set, HPGL2_font->spacing); if (HPGL2_font->spacing) fprintf(gpoutfile, "4,%f,", HPGL2_font->height); else fprintf(gpoutfile, "3,%f,", HPGL2_font->pitch); fprintf(gpoutfile, "5,%d,6,%d,7,%d\n", HPGL2_font->posture, HPGL2_font->stroke_weight, HPGL2_font->typeface); HPGL_ang = 0; HPGL2_in_pe = 0; HPGL2_lost = 1; HPGL_penstate = 1; } static void PCL_graphics() { fputs("\033%0B", gpoutfile); HPGL2_graphics(); } static void HPGL_text() { if (HPGL_eject == 0) { fputs("PUSP0;\033.Z\n\0", gpoutfile); } else { fputs("PUSP0;PG;\033.Z\n\0", gpoutfile); } HPGL_penstate = 1; } # 756 "term/hpgl.trm" static void PCL_text() { if (HPGL2_in_pe) { fputs(";\n", gpoutfile); HPGL2_in_pe = 0; } fputs("\033%1A\033&l0H\n\0", gpoutfile); } static void HPGL_linetype(linetype) int linetype; { linetype = (linetype + 2) % HPGL_numpen + 1; if (HPGL_pentype != linetype) { fprintf(gpoutfile, "PU;\nSP%d;\n", linetype); HPGL_pentype = linetype; HPGL_penstate = 1; } } static void HPGL2_linetype(linetype) int linetype; { if (HPGL2_in_pe) { fputs(";\n", gpoutfile); HPGL2_in_pe = 0; } if (linetype >= 0) linetype = linetype % ((sizeof(HPGL2_lt) / sizeof(char *)) * (sizeof(HPGL2_pw) / sizeof(char *))); if (linetype != HPGL_pentype) { if (linetype >= 0) { fprintf(gpoutfile, "PW%sLT%s", HPGL2_pw[linetype / (sizeof(HPGL2_lt) / sizeof(char *))], HPGL2_lt[linetype % (sizeof(HPGL2_lt) / sizeof(char *))]); } else if (linetype == -2) fprintf(gpoutfile, "PW.2LT"); else if (linetype == -1) fprintf(gpoutfile, "PW.1LT1,.25"); HPGL_pentype = linetype; } } static void HPGL_put_text(x, y, str) unsigned int x, y; char *str; { if (HPGL_ang == 1) HPGL_move(x + (7500/100*32/10) / 4, y); else HPGL_move(x, y - (7500/100*32/10) / 4); if (encoding == 3) { unsigned char *s; fputs("LB", gpoutfile); for (s = (unsigned char *) str; *s; ++s) if (*s >= 128 && hpgl_cp_850[*s - 128][0]) fputs(hpgl_cp_850[*s - 128], gpoutfile); else _IO_putc (*s, gpoutfile); fputs("\003\n", gpoutfile); } else if (encoding == 1) { unsigned char *s; fputs("LB", gpoutfile); for (s = (unsigned char *) str; *s; ++s) if (*s >= 128 && hpgl_iso_8859_1[*s - 128][0]) fputs(hpgl_iso_8859_1[*s - 128], gpoutfile); else _IO_putc (*s, gpoutfile); fputs("\003\n", gpoutfile); } else fprintf(gpoutfile, "LB%s\003\n", str); } static void HPGL2_put_text(x, y, str) unsigned int x, y; char *str; { struct TERMENTRY *t = term; if (HPGL_ang == 1) HPGL2_move(x + t->v_char / 4, y); else HPGL2_move(x, y - t->v_char / 4); if (HPGL2_in_pe) { fputs(";\n", gpoutfile); HPGL2_in_pe = 0; } fprintf(gpoutfile, "LB%s\003\n", str); HPGL2_lost = 1; } static void HPGL_move(x, y) unsigned int x, y; { if (HPGL_x != x || HPGL_y != y) { fprintf(gpoutfile, "PU;PA%d,%d;\n", x, y); HPGL_penstate = 1; HPGL_x = x; HPGL_y = y; } } static void HPGL_vector(x, y) unsigned int x, y; { if (HPGL_penstate != 0) { fprintf(gpoutfile, "PD;PA%d,%d;\n", x, y); HPGL_penstate = 0; } else fprintf(gpoutfile, "PA%d,%d;\n", x, y); HPGL_x = x; HPGL_y = y; } static void HPGL2_move(x, y) unsigned int x, y; { register int dx, dy; if (HPGL2_in_pe) { dx = x - HPGL_x; dy = y - HPGL_y; fputs("<", gpoutfile); } else { fputs("PE<", gpoutfile); if (HPGL2_lost) { dx = x; dy = y; HPGL2_lost = 0; fputs("=", gpoutfile); } else { dx = x - HPGL_x; dy = y - HPGL_y; } HPGL2_in_pe = 1; } HPGL2_encode(dx); HPGL2_encode(dy); fputs("\n", gpoutfile); HPGL_x = x; HPGL_y = y; } static void HPGL2_vector(x, y) unsigned int x, y; { register int dx, dy; if (HPGL2_in_pe) { dx = x - HPGL_x; dy = y - HPGL_y; } else { fputs("PE", gpoutfile); if (HPGL2_lost) { dx = x; dy = y; HPGL2_lost = 0; fputs("=", gpoutfile); } else { dx = x - HPGL_x; dy = y - HPGL_y; } HPGL2_in_pe = 1; } # 969 "term/hpgl.trm" HPGL2_encode(dx); HPGL2_encode(dy); fputs("\n", gpoutfile); HPGL_x = x; HPGL_y = y; } static void HPGL2_encode(d) register int d; { register int c; if ((d <<= 1) < 0) d = 1 - d; do { c = d & 63; d >>= 6; if (d > 0) fputc((char) (c + 63), gpoutfile); else fputc((char) (c + 191), gpoutfile); } while (d > 0); } static int HPGL_text_angle(ang) int ang; { HPGL_ang = ang; if (ang == 1) fputs("DI0,1;\n", gpoutfile); else fputs("DI1,0;\n", gpoutfile); return 1; } static int HPGL2_text_angle(ang) int ang; { if (HPGL2_in_pe) { fputs(";", gpoutfile); HPGL2_in_pe = 0; } if (ang == 1) fputs("DI0,1", gpoutfile); else fputs("DI1,0", gpoutfile); HPGL_ang = ang; return 1; } static void HPGL_reset() { } # 1057 "term/hpgl.trm" static void PCL_reset() { fputs("\033%0A\033E\n", gpoutfile); } static int HPGL2_justify_text(just) enum JUSTIFY just; { if (HPGL2_in_pe) { fputs(";\n", gpoutfile); HPGL2_in_pe = 0; } switch (just) { case LEFT: fputs("LO1", gpoutfile); break; case CENTRE: fputs("LO4", gpoutfile); break; case RIGHT: fputs("LO7", gpoutfile); break; default: return 0; } return 1; } # 304 "term.h" 2 # 1 "term/hpljii.trm" 1 # 68 "term/hpljii.trm" # 1 "term/driver.h" 1 # 69 "term/hpljii.trm" 2 static void HPLJIIoptions (void); static void HPLJIIinit (void); static void HPLJIIgraphics (void); static void HPLJIItext (void); static void HPLJIIlinetype (int linetype); static void HPLJIIput_text (unsigned int x, unsigned int y, char *str); static void HPLJIIreset (void); static void HPDJgraphics (void); static void HPDJtext (void); # 123 "term/hpljii.trm" void HPLJIIputc (unsigned int x, unsigned int y, char c, int ang); static int hplj_dpp = 4; # 135 "term/hpljii.trm" static void HPLJIIoptions() { char opt[4]; int parse_error = 0; if ((c_token >= num_tokens || equals(c_token,";"))) { term_options[0] = ('\0'); } else { if (token[c_token].length > 3) { parse_error = 1; } else { capture(opt, c_token, c_token, 4); if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("75") && (__s1_len = strlen (opt), __s2_len = strlen ("75"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("75"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("75") && ((size_t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("75"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((! __const unsigned char *) (__const char *) ("75"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("75"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("75"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("75"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("75") && ((size! _t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) && (__s2_len = strlen ("75"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("75"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("75"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("75"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("75"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (opt); register int __! result = __s1[0] - ((__const unsigned char *) (__const char *) ("75"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("75"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("75"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("75"))[3]); } } __result; }))) : strcmp (opt, "75")))); })) { hplj_dpp = 4; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("100") && (__s1_len = strlen (opt), __s2_len = strlen ("100"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("100"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("100") && ((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("100"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *! ) (opt))[1] - ((__const unsigned char *) (__const char *) ("100"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("100"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("100"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("100"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constan! t_p ("100") && ((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) && (__s2_len = strlen ("100"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("100"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("100"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("100"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("100"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const ch! ar *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("100"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("100"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("100"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("100"))[3]); } } __result; }))) : strcmp (opt, "100")))); })) { hplj_dpp = 3; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("150") && (__s1_len = strlen (opt), __s2_len = strlen ("150"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("150"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("150") && ((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("150"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *! ) (opt))[1] - ((__const unsigned char *) (__const char *) ("150"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("150"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("150"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("150"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constan! t_p ("150") && ((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) && (__s2_len = strlen ("150"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("150"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("150"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("150"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("150"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const ch! ar *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("150"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("150"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("150"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("150"))[3]); } } __result; }))) : strcmp (opt, "150")))); })) { hplj_dpp = 2; } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("300") && (__s1_len = strlen (opt), __s2_len = strlen ("300"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("300"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("300") && ((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("300"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *! ) (opt))[1] - ((__const unsigned char *) (__const char *) ("300"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("300"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("300"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("300"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constan! t_p ("300") && ((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) && (__s2_len = strlen ("300"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("300"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("300"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("300"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("300"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const ch! ar *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("300"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("300"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("300"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("300"))[3]); } } __result; }))) : strcmp (opt, "300")))); })) { hplj_dpp = 1; } else { parse_error = 1; } c_token++; } } term->xmax = (8*(unsigned int)(xsize*1920/(hplj_dpp)/8.0+0.9)); term->ymax = (8*(unsigned int)(ysize*1920/(hplj_dpp)/8.0+0.9)); switch (hplj_dpp) { case 1: (__extension__ (__builtin_constant_p ("300") ? (((size_t)(const void *)(("300") + 1) - (size_t)(const void *)("300") == 1) && strlen ("300") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("300"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("300"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("300"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("300"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("300"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("300"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("300"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("300"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("300"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("300"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("300"))[4 + 1]) << 8 | ((__const unsigned ch! ar *) (__const char *) ("300"))[4]), strlen ("300") + 1) : (char *) memcpy (term_options, "300", strlen ("300") + 1)) : strcpy (term_options, "300"))); term->v_tic = 15; term->h_tic = 15; break; case 2: (__extension__ (__builtin_constant_p ("150") ? (((size_t)(const void *)(("150") + 1) - (size_t)(const void *)("150") == 1) && strlen ("150") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("150"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("150"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("150"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("150"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("150"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("150"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("150"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("150"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("150"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("150"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("150"))[4 + 1]) << 8 | ((__const unsigned ch! ar *) (__const char *) ("150"))[4]), strlen ("150") + 1) : (char *) memcpy (term_options, "150", strlen ("150") + 1)) : strcpy (term_options, "150"))); term->v_tic = 8; term->h_tic = 8; break; case 3: (__extension__ (__builtin_constant_p ("100") ? (((size_t)(const void *)(("100") + 1) - (size_t)(const void *)("100") == 1) && strlen ("100") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("100"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("100"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("100"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("100"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("100"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("100"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("100"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("100"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("100"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("100"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("100"))[4 + 1]) << 8 | ((__const unsigned ch! ar *) (__const char *) ("100"))[4]), strlen ("100") + 1) : (char *) memcpy (term_options, "100", strlen ("100") + 1)) : strcpy (term_options, "100"))); term->v_tic = 6; term->h_tic = 6; break; case 4: (__extension__ (__builtin_constant_p ("75") ? (((size_t)(const void *)(("75") + 1) - (size_t)(const void *)("75") == 1) && strlen ("75") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("75"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("75"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("75"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("75"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("75"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("75"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("75"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("75"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("75"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("75"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("75"))[4 + 1]) << 8 | ((__const unsigned char *) (__const ! char *) ("75"))[4]), strlen ("75") + 1) : (char *) memcpy (term_options, "75", strlen ("75") + 1)) : strcpy (term_options, "75"))); term->v_tic = 5; term->h_tic = 5; break; } if (parse_error) int_error("expecting dots per inch size 75, 100, 150 or 300", c_token); } static void HPLJIIinit() { term->v_char = ((300/(hplj_dpp))/6); term->h_char = ((300/(hplj_dpp))/10); } static void HPLJIIgraphics() { fputs("\033(0N\033(s0p10.0h12.0v0s0b3T\033&l6D",gpoutfile); fputs("\033&f0S",gpoutfile); b_makebitmap((8*(unsigned int)(ysize*1920/(hplj_dpp)/8.0+0.9)), (8*(unsigned int)(xsize*1920/(hplj_dpp)/8.0+0.9)), 1); b_rastermode = 1; } static void HPLJIItext() { register int x, j, row; fprintf(gpoutfile, "\033*t%dR", (300/(hplj_dpp))); fputs("\033&f1S",gpoutfile); fputs("\033*r1A", gpoutfile); for (x = b_xsize - 1; x >= 0; x--) { row = (b_ysize / 8) - 1; fprintf(gpoutfile, "\033*b0m%dW", b_ysize / 8); for (j = row; j >= 0; j--) { (void) fputc((char) (*((*b_p)[j] + x)), gpoutfile); } } fputs("\033*rB", gpoutfile); b_freebitmap(); _IO_putc ('\f', gpoutfile); } static void HPLJIIlinetype(linetype) int linetype; { if (hplj_dpp == 1) { if (linetype >= 7) linetype %= 7; b_linemask = b_300ppi_pattern[linetype + 2]; b_maskcount = 0; } else { b_setlinetype(linetype); } } static void HPLJIIput_text(x, y, str) unsigned int x, y; char *str; { switch (b_angle) { case 0: y -= ((300/(hplj_dpp))/6) / 5; fputs("\033&f1S",gpoutfile); fputs("\033&f0S",gpoutfile); fprintf(gpoutfile, "\033*p%+dx%+dY", x * (hplj_dpp) ,((8*(unsigned int)(ysize*1920/(hplj_dpp)/8.0+0.9)) - y - 1) * (hplj_dpp)); fputs(str, gpoutfile); break; case 1: y += (((300/(hplj_dpp))/10) - 2 * ((300/(hplj_dpp))/6)) / 2; y += (((300/(hplj_dpp))/6) + ((300/(hplj_dpp))/10)) * strlen(str) / 2; for (; *str; ++str, y -= ((300/(hplj_dpp))/6)) HPLJIIputc(x, y, *str, b_angle); break; } } void HPLJIIputc(unsigned int x, unsigned int y, char c, int ang) { fputs("\033&f1S",gpoutfile); fputs("\033&f0S",gpoutfile); fprintf(gpoutfile, "\033*p%+dx%+dY", x * (hplj_dpp) ,((8*(unsigned int)(ysize*1920/(hplj_dpp)/8.0+0.9)) - y - 1) * (hplj_dpp)); fputc(c, gpoutfile); } static void HPLJIIreset() { } static void HPDJgraphics() { switch (hplj_dpp) { case 1: b_charsize(2); term->v_char = 31; term->h_char = 19; break; case 2: b_charsize(2); term->v_char = 31; term->h_char = 19; break; case 3: b_charsize(1); term->v_char = 21; term->h_char = 13; break; case 4: b_charsize(0); term->v_char = 11; term->h_char = 7; break; } b_makebitmap((8*(unsigned int)(ysize*1920/(hplj_dpp)/8.0+0.9)), (8*(unsigned int)(xsize*1920/(hplj_dpp)/8.0+0.9)), 1); b_rastermode = 1; } static void HPDJtext() { register int x, j, row; fprintf(gpoutfile, "\033*b0M\033*t%dR\033*r1A", (300/(hplj_dpp))); for (x = b_xsize - 1; x >= 0; x--) { row = (b_ysize / 8) - 1; fprintf(gpoutfile, "\033*b%dW", b_ysize / 8); for (j = row; j >= 0; j--) { (void) fputc((char) (*((*b_p)[j] + x)), gpoutfile); } } fputs("\033*rbC", gpoutfile); b_freebitmap(); _IO_putc ('\f', gpoutfile); } # 307 "term.h" 2 # 1 "term/hppj.trm" 1 # 64 "term/hppj.trm" # 1 "term/driver.h" 1 # 65 "term/hppj.trm" 2 static void HPPJoptions (void); static void HPPJinit (void); static void HPPJreset (void); static void HPPJgraphics (void); static void HPPJtext (void); static void HPPJlinetype (int linetype); # 100 "term/hppj.trm" static int hppj_font = 1; static void HPPJoptions() { char opt[10]; term_options[0] = ('\0'); hppj_font = 1; if (!(c_token >= num_tokens || equals(c_token,";"))) { if (token[c_token].length > 8) { int_error("expecting font size FNT5X9, FNT9X17, or FNT13X25", c_token); } capture(opt, c_token, c_token, 9); if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("FNT5X9") && (__s1_len = strlen (opt), __s2_len = strlen ("FNT5X9"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("FNT5X9") + 1) - (size_t)(const void *)("FNT5X9") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("FNT5X9"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("FNT5X9") && ((size_t)(const void *)(("FNT5X9") + 1) - (size_t)(const void *)("FNT5X9") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("FNT5X9"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *)! (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("FNT5X9"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - __s2[3]); } } __resul! t; }))) : (__builtin_constant_p ("FNT5X9") && ((size_t)(const void *)(("FNT5X9") + 1) - (size_t)(const void *)("FNT5X9") == 1) && (__s2_len = strlen ("FNT5X9"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("FNT5X9"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[3]); } } __result; })) : (__extension__ ({ __const unsigne! d char *__s1 = (__const unsigned char *) (__const char *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("FNT5X9"))[3]); } } __result; }))) : strcmp (opt, "FNT5X9")))); })) { hppj_font = 0; (__extension__ (__builtin_constant_p ("FNT5X9") ? (((size_t)(const void *)(("FNT5X9") + 1) - (size_t)(const void *)("FNT5X9") == 1) && strlen ("FNT5X9") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("FNT5X9"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("FNT5X9"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("FNT5X9"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("FNT5X9"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *)! ("FNT5X9"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("FNT5X9"))[4]), strlen ("FNT5X9") + 1) : (char *) memcpy (term_options, "FNT5X9", strlen ("FNT5X9") + 1)) : strcpy (term_options, "FNT5X9"))); } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("FNT9X17") && (__s1_len = strlen (opt), __s2_len = strlen ("FNT9X17"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("FNT9X17") + 1) - (size_t)(const void *)("FNT9X17") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("FNT9X17"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("FNT9X17") && ((size_t)(const void *)(("FNT9X17") + 1) - (size_t)(const void *)("FNT9X17") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("FNT9X17"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const ! unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("FNT9X17"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - _! _s2[3]); } } __result; }))) : (__builtin_constant_p ("FNT9X17") && ((size_t)(const void *)(("FNT9X17") + 1) - (size_t)(const void *)("FNT9X17") == 1) && (__s2_len = strlen ("FNT9X17"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("FNT9X17"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[3]); } } __result; })) : (__ex! tension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("FNT9X17"))[3]); } } __result; }))) : strcmp (opt, "FNT9X17")))); })) { hppj_font = 1; (__extension__ (__builtin_constant_p ("FNT9X17") ? (((size_t)(const void *)(("FNT9X17") + 1) - (size_t)(const void *)("FNT9X17") == 1) && strlen ("FNT9X17") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("FNT9X17"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("FNT9X17"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("FNT9X17"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("FNT9X17"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[4 + 2]) << 8 | ((__const unsigned char *) (_! _const char *) ("FNT9X17"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("FNT9X17"))[4]), strlen ("FNT9X17") + 1) : (char *) memcpy (term_options, "FNT9X17", strlen ("FNT9X17") + 1)) : strcpy (term_options, "FNT9X17"))); } else if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (opt) && __builtin_constant_p ("FNT13X25") && (__s1_len = strlen (opt), __s2_len = strlen ("FNT13X25"), (!((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("FNT13X25") + 1) - (size_t)(const void *)("FNT13X25") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (opt), (__const char *) ("FNT13X25"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) && (__s1_len = strlen (opt), __s1_len < 4) ? (__builtin_constant_p ("FNT13X25") && ((size_t)(const void *)(("FNT13X25") + 1) - (size_t)(const void *)("FNT13X25") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("FNT13X25"))[0]); if (__s1_len > 0 && __result == 0) { __result = ((! (__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("FNT13X25"); register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ! (opt))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("FNT13X25") && ((size_t)(const void *)(("FNT13X25") + 1) - (size_t)(const void *)("FNT13X25") == 1) && (__s2_len = strlen ("FNT13X25"), __s2_len < 4) ? (__builtin_constant_p (opt) && ((size_t)(const void *)((opt) + 1) - (size_t)(const void *)(opt) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (opt))[0] - ((__const unsigned char *) (__const char *)("FNT13X25"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[1] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (opt))[2] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (opt))[3] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[3]); } } ! __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (opt); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("FNT13X25"))[3]); } } __result; }))) : strcmp (opt, "FNT13X25")))); })) { hppj_font = 2; (__extension__ (__builtin_constant_p ("FNT13X25") ? (((size_t)(const void *)(("FNT13X25") + 1) - (size_t)(const void *)("FNT13X25") == 1) && strlen ("FNT13X25") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("FNT13X25"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("FNT13X25"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("FNT13X25"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("FNT13X25"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[4 + 2]) << 8 | ((__const unsig! ned char *) (__const char *) ("FNT13X25"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("FNT13X25"))[4]), strlen ("FNT13X25") + 1) : (char *) memcpy (term_options, "FNT13X25", strlen ("FNT13X25") + 1)) : strcpy (term_options, "FNT13X25"))); } else { int_error("expecting font size FNT5X9, FNT9X17, or FNT13X25", c_token); } c_token++; } } static void HPPJinit() { switch (hppj_font) { case 0: term->v_char = 11; term->h_char = 7; term->v_tic = 11 / 2; term->h_tic = 7 / 2; break; case 1: term->v_char = 21; term->h_char = 13; term->v_tic = 21 / 2; term->h_tic = 13 / 2; break; case 2: term->v_char = 31; term->h_char = 19; term->v_tic = 31 / 2; term->h_tic = 19 / 2; break; } } static void HPPJreset() { } static void HPPJgraphics() { b_charsize(hppj_font); b_makebitmap((8*(unsigned int)(9.5 * 180 / 8.0 + 0.9)), (8 * 180), 3); } static void HPPJtext() { int x, plane, y; int minRow, maxRow; int numBytes; int numReps; fprintf(gpoutfile, "\033E\033*t%dR\033*r%dS\033*b0X\033*b0Y\033*r%dU\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*v%dA\033*v%dB\033*v%dC\033*v%dI\033*b1M\033*r1A", # 195 "term/hppj.trm" 180, (8 * 180), 3, 90, 88, 85, 0, 53, 8, 14, 1, 3, 26, 22, 2, 4, 4, 29, 3, 53, 5, 25, 4, 2, 22, 64, 5, 89, 83, 13, 6, 4, 4, 6, 7); for (x = (8*(unsigned int)(9.5 * 180 / 8.0 + 0.9)) - 1; x >= 0; --x) { for (plane = 0; plane < 3; plane++) { minRow = b_psize * plane; maxRow = b_psize * plane + b_psize - 1; numBytes = 0; for (y = maxRow; y >= minRow; --y) { if (y == minRow || *((*b_p)[y] + x) != *((*b_p)[y - 1] + x)) { numBytes += 2; } } fprintf(gpoutfile, "\033*b%d", numBytes); (void) fputc((char) (plane < 3 - 1 ? 'V' : 'W'), gpoutfile); numReps = 0; for (y = maxRow; y >= minRow; --y) { if (y == minRow || *((*b_p)[y] + x) != *((*b_p)[y - 1] + x)) { (void) fputc((char) (numReps), gpoutfile); (void) fputc((char) (*((*b_p)[y] + x)), gpoutfile); numReps = 0; } else { numReps++; } } } } fputs("\033*r1B\033E", gpoutfile); b_freebitmap(); } static void HPPJlinetype(linetype) int linetype; { if (linetype >= 0) { b_setlinetype(0); b_setvalue((linetype % ((1 << 3) - 1)) + 1); } else { b_setlinetype(linetype + 2); b_setvalue((1 << 3) - 1); } } # 310 "term.h" 2 # 1 "term/imagen.trm" 1 # 63 "term/imagen.trm" # 1 "term/driver.h" 1 # 64 "term/imagen.trm" 2 static void IMAGEN_init (void); static void IMAGEN_graphics (void); static void IMAGEN_options (void); static void IMAGEN_text (void); static void IMAGEN_linetype (int lt); static void IMAGEN_move (unsigned int x, unsigned int y); static void IMAGEN_vector (unsigned int ux, unsigned int uy); static int IMAGEN_text_angle (int ang); static int IMAGEN_justify_text (enum JUSTIFY mode); static void IMAGEN_put_text (unsigned int x, unsigned int y, char str[]); static void IMAGEN_reset (void); # 93 "term/imagen.trm" static void IM_page (void); static void IMAGEN_draw_path (void); static void IMAGEN_setpos (int ux, int uy); static unsigned char *IMAGEN_cvts (unsigned char *str, int *width, int *height); static void IMAGEN_putwd (unsigned int w); static void IMAGEN_createfamily (char *c, int sz); static void IMAGEN_setfont (int sz); void IMP_set_draw_pattern (int pattern, int sz); void IMAGEN_mapsinit (void); void IMAGEN_createmap (int name, unsigned short *map); # 1 "term/impcodes.h" 1 # 111 "term/imagen.trm" 2 static int IMAGEN_Xmax = ((300) * 11); static int IMAGEN_Ymax = ((300) * 78 / 10); unsigned short IMP_gmap[128]; unsigned char IMP_chmap[256]; static int IMAGEN_page_h = ((300) * 83 / 10); static int IMAGEN_page_w = ((300) * 116 / 10); static int IM_win_horiz = 1; static int IM_win_verti = 1; static int IM_plot_nr = 0; static int IMAGEN_fontsize = 12; static int IMAGEN_familytable[36]; static int IMAGEN_orgX; static int IMAGEN_orgY; static int IMAGEN_orgx; static int IMAGEN_orgy; static int IMAGEN_posx; static int IMAGEN_posy; static int IMAGEN_xmax = ((300) * 11); static int IMAGEN_ymax = ((300) * 78 / 10); static int IMAGEN_winx = ((300) * 11); static int IMAGEN_winy = ((300) * 78 / 10); static int IMAGEN_hchar; static int IMAGEN_wchar; static int IMAGEN_blofs; static int IMAGEN_angle = -1; static int IMAGEN_portrait; static enum JUSTIFY IMAGEN_justify = LEFT; unsigned int IM_xvector[100]; unsigned int IM_yvector[100]; unsigned int IM_veclen; unsigned int IM_vecpos = 0; char IMPdrpattern[10][10] = { {0}, {1, 8, 0}, {0}, {16, 4, 0}, {3, 8, 0}, {8, 8, 0}, {16, 6, 3, 6, 0}, {16, 6, 8, 6, 0}, {16, 4, 1, 4, 8, 4, 1, 4, 0}, {16, 4, 1, 8, 1, 4, 0} }; static void IMAGEN_init() { register struct TERMENTRY *t = term; IMAGEN_posx = IMAGEN_posy = 0; IMAGEN_orgX = (IMAGEN_page_w - IMAGEN_Xmax) / 2; IMAGEN_orgY = (IMAGEN_page_h - IMAGEN_Ymax) / 2; IMAGEN_xmax = IMAGEN_winx = (int) (IMAGEN_Xmax / IM_win_horiz); IMAGEN_ymax = IMAGEN_winy = (int) (IMAGEN_Ymax / IM_win_verti); t->xmax = (unsigned int) (IMAGEN_xmax); t->ymax = (unsigned int) (IMAGEN_ymax); fputs("@document(language impress, paper a4)", gpoutfile); if (IMAGEN_portrait) { _IO_putc (137, gpoutfile); IMAGEN_putwd(3520); } _IO_putc (205, gpoutfile); _IO_putc (((IMAGEN_portrait ? 3 : 0) << 5) | (3 << 3) | (IMAGEN_portrait ? 0 : 5), gpoutfile); IMAGEN_mapsinit(); IMAGEN_createmap(1, IMP_gmap); IMAGEN_setfont(IMAGEN_fontsize); IMAGEN_text_angle(0); _IO_putc (135, gpoutfile); IMAGEN_putwd(0); _IO_putc (137, gpoutfile); IMAGEN_putwd(0); IMAGEN_linetype(-1); # 228 "term/imagen.trm" IM_veclen = 100; IM_vecpos = 0; } static void IM_page() { if (IM_vecpos) { IMAGEN_draw_path(); } _IO_putc (219, gpoutfile); } static void IMAGEN_graphics() { int tmpx, tmpy; if (IM_vecpos) { IMAGEN_draw_path(); } if (IM_plot_nr >= (IM_win_horiz * IM_win_verti)) { IM_page(); IM_plot_nr = 0; } IM_plot_nr++; tmpx = IMAGEN_orgX + ((IM_plot_nr - 1) % IM_win_horiz) * IMAGEN_winx; tmpy = IMAGEN_orgY + ((IM_win_verti - 1) - (int) ((IM_plot_nr - 1) / IM_win_horiz)) * IMAGEN_winy; IMAGEN_orgx = tmpx + (int) ((IMAGEN_winx - IMAGEN_xmax) / 2); IMAGEN_orgy = tmpy + (int) ((IMAGEN_winy - IMAGEN_ymax) / 2); } static void IMAGEN_options() { struct value a; while (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "p$ortrait")) { IMAGEN_portrait = 1; IMAGEN_page_h = ((300) * 116 / 10); IMAGEN_page_w = ((300) * 83 / 10); IMAGEN_Xmax = ((300) * 78 / 10); IMAGEN_Ymax = ((300) * 11); c_token++; } else if (almost_equals(c_token, "l$andscape")) { IMAGEN_portrait = 0; c_token++; } else if (equals(c_token, "[")) { c_token++; if (equals(c_token, "]")) { IM_page(); c_token++; continue; } if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("no. windows: [horizontal,vertical] expected", c_token); } else if (!equals(c_token, ",")) { IM_win_horiz = (int) real(const_express(&a)); } if (!equals(c_token, ",")) int_error("',' expected", c_token); c_token++; if (!equals(c_token, "]")) { IM_win_verti = (int) real(const_express(&a)); } if (!equals(c_token, "]")) int_error("expecting ']'", c_token); c_token++; } else { IMAGEN_fontsize = (int) real(const_express(&a)); if (IMAGEN_fontsize < 8) IMAGEN_fontsize = 8; if (IMAGEN_fontsize > 15) IMAGEN_fontsize = 15; } } sprintf(term_options, "%d %s [%1d,%1d]", IMAGEN_fontsize, (IMAGEN_portrait) ? "portrait" : "landscape", IM_win_horiz, IM_win_verti); } static void IMAGEN_text() { } static void IMAGEN_linetype(lt) int lt; { static int lastlinetype = -10; int pen ; if (IM_vecpos) { IMAGEN_draw_path(); } if (lt == -2) { pen = 4; } else { pen = (int) (lt / 8) * 2; if (pen <= 0) pen = 1; } lt = (lt % 8) + 2; if (lastlinetype == lt) return; lastlinetype = lt; _IO_putc (232, gpoutfile); _IO_putc (pen, gpoutfile); IMP_set_draw_pattern(lt, pen); } static void IMAGEN_move(x, y) unsigned int x, y; { if (IM_vecpos) { IMAGEN_draw_path(); } IM_xvector[0] = x + IMAGEN_orgx; IM_yvector[0] = y + IMAGEN_orgy; IM_vecpos = 1; } static void IMAGEN_vector(ux, uy) unsigned int ux, uy; { IM_xvector[IM_vecpos] = ux + IMAGEN_orgx; IM_yvector[IM_vecpos] = uy + IMAGEN_orgy; IM_vecpos++; if (IM_vecpos >= IM_veclen) { IMAGEN_draw_path(); IM_xvector[0] = ux + IMAGEN_orgx; IM_yvector[0] = uy + IMAGEN_orgy; IM_vecpos = 1; } } static void IMAGEN_draw_path() { register int i; _IO_putc (230, gpoutfile); IMAGEN_putwd(IM_vecpos); for (i = 0; i < IM_vecpos; i++) { IMAGEN_putwd(IM_xvector[i]); IMAGEN_putwd(IM_yvector[i]); } IM_vecpos = 0; _IO_putc (234, gpoutfile); _IO_putc (15, gpoutfile); } static void IMAGEN_setpos(ux, uy) int ux, uy; { _IO_putc (135, gpoutfile); IMAGEN_putwd(ux + IMAGEN_orgx); _IO_putc (137, gpoutfile); IMAGEN_putwd(uy + IMAGEN_orgy); _IO_putc (209, gpoutfile); if (IMAGEN_angle == 1) IMAGEN_putwd(uy + IMAGEN_orgx); else IMAGEN_putwd(ux + IMAGEN_orgx); } static int IMAGEN_text_angle(ang) int ang; { if (IM_vecpos) { IMAGEN_draw_path(); } if (IMAGEN_angle != ang) { IMAGEN_angle = ang; _IO_putc (206, gpoutfile); _IO_putc (ang == 0 ? 0 : 7, gpoutfile); } return (1); } static int IMAGEN_justify_text(mode) enum JUSTIFY mode; { if (IM_vecpos) { IMAGEN_draw_path(); } IMAGEN_justify = mode; return (1); } static unsigned char *IMAGEN_cvts(str, width, height) unsigned char *str; int *width; int *height; { unsigned char *cp1; unsigned char *cp2; static unsigned char *buf = ((void *)0); int h; int maxw; int w; if (buf != ((void *)0)) (void) free(buf); buf = (unsigned char *) gp_alloc(strlen((char *) str), "converted label string"); cp1 = str; cp2 = buf; h = 1; maxw = 0; w = 0; while (strlen((char *) cp1) > 0) { switch (*cp1) { case ' ': *cp2++ = 128; w++; break; case '\\': if (*++cp1 == '\\') { h++; if (w > maxw) maxw = w; w = 0; *cp2++ = '\n'; break; } default: *cp2++ = IMP_chmap[*cp1]; w++; break; } cp1++; } *cp2++ = '\n'; *cp2 = '\0'; if (w > maxw) maxw = w; if (height != ((void *)0)) *height = IMAGEN_angle ? IMAGEN_wchar * maxw : IMAGEN_hchar * h; if (width != ((void *)0)) *width = IMAGEN_angle ? IMAGEN_hchar * h : IMAGEN_wchar * maxw; return (buf); } static void IMAGEN_put_text(x, y, str) unsigned int x, y; char str[]; { unsigned char *cvstr, *p; int height; int width; int sx, sy; if (IM_vecpos) { IMAGEN_draw_path(); } cvstr = IMAGEN_cvts((unsigned char *) str, &width, &height); if (IMAGEN_angle) { x -= width / 2 - IMAGEN_hchar; } else y += height / 2 - IMAGEN_hchar; while ((p = (unsigned char *) (__extension__ (__builtin_constant_p ('\n') && ('\n') == '\0' ? (char *) __rawmemchr ((char *) cvstr, '\n') : strchr ((char *) cvstr, '\n'))))) { *p = '\0'; sx = x; sy = y; if (IMAGEN_angle) sx = x - IMAGEN_blofs; else sy = y + IMAGEN_blofs; width = strlen((char *) cvstr) * IMAGEN_wchar; switch (IMAGEN_justify) { case LEFT: break; case CENTRE: if (IMAGEN_angle) { sy = y - width / 2; } else { sx = x - width / 2; } break; case RIGHT: if (IMAGEN_angle) { sy = y - width; } else { sx = x - width; } break; } IMAGEN_setpos(sx, sy); fputs((char *) cvstr, gpoutfile); cvstr = ++p; if (IMAGEN_angle) { x += IMAGEN_hchar; } else { y -= IMAGEN_hchar; } } } static void IMAGEN_reset() { if (IM_vecpos) { IMAGEN_draw_path(); } _IO_putc (255, gpoutfile); } static void IMAGEN_putwd(w) unsigned int w; { _IO_putc (w >> 8, gpoutfile); _IO_putc (w, gpoutfile); } static void IMAGEN_createfamily(c, sz) char *c; int sz; { _IO_putc (221, gpoutfile); _IO_putc (sz, gpoutfile); _IO_putc (1, gpoutfile); _IO_putc (1, gpoutfile); fputs(c, gpoutfile); _IO_putc (0, gpoutfile); } static void IMAGEN_setfont(sz) int sz; { char font[20]; if (!IMAGEN_familytable[sz]) { sprintf(font, "%s%02d", "cour", sz); IMAGEN_createfamily(font, sz); IMAGEN_familytable[sz] = sz; } IMAGEN_hchar = sz * 5; IMAGEN_wchar = IMAGEN_hchar / 2; IMAGEN_blofs = IMAGEN_hchar / 3; term->v_char = IMAGEN_hchar; term->h_char = IMAGEN_wchar; _IO_putc (207, gpoutfile); _IO_putc (sz, gpoutfile); _IO_putc (210, gpoutfile); IMAGEN_putwd(IMAGEN_wchar); _IO_putc (208, gpoutfile); IMAGEN_putwd(IMAGEN_hchar); } void IMP_set_draw_pattern(pattern, sz) int pattern, sz; { int i ; _IO_putc (237, gpoutfile); _IO_putc (0, gpoutfile); _IO_putc (237, gpoutfile); _IO_putc (strlen(IMPdrpattern[pattern]), gpoutfile); for (i = 0; i < strlen(IMPdrpattern[pattern]); i++) { IMAGEN_putwd(IMPdrpattern[pattern][i] * sz); } } void IMAGEN_mapsinit() { register int i ; for (i = 32; i < 127; i++) { IMP_gmap[i] = i; } IMP_gmap[1] = 225; IMP_gmap[2] = 233; IMP_gmap[3] = 61736; IMP_gmap[4] = 241; IMP_gmap[5] = 249; IMP_gmap[6] = 61864; IMP_gmap[7] = 162; IMP_gmap[8] = 163; IMP_gmap[9] = 164; IMP_gmap[10] = 165; IMP_gmap[11] = 167; IMP_gmap[12] = 171; IMP_gmap[13] = 182; IMP_gmap[14] = 61346; IMP_gmap[15] = 191; IMP_gmap[16] = 187; IMP_gmap[17] = 188; IMP_gmap[18] = 189; IMP_gmap[19] = 190; IMP_gmap[20] = 210; IMP_gmap[21] = 211; IMP_gmap[22] = 251; IMP_gmap[23] = 61232; IMP_gmap[24] = 212; IMP_gmap[25] = 137; IMP_gmap[26] = 176; IMP_gmap[27] = 161; IMP_gmap[28] = 139; IMP_gmap[29] = 133; IMP_gmap[30] = 140; IMP_gmap[31] = 61249; IMP_gmap[32] = 8738; IMP_gmap[34] = 186; IMP_gmap[36] = 164; IMP_gmap[39] = 185; IMP_gmap[127] = 61286; for (i = 32; i <= 127; i++) { IMP_chmap[i] = i; } for (i = 128; i <= 255; i++) { IMP_chmap[i] = 128; } IMP_chmap[161] = 27; IMP_chmap[162] = 7; IMP_chmap[163] = 8; IMP_chmap[164] = 120; IMP_chmap[165] = 10; IMP_chmap[166] = 124; IMP_chmap[167] = 11; IMP_chmap[168] = 25; IMP_chmap[169] = 21; IMP_chmap[170] = 45; IMP_chmap[171] = 12; IMP_chmap[172] = 83; IMP_chmap[173] = 45; IMP_chmap[174] = 20; IMP_chmap[175] = 126; IMP_chmap[176] = 26; IMP_chmap[177] = 12; IMP_chmap[178] = 1; IMP_chmap[179] = 2; IMP_chmap[180] = 29; IMP_chmap[181] = 52; IMP_chmap[182] = 13; IMP_chmap[183] = 5; IMP_chmap[184] = 28; IMP_chmap[185] = 3; IMP_chmap[186] = 45; IMP_chmap[187] = 16; IMP_chmap[188] = 17; IMP_chmap[189] = 18; IMP_chmap[190] = 19; IMP_chmap[191] = 15; IMP_chmap[192] = 65; IMP_chmap[193] = 65; IMP_chmap[194] = 65; IMP_chmap[195] = 65; IMP_chmap[196] = 65; IMP_chmap[197] = 3; IMP_chmap[198] = 1; IMP_chmap[199] = 67; IMP_chmap[200] = 69; IMP_chmap[201] = 69; IMP_chmap[202] = 69; IMP_chmap[203] = 69; IMP_chmap[204] = 73; IMP_chmap[205] = 73; IMP_chmap[206] = 73; IMP_chmap[207] = 73; IMP_chmap[208] = 68; IMP_chmap[209] = 78; IMP_chmap[210] = 79; IMP_chmap[211] = 79; IMP_chmap[212] = 79; IMP_chmap[213] = 79; IMP_chmap[214] = 79; IMP_chmap[215] = 13; IMP_chmap[216] = 2; IMP_chmap[217] = 85; IMP_chmap[218] = 85; IMP_chmap[219] = 85; IMP_chmap[220] = 85; IMP_chmap[221] = 89; IMP_chmap[222] = 32; IMP_chmap[223] = 22; IMP_chmap[224] = 97; IMP_chmap[225] = 97; IMP_chmap[226] = 97; IMP_chmap[227] = 97; IMP_chmap[228] = 97; IMP_chmap[229] = 6; IMP_chmap[230] = 4; IMP_chmap[231] = 99; IMP_chmap[232] = 101; IMP_chmap[233] = 101; IMP_chmap[234] = 101; IMP_chmap[235] = 101; IMP_chmap[236] = 105; IMP_chmap[237] = 105; IMP_chmap[238] = 105; IMP_chmap[239] = 105; IMP_chmap[240] = 100; IMP_chmap[241] = 110; IMP_chmap[242] = 111; IMP_chmap[243] = 111; IMP_chmap[244] = 111; IMP_chmap[245] = 111; IMP_chmap[246] = 111; IMP_chmap[247] = 10; IMP_chmap[248] = 5; IMP_chmap[249] = 117; IMP_chmap[250] = 117; IMP_chmap[251] = 117; IMP_chmap[252] = 117; IMP_chmap[253] = 121; IMP_chmap[254] = 32; IMP_chmap[255] = 121; } void IMAGEN_createmap(name, map) unsigned short *map; int name; { register int i, j; unsigned char s[4], *p; p = s; *p++ = 222; *p++ = name; j = 0; for (i = 0; i < 127; i++) { if (map[i]) j++; } *p = j; for (i = 0; i < 3; i++) _IO_putc (s[i], gpoutfile); s[3] = 1; for (j = 0; j < 127; j++) { if (map[j]) { p = s; *p++ = j; *p++ = map[j] >> 8; *p = map[j] & 255; for (i = 0; i < 4; i++) _IO_putc (s[i], gpoutfile); } } } # 313 "term.h" 2 # 1 "term/mif.trm" 1 # 90 "term/mif.trm" # 1 "term/driver.h" 1 # 91 "term/mif.trm" 2 # 99 "term/mif.trm" static void MIF_init (void); static void MIF_graphics (void); static void MIF_text (void); static void MIF_linetype (int linetype); static void MIF_move (unsigned int x, unsigned int y); static void MIF_vector (unsigned int x, unsigned int y); static void MIF_put_text (unsigned int x, unsigned int y, char *str); static int MIF_text_angle (int ang); static void MIF_reset (void); static void MIF_options (void); static int MIF_justify_text (enum JUSTIFY mode); static void MIF_point (unsigned int x, unsigned int y, int number); # 126 "term/mif.trm" static int insert_mif_line (double fx, double fy); static int proc_group_id (int group_id); static void free_mif_line (void); static void put_mif_line (void); static void MIF_set_font (char *); static void mif_put_point (unsigned int x, unsigned int y, int np); extern char term_options[]; extern char version[]; extern char patchlevel[]; static struct mif_line { float fpos_x; float fpos_y; struct mif_line *next; struct mif_line *prev; } mif_line = { ((0) / 1000.0), (((10000 - 1)) / 1000.0), &mif_line, &mif_line }; # 168 "term/mif.trm" static char mif_justify[64]; static char mif_pen[64], mif_pen_width[64], mif_separation[64]; static int mif_text_ang = 0; static int mif_pentype = 0; static int mif_pattern_table[16] = { 0, 1, 2, 3, 4, 8, 12, 13, 5, 9, 10, 11, 12, 13, 14, 15 }; static struct mif_group_id { int group_existance; int group_id; } mif_group_id[20]; static int mif_initialized = 0; static int mif_in_frame = 0; static int mif_frameno = -1; static int mif_colour = 1; static int mif_polyline = 1; struct mpt { int chr; float x_offset, y_offset; char *font; }; char zgnuplot[] = "ZGnuplot"; char zgnuplotp[] = "ZGnuplotP"; char zgnuplotd[] = "ZGnuplotD"; char *mif_font = ((void *)0); struct mpt mpt[6 + 1] = { {'.', 0.000, 0.005, zgnuplotd, }, {'G', 0.002, 0.084, zgnuplotp, }, {';', 0.002, 0.084, zgnuplotp, }, {'n', 0.002, 0.084, zgnuplotp, }, {'5', 0.002, 0.084, zgnuplotp, }, {'s', 0.002, 0.062, zgnuplotp, }, {'K', 0.005, 0.075, zgnuplotp, }, }; struct mpt *mif_point = &(mpt[1]); # 243 "term/mif.trm" static int insert_mif_line (double fx, double fy); static int proc_group_id (int group_id); static void MIF_options() { if (!(c_token >= num_tokens || equals(c_token,";"))) { if (!(c_token >= num_tokens || equals(c_token,";")) && almost_equals(c_token, "m$onochrome")) { mif_colour = 0; c_token++; } if (!(c_token >= num_tokens || equals(c_token,";")) && (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour"))) { mif_colour = 1; c_token++; } if (!(c_token >= num_tokens || equals(c_token,";")) && almost_equals(c_token, "v$ectors")) { mif_polyline = 0; c_token++; } if (!(c_token >= num_tokens || equals(c_token,";")) && almost_equals(c_token, "p$olyline")) { mif_polyline = 1; c_token++; } if (!(c_token >= num_tokens || equals(c_token,";")) && (almost_equals(c_token, "h$elp") || almost_equals(c_token, "?$"))) { fprintf(stderr, "Usage: set terminal mif [options]\n\toptions:\n\t\tcolour / Draw primitives with line types >= 0 in colour (sep. 2-7)\n\t\tmonochrome Draw primitives in black (sep. 0)\n\n\t\tpolyline / Draw lines as continous curves\n\t\tvectors Draw lines as collections of vectors\n\n\t\thelp / ? Print short usage description on stderr\n"); # 284 "term/mif.trm" c_token++; } } sprintf(term_options, "%s %s", (mif_colour == 1) ? "colour" : "monochrome", (mif_polyline == 1) ? "polyline" : "vectors"); } static void free_mif_line() { struct mif_line *tline; while (mif_line.prev != &mif_line) { tline = mif_line.prev; mif_line.prev = mif_line.prev->prev; mif_line.prev->next = &mif_line; free(tline); } mif_line.prev = &mif_line; mif_line.next = &mif_line; } static void put_mif_line() { int np, i; struct mif_line *tline; if (mif_initialized != 0 && mif_in_frame != 0) { for (tline = mif_line.next, np = 1; tline != &mif_line; tline = tline->next, np++); if (np >= 2) { fprintf(gpoutfile, "\t<PolyLine <GroupID %d> %s %s %s\n", ( 1 + (mif_pentype) ), mif_pen, mif_pen_width, mif_separation); fprintf(gpoutfile, "\t\t<NumPoints %d> ", np); for (i = 0, tline = &mif_line; i < np; i++, tline = tline->next) { if (i % 4 == 0) fputs("\n\t\t", gpoutfile); fprintf(gpoutfile, "<Point %.3f %.3f> ", tline->fpos_x, tline->fpos_y); } fputs("\n\t>\n", gpoutfile); proc_group_id(( 1 + (mif_pentype) )); mif_pen[0] = '\0'; mif_pen_width[0] = '\0'; mif_separation[0] = '\0'; mif_line.fpos_x = mif_line.prev->fpos_x; mif_line.fpos_y = mif_line.prev->fpos_y; free_mif_line(); } } } static void mif_put_point(x, y, np) unsigned int x, y; int np; { if (mif_initialized != 0 && mif_in_frame != 0) { if (mif_polyline == 1) put_mif_line(); MIF_move(x, y); MIF_justify_text(CENTRE); fprintf(gpoutfile, "\t<TextLine <GroupID %d>\n", ( 1 + (mif_pentype) )); MIF_set_font(mif_point[np].font); fprintf(gpoutfile, "\t\t<TLOrigin %.3f %.3f> %s <String `%c'>\n", mif_line.fpos_x + mif_point[np].x_offset, mif_line.fpos_y + mif_point[np].y_offset, mif_justify, mif_point[np].chr); fputs("\t>\n", gpoutfile); proc_group_id(( 1 + (mif_pentype) )); mif_justify[0] = '\0'; } } static void MIF_point(x, y, number) unsigned int x, y; int number; { if (number < 0) { number = -1; } else { number %= 6; } mif_put_point(x, y, number); } static void MIF_init() { int i; if (mif_initialized == 0 && mif_in_frame == 0) { mif_initialized = 1; mif_in_frame = 0; free_mif_line(); mif_line.fpos_x = ((0) / 1000.0); mif_line.fpos_y = (((10000 - 1)) / 1000.0); mif_pen[0] = '\0'; mif_pen_width[0] = '\0'; mif_separation[0] = '\0'; MIF_justify_text(LEFT); for (i = 0; i < 20; i++) { mif_group_id[i].group_id = 0; mif_group_id[i].group_existance = 0; } fprintf(gpoutfile, "<MIFFile 3.00> # Generated by gnuplot version %s patchlevel %s; identifies this as a MIF file\n#\n# show borders\n<Document\n<DBordersOn Yes>\n>\n# Set a default pen pattern, pen width, unit and font for subsequent objects\n<Pen 0>\n<Fill 15>\n<PenWidth 0.5 pt>\n<Separation 0>\n<Units Ucm>\n<FontCatalog\n\t<Font <FTag `%s'><FFamily `Times'><FSize %d><FPlain Yes>>\n\t<Font <FTag `%s'><FFamily `ZapfDingbats'><FSize 7.0 pt><FPlain Yes>>\n\t<Font <FTag `%s'><FFamily `Symbol'><FSize 5.0 pt><FPlain Yes>>\n>\n#\n", # 467 "term/mif.trm" version, patchlevel, zgnuplot, 9, zgnuplotp, zgnuplotd); } } static void MIF_reset() { if (mif_initialized != 0 && mif_in_frame == 0) { fputs("#\n# End of MIFFile\n", gpoutfile); mif_initialized = 0; mif_frameno = -1; } } static void MIF_graphics() { int i; if (mif_initialized != 0 && mif_in_frame == 0) { mif_in_frame = 1; mif_frameno++; free_mif_line(); mif_line.fpos_x = ((0) / 1000.0); mif_line.fpos_y = (((10000 - 1)) / 1000.0); mif_pen[0] = '\0'; mif_pen_width[0] = '\0'; mif_separation[0] = '\0'; MIF_justify_text(LEFT); for (i = 0; i < 20; i++) { mif_group_id[i].group_id = 0; mif_group_id[i].group_existance = 0; } fprintf(gpoutfile, "#\n# Frame number %d with plot of graphics\n<Frame\n\t<Pen 15>\n\t<Fill 15>\n\t<PenWidth 0.5 pt>\n\t<Separation 0>\n\t<BRect 2.000 %.3f %.3f %.3f>\n\t<NSOffset 0.000>\n\t<BLOffset 0.000>\n", # 536 "term/mif.trm" mif_frameno, ((float) mif_frameno) * ((10000 + 100) / 1000.0), ((15000) / 1000.0), ((10000) / 1000.0)); } } static void MIF_text() { int i; if (mif_initialized != 0 && mif_in_frame != 0) { if (mif_polyline == 1) put_mif_line(); fputs("\t#\n\t# Group the the objects in groups to make the chart easier to manipulate\n\t# after it's imported into FrameMaker.\n", gpoutfile); for (i = 0; i < 20; i++) { if (mif_group_id[i].group_id != 0 && mif_group_id[i].group_existance == 1) { fprintf(gpoutfile, "\t<Group\n\t\t<ID %d>\n\t>\n", mif_group_id[i].group_id); } } fprintf(gpoutfile, ">\n# End of Frame number %d\n#\n", mif_frameno); mif_in_frame = 0; } } static void MIF_linetype(linetype) int linetype; { if (mif_initialized != 0 && mif_in_frame != 0) { if (mif_polyline == 1) put_mif_line(); if (linetype < 0) { if (linetype == -1) { mif_pentype = 8 + 16; if (mif_colour == 1) sprintf(mif_separation, " <Separation 0> "); } else { mif_pentype = 0 + 16; if (mif_colour == 1) sprintf(mif_separation, " <Separation 0> "); } sprintf(mif_pen_width, " <PenWidth 1.0 pt> "); } else { mif_pentype = (linetype) % 16; sprintf(mif_pen_width, " <PenWidth 0.1 pt> "); if (mif_colour == 1) sprintf(mif_separation, " <Separation %d> ", 2 + (mif_pentype % 6)); } sprintf(mif_pen, " <Pen %d> ", mif_pattern_table[mif_pentype % 16]); } } static int MIF_text_angle(ang) int ang; { if (ang != 0) mif_text_ang = 1; else mif_text_ang = 0; return (1); } static int MIF_justify_text(mode) enum JUSTIFY mode; { int rval = 1; if (mif_initialized != 0 && mif_in_frame != 0) { switch (mode) { case LEFT: sprintf(mif_justify, " <TLAlignment Left> "); break; case CENTRE: sprintf(mif_justify, " <TLAlignment Center> "); break; case RIGHT: sprintf(mif_justify, " <TLAlignment Right> "); break; default: rval = 0; break; } } else { rval = 0; } return (rval); } static void MIF_vector(x, y) unsigned int x, y; { if (mif_initialized != 0 && mif_in_frame != 0) { insert_mif_line(((x) / 1000.0), (((10000 - 1) - (int) y) / 1000.0)); if (mif_polyline == 0) put_mif_line(); } } static void MIF_move(x, y) unsigned int x, y; { if (mif_initialized != 0 && mif_in_frame != 0) { if (mif_polyline == 1) put_mif_line(); mif_line.fpos_x = ((x) / 1000.0); mif_line.fpos_y = (((10000 - 1) - (int) y) / 1000.0); } } static void MIF_set_font(font) char *font; { if (font != mif_font) { fprintf(gpoutfile, "\t\t<Font\n\t\t\t<FTag `%s'>\n\t\t>\n", font); mif_font = font; } } static void MIF_put_text(x, y, str) unsigned int x, y; char str[]; { if (mif_initialized != 0 && mif_in_frame != 0) { if (mif_polyline == 1) put_mif_line(); MIF_move(x, y - (10000/31) / 5); if (strlen(str) > 0) { fprintf(gpoutfile, "\t<TextLine <GroupID %d> %s %s %s\n", ( 1 + (mif_pentype) ), mif_pen, mif_pen_width, mif_separation); MIF_set_font(zgnuplot); fprintf(gpoutfile, "\t\t<TLOrigin %.3f %.3f> %s %s <String `%s'>\n\t>\n", mif_line.fpos_x, mif_line.fpos_y, mif_justify, (mif_text_ang == 1) ? "<Angle 90>" : "", str); proc_group_id(( 1 + (mif_pentype) )); mif_pen[0] = '\0'; mif_pen_width[0] = '\0'; mif_separation[0] = '\0'; mif_justify[0] = '\0'; } } } static int insert_mif_line(fx, fy) double fx, fy; { int rval = 1; if ((mif_line.prev->next = (struct mif_line *) gp_alloc(sizeof(struct mif_line), "MIF driver")) != (struct mif_line *) ((void *)0)) { mif_line.prev->next->next = &mif_line; mif_line.prev->next->prev = mif_line.prev; mif_line.prev = mif_line.prev->next; mif_line.prev->fpos_x = fx; mif_line.prev->fpos_y = fy; rval = 1; } else { mif_line.prev->next = &mif_line; rval = 0; } return (rval); } static int proc_group_id(group_id) int group_id; { int i, rval = 0; if (mif_initialized != 0 && mif_in_frame != 0) { for (i = 0; i < 20 && mif_group_id[i].group_id != 0 && mif_group_id[i].group_id != group_id; i++) { } if (i < 20) { if (mif_group_id[i].group_id == 0) { mif_group_id[i].group_id = group_id; mif_group_id[i].group_existance = 0; } else { if (mif_group_id[i].group_id == group_id) { mif_group_id[i].group_existance = 1; rval = 1; } } } else { rval = -2; } } else { rval = -1; } return (rval); } # 319 "term.h" 2 # 1 "term/pbm.trm" 1 # 63 "term/pbm.trm" # 1 "term/driver.h" 1 # 64 "term/pbm.trm" 2 static void PBMoptions (void); static void PBMinit (void); static void PBMreset (void); static void PBMsetfont (void); static void PBMgraphics (void); static void PBMmonotext (void); static void PBMgraytext (void); static void PBMcolortext (void); static void PBMtext (void); static void PBMlinetype (int linetype); static void PBMpoint (unsigned int x, unsigned int y, int point); # 93 "term/pbm.trm" static int pbm_font = 1; static int pbm_mode = 0; static int pgm_gray[] = { 7, 1, 6, 5, 4, 3, 2, 1, 7 }; static int ppm_color[] ={ 15, 8, 3, 5, 6, 2, 4, 1, 11, 13, 14 }; static void PBMoptions() { pbm_font = 1; pbm_mode = 0; term_options[0] = ('\0'); while (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "s$mall")) pbm_font = 1; else if (almost_equals(c_token, "me$dium")) pbm_font = 2; else if (almost_equals(c_token, "l$arge")) pbm_font = 3; else if (almost_equals(c_token, "mo$nochrome")) pbm_mode = 0; else if (almost_equals(c_token, "g$ray")) pbm_mode = 1; else if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) pbm_mode = 2; else { pbm_font = 1; pbm_mode = 0; int_error("expecting: {small, medium, large} and {monochrome, gray, color}", c_token); } c_token++; } switch (pbm_font) { case 1: strcat(term_options, "small"); break; case 2: strcat(term_options, "medium"); break; case 3: strcat(term_options, "large"); break; } switch (pbm_mode) { case 0: strcat(term_options, " monochrome"); break; case 1: strcat(term_options, " gray"); break; case 2: strcat(term_options, " color"); break; } } static void PBMinit() { PBMsetfont(); } static void PBMreset() { } static void PBMsetfont() { switch (pbm_font) { case 1: b_charsize(0); term->v_char = 11; term->h_char = 7; term->v_tic = 5; term->h_tic = 5; break; case 2: b_charsize(1); term->v_char = 21; term->h_char = 13; term->v_tic = 9; term->h_tic = 9; break; case 3: b_charsize(2); term->v_char = 31; term->h_char = 19; term->v_tic = 13; term->h_tic = 13; break; } } static void PBMgraphics() { int numplanes = 1; switch (pbm_mode) { case 1: numplanes = 3; break; case 2: numplanes = 4; break; } b_makebitmap((unsigned int) ((480) * ysize), (unsigned int) ((640) * xsize), numplanes); b_rastermode = 1; if (pbm_mode != 0) b_setlinetype(0); } static void PBMmonotext() { register int x, j, row; fputs("P4\n", gpoutfile); fprintf(gpoutfile, "%u %u\n", b_ysize, b_xsize); for (x = b_xsize - 1; x >= 0; x--) { row = (b_ysize / 8) - 1; for (j = row; j >= 0; j--) { (void) fputc((char) (*((*b_p)[j] + x)), gpoutfile); } } b_freebitmap(); } static void PBMgraytext() { register int x, j, row; register int i, value; int mask, plane1, plane2, plane3; fprintf(gpoutfile, "P5\n%u %u\n%u\n", b_ysize, b_xsize, 255); for (x = b_xsize - 1; x >= 0; x--) { row = (b_ysize / 8) - 1; for (j = row; j >= 0; j--) { mask = 0x80; plane1 = (*((*b_p)[j] + x)); plane2 = (*((*b_p)[j + b_psize] + x)); plane3 = (*((*b_p)[j + b_psize + b_psize] + x)); for (i = 0; i < 8; i++) { value = 255; if (plane1 & mask) value -= 36; if (plane2 & mask) value -= 73; if (plane3 & mask) value -= 146; (void) fputc((char) (value), gpoutfile); mask >>= 1; } } } b_freebitmap(); } static void PBMcolortext() { register int x, j, row; register int i; int mask, plane1, plane2, plane3, plane4; int red, green, blue; fprintf(gpoutfile, "P6\n%u %u\n%u\n", b_ysize, b_xsize, 255); for (x = b_xsize - 1; x >= 0; x--) { row = (b_ysize / 8) - 1; for (j = row; j >= 0; j--) { mask = 0x80; plane1 = (*((*b_p)[j] + x)); plane2 = (*((*b_p)[j + b_psize] + x)); plane3 = (*((*b_p)[j + b_psize + b_psize] + x)); plane4 = (*((*b_p)[j + b_psize + b_psize + b_psize] + x)); for (i = 0; i < 8; i++) { red = (plane3 & mask) ? 1 : 3; green = (plane2 & mask) ? 1 : 3; blue = (plane1 & mask) ? 1 : 3; if (plane4 & mask) { red--; green--; blue--; } (void) fputc((char) (red * 85), gpoutfile); (void) fputc((char) (green * 85), gpoutfile); (void) fputc((char) (blue * 85), gpoutfile); mask >>= 1; } } } b_freebitmap(); } static void PBMtext() { switch (pbm_mode) { case 0: PBMmonotext(); break; case 1: PBMgraytext(); break; case 2: PBMcolortext(); break; } } static void PBMlinetype(linetype) int linetype; { switch (pbm_mode) { case 0: b_setlinetype(linetype); break; case 1: if (linetype >= 7) linetype %= 7; b_setvalue(pgm_gray[linetype + 2]); break; case 2: if (linetype >= 9) linetype %= 9; b_setvalue(ppm_color[linetype + 2]); break; } } static void PBMpoint(x, y, point) unsigned int x, y; int point; { if (pbm_mode == 0) line_and_point(x, y, point); else do_point(x, y, point); } # 322 "term.h" 2 # 1 "term/post.trm" 1 # 60 "term/post.trm" # 1 "term/driver.h" 1 # 61 "term/post.trm" 2 static void PS_options (void); static void PS_common_init (int encap, int portrait, int uses_fonts, unsigned int xoff, unsigned int yoff, unsigned int bb_xmin, unsigned int bb_ymin, unsigned int bb_xmax, unsigned int bb_ymax, char **dict); static void PS_init (void); static void PS_graphics (void); static void PS_text (void); static void PS_reset (void); static void PS_linetype (int linetype); static void PS_move (unsigned int x, unsigned int y); static void PS_vector (unsigned int x, unsigned int y); static void PS_put_text (unsigned int x, unsigned int y, char *str); static void ENHPS_put_text (unsigned int x, unsigned int y, char *str); static int PS_text_angle (int ang); static int PS_justify_text (enum JUSTIFY mode); static void PS_point (unsigned int x, unsigned int y, int number); static int PS_set_font (char * font); static int ENHPS_set_font (char * font); static void PS_fillbox (int style, unsigned int x1, unsigned int y1, unsigned int width, unsigned int height); static void PS_linewidth (double linewidth); static void PS_pointsize (double ptsize); # 110 "term/post.trm" extern char version[]; extern char patchlevel[]; static char *PS_RememberFont (char *fname, int reencode); static void ENHPS_put_text (unsigned int x, unsigned int y, char *str); static char *ENHPS_recurse (char *p, TBOOLEAN brace, char *fontname, double fontsize, double base, TBOOLEAN widthflag, TBOOLEAN showflag); static char ps_font[50 +1] = "Helvetica" ; static int ps_fontsize = 14; static char ps_enh_font[50 +1]; static int ps_enh_fontsize; static TBOOLEAN ps_portrait = 0; static TBOOLEAN ps_color = 0; static TBOOLEAN ps_solid = 0; static TBOOLEAN ps_eps = 0; static int ps_page=0; static int ps_path_count=0; static int ps_ang=0; static enum JUSTIFY ps_justify=LEFT; static TBOOLEAN ps_duplex_state = 0; static TBOOLEAN ps_duplex_option = 0; static char * PS_header[] = { "/M {moveto} bind def\n", "/L {lineto} bind def\n", "/R {rmoveto} bind def\n", "/V {rlineto} bind def\n", "/vpt2 vpt 2 mul def\n", "/hpt2 hpt 2 mul def\n", "/Lshow { currentpoint stroke M\n", " 0 vshift R show } def\n", "/Rshow { currentpoint stroke M\n", " dup stringwidth pop neg vshift R show } def\n", "/Cshow { currentpoint stroke M\n", " dup stringwidth pop -2 div vshift R show } def\n", "/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def\n", " /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def\n", "/DL { Color {setrgbcolor Solid {pop []} if 0 setdash }\n", " {pop pop pop Solid {pop []} if 0 setdash} ifelse } def\n", "/BL { stroke userlinewidth 2 mul setlinewidth } def\n", "/AL { stroke userlinewidth 2 div setlinewidth } def\n", "/UL { dup gnulinewidth mul /userlinewidth exch def\n", " 10 mul /udl exch def } def\n", "/PL { stroke userlinewidth setlinewidth } def\n", "/LTb { BL [] 0 0 0 DL } def\n", "/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def\n", "/LT0 { PL [] 1 0 0 DL } def\n", "/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def\n", "/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def\n", "/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def\n", "/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def\n", "/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def\n", "/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def\n", "/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def\n", "/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def\n", "/Pnt { stroke [] 0 setdash\n", " gsave 1 setlinecap M 0 0 V stroke grestore } def\n", "/Dia { stroke [] 0 setdash 2 copy vpt add M\n", " hpt neg vpt neg V hpt vpt neg V\n", " hpt vpt V hpt neg vpt V closepath stroke\n", " Pnt } def\n", "/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V\n", " currentpoint stroke M\n", " hpt neg vpt neg R hpt2 0 V stroke\n", " } def\n", "/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M\n", " 0 vpt2 neg V hpt2 0 V 0 vpt2 V\n", " hpt2 neg 0 V closepath stroke\n", " Pnt } def\n", "/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M\n", " hpt2 vpt2 neg V currentpoint stroke M\n", " hpt2 neg 0 R hpt2 vpt2 V stroke } def\n", "/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M\n", " hpt neg vpt -1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt 1.62 mul V closepath stroke\n", " Pnt } def\n", "/Star { 2 copy Pls Crs } def\n", "/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M\n", " 0 vpt2 neg V hpt2 0 V 0 vpt2 V\n", " hpt2 neg 0 V closepath fill } def\n", "/TriUF { stroke [] 0 setdash vpt 1.12 mul add M\n", " hpt neg vpt -1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt 1.62 mul V closepath fill } def\n", "/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M\n", " hpt neg vpt 1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt -1.62 mul V closepath stroke\n", " Pnt } def\n", "/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M\n", " hpt neg vpt 1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt -1.62 mul V closepath fill} def\n", "/DiaF { stroke [] 0 setdash vpt add M\n", " hpt neg vpt neg V hpt vpt neg V\n", " hpt vpt V hpt neg vpt V closepath fill } def\n", "/Pent { stroke [] 0 setdash 2 copy gsave\n", " translate 0 hpt M 4 {72 rotate 0 hpt L} repeat\n", " closepath stroke grestore Pnt } def\n", "/PentF { stroke [] 0 setdash gsave\n", " translate 0 hpt M 4 {72 rotate 0 hpt L} repeat\n", " closepath fill grestore } def\n", "/Circle { stroke [] 0 setdash 2 copy\n", " hpt 0 360 arc stroke Pnt } def\n", "/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def\n", "/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def\n", "/C1 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 0 90 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C2 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 90 180 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C3 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 0 180 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C4 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 180 270 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C5 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 0 90 arc\n", " 2 copy moveto\n", " 2 copy vpt 180 270 arc closepath fill\n", " vpt 0 360 arc } bind def\n", "/C6 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 90 270 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C7 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 0 270 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C8 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 270 360 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C9 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 270 450 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill\n", " 2 copy moveto\n", " 2 copy vpt 90 180 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C11 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 0 180 arc closepath fill\n", " 2 copy moveto\n", " 2 copy vpt 270 360 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C12 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 180 360 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C13 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 0 90 arc closepath fill\n", " 2 copy moveto\n", " 2 copy vpt 180 360 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/C14 { BL [] 0 setdash 2 copy moveto\n", " 2 copy vpt 90 360 arc closepath fill\n", " vpt 0 360 arc } bind def\n", "/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill\n", " vpt 0 360 arc closepath } bind def\n", "/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto\n", " neg 0 rlineto closepath } bind def\n", "/Square { dup Rec } bind def\n", "/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def\n", "/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def\n", "/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def\n", "/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def\n", "/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def\n", "/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def\n", "/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill\n", " exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def\n", "/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def\n", "/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill\n", " 2 copy vpt Square fill\n", " Bsquare } bind def\n", "/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def\n", "/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def\n", "/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill\n", " Bsquare } bind def\n", "/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill\n", " Bsquare } bind def\n", "/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def\n", "/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill\n", " 2 copy vpt Square fill Bsquare } bind def\n", "/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill\n", " 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def\n", "/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def\n", "/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def\n", "/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def\n", "/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def\n", "/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def\n", "/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def\n", "/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def\n", "/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def\n", "/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def\n", "/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def\n", "/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def\n", "/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def\n", "/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def\n", "/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def\n", "/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def\n", "/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def\n", "/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def\n", "/DiaE { stroke [] 0 setdash vpt add M\n", " hpt neg vpt neg V hpt vpt neg V\n", " hpt vpt V hpt neg vpt V closepath stroke } def\n", "/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M\n", " 0 vpt2 neg V hpt2 0 V 0 vpt2 V\n", " hpt2 neg 0 V closepath stroke } def\n", "/TriUE { stroke [] 0 setdash vpt 1.12 mul add M\n", " hpt neg vpt -1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt 1.62 mul V closepath stroke } def\n", "/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M\n", " hpt neg vpt 1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt -1.62 mul V closepath stroke } def\n", "/PentE { stroke [] 0 setdash gsave\n", " translate 0 hpt M 4 {72 rotate 0 hpt L} repeat\n", " closepath stroke grestore } def\n", "/CircE { stroke [] 0 setdash \n", " hpt 0 360 arc stroke } def\n", "/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def\n", "/DiaW { stroke [] 0 setdash vpt add M\n", " hpt neg vpt neg V hpt vpt neg V\n", " hpt vpt V hpt neg vpt V Opaque stroke } def\n", "/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M\n", " 0 vpt2 neg V hpt2 0 V 0 vpt2 V\n", " hpt2 neg 0 V Opaque stroke } def\n", "/TriUW { stroke [] 0 setdash vpt 1.12 mul add M\n", " hpt neg vpt -1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt 1.62 mul V Opaque stroke } def\n", "/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M\n", " hpt neg vpt 1.62 mul V\n", " hpt 2 mul 0 V\n", " hpt neg vpt -1.62 mul V Opaque stroke } def\n", "/PentW { stroke [] 0 setdash gsave\n", " translate 0 hpt M 4 {72 rotate 0 hpt L} repeat\n", " Opaque stroke grestore } def\n", "/CircW { stroke [] 0 setdash \n", " hpt 0 360 arc Opaque stroke } def\n", "/BoxFill { gsave Rec 1 setgray fill grestore } def\n", ((void *)0) }; static char * ENHPS_header[] = { "/MFshow {{dup dup 0 get findfont exch 1 get scalefont setfont\n", " [ currentpoint ] exch dup 2 get 0 exch rmoveto dup dup 5 get exch 4 get\n", " {show} {stringwidth pop 0 rmoveto}ifelse dup 3 get\n", " {2 get neg 0 exch rmoveto pop} {pop aload pop moveto}ifelse} forall} bind def\n", "/MFwidth {0 exch {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont\n", " 5 get stringwidth pop add}\n", " {pop} ifelse} forall} bind def\n", "/MLshow { currentpoint stroke M\n", " 0 exch R MFshow } bind def\n", "/MRshow { currentpoint stroke M\n", " exch dup MFwidth neg 3 -1 roll R MFshow } def\n", "/MCshow { currentpoint stroke M\n", " exch dup MFwidth -2 div 3 -1 roll R MFshow } def\n", ((void *)0) }; static struct PS_FontName { char *name; struct PS_FontName *next; } *PS_DocFonts = ((void *)0); static char *PS_RememberFont(fname, can_reencode) char *fname; int can_reencode; { struct PS_FontName *fnp; char *recode = ((void *)0); for (fnp=PS_DocFonts; fnp ; fnp = fnp->next) if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (fnp->name) && __builtin_constant_p (fname) && (__s1_len = strlen (fnp->name), __s2_len = strlen (fname), (!((size_t)(const void *)((fnp->name) + 1) - (size_t)(const void *)(fnp->name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((fname) + 1) - (size_t)(const void *)(fname) == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (fnp->name), (__const char *) (fname), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (fnp->name) && ((size_t)(const void *)((fnp->name) + 1) - (size_t)(const void *)(fnp->name) == 1) && (__s1_len = strlen (fnp->name), __s1_len < 4) ? (__builtin_constant_p (fname) && ((size_t)(const void *)((fname) + 1) - (size_t)(const void *)(fname) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (fnp->name))[0] - ((__const unsigned char *) (__const char *)(fname))[0]); if (__s1_len > 0 && __result == 0) ! { __result = (((__const unsigned char *) (__const char *) (fnp->name))[1] - ((__const unsigned char *) (__const char *) (fname))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (fnp->name))[2] - ((__const unsigned char *) (__const char *) (fname))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (fnp->name))[3] - ((__const unsigned char *) (__const char *) (fname))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (fname); register int __result = (((__const unsigned char *) (__const char *) (fnp->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (fnp->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (fnp->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const uns! igned char *) (__const char *) (fnp->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (fname) && ((size_t)(const void *)((fname) + 1) - (size_t)(const void *)(fname) == 1) && (__s2_len = strlen (fname), __s2_len < 4) ? (__builtin_constant_p (fnp->name) && ((size_t)(const void *)((fnp->name) + 1) - (size_t)(const void *)(fnp->name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (fnp->name))[0] - ((__const unsigned char *) (__const char *)(fname))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (fnp->name))[1] - ((__const unsigned char *) (__const char *) (fname))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (fnp->name))[2] - ((__const unsigned char *) (__const char *) (fname))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (fnp->name))[3] - ((__const unsigned char! *) (__const char *) (fname))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (fnp->name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (fname))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (fname))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (fname))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (fname))[3]); } } __result; }))) : strcmp (fnp->name, fname)))); })==0) return ((void *)0); fnp = (struct PS_FontName *)gp_alloc(sizeof(struct PS_FontName), "PostScript Font record"); fnp->name = gp_alloc(1+strlen(fname), "PostScript Font name"); (__extension__ (__builtin_constant_p (fname) ? (((size_t)(const void *)((fname) + 1) - (size_t)(const void *)(fname) == 1) && strlen (fname) + 1 <= 8 ? __strcpy_small (fnp->name, __extension__ (((__const unsigned char *) (__const char *) (fname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (fname))[0]), __extension__ (((__const unsigned char *) (__const char *) (fname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (fname))[4]), __extension__ (((((__const unsigned char *) (__const char *) (fname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (fname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (fname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (fname))[0]), __extension__ (((((__const unsigned char *) (__const char *) (fname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (fname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (fname))[4 + 1]) << 8 | ((__const unsigned char *) (_! _const char *) (fname))[4]), strlen (fname) + 1) : (char *) memcpy (fnp->name, fname, strlen (fname) + 1)) : strcpy (fnp->name, fname))); fnp->next = PS_DocFonts; PS_DocFonts = fnp; switch(encoding) { case 1: recode = "reencodeISO def\n"; break; case 2: recode = "reencodeCP437 def\n"; break; case 3 : recode = "reencodeCP850 def\n"; break; } if (can_reencode && recode) { fprintf(gpoutfile,"/%s %s",fname, recode); return ((void *)0); } else return recode; } static int PS_pen_x, PS_pen_y; static int PS_taken; static int PS_linetype_last; static TBOOLEAN PS_relative_ok; static void PS_options() { if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token,"p$ortrait")) { ps_portrait=1; ps_eps=0; c_token++; } else if (almost_equals(c_token,"l$andscape")) { ps_portrait=0; ps_eps=0; c_token++; } else if (almost_equals(c_token,"ep$sf")) { ps_portrait=1; ps_eps = 1; c_token++; } else if (almost_equals(c_token,"d$efault")) { ps_portrait=0; ps_eps=0; ps_color=0; ps_solid=0; ps_duplex_option=0; (__extension__ (__builtin_constant_p ("Helvetica") ? (((size_t)(const void *)(("Helvetica") + 1) - (size_t)(const void *)("Helvetica") == 1) && strlen ("Helvetica") + 1 <= 8 ? __strcpy_small (ps_font, __extension__ (((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 2]) <! < 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4]), strlen ("Helvetica") + 1) : (char *) memcpy (ps_font, "Helvetica", strlen ("Helvetica") + 1)) : strcpy (ps_font, "Helvetica"))); ps_fontsize = 14; term->v_char = (unsigned int)(ps_fontsize*(10)); term->h_char = (unsigned int)(ps_fontsize*(10)*6/10); term->put_text = PS_put_text; c_token++; } } if (almost_equals(c_token, "enh$anced")) { term->put_text = ENHPS_put_text; term->set_font = ENHPS_set_font; ++c_token; } else if (almost_equals(c_token, "noenh$anced")) { term->put_text = PS_put_text; term->set_font = PS_set_font; ++c_token; } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token,"m$onochrome")) { ps_color=0; c_token++; } else if (almost_equals(c_token,"c$olor") || almost_equals(c_token,"c$olour")) { ps_color=1; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token,"so$lid")) { ps_solid=1; c_token++; } else if (almost_equals(c_token,"da$shed")) { ps_solid=0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token,"si$mplex")) { ps_duplex_state = 0; ps_duplex_option = 1; c_token++; } else if (almost_equals(c_token,"du$plex")) { ps_duplex_state = 1; ps_duplex_option = 1; c_token++; } else if (almost_equals(c_token,"defaultp$lex")) { ps_duplex_option = 0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";")) && isstring(c_token)) { quote_str(ps_font,c_token, 50); c_token++; } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; ps_fontsize = (int)real(const_express(&a)); term->v_char = (unsigned int)(ps_fontsize*(10)); term->h_char = (unsigned int)(ps_fontsize*(10)*6/10); } sprintf(default_font,"%s,%d",ps_font,ps_fontsize); sprintf(term_options,"%s %senhanced %s %s %s \"%s\" %d", ps_eps ? "eps" : (ps_portrait ? "portrait" : "landscape"), term->put_text == ENHPS_put_text ? "" : "no", ps_color ? "color" : "monochrome", ps_solid ? "solid" : "dashed", ps_duplex_option ? (ps_duplex_state ? "duplex" : "simplex") : "defaultplex", ps_font,ps_fontsize); } static int ps_common_encap; static int ps_common_portrait; static int ps_common_uses_fonts; static unsigned int ps_common_xoff, ps_common_yoff; static void PS_common_init(encap, portrait, uses_fonts, xoff, yoff, bb_xmin, bb_ymin, bb_xmax, bb_ymax, dict) int encap; int portrait; int uses_fonts; unsigned int xoff, yoff; unsigned int bb_xmin, bb_ymin, bb_xmax, bb_ymax; char **dict; { static char psi1[] = "%%%%Creator: gnuplot %s patchlevel %s\n%%%%CreationDate: %s%%%%DocumentFonts: %s\n"; static char psi2[] = "%%%%EndComments\n/gnudict 256 dict def\ngnudict begin\n/Color %s def\n/Solid %s def\n/gnulinewidth %.3f def\n/userlinewidth gnulinewidth def\n/vshift %d def\n/dl {%d mul} def\n/hpt_ %.1f def\n/vpt_ %.1f def\n/hpt hpt_ def\n/vpt vpt_ def\n"; # 675 "term/post.trm" static char * PS_iso_8859_1_encoding[] = { "/reencodeISO {\n", "dup dup findfont dup length dict begin\n", "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", "currentdict /CharStrings known {\n", "\tCharStrings /Idieresis known {\n", "\t\t/Encoding ISOLatin1Encoding def } if\n} if\n", "currentdict end definefont\n", "} def\n", "/ISOLatin1Encoding [\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", "/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", "/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", "/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", "/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", "/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", "/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve\n", "/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut\n", "/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar\n", "/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n", "/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n", "/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\n", "/guillemotright/onequarter/onehalf/threequarters/questiondown\n", "/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n", "/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n", "/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n", "/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute\n", "/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n", "/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n", "/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex\n", "/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n", "/yacute/thorn/ydieresis\n", "] def\n", ((void *)0) }; # 728 "term/post.trm" static char * PS_cp_437_encoding[] = { "/reencodeCP437 {\n", "dup dup findfont dup length dict begin\n", "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", "currentdict /CharStrings known {\n", "\tCharStrings /Idieresis known {\n", "\t\t/Encoding CP437Encoding def } if\n} if\n", "currentdict end definefont\n", "} def\n", "/CP437Encoding [\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", "/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", "/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", "/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", "/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", "/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", "/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/.notdef\n", "/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla\n", "/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring\n", "/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave\n", "/ydieresis/Odieresis/Udieresis/cent/sterling/yen/.notdef/florin\n", "/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine\n", "/questiondown/.notdef/logicalnot/onehalf/onequarter/exclamdown/guillemotleft/guillemotright\n", "/space/space/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/germandbls/.notdef/.notdef/.notdef/.notdef/mu/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/infinity/.notdef/.notdef/.notdef\n", "/.notdef/plusminus/greaterequal/lessequal/.notdef/.notdef/divide/.notdef\n", "/degree/bullet/periodcentered/.notdef/nsuperior/twosuperior/.notdef\n", "] def\n", ((void *)0) }; # 776 "term/post.trm" static char * PS_cp_850_encoding[] = { "/reencodeCP850 {\n", "dup dup findfont dup length dict begin\n", "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", "currentdict /CharStrings known {\n", "\tCharStrings /Idieresis known {\n", "\t\t/Encoding CP850Encoding def } if\n} if\n", "currentdict end definefont\n", "} def\n", "/CP850Encoding [\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", "/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", "/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", "/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", "/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", "/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", "/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", "/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/.notdef\n", "/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla\n", "/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring\n", "/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave\n", "/ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/multiply/florin\n", "/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine\n", "/questiondown/registered/logicalnot/onehalf/onequarter/exclamdown/guillemotleft/guillemotright\n", "/space/space/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/atilde/Atilde\n", "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency\n", "/eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex\n", "/Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef\n", "/Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/mu/thorn\n", "/Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/macron/acute\n", "/hyphen/plusminus/equal/threequarters/paragraph/section/divide/.notdef\n", "/degree/.notdef/periodcentered/onesuperior/threesuperior/twosuperior/.notdef\n", "] def\n", ((void *)0) }; struct TERMENTRY *t = term; int i; time_t now; ps_common_encap = encap; ps_common_portrait = portrait; ps_common_uses_fonts = uses_fonts; ps_common_xoff = xoff; ps_common_yoff = yoff; ps_page = 0; if (!encap) fprintf(gpoutfile,"%%!PS-Adobe-2.0\n"); else fprintf(gpoutfile,"%%!PS-Adobe-2.0 EPSF-2.0\n"); if (outstr) fprintf(gpoutfile, "%%%%Title: %s\n", outstr ); time(&now); fprintf(gpoutfile, psi1, version, patchlevel, asctime(localtime(&now)), uses_fonts ? "(atend)" : ""); fprintf(gpoutfile,"%%%%BoundingBox: %d %d %d %d\n", xoff + bb_xmin, yoff + bb_ymin, xoff + bb_xmax, yoff + bb_ymax); fprintf(gpoutfile,"%%%%Orientation: %s\n", ps_portrait ? "Portrait" : "Landscape"); if (!encap) fprintf(gpoutfile,"%%%%Pages: (atend)\n"); fprintf(gpoutfile, psi2, ps_color ? "true" : "false", ps_solid ? "true" : "false", (0.5*(10)), (int)(t->v_char)/(-3), (10), (5040/80)/2.0, (5040/80)/2.0); if (uses_fonts && (encoding == 1)) { for (i=0; PS_iso_8859_1_encoding[i] != ((void *)0); i++) { fprintf(gpoutfile,"%s",PS_iso_8859_1_encoding[i]); } } if (uses_fonts && (encoding == 2)) { for (i=0; PS_cp_437_encoding[i] != ((void *)0); i++) { fprintf(gpoutfile,"%s",PS_cp_437_encoding[i]); } } if (uses_fonts && (encoding == 3)) { for (i=0; PS_cp_850_encoding[i] != ((void *)0); i++) { fprintf(gpoutfile,"%s",PS_cp_850_encoding[i]); } } for ( i=0; PS_header[i] != ((void *)0); i++) fprintf(gpoutfile,"%s",PS_header[i]); if (ps_duplex_option) fprintf(gpoutfile, "statusdict begin %s setduplexmode end\n", ps_duplex_state ? "true" : "false"); PS_RememberFont(ps_font, 1); if (dict) while (*dict) fputs(*(dict++), gpoutfile); fprintf(gpoutfile,"end\n%%%%EndProlog\n"); } static void PS_init() { unsigned int xmin_t, ymin_t, xmax_t, ymax_t; if (ps_eps) { term->xmax = 7200; term->ymax = 5040; xmin_t = 7200 * xoffset / (2*(10)); xmax_t = 7200 * (xsize + xoffset) / (2*(10)); ymin_t = 5040 * yoffset / (2*(10)); ymax_t = 5040 * (yoffset + ysize) / (2*(10)); } else if (ps_portrait) { term->xmax = 5040; term->ymax = 7200; xmin_t = 5040 * xoffset / (10); xmax_t = 5040 * (xsize + xoffset) / (10); ymin_t = 7200 * yoffset / (10); ymax_t = 7200 * (ysize + yoffset) / (10); } else { term->xmax = 7200; term->ymax = 5040; ymin_t = 7200 * xoffset / (10); ymax_t = 7200 * (xsize+xoffset) / (10); xmin_t = 5040 * (1-ysize-yoffset) / (10); xmax_t = 5040 * (1-yoffset) / (10); } (__extension__ (__builtin_constant_p (ps_font) ? (((size_t)(const void *)((ps_font) + 1) - (size_t)(const void *)(ps_font) == 1) && strlen (ps_font) + 1 <= 8 ? __strcpy_small (ps_enh_font, __extension__ (((__const unsigned char *) (__const char *) (ps_font))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0]), __extension__ (((__const unsigned char *) (__const char *) (ps_font))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4]), __extension__ (((((__const unsigned char *) (__const char *) (ps_font))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0]), __extension__ (((((__const unsigned char *) (__const char *) (ps_font))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4 + 1])! << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4]), strlen (ps_font) + 1) : (char *) memcpy (ps_enh_font, ps_font, strlen (ps_font) + 1)) : strcpy (ps_enh_font, ps_font))); ps_enh_fontsize = ps_fontsize; PS_common_init(ps_eps, ps_portrait, 1, 50, 50, xmin_t, ymin_t, xmax_t, ymax_t, (term->put_text == ENHPS_put_text) ? ENHPS_header : ((void *)0)); } static void PS_graphics() { static char psg1[] = "0 setgray\nnewpath\n"; struct TERMENTRY *t = term; ps_page++; if (!ps_common_encap) fprintf(gpoutfile,"%%%%Page: %d %d\n",ps_page,ps_page); fprintf(gpoutfile,"gnudict begin\ngsave\n"); fprintf(gpoutfile,"%d %d translate\n",ps_common_xoff, ps_common_yoff); fprintf(gpoutfile,"%.3f %.3f scale\n", (ps_eps ? 0.5 : 1.0)/(10), (ps_eps ? 0.5 : 1.0)/(10)); if (!ps_common_portrait) { fprintf(gpoutfile,"90 rotate\n0 %d translate\n", (int)(-5040)); } fprintf(gpoutfile, psg1); if (ps_common_uses_fonts) fprintf(gpoutfile, "(%s) findfont %d scalefont setfont\n", ps_font, (t->v_char) ); ps_path_count = 0; PS_relative_ok = 0; PS_pen_x = PS_pen_y = -4000; PS_taken = 0; PS_linetype_last = -1; } static void PS_text() { ps_path_count = 0; fprintf(gpoutfile,"stroke\ngrestore\nend\nshowpage\n"); } static void PS_reset() { fprintf(gpoutfile,"%%%%Trailer\n"); if (ps_common_uses_fonts) { fprintf(gpoutfile,"%%%%DocumentFonts: "); while (PS_DocFonts) { struct PS_FontName *fnp; fnp = PS_DocFonts->next; fprintf(gpoutfile, "%s%s", PS_DocFonts->name, fnp ? " " : "\n"); free(PS_DocFonts->name); free(PS_DocFonts); PS_DocFonts=fnp; } } if (!ps_common_encap) fprintf(gpoutfile,"%%%%Pages: %d\n",ps_page); } static void PS_linetype(linetype) int linetype; { linetype = (linetype % 9) + 2; if (linetype < 0) linetype = 0; PS_relative_ok = 0; # 1006 "term/post.trm" PS_linetype_last = linetype; fprintf(gpoutfile,"LT%c\n", "ba012345678"[linetype]); ps_path_count = 0; } static void PS_linewidth (linewidth) double linewidth; { fprintf(gpoutfile,"%.3f UL\n",linewidth); # 1038 "term/post.trm" } static void PS_pointsize (ptsize) double ptsize; { fprintf(gpoutfile,"%.3f UP\n",ptsize); # 1067 "term/post.trm" } static void PS_move(x,y) unsigned int x,y; { int dx, dy; char abso[5+2*(3*sizeof(int))], rel[5+2*(3*sizeof(int))]; dx = x - PS_pen_x; dy = y - PS_pen_y; if (dx==0 && dy==0 && PS_relative_ok) return; sprintf(abso, "%d %d M\n", x, y); sprintf(rel, "%d %d R\n", dx, dy); if (strlen(rel) < strlen(abso) && PS_relative_ok){ fputs(rel, gpoutfile); PS_taken++; }else fputs(abso, gpoutfile); PS_relative_ok = 1; ps_path_count += 1; PS_pen_x = x; PS_pen_y = y; } static void PS_vector(x,y) unsigned int x,y; { int dx, dy; char abso[5+2*(3*sizeof(int))], rel[5+2*(3*sizeof(int))]; dx = x - PS_pen_x; dy = y - PS_pen_y; if (dx==0 && dy==0) return; sprintf(abso, "%d %d L\n", x, y); sprintf(rel, "%d %d V\n", dx, dy); if (strlen(rel) < strlen(abso) && PS_relative_ok){ fputs(rel, gpoutfile); PS_taken++; }else fputs(abso, gpoutfile); PS_relative_ok = 1; ps_path_count += 1; PS_pen_x = x; PS_pen_y = y; if (ps_path_count >= 400) { fprintf(gpoutfile,"currentpoint stroke M\n"); ps_path_count = 0; } } static void PS_put_text(x,y,str) unsigned int x, y; char *str; { char ch; if (!strlen(str)) return; PS_move(x,y); if (ps_ang != 0) fprintf(gpoutfile,"currentpoint gsave translate %d rotate 0 0 M\n" ,ps_ang*90); _IO_putc ('(', gpoutfile); ch = *str++; while(ch!='\0') { if ( (ch=='(') || (ch==')') || (ch=='\\') ) _IO_putc ('\\', gpoutfile); _IO_putc (ch, gpoutfile); ch = *str++; } switch(ps_justify) { case LEFT : fprintf(gpoutfile,") Lshow\n"); break; case CENTRE : fprintf(gpoutfile,") Cshow\n"); break; case RIGHT : fprintf(gpoutfile,") Rshow\n"); break; } if (ps_ang != 0) fprintf(gpoutfile,"grestore\n"); ps_path_count = 0; PS_relative_ok = 0; } static int PS_text_angle(ang) int ang; { ps_ang=ang; return 1; } static int PS_justify_text(mode) enum JUSTIFY mode; { ps_justify=mode; return 1; } static int PS_set_font(font) char *font; { char name[32]; int size,sep; sep=__extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (",") && ((size_t)(const void *)((",") + 1) - (size_t)(const void *)(",") == 1) ? ((__r0 = ((__const char *) (","))[0], __r0 == '\0') ? strlen (font) : ((__r1 = ((__const char *) (","))[1], __r1 == '\0') ? __strcspn_c1 (font, __r0) : ((__r2 = ((__const char *) (","))[2], __r2 == '\0') ? __strcspn_c2 (font, __r0, __r1) : (((__const char *) (","))[3] == '\0' ? __strcspn_c3 (font, __r0, __r1, __r2) : strcspn (font, ","))))) : strcspn (font, ",")); }); (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (name, font, sep) : strncpy (name, font, sep)) : strncpy (name, font, sep))); name[sep]=('\0'); size=ps_fontsize; sscanf (&(font[sep+1]),"%d",&size); fprintf(gpoutfile,"/%s findfont %d scalefont setfont\n",name,size*(10)); PS_RememberFont(name,1 ); return 1; } static void PS_point(x,y,number) unsigned int x,y; int number; { static char * pointFNS[] = {"Pnt", "Pls", "Crs", "Star", "Box", "BoxF", "Circle", "CircleF", "TriU", "TriUF", "TriD", "TriDF", "Dia", "DiaF", "Pent", "PentF", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13", "C14", "C15", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "S12", "S13", "S14", "S15", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "D14", "D15", "BoxE", "CircE", "TriUE", "TriDE", "DiaE", "PentE", "BoxW", "CircW", "TriUW", "TriDW", "DiaW", "PentW" }; if (number < 0) number = -1; else number %= sizeof(pointFNS)/sizeof(pointFNS[0]) -1; fprintf(gpoutfile,"%d %d %s\n", x, y, pointFNS[number+1]); PS_relative_ok = 0; ps_path_count = 0; PS_linetype_last = -1; } static void PS_fillbox(style, x1,y1,x2,y2) int style; unsigned int x1,y1,x2,y2; { if (ps_path_count) { fprintf(gpoutfile, "stroke "); ps_path_count = 0; } fprintf(gpoutfile, "%d %d %d %d BoxFill\n", x1,y1, x2,y2); PS_relative_ok = 0; PS_linetype_last = -1; } # 1246 "term/post.trm" static TBOOLEAN ENHps_opened_string; static float ENHps_max_height, ENHps_min_height; # 1264 "term/post.trm" static char *ENHPS_recurse(p, brace, fontname, fontsize, base, widthflag, showflag) char *p, *fontname; TBOOLEAN brace, widthflag, showflag; double fontsize, base; { # 1291 "term/post.trm" { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } if (base + fontsize > ENHps_max_height) { ENHps_max_height = base + fontsize; ; } if (base < ENHps_min_height) { ENHps_min_height = base; ; } while (*p) { float shift; switch (*p) { case '}' : if (brace) return (p); fprintf(stderr, "enhpost printer driver - spurious }\n"); break; case '_' : case '^' : shift = (*p == '^') ? 0.5 : -0.3; { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } p = ENHPS_recurse(p+1, 0, fontname, fontsize*0.8, base+shift*fontsize, widthflag, showflag); break; case '{' : { char *savepos=((void *)0), save=0; char *localfontname=fontname, ch; int recode=1; float f=fontsize; if (*++p == '/') { while (*++p == ' '); if (*p=='-') { recode=0; while (*++p == ' '); } localfontname = p; while ((ch = *p) > ' ' && ch != '=' && ch != '*') ++p; save = *(savepos=p); if (ch == '=') { *p++ = '\0'; f = (float)strtod(p, &p); if (f) f *= (10); else f = fontsize; } else if (ch == '*') { *p++ = '\0'; f = (float)strtod(p, &p); if (f) f *= fontsize; else f = fontsize; } else { *p++ = '\0'; f = fontsize; } while (*p == ' ') ++p; if (*localfontname) { char *recodestring = PS_RememberFont(localfontname, recode && !ENHps_opened_string); if (recode && recodestring) { { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } fprintf(gpoutfile, "/%s %s", localfontname, recodestring); } } else localfontname = fontname; } p = ENHPS_recurse(p, 1, localfontname, f, base, widthflag, showflag); ; { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } if (savepos) *savepos = save; break; } case '@' : { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } p = ENHPS_recurse(++p, 0, fontname, fontsize, base, 0, showflag); break; case '&' : { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } p = ENHPS_recurse(++p, 0, fontname, fontsize, base, widthflag, 0); break; case '(' : case ')' : { if (!ENHps_opened_string) { fprintf(gpoutfile, "[(%s) %.1f %.1f %s %s (", fontname, fontsize, base, widthflag ? "true" : "false", showflag ? "true" : "false"); ENHps_opened_string = 1; } } fputc('\\', gpoutfile); fputc(*p, gpoutfile); break; case '\\' : if (p[1]=='\\' || p[1]=='(' || p[1]==')') { { if (!ENHps_opened_string) { fprintf(gpoutfile, "[(%s) %.1f %.1f %s %s (", fontname, fontsize, base, widthflag ? "true" : "false", showflag ? "true" : "false"); ENHps_opened_string = 1; } } fputc('\\', gpoutfile); } else if (p[1] >= '0' && p[1] <= '7') { { if (!ENHps_opened_string) { fprintf(gpoutfile, "[(%s) %.1f %.1f %s %s (", fontname, fontsize, base, widthflag ? "true" : "false", showflag ? "true" : "false"); ENHps_opened_string = 1; } } fputc('\\', gpoutfile); fputc(p[1], gpoutfile); ++p; if (p[1] >= '0' && p[1] <= '7') { fputc(p[1], gpoutfile); ++p; if (p[1] >= '0' && p[1] <= '7') { fputc(p[1], gpoutfile); ++p; } } break; } ++p; default: { if (!ENHps_opened_string) { fprintf(gpoutfile, "[(%s) %.1f %.1f %s %s (", fontname, fontsize, base, widthflag ? "true" : "false", showflag ? "true" : "false"); ENHps_opened_string = 1; } } fputc(*p, gpoutfile); } if (!brace) { { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } return(p); } if (*p) ++p; } { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } return p; } static int ENHPS_set_font(font) char *font; { ; if (*font) { int sep=__extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (",") && ((size_t)(const void *)((",") + 1) - (size_t)(const void *)(",") == 1) ? ((__r0 = ((__const char *) (","))[0], __r0 == '\0') ? strlen (font) : ((__r1 = ((__const char *) (","))[1], __r1 == '\0') ? __strcspn_c1 (font, __r0) : ((__r2 = ((__const char *) (","))[2], __r2 == '\0') ? __strcspn_c2 (font, __r0, __r1) : (((__const char *) (","))[3] == '\0' ? __strcspn_c3 (font, __r0, __r1, __r2) : strcspn (font, ","))))) : strcspn (font, ",")); }); (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (ps_enh_font, font, sep) : strncpy (ps_enh_font, font, sep)) : strncpy (ps_enh_font, font, sep))); ps_enh_font[sep]=('\0'); ps_enh_fontsize=ps_fontsize; sscanf (font+sep+1,"%d",&ps_enh_fontsize); PS_RememberFont(ps_enh_font, 1); } else { (__extension__ (__builtin_constant_p (ps_font) ? (((size_t)(const void *)((ps_font) + 1) - (size_t)(const void *)(ps_font) == 1) && strlen (ps_font) + 1 <= 8 ? __strcpy_small (ps_enh_font, __extension__ (((__const unsigned char *) (__const char *) (ps_font))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0]), __extension__ (((__const unsigned char *) (__const char *) (ps_font))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4]), __extension__ (((((__const unsigned char *) (__const char *) (ps_font))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))[0]), __extension__ (((((__const unsigned char *) (__const char *) (ps_font))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))! [4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (ps_font))[4]), strlen (ps_font) + 1) : (char *) memcpy (ps_enh_font, ps_font, strlen (ps_font) + 1)) : strcpy (ps_enh_font, ps_font))); ps_enh_fontsize = ps_fontsize; } return 1; } static void ENHPS_put_text(x, y, str) unsigned int x, y; char *str; { if (!strlen(str)) return; if (ps_path_count) { fputs(" stroke\n",gpoutfile); ps_path_count=0; PS_relative_ok=0; } # 1572 "term/post.trm" PS_move(x,y); if (ps_ang != 0) fprintf(gpoutfile,"currentpoint gsave translate %d rotate 0 0 moveto\n", ps_ang*90); fputs("[ ",gpoutfile); ENHps_opened_string = 0; ENHps_max_height = -1000; ENHps_min_height = 1000; # 1598 "term/post.trm" while (*(str = ENHPS_recurse(str, 1, ps_enh_font, (double)(ps_enh_fontsize*(10)), 0.0, 1, 1))) { { if (ENHps_opened_string) { fputs(")]\n", gpoutfile); ENHps_opened_string = 0; } } if (*str == '}') fprintf(stderr, "enhpost printer driver - ignoring spurious }\n"); else fprintf(stderr, "internal error in enhpost driver - *str=0x%x\n", *str); if (!*++str) break; } ENHps_max_height += ENHps_min_height; fprintf(gpoutfile, "] %.1f ", -ENHps_max_height/3); switch(ps_justify) { case LEFT : fprintf(gpoutfile, "MLshow\n"); break; case CENTRE : fprintf(gpoutfile, "MCshow\n"); break; case RIGHT : fprintf(gpoutfile, "MRshow\n"); break; } if (ps_ang != 0) fputs("grestore\n", gpoutfile); ps_path_count = 0; PS_relative_ok=0; } # 330 "term.h" 2 # 1 "term/qms.trm" 1 # 55 "term/qms.trm" # 1 "term/driver.h" 1 # 56 "term/qms.trm" 2 static void QMS_init (void); static void QMS_graphics (void); static void QMS_text (void); static void QMS_linetype (int linetype); static void QMS_move (unsigned int x, unsigned int y); static void QMS_vector (unsigned int x2, unsigned int y2); static void QMS_put_text (unsigned int x, unsigned int y, char str[]); static void QMS_reset (void); # 85 "term/qms.trm" static int qms_line = 0; static void QMS_init() { fputs("^PY^-\n^IOL\n^ISYNTAX00000^F^IB11000^IJ00000^IT00000\n", gpoutfile); # 99 "term/qms.trm" } static void QMS_graphics() { fputs("^IGV\n", gpoutfile); } static void QMS_text() { fputs("^IGE\n^-^,", gpoutfile); } static void QMS_linetype(linetype) int linetype; { static int width[2 + 9] = { 7, 3, 3, 3, 3, 5, 5, 5, 7, 7, 7 }; static int type[2 + 9] = { 0, 1, 0, 2, 3, 0, 2, 3, 0, 2, 3 }; # 136 "term/qms.trm" qms_line = linetype; if (linetype >= 9) linetype %= 9; fprintf(gpoutfile, "^PW%02d\n", width[linetype + 2]); switch (type[linetype + 2]) { case 1: fputs("^PV102025^G\n^V1\n", gpoutfile); break; case 2: fputs("^PV202050^G\n^V2\n", gpoutfile); break; case 3: fputs("^PV302100^G\n^V3\n", gpoutfile); break; default: case 0: fputs("^V0\n", gpoutfile); break; } } static void QMS_move(x, y) unsigned int x, y; { fprintf(gpoutfile, "^U%05d:%05d\n", 1000 + x, (6000 - 1) + 1000 - y); } static void QMS_vector(x2, y2) unsigned int x2, y2; { fprintf(gpoutfile, "^D%05d:%05d\n", 1000 + x2, (6000 - 1) + 1000 - y2); } static void QMS_put_text(x, y, str) unsigned int x, y; char str[]; { char ch; QMS_move(x, y + 120 / 3); fputs("^IGE\n", gpoutfile); ch = *str++; while (ch != ('\0')) { if (ch == '^') _IO_putc ('^', gpoutfile); _IO_putc (ch, gpoutfile); ch = *str++; } fputs("\n^IGV\n", gpoutfile); QMS_linetype(qms_line); } static void QMS_reset() { fputs("^PN^-\n", gpoutfile); } # 333 "term.h" 2 # 1 "term/table.trm" 1 # 336 "term.h" 2 # 1 "term/tgif.trm" 1 # 69 "term/tgif.trm" # 1 "term/driver.h" 1 # 70 "term/tgif.trm" 2 static void TGIF_options (void); static void TGIF_init (void); static void TGIF_reset (void); static void TGIF_text (void); static void TGIF_graphics (void); static void TGIF_move (unsigned int ux, unsigned int uy); static void TGIF_vector (unsigned int ux, unsigned int uy); static void TGIF_linetype (int linetype); static void TGIF_put_text (unsigned int ux, unsigned int uy, char *str); static int TGIF_text_angle (int ang); static int TGIF_justify_text (enum JUSTIFY mode); static void TGIF_point (unsigned int ux, unsigned int uy, int number); static void TGIF_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static int TGIF_set_font (char *font); static void TGIF_set_pointsize (double size); # 128 "term/tgif.trm" static unsigned int uLastTgifX, uLastTgifY; static unsigned int uActNr; static unsigned int uActPage; static unsigned int uActResolution; static unsigned int uActZoom; static unsigned int uActAngle; static unsigned int uActThick; static unsigned int uActPointSize; static unsigned int uActStyle; static unsigned int uActJust; static unsigned int uXshift; static unsigned int uYshift; static unsigned int uTgifPlotCount; static unsigned int uTgifPlotRow, uTgifPlotCol; static unsigned int uTgif_win_horiz, uTgif_win_verti; static char sActColor[255]; static unsigned int uDefaultFontSize; static unsigned int uActFontSize; static char sDefaultFont[255]; static char sActFont[255]; static TBOOLEAN TgifSolid = 0; static TBOOLEAN TgifPortrait = 1; static unsigned int uTgifPlotsPerPage = 1; static unsigned int uTextAngle[] = {0, 3}; static unsigned int uLineThick[] = { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static unsigned int uLineStyle[] = { 0, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0 }; static char *psColors[] = { "black", "black", "red", "green", "blue", "magenta", "cyan", "yellow", "DarkSeaGreen", "HotPink", "black", "coral"}; # 182 "term/tgif.trm" static int iTgifPolyCount; static unsigned int uBuffX[100], uBuffY[100]; enum eState { NEWPOLY = 100, INPOLY }; static enum eState eTgifState = NEWPOLY; static void TGIF_flush_poly (void); static void TGIF_flush_poly() { int i; if (eTgifState == INPOLY) { fprintf(gpoutfile, "poly('%s',%d,[\n\t", sActColor, iTgifPolyCount); for (i = 0; i < iTgifPolyCount - 1; i++) { fprintf(gpoutfile, "%u,%u,", uBuffX[i], uBuffY[i]); if ((i + 1) % 8 == 0) fputs("\n\t", gpoutfile); } fprintf(gpoutfile, "%u,%u],0,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n", uBuffX[iTgifPolyCount - 1], uBuffY[iTgifPolyCount - 1], uActThick, uActNr, uActStyle); uActNr++; eTgifState = NEWPOLY; iTgifPolyCount = 0; if (gpoutfile != (FILE *) ((void *)0)) fflush(gpoutfile); } } static void TGIF_options() { struct value a, b; double dscaleH, dscaleV; (__extension__ (__builtin_constant_p ("Helvetica") ? (((size_t)(const void *)(("Helvetica") + 1) - (size_t)(const void *)("Helvetica") == 1) && strlen ("Helvetica") + 1 <= 8 ? __strcpy_small (sActFont, __extension__ (((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 2]) << 8 | ((__const uns! igned char *) (__const char *) ("Helvetica"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4]), strlen ("Helvetica") + 1) : (char *) memcpy (sActFont, "Helvetica", strlen ("Helvetica") + 1)) : strcpy (sActFont, "Helvetica"))); (__extension__ (__builtin_constant_p ("Helvetica") ? (((size_t)(const void *)(("Helvetica") + 1) - (size_t)(const void *)("Helvetica") == 1) && strlen ("Helvetica") + 1 <= 8 ? __strcpy_small (sDefaultFont, __extension__ (((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4 + 2]) << 8 | ((__const! unsigned char *) (__const char *) ("Helvetica"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("Helvetica"))[4]), strlen ("Helvetica") + 1) : (char *) memcpy (sDefaultFont, "Helvetica", strlen ("Helvetica") + 1)) : strcpy (sDefaultFont, "Helvetica"))); uActFontSize = 18; uDefaultFontSize = 18; term->v_char = (unsigned int) (uActFontSize); term->h_char = (unsigned int) (uActFontSize * 6 / 10); TgifPortrait = 1; uTgifPlotsPerPage = 1; uTgifPlotRow = 1; uTgifPlotCol = 1; uTgif_win_horiz = 1; uTgif_win_verti = 1; uActResolution = 100; if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "p$ortrait")) { TgifPortrait = 1; c_token++; } else if (almost_equals(c_token, "l$andscape")) { TgifPortrait = 0; uActResolution = 140; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (equals(c_token, "[")) { c_token++; if ((c_token >= num_tokens || equals(c_token,";"))) { int_error("no. windows: [horizontal,vertical] expected", c_token); } else if (!equals(c_token, ",")) { uTgif_win_horiz = (int) real(const_express(&a)); } if (!equals(c_token, ",")) int_error("',' expected", c_token); c_token++; if (!equals(c_token, "]")) { uTgif_win_verti = (int) real(const_express(&a)); } if (!equals(c_token, "]")) int_error("expecting ']'", c_token); c_token++; uTgifPlotsPerPage = uTgif_win_verti * uTgif_win_horiz; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "s$olid")) { TgifSolid = 1; c_token++; } else if (almost_equals(c_token, "d$ashed")) { TgifSolid = 0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";")) && isstring(c_token)) { quote_str(sActFont, c_token, 1024); (__extension__ (__builtin_constant_p (sActFont) ? (((size_t)(const void *)((sActFont) + 1) - (size_t)(const void *)(sActFont) == 1) && strlen (sActFont) + 1 <= 8 ? __strcpy_small (sDefaultFont, __extension__ (((__const unsigned char *) (__const char *) (sActFont))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (sActFont))[0]), __extension__ (((__const unsigned char *) (__const char *) (sActFont))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (sActFont))[4]), __extension__ (((((__const unsigned char *) (__const char *) (sActFont))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (sActFont))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (sActFont))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (sActFont))[0]), __extension__ (((((__const unsigned char *) (__const char *) (sActFont))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (sActFont))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (sA! ctFont))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (sActFont))[4]), strlen (sActFont) + 1) : (char *) memcpy (sDefaultFont, sActFont, strlen (sActFont) + 1)) : strcpy (sDefaultFont, sActFont))); c_token++; } if (!(c_token >= num_tokens || equals(c_token,";"))) { uActFontSize = (unsigned int) real(const_express(&b)); uDefaultFontSize = uActFontSize; term->v_char = (unsigned int) (uActFontSize); term->h_char = (unsigned int) (uActFontSize * 6 / 10); } if (TgifPortrait) { dscaleH = (double) 100.0 *(950) / (xsize * (950 + (uTgif_win_horiz - 1) * 1030)); dscaleV = (double) 100.0 *(1400) / (ysize * (634 + (uTgif_win_verti - 1) * 714)); uActResolution = (int) ( (dscaleH) < (dscaleV) ? (dscaleH) : (dscaleV) ); switch (uTgif_win_verti) { case 1: uActZoom = 0; break; case 2: uActZoom = 1; break; default: uActZoom = 2; break; } } else { dscaleH = (double) 100.0 *(1400) / (xsize * (950 + (uTgif_win_horiz - 1) * 1030)); dscaleV = (double) 100.0 *(950) / (ysize * (634 + (uTgif_win_verti - 1) * 714)); uActResolution = (unsigned int) ( (dscaleH) < (dscaleV) ? (dscaleH) : (dscaleV) ); switch (uTgif_win_verti) { case 1: uActZoom = 0; break; case 2: uActZoom = 1; break; default: uActZoom = 2; break; } } sprintf(term_options, "%s [%u,%u] %s \"%s\" %u", TgifPortrait ? "portrait" : "landscape", uTgif_win_horiz, uTgif_win_verti, TgifSolid ? "solid" : "dashed", sActFont, uActFontSize); } static void TGIF_init() { if (multiplot) { uActResolution = (unsigned int) 100; if (uTgifPlotsPerPage > 1) { fputs("warning: using standard multiplot\n", stderr); uTgifPlotsPerPage = 1; } uActZoom = 1; } fprintf(gpoutfile, "%%TGIF 2.15-p7\nstate(%d,30,%u,0,0,%u,16,1,9,1,1,0,0,0,0,1,0,'%s',0,%u,0,0,1,10,0,0,1,1,0,16,0,0,1,1,1).\n%%\n%% @(#)$Header: /var/tmp/CVSROOT/gnuplot/term/tgif.trm,v 1.10 1998/12/16 19:48:20 lhecking Exp $\n%% %%W%%\n%%\npage(1,\"\").\n", TgifPortrait ? 0 : 1, uActResolution, uActZoom, sActFont, uActFontSize); eTgifState = NEWPOLY; iTgifPolyCount = 0; uTgifPlotCount = 0; uActPage = 1; } static void TGIF_graphics() { TGIF_flush_poly(); if (multiplot) { term->xmax = (TgifPortrait) ? 950 : 1400; term->ymax = (TgifPortrait) ? 1400 : 950; uLastTgifX = (TgifPortrait) ? 50 : 50; uLastTgifY = (TgifPortrait) ? 1400 + 50 : 950 + 50; uYshift = uLastTgifY; uXshift = uLastTgifX; } else { if (uTgifPlotCount < uTgifPlotsPerPage) uTgifPlotCount++; else { fprintf(stderr, "error: number of plots > plots per page\n"); return; } uXshift = (unsigned int) 50 *100 / uActResolution + (xsize * (uTgifPlotCol - 1) * 1030); uYshift = (unsigned int) 50 *100 / uActResolution + (ysize * (634 + (uTgifPlotRow - 1) * 714)); if (uTgifPlotCount % uTgif_win_horiz == 0) { uTgifPlotCol = 1; uTgifPlotRow++; } else { uTgifPlotCol++; } uLastTgifX = uXshift; uLastTgifY = uYshift; } iTgifPolyCount = 0; uActNr = 0; uActAngle = 0; uActThick = 1; uActStyle = 0; uActJust = LEFT; (__extension__ (__builtin_constant_p (psColors[0]) ? (((size_t)(const void *)((psColors[0]) + 1) - (size_t)(const void *)(psColors[0]) == 1) && strlen (psColors[0]) + 1 <= 8 ? __strcpy_small (sActColor, __extension__ (((__const unsigned char *) (__const char *) (psColors[0]))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[0]), __extension__ (((__const unsigned char *) (__const char *) (psColors[0]))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[4]), __extension__ (((((__const unsigned char *) (__const char *) (psColors[0]))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[0]), __extension__ (((((__const unsigned char *) (__const char *) (psColors[0]))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[4 + 2]) << 8 | ((__const un! signed char *) (__const char *) (psColors[0]))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (psColors[0]))[4]), strlen (psColors[0]) + 1) : (char *) memcpy (sActColor, psColors[0], strlen (psColors[0]) + 1)) : strcpy (sActColor, psColors[0]))); } static void TGIF_text() { TGIF_flush_poly(); } static void TGIF_reset() { TGIF_flush_poly(); iTgifPolyCount = 0; uTgifPlotCount = 0; uTgifPlotRow = 1; uTgifPlotCol = 1; if (gpoutfile != (FILE *) ((void *)0)) fflush(gpoutfile); } static void TGIF_linetype(linetype) int linetype; { unsigned int ult; TGIF_flush_poly(); if (linetype >= 0) ult = 2 + linetype % 10; else ult = linetype + 2; (__extension__ (__builtin_constant_p (psColors[ult]) ? (((size_t)(const void *)((psColors[ult]) + 1) - (size_t)(const void *)(psColors[ult]) == 1) && strlen (psColors[ult]) + 1 <= 8 ? __strcpy_small (sActColor, __extension__ (((__const unsigned char *) (__const char *) (psColors[ult]))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[0]), __extension__ (((__const unsigned char *) (__const char *) (psColors[ult]))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[4]), __extension__ (((((__const unsigned char *) (__const char *) (psColors[ult]))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[0]), __extension__ (((((__const unsigned char *) (__const char *) (psColors[ult]))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))! [4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (psColors[ult]))[4]), strlen (psColors[ult]) + 1) : (char *) memcpy (sActColor, psColors[ult], strlen (psColors[ult]) + 1)) : strcpy (sActColor, psColors[ult]))); uActThick = uLineThick[ult]; if (!TgifSolid) uActStyle = uLineStyle[ult]; else { if (ult == 1) uActStyle = uLineStyle[ult]; else uActStyle = uLineStyle[2]; } } static void TGIF_move(ux, uy) unsigned int ux, uy; { uLastTgifX = ux + uXshift; uLastTgifY = uYshift - uy; if (eTgifState == INPOLY) TGIF_flush_poly(); } static void TGIF_vector(ux, uy) unsigned int ux, uy; { ux = ux + uXshift; uy = uYshift - uy; if (eTgifState == NEWPOLY) { uBuffX[0] = uLastTgifX; uBuffY[0] = uLastTgifY; iTgifPolyCount = 1; eTgifState = INPOLY; } uBuffX[iTgifPolyCount] = ux; uBuffY[iTgifPolyCount] = uy; uLastTgifX = ux; uLastTgifY = uy; iTgifPolyCount++; eTgifState = INPOLY; if (iTgifPolyCount == 100) { TGIF_flush_poly(); } } static void TGIF_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; TBOOLEAN head; { TGIF_flush_poly(); sx = sx + uXshift; ex = ex + uXshift; sy = uYshift - sy; ey = uYshift - ey; if (head) { fprintf(gpoutfile, "poly('%s',%d,[\n\t%u,%u,%u,%u],1,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n", sActColor, 2, sx, sy, ex, ey, uActThick, uActNr, uActStyle); } else { fprintf(gpoutfile, "poly('%s',%d,[\n\t%u,%u,%u,%u],1,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n", sActColor, 2, sx, sy, ex, ey, uActThick, uActNr, uActStyle); } uActNr++; uLastTgifX = ex; uLastTgifY = ey; } static void TGIF_put_text(ux, uy, str) unsigned int ux, uy; char *str; { unsigned int x, y; struct TERMENTRY *t = term; TGIF_flush_poly(); x = ux + uXshift; y = uYshift - uy - t->v_char / 2; if (strlen(str) == 0) return; fprintf(gpoutfile, "text('%s',%u,%u,'%s',0,%u,1,%u,%u,1,55,119,%u,0,15,4,0,0,0,0,[\n\t\"%s\"]).\n", sActColor, x, y, sActFont, uActFontSize, uActJust, uActAngle, uActNr, str); uActNr += 2; uActFontSize = uDefaultFontSize; (__extension__ (__builtin_constant_p (sDefaultFont) ? (((size_t)(const void *)((sDefaultFont) + 1) - (size_t)(const void *)(sDefaultFont) == 1) && strlen (sDefaultFont) + 1 <= 8 ? __strcpy_small (sActFont, __extension__ (((__const unsigned char *) (__const char *) (sDefaultFont))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[0]), __extension__ (((__const unsigned char *) (__const char *) (sDefaultFont))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[4]), __extension__ (((((__const unsigned char *) (__const char *) (sDefaultFont))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[0]), __extension__ (((((__const unsigned char *) (__const char *) (sDefaultFont))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[4 + 2]) << 8 |! ((__const unsigned char *) (__const char *) (sDefaultFont))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (sDefaultFont))[4]), strlen (sDefaultFont) + 1) : (char *) memcpy (sActFont, sDefaultFont, strlen (sDefaultFont) + 1)) : strcpy (sActFont, sDefaultFont))); } static int TGIF_text_angle(ang) int ang; { uActAngle = uTextAngle[ang]; return (1); } static int TGIF_justify_text(mode) enum JUSTIFY mode; { uActJust = mode; return (1); } static void TGIF_point(ux, uy, number) unsigned int ux, uy; int number; { double p; double x, y; x = (double) (ux + uXshift); y = (double) (uYshift - uy); p = pointsize * 8.0; if (p == (double) 0.0) p = 0.1; TGIF_flush_poly(); if (number != -1) number = number % 63; switch (number) { case -1: fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,1,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x, y, x + 1, y + 1, uActNr++); break; case 0: fprintf(gpoutfile, "group([\npoly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\npoly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr+1, sActColor, x - p, y + p, x + p, y - p, uActNr+2); uActNr += 4; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 1: fprintf(gpoutfile, "group([\npoly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]),\npoly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n])\n", sActColor, x, y - p - 1, x, y + p + 1, uActNr+1, sActColor, x - p - 1, y, x + p + 1, y, uActNr+2); uActNr += 4; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 2: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]),\n", sActColor, x, y - p - 1, x, y + p + 1, uActNr++); fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n])\n", sActColor, x - p - 1, y, x + p + 1, y, uActNr++); fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x - p, y + p, x + p, y - p, uActNr++); uActNr += 4; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 3: fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; case 4: fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; case 5: fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; case 6: fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; case 7: fprintf(gpoutfile, "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y + 0.75 * p, x - p, y + 0.75 * p, x, y - p, uActNr); uActNr++; break; case 8: fprintf(gpoutfile, "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y + 0.75 * p, x - p, y + 0.75 * p, x, y - p, uActNr); uActNr++; break; case 9: fprintf(gpoutfile, "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x - p, y - 0.75 * p, x + p, y - 0.75 * p, x, y + p, uActNr); uActNr++; break; case 10: fprintf(gpoutfile, "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x - p, y - 0.75 * p, x + p, y - 0.75 * p, x, y + p, uActNr); uActNr++; break; case 11: fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); uActNr++; break; case 12: fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); uActNr++; break; case 13: fprintf(gpoutfile, "polygon('%s',6,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y - p / 4, x + 0.625 * p, y + p, x - 0.625 * p, y + p, x - p, y - p / 4, x, y - p, uActNr); uActNr++; break; case 14: fprintf(gpoutfile, "polygon('%s',6,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y - p / 4, x + 0.625 * p, y + p, x - 0.625 * p, y + p, x - p, y - p / 4, x, y - p, uActNr); uActNr++; break; case 15: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,4480,2560,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x + p * 0.342, y - p * 0.94, x - p * 0.342, y - p * 0.94, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 16: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x + p, y, x, y - p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 17: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y - p, x - p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 18: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,11520,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x + p, y, x - p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 19: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x - p, y, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 20: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x + p, y, x, y - p, 2 * p, 2 * p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x - p, y, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 21: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,11520,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y - p, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 22: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,17280,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x + p, y, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 23: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y + p, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 24: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,11520,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y + p, x, y - p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 25: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y - p, x - p, y, 2 * p, 2 * p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,5760,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y + p, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 26: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,17280,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y + p, x - p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 27: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,11520,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x - p, y, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 28: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,17280,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x - p, y, x, y - p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 29: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,17280,%u,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x, y, x, y - p, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 30: fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; case 31: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p / 4, y - p, x + p / 4, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 32: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 33: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 34: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 35: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 36: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 37: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 38: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 39: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y, x + p, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 40: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 41: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 42: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 43: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x + p, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 44: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 45: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 46: fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; case 47: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - 0.625 * p, y - 0.375 * p, x - 0.375 * p, y - 0.625 * p, x + p / 8, y - p / 8, x - p / 8, y + p / 8, x - 0.625 * p, y - 0.375 * p, uActNr); fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); uActNr += 2; break; case 48: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y - p / 2, x, y - p, x + p / 2, y - p / 2, x, y, x - p / 2, y - p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 49: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 50: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x, y - p, x + p / 2, y - p / 2, x - p / 2, y + p / 2, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 51: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y + p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p / 2, y + p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 52: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y - p / 2, x, y - p, x + p / 2, y - p / 2, x, y, x - p / 2, y - p / 2, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y + p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p / 2, y + p / 2, uActNr); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 53: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x - p / 2, y - p / 2, x + p / 2, y + p / 2, x, y + p, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 54: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x, y - p, x + p / 2, y - p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 55: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y, x + p / 2, y - p / 2, x + p, y, x + p / 2, y + p / 2, x, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 56: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y - p / 2, x, y - p, x + p, y, x + p / 2, y + p / 2, x - p / 2, y - p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 57: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y, x + p / 2, y - p / 2, x + p, y, x + p / 2, y + p / 2, x, y, uActNr); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 58: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x, y - p, x + p, y, x + p / 2, y + p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 59: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y + p / 2, x + p / 2, y - p / 2, x + p, y, x, y + p, x - p / 2, y + p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 60: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p / 2, y - p / 2, x, y - p, x + p, y, x, y + p, x - p / 2, y + p / 2, x, y, x - p / 2, y - p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 61: fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x + p / 2, y - p / 2, x + p, y, x, y + p, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; case 62: fprintf(gpoutfile, "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); uActNr++; break; } } static void TGIF_set_pointsize(size) double size; { uActPointSize = size; } static int TGIF_set_font(font) char *font; { char name[32]; int size, sep; sep = __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (",") && ((size_t)(const void *)((",") + 1) - (size_t)(const void *)(",") == 1) ? ((__r0 = ((__const char *) (","))[0], __r0 == '\0') ? strlen (font) : ((__r1 = ((__const char *) (","))[1], __r1 == '\0') ? __strcspn_c1 (font, __r0) : ((__r2 = ((__const char *) (","))[2], __r2 == '\0') ? __strcspn_c2 (font, __r0, __r1) : (((__const char *) (","))[3] == '\0' ? __strcspn_c3 (font, __r0, __r1, __r2) : strcspn (font, ","))))) : strcspn (font, ",")); }); (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (name, font, sep) : strncpy (name, font, sep)) : strncpy (name, font, sep))); name[sep] = ('\0'); size = uActFontSize; sscanf(&(font[sep + 1]), "%d", &size); uActFontSize = size; return 1; } # 339 "term.h" 2 # 1 "term/tkcanvas.trm" 1 # 75 "term/tkcanvas.trm" # 1 "term/driver.h" 1 # 76 "term/tkcanvas.trm" 2 static void TK_options (void); static void TK_init (void); static void TK_graphics (void); static void TK_text (void); static void TK_linetype (int linetype); static void TK_move (unsigned int x, unsigned int y); static void TK_vector (unsigned int x, unsigned int y); static void TK_put_text (unsigned int x, unsigned int y, char *str); static void TK_reset (void); static int TK_justify_text (enum JUSTIFY); static int TK_set_font (char *font); static void TK_linewidth (double linewidth); # 111 "term/tkcanvas.trm" extern double min_array[], max_array[], base_array[], log_base_array[]; extern TBOOLEAN log_array[]; extern int xleft, xright, ybot, ytop; extern TBOOLEAN is_3d_plot; static int tk_lastx; static int tk_lasty; static int tk_color = 0; static char tk_anchor[7] = "w"; static double tk_linewidth = 1.0; static int tk_perl = 0; static int tk_interactive = 0; static char *tk_colors[] = { "black", "gray", "red", "blue", "green", "brown", "magenta", "cyan" }; static void TK_options() { tk_perl = 0; tk_interactive = 0; if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "p$erltk")) { tk_perl = 1; c_token++; } if (almost_equals(c_token, "i$nteractive")) { tk_interactive = 1; c_token++; } } sprintf(term_options, "%s %s", tk_perl ? "perltk" : "", tk_interactive ? "interactive" : ""); } static void TK_init() { } static void TK_graphics() { # 167 "term/tkcanvas.trm" if (tk_perl) { fputs("sub gnuplot {\nmy($can) = @_;\n$can->delete('all');\nmy $cmx = ($can->configure(-width))[4];\nmy $cmy = ($can->configure(-height))[4];\nmy $cmx = $can->width - 2 * $can->cget(-border);\nif ($cmx <= 1) {\n$cmx = ($can->cget(-width));\n}\nmy $cmy = $can->height - 2 * $can->cget(-border);\nif ($cmy <= 1) {\n$cmy = ($can->cget(-height));\n}\n", # 178 "term/tkcanvas.trm" gpoutfile); } else { fputs("proc gnuplot can {\n$can delete all\nset cmx [expr [winfo width $can]-2*[$can cget -border]]\nif {$cmx <= 1} {set cmx [$can cget -width]}\nset cmy [expr [winfo height $can]-2*[$can cget -border]]\nif {$cmy <= 1} {set cmy [$can cget -height]}\n", gpoutfile); } tk_lastx = tk_lasty = tk_color = 0; } static void TK_reset() { } static void TK_linetype(linetype) int linetype; { tk_color = (linetype + 2) & 7; } static void TK_linewidth(linewidth) double linewidth; { tk_linewidth = linewidth; } static void TK_move(x, y) unsigned int x, y; { tk_lastx = x; tk_lasty = 1000 - y; } # 230 "term/tkcanvas.trm" static void TK_vector(x, y) unsigned int x, y; { if (tk_interactive && !is_3d_plot) { if (tk_perl) fprintf(gpoutfile, "$can->bind("); else fprintf(gpoutfile, "$can bind [\n"); } y = 1000 - y; if (tk_perl) { fprintf(gpoutfile,"$can->createLine($cmx * %d / 1000, $cmy * %d / 1000, $cmx * %d / 1000, $cmy * %d / 1000, -fill => q{%s}, -width => %f, -capstyle => q{round})", tk_lastx, tk_lasty, x, y, tk_colors[tk_color], tk_linewidth); } else { fprintf(gpoutfile,"$can create line [expr $cmx * %d /1000] [expr $cmy * %d /1000] [expr $cmx * %d /1000] [expr $cmy * %d /1000] -fill %s -width %f -capstyle round\n", tk_lastx, tk_lasty, x, y, tk_colors[tk_color], tk_linewidth); } if (tk_interactive && !is_3d_plot) { if (tk_perl) { fprintf(gpoutfile,", '<Button>' => [\\&gnuplot_xy, %f, %f, %f, %f, %f, %f, %f, %f,", (log_array[2]) ?pow(base_array[2],min_array[2]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])) :min_array[2]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2]), (log_array[1]) ?pow(base_array[1],min_array[1]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])) :min_array[1]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1]), (log_array[6]) ?pow(base_array[6],min_array[6]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])) :min_array[6]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6]), (log_array[5]) ?pow(base_array[5],min_array[5]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])) :min_array[5]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5]), (log_array[2]) ?pow(base_array[2],min_array[2]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])) :min_array[2]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2]), (log_array[1]) ?pow(base_array[1],min_array[1]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])) :min_array[1]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1]), (log_array[6]) ?pow(base_array[6],min_array[6]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])) :min_array[6]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6]), (log_array[5]) ?pow(base_array[5],min_array[5]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])) :min_array[5]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])); if (log_array[2]) { fprintf(gpoutfile, " %f,", (log_array[2]) ?pow(base_array[2],min_array[2]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])) :min_array[2]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])); } else { fprintf(gpoutfile, " \"\","); } if (log_array[1]) { fprintf(gpoutfile, " %f,", (log_array[1]) ?pow(base_array[1],min_array[1]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])) :min_array[1]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])); } else { fprintf(gpoutfile, " \"\","); } if (log_array[6]) { fprintf(gpoutfile, " %f,", (log_array[6]) ?pow(base_array[6],min_array[6]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])) :min_array[6]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])); } else { fprintf(gpoutfile, " \"\","); } if (log_array[5]) { fprintf(gpoutfile, " %f", (log_array[5]) ?pow(base_array[5],min_array[5]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])) :min_array[5]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])); } else { fprintf(gpoutfile, " \"\""); } fprintf(gpoutfile, "]);\n"); } else { fprintf(gpoutfile,"] <Button> \"gnuplot_xy %%W %f %f %f %f %f %f %f %f", (log_array[2]) ?pow(base_array[2],min_array[2]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])) :min_array[2]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2]), (log_array[1]) ?pow(base_array[1],min_array[1]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])) :min_array[1]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1]), (log_array[6]) ?pow(base_array[6],min_array[6]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])) :min_array[6]+(double)(tk_lastx-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6]), (log_array[5]) ?pow(base_array[5],min_array[5]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])) :min_array[5]+(double)((1000 -tk_lasty)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5]), (log_array[2]) ?pow(base_array[2],min_array[2]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])) :min_array[2]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2]), (log_array[1]) ?pow(base_array[1],min_array[1]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])) :min_array[1]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1]), (log_array[6]) ?pow(base_array[6],min_array[6]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])) :min_array[6]+(double)(x-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6]), (log_array[5]) ?pow(base_array[5],min_array[5]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])) :min_array[5]+(double)((1000 -y)-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])); if (log_array[2]) { fprintf(gpoutfile, " %f", (log_array[2]) ?pow(base_array[2],min_array[2]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])) :min_array[2]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[2]-min_array[2])); } else { fprintf(gpoutfile, " {}"); } if (log_array[1]) { fprintf(gpoutfile, " %f", (log_array[1]) ?pow(base_array[1],min_array[1]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])) :min_array[1]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[1]-min_array[1])); } else { fprintf(gpoutfile, " {}"); } if (log_array[6]) { fprintf(gpoutfile, " %f", (log_array[6]) ?pow(base_array[6],min_array[6]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])) :min_array[6]+(double)(0.5 * (x + tk_lastx)-xleft)/(double)(xright-xleft)*(max_array[6]-min_array[6])); } else { fprintf(gpoutfile, " {}"); } if (log_array[5]) { fprintf(gpoutfile, " %f", (log_array[5]) ?pow(base_array[5],min_array[5]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])) :min_array[5]+(double)((1000 -0.5 * (y + tk_lasty))-ybot)/(double)(ytop-ybot)*(max_array[5]-min_array[5])); } else { fprintf(gpoutfile, " {}"); } fprintf(gpoutfile, "\"\n"); } } else { if (tk_perl) { fprintf(gpoutfile, ";\n"); } } tk_lastx = x; tk_lasty = y; } static void TK_put_text(x, y, str) unsigned int x, y; char *str; { y = 1000 - y; if (tk_perl) { fprintf(gpoutfile,"$can->createText($cmx * %d / 1000, $cmy * %d / 1000, -text => q{%s}, -fill => q{%s}, -anchor => '%s', (defined $font ? (-font => $font) : ()));\n", x, y, str, tk_colors[tk_color], tk_anchor); } else { fprintf(gpoutfile,"eval $can create text [expr $cmx * %d /1000] [expr $cmy * %d /1000] -text \\{%s\\} -fill %s -anchor %s [expr [info exists font]?\"-font \\$font\":{}]\n", x, y, str, tk_colors[tk_color], tk_anchor); } } static int TK_justify_text(anchor) enum JUSTIFY anchor; { int return_value; switch (anchor) { case RIGHT: (__extension__ (__builtin_constant_p ("e") ? (((size_t)(const void *)(("e") + 1) - (size_t)(const void *)("e") == 1) && strlen ("e") + 1 <= 8 ? __strcpy_small (tk_anchor, __extension__ (((__const unsigned char *) (__const char *) ("e"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("e"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("e"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("e"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("e"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("e"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("e"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("e"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("e"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("e"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("e"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("e"))[4])! , strlen ("e") + 1) : (char *) memcpy (tk_anchor, "e", strlen ("e") + 1)) : strcpy (tk_anchor, "e"))); return_value = 1; break; case CENTRE: (__extension__ (__builtin_constant_p ("center") ? (((size_t)(const void *)(("center") + 1) - (size_t)(const void *)("center") == 1) && strlen ("center") + 1 <= 8 ? __strcpy_small (tk_anchor, __extension__ (((__const unsigned char *) (__const char *) ("center"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("center"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("center"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("center"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("center"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("center"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("center"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("center"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("center"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("center"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cent! er"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("center"))[4]), strlen ("center") + 1) : (char *) memcpy (tk_anchor, "center", strlen ("center") + 1)) : strcpy (tk_anchor, "center"))); return_value = 1; break; case LEFT: (__extension__ (__builtin_constant_p ("w") ? (((size_t)(const void *)(("w") + 1) - (size_t)(const void *)("w") == 1) && strlen ("w") + 1 <= 8 ? __strcpy_small (tk_anchor, __extension__ (((__const unsigned char *) (__const char *) ("w"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("w"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("w"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("w"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("w"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("w"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("w"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("w"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[4])! , strlen ("w") + 1) : (char *) memcpy (tk_anchor, "w", strlen ("w") + 1)) : strcpy (tk_anchor, "w"))); return_value = 1; break; default: (__extension__ (__builtin_constant_p ("w") ? (((size_t)(const void *)(("w") + 1) - (size_t)(const void *)("w") == 1) && strlen ("w") + 1 <= 8 ? __strcpy_small (tk_anchor, __extension__ (((__const unsigned char *) (__const char *) ("w"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("w"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("w"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("w"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("w"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("w"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("w"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("w"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("w"))[4])! , strlen ("w") + 1) : (char *) memcpy (tk_anchor, "w", strlen ("w") + 1)) : strcpy (tk_anchor, "w"))); return_value = 0; } return return_value; } static int TK_set_font(font) char *font; { if (!font || *font == ('\0')) { if (tk_perl) fputs("undef $font;\n", gpoutfile); else fputs("catch {unset $font}\n", gpoutfile); } else { char *name; int size = 0; size_t sep = __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (",") && ((size_t)(const void *)((",") + 1) - (size_t)(const void *)(",") == 1) ? ((__r0 = ((__const char *) (","))[0], __r0 == '\0') ? strlen (font) : ((__r1 = ((__const char *) (","))[1], __r1 == '\0') ? __strcspn_c1 (font, __r0) : ((__r2 = ((__const char *) (","))[2], __r2 == '\0') ? __strcspn_c2 (font, __r0, __r1) : (((__const char *) (","))[3] == '\0' ? __strcspn_c3 (font, __r0, __r1, __r2) : strcspn (font, ","))))) : strcspn (font, ",")); }); name = malloc(sep + 1); if (!name) return 0; (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (name, font, sep) : strncpy (name, font, sep)) : strncpy (name, font, sep))); name[sep] = ('\0'); if (sep < strlen(font)) sscanf(&(font[sep + 1]), "%d", &size); if (tk_perl) { fprintf(gpoutfile,"if ($can->can('fontCreate')) {\n$font = $can->fontCreate(-family => q{%s}", name); if (size) fprintf(gpoutfile, ", -size => %d", size); fputs(");\n}\n", gpoutfile); } else { fprintf(gpoutfile, "set font [font create -family %s", name); if (size) fprintf(gpoutfile, " -size %d", size); fputs("]\n", gpoutfile); } free(name); } return 1; } static void TK_text() { # 479 "term/tkcanvas.trm" if (tk_perl) { fputs("};\n", gpoutfile); if (!is_3d_plot) { fputs("sub gnuplot_plotarea {\n", gpoutfile); fprintf(gpoutfile, "return (%d, %d, %d, %d);\n", xleft, xright, 1000 - ytop, 1000 - ybot); fputs("};\n", gpoutfile); fputs("sub gnuplot_axisranges {\n", gpoutfile); fprintf(gpoutfile, "return (%f, %f, %f, %f, %f, %f, %f, %f);\n", min_array[2], max_array[2], min_array[1], max_array[1], min_array[6], max_array[6], min_array[5], max_array[5]); fputs("};\n", gpoutfile); if (tk_interactive) { fputs("sub gnuplot_xy {\n", gpoutfile); fputs("my ($win, $x1s, $y1s, $x2s, $y2s, $x1e, $y1e, $x2e, $y2e, $x1m, $y1m, $x2m, $y2m) = @_;\n", gpoutfile); fputs("if (defined &user_gnuplot_coordinates) {\n", gpoutfile); fputs("my $id = $win->find('withtag', 'current');\n", gpoutfile); fputs("user_gnuplot_coordinates $win, $id, $x1s, $y1s, $x2s, $y2s, $x1e, $y1e, $x2e, $y2e, $x1m, $y1m, $x2m, $y2m\n", gpoutfile); fputs("} else {\n", gpoutfile); fputs("if (length($x1m)>0) {print \" $x1m\";} else {print \" \", 0.5*($x1s+$x1e);}\n", gpoutfile); fputs("if (length($y1m)>0) {print \" $y1m\";} else {print \" \", 0.5*($y1s+$y1e);}\n", gpoutfile); fputs("if (length($x2m)>0) {print \" $x2m\";} else {print \" \", 0.5*($x2s+$x2e);}\n", gpoutfile); fputs("if (length($y2m)>0) {print \" $y2m\";} else {print \" \", 0.5*($y2s+$y2e);}\n", gpoutfile); fputs("print \"\\n\"\n", gpoutfile); fputs("}\n", gpoutfile); fputs("};\n", gpoutfile); } } } else { fputs("}\n", gpoutfile); if (!is_3d_plot) { fputs("proc gnuplot_plotarea {} {\n", gpoutfile); fprintf(gpoutfile, "return {%d %d %d %d}\n", xleft, xright, 1000 - ytop, 1000 - ybot); fputs("}\n", gpoutfile); fputs("proc gnuplot_axisranges {} {\n", gpoutfile); fprintf(gpoutfile, "return {%f %f %f %f %f %f %f %f}\n", min_array[2], max_array[2], min_array[1], max_array[1], min_array[6], max_array[6], min_array[5], max_array[5]); fputs("}\n", gpoutfile); if (tk_interactive) { fputs("proc gnuplot_xy {win x1s y1s x2s y2s x1e y1e x2e y2e x1m y1m x2m y2m} {\n", gpoutfile); fputs("if {([llength [info commands user_gnuplot_coordinates]])} {\n", gpoutfile); fputs("set id [$win find withtag current]\n", gpoutfile); fputs("user_gnuplot_coordinates $win $id $x1s $y1s $x2s $y2s $x1e $y1e $x2e $y2e $x1m $y1m $x2m $y2m\n", gpoutfile); fputs("} else {\n", gpoutfile); fputs("if {[string length $x1m]>0} {puts -nonewline \" $x1m\"} else {puts -nonewline \" [expr 0.5*($x1s+$x1e)]\"}\n", gpoutfile); fputs("if {[string length $y1m]>0} {puts -nonewline \" $y1m\"} else {puts -nonewline \" [expr 0.5*($y1s+$y1e)]\"}\n", gpoutfile); fputs("if {[string length $x2m]>0} {puts -nonewline \" $x2m\"} else {puts -nonewline \" [expr 0.5*($x2s+$x2e)]\"}\n", gpoutfile); fputs("if {[string length $y2m]>0} {puts \" $y2m\"} else {puts \" [expr 0.5*($y2s+$y2e)]\"}\n", gpoutfile); fputs("}\n", gpoutfile); fputs("}\n", gpoutfile); } } } fflush(gpoutfile); } # 342 "term.h" 2 # 364 "term.h" # 1 "term/epson.trm" 1 # 58 "term/epson.trm" # 1 "term/driver.h" 1 # 59 "term/epson.trm" 2 # 87 "term/epson.trm" static void EPSONinit (void); static void EPSONreset (void); # 104 "term/epson.trm" static void EPSONgraphics (void); static void EPSONtext (void); static void EPS180graphics (void); static void EPS180text (void); # 126 "term/epson.trm" static void EPS60graphics (void); static void TANDY60text (void); static void OKIDATAtext (void); static void EPS60text (void); static void NECoptions (void); static void NECinit (void); static void NECgraphics (void); static void NECtext (void); static void NEClinetype (int linetype); static void NECreset (void); # 158 "term/epson.trm" static void STARCinit (void); static void STARCgraphics (void); static void STARCtext (void); static void STARClinetype (int linetype); static void STARCreset (void); # 189 "term/epson.trm" void epson_dump (void); static void EPSONinit() { } static void EPSONgraphics() { b_charsize(0); b_makebitmap((unsigned int) (512 * xsize), (unsigned int) (384 * ysize), 1); } static void EPSONtext() { epson_dump(); b_freebitmap(); } static void EPSONreset() { } void epson_dump() { register unsigned int x; int j; for (j = (b_ysize / 8) - 1; j >= 0; j--) { fputs("\033J\030", gpoutfile); fputs("\r\033*\005", gpoutfile); (void) fputc((char) (b_xsize % 256), gpoutfile); (void) fputc((char) (b_xsize / 256), gpoutfile); for (x = 0; x < b_xsize; x++) { (void) fputc((char) (*((*b_p)[j] + x)), gpoutfile); } } } # 254 "term/epson.trm" void nec_dump (void); void nec_draft_dump (void); static unsigned int neccolor[] = { 1, 8, 4, 2, 10, 12, 6, 14 }; static unsigned int necpcolor[] = { 0, 2, 1, 4 }; static int NECmode; static void NECoptions() { if ((c_token >= num_tokens || equals(c_token,";"))) { (__extension__ (__builtin_constant_p ("monochrome") ? (((size_t)(const void *)(("monochrome") + 1) - (size_t)(const void *)("monochrome") == 1) && strlen ("monochrome") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("monochrome"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("monochrome"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("monochrome"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("monochrome"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4 + 2]! ) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4]), strlen ("monochrome") + 1) : (char *) memcpy (term_options, "monochrome", strlen ("monochrome") + 1)) : strcpy (term_options, "monochrome"))); NECmode = 'm'; } else if (almost_equals(c_token, "m$onochrome")) { c_token++; (__extension__ (__builtin_constant_p ("monochrome") ? (((size_t)(const void *)(("monochrome") + 1) - (size_t)(const void *)("monochrome") == 1) && strlen ("monochrome") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("monochrome"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("monochrome"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("monochrome"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("monochrome"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4 + 2]! ) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4]), strlen ("monochrome") + 1) : (char *) memcpy (term_options, "monochrome", strlen ("monochrome") + 1)) : strcpy (term_options, "monochrome"))); NECmode = 'm'; } else if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) { c_token++; (__extension__ (__builtin_constant_p ("color") ? (((size_t)(const void *)(("color") + 1) - (size_t)(const void *)("color") == 1) && strlen ("color") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("color"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("color"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("color"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("color"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("color"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("color"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("color"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("color"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("color"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("color"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("color"))[4 + 1]! ) << 8 | ((__const unsigned char *) (__const char *) ("color"))[4]), strlen ("color") + 1) : (char *) memcpy (term_options, "color", strlen ("color") + 1)) : strcpy (term_options, "color"))); NECmode = 'c'; } else if (almost_equals(c_token, "d$raft")) { c_token++; (__extension__ (__builtin_constant_p ("draft") ? (((size_t)(const void *)(("draft") + 1) - (size_t)(const void *)("draft") == 1) && strlen ("draft") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("draft"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("draft"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("draft"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("draft"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("draft"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("draft"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("draft"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("draft"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("draft"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("draft"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("draft"))[4 + 1]! ) << 8 | ((__const unsigned char *) (__const char *) ("draft"))[4]), strlen ("draft") + 1) : (char *) memcpy (term_options, "draft", strlen ("draft") + 1)) : strcpy (term_options, "draft"))); NECmode = 'd'; } else { (__extension__ (__builtin_constant_p ("monochrome") ? (((size_t)(const void *)(("monochrome") + 1) - (size_t)(const void *)("monochrome") == 1) && strlen ("monochrome") + 1 <= 8 ? __strcpy_small (term_options, __extension__ (((__const unsigned char *) (__const char *) ("monochrome"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("monochrome"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("monochrome"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("monochrome"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4 + 2]! ) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("monochrome"))[4]), strlen ("monochrome") + 1) : (char *) memcpy (term_options, "monochrome", strlen ("monochrome") + 1)) : strcpy (term_options, "monochrome"))); NECmode = 'm'; int_error("modes: color, monochrome, draft", c_token); } } static void NECinit() { } static void NECgraphics() { b_charsize(0); b_makebitmap((unsigned int) (400 * xsize), (unsigned int) (320 * ysize), (NECmode == 'c' ? 4 : 1)); } static void NECtext() { if (NECmode == 'd') { nec_draft_dump(); } else { nec_dump(); } b_freebitmap(); } static void NEClinetype(linetype) int linetype; { if (NECmode == 'c') { if (linetype >= 6) linetype %= 6; b_setvalue(neccolor[linetype + 2]); } else { b_setlinetype(linetype); } } static void NECreset() { } void nec_dump() { unsigned int x; unsigned int plane, offset; int j; unsigned int column8; unsigned long column24; char column3, column2, column1; fputs("\033P\033l\005", gpoutfile); for (j = (b_ysize / 8) - 1; j >= 0; j--) { fputs("\033J\030", gpoutfile); for (plane = 0; plane < b_planes; plane++) { offset = plane * b_psize; if (b_planes > 1) { fputs("\033r", gpoutfile); (void) fputc((char) necpcolor[plane], gpoutfile); } fputs("\r\033*\047", gpoutfile); (void) fputc((char) ((b_xsize * 3) % 256), gpoutfile); (void) fputc((char) ((b_xsize * 3) / 256), gpoutfile); for (x = 0; x < b_xsize; x++) { column8 = (unsigned int) (*((*b_p)[j + offset] + x)); column24 = 0; if (column8 & 0x01) column24 |= (long) 0x000007; if (column8 & 0x02) column24 |= (long) 0x000038; if (column8 & 0x04) column24 |= (long) 0x0001c0; if (column8 & 0x08) column24 |= (long) 0x000e00; if (column8 & 0x10) column24 |= (long) 0x007000; if (column8 & 0x20) column24 |= (long) 0x038000; if (column8 & 0x40) column24 |= (long) 0x1c0000; if (column8 & 0x80) column24 |= (long) 0xe00000; column1 = (char) (column24 & (long) 0xff); column2 = (char) ((column24 >> 8) & (long) 0xff); column3 = (char) ((column24 >> 16) & (long) 0xff); (void) fputc(column3, gpoutfile); (void) fputc(column2, gpoutfile); (void) fputc(column1, gpoutfile); (void) fputc(column3, gpoutfile); (void) fputc(column2, gpoutfile); (void) fputc(column1, gpoutfile); (void) fputc(column3, gpoutfile); (void) fputc(column2, gpoutfile); (void) fputc(column1, gpoutfile); } } } fputs("\r\033l", gpoutfile); (void) fputc('\0', gpoutfile); if (b_planes > 1) { fprintf(gpoutfile, "\033r"); (void) fputc('\0', gpoutfile); } } void nec_draft_dump() { unsigned int x; unsigned int plane, offset; int j; fputs("\033P\033l\005\r", gpoutfile); for (j = (b_ysize / 8) - 1; j >= 0; j--) { fputs("\033J\030", gpoutfile); for (plane = 0; plane < b_planes; plane++) { offset = plane * b_psize; if (b_planes > 1) { fputs("\033r", gpoutfile); (void) fputc((char) necpcolor[plane], gpoutfile); } fputs("\r\033*", gpoutfile); (void) fputc('\0', gpoutfile); (void) fputc((char) (b_xsize % 256), gpoutfile); (void) fputc((char) (b_xsize / 256), gpoutfile); for (x = 0; x < b_xsize; x++) { (void) fputc((char) (*((*b_p)[j + offset] + x)), gpoutfile); } } } fputs("\r\033l", gpoutfile); (void) fputc('\0', gpoutfile); if (b_planes > 1) { fputs("\033r", gpoutfile); (void) fputc('\0', gpoutfile); } } # 453 "term/epson.trm" void STARC_dump (void); static unsigned int STARCcolor[] = { 1, 8, 4, 2, 10, 12, 6, 14 }; static unsigned int STARCpcolor[] = { 0, 2, 1, 4 }; static void STARCinit() { } static void STARCgraphics() { b_charsize(0); b_makebitmap((unsigned int) (512 * xsize), (unsigned int) (384 * ysize), 4); } static void STARCtext() { STARC_dump(); b_freebitmap(); } static void STARClinetype(linetype) int linetype; { if (linetype >= 6) linetype %= 6; b_setvalue(STARCcolor[linetype + 2]); } static void STARCreset() { } void STARC_dump() { unsigned int x; unsigned int plane, offset; int j; for (j = (b_ysize / 8) - 1; j >= 0; j--) { fputs("\033J\030", gpoutfile); for (plane = 0; plane < b_planes; plane++) { offset = plane * b_psize; if (b_planes > 1) { fputs("\033r", gpoutfile); (void) fputc((char) STARCpcolor[plane], gpoutfile); } fputs("\r\033*\005", gpoutfile); (void) fputc((char) (b_xsize % 256), gpoutfile); (void) fputc((char) (b_xsize / 256), gpoutfile); for (x = 0; x < b_xsize; x++) { (void) fputc((char) (*((*b_p)[j + offset] + x)), gpoutfile); } } } if (b_planes > 1) { fputs("\033r", gpoutfile); (void) fputc('\0', gpoutfile); } } void eps180_dump (void); static void EPS180graphics() { b_charsize(2); b_makebitmap((unsigned int) (1260 * xsize), (unsigned int) (1080 * ysize), 1); } static void EPS180text() { eps180_dump(); b_freebitmap(); } void eps180_dump() { register unsigned int x; int j; fputs("\033@\033+\060\033l\005", gpoutfile); for (j = (b_ysize / 8) - 1; j >= 0;) { fputs("\r\n\033*'", gpoutfile); (void) fputc((char) (b_xsize % 256), gpoutfile); (void) fputc((char) (b_xsize / 256), gpoutfile); for (x = 0; x < b_xsize; x++) { (void) fputc((char) (*((*b_p)[j] + x)), gpoutfile); (void) fputc((char) (*((*b_p)[j - 1] + x)), gpoutfile); (void) fputc((char) (*((*b_p)[j - 2] + x)), gpoutfile); } j -= 3; } fputs("\r\n\033@\r\n", gpoutfile); } void eps60_dump (void); static void EPS60graphics() { b_charsize(0); b_makebitmap((unsigned int) (480 * xsize), (unsigned int) (360 * ysize), 1); } static void EPS60text() { eps60_dump(); b_freebitmap(); } void eps60_dump() { register unsigned int x; int j; fprintf(gpoutfile, "\033%c\030", '3'); for (j = (b_ysize / 8) - 1; j >= 0; j--) { fputs("\r\n\033K", gpoutfile); (void) fputc((char) (b_xsize % 256), gpoutfile); (void) fputc((char) (b_xsize / 256), gpoutfile); for (x = 0; x < b_xsize; x++) { (void) fputc((char) (*((*b_p)[j] + x)), gpoutfile); } } fprintf(gpoutfile, "\033%c\044\r\n", '3'); } # 639 "term/epson.trm" static void TANDY60text() { fprintf(gpoutfile, "\033!\033%c%c\n\n\n", '3', 216); eps60_dump(); b_freebitmap(); fputs("\f\033!", gpoutfile); } void okidata_dump (void); static void OKIDATAtext() { okidata_dump(); b_freebitmap(); } int bitrev_tbl[] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff }; void okidata_dump() { register unsigned int x; int j; char cur_char; int prev_char; prev_char = 0; fprintf(gpoutfile, "\033%c%c\020\033*eP:\003", '%', '9'); for (j = (b_ysize / 8) - 1; j >= 0; j--) { fputs("\003\016", gpoutfile); for (x = 0; x < b_xsize; x++) { if ((cur_char = (char) (bitrev_tbl[(int) (*((*b_p)[j] + x))])) == '\003') { fputs("\003\003", gpoutfile); } else { (void) fputc((char) cur_char, gpoutfile); } } } fprintf(gpoutfile, "\003\002\033%c%c\030\r\n", '%', '9'); } # 365 "term.h" 2 # 1 "term/latex.trm" 1 # 77 "term/latex.trm" # 1 "term/driver.h" 1 # 78 "term/latex.trm" 2 # 87 "term/latex.trm" static void LATEX_options (void); static void LATEX_init (void); static void LATEX_graphics (void); static void LATEX_text (void); static void LATEX_put_text (unsigned int x, unsigned int y, char str[]); static void LATEX_linetype (int linetype); static void LATEX_move (unsigned int x, unsigned int y); static void LATEX_point (unsigned int x, unsigned int y, int number); static void LATEX_vector (unsigned int ux, unsigned int uy); static void LATEX_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static int LATEX_justify_text (enum JUSTIFY mode); static int LATEX_text_angle (int ang); static void LATEX_reset (void); static void EMTEX_init (void); static void EMTEX_reset (void); static void EMTEX_text (void); static void EEPIC_move (unsigned int x, unsigned int y); static void EEPIC_vector (unsigned int ux, unsigned int uy); # 132 "term/latex.trm" static int LATEX_posx; static int LATEX_posy; static int LATEX_fontsize = 10; static char LATEX_font[50 +1] = "cmr"; static enum JUSTIFY latex_justify = LEFT; static int latex_angle = 0; # 146 "term/latex.trm" static char * LATEX_points[] = { "\\raisebox{-.8pt}{\\makebox(0,0){$\\Diamond$}}", "\\makebox(0,0){$+$}", "\\raisebox{-.8pt}{\\makebox(0,0){$\\Box$}}", "\\makebox(0,0){$\\times$}", "\\makebox(0,0){$\\triangle$}", "\\makebox(0,0){$\\star$}", "\\circle{12}", "\\circle{18}", "\\circle{24}", "\\circle*{12}", "\\circle*{18}", "\\circle*{24}" }; static float LATEX_size = 0; static float LATEX_dotspace = 0; static struct { float size; float dotspace; } LATEX_lines[] = { {0.4, 0.0}, {0.4, 5.0}, {0.8, 0.0}, {1.0, 5.0}, {1.2, 0.0}, {1.0, 10.0}, }; static void LATEX_dot_line (int x1, int x2, int y1, int y2); static void LATEX_solid_line (int x1, int x2, int y1, int y2); static void LATEX_rule (int code, double x, double y, double width, double height); static void LATEX_flushdot (void); static TBOOLEAN LATEX_moved = 1; static float LATEX_dotsize; static TBOOLEAN LATEX_needsdot = 0; TBOOLEAN emtex = 0; static void EMTEX_solid_line (int x1, int x2, int y1, int y2); static struct vslope { int dx, dy; } LATEX_slopes[] = { {1, 1}, {1, 2}, {1, 3}, {1, 4}, {2, 1}, {2, 3}, {3, 1}, {3, 2}, {3, 4}, {4, 1}, {4, 3}, {0, 0} }; void best_latex_arrow (int, int, int, int, int, TBOOLEAN); static void LATEX_options() { if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "c$ourier")) { (__extension__ (__builtin_constant_p ("cmtt") ? (((size_t)(const void *)(("cmtt") + 1) - (size_t)(const void *)("cmtt") == 1) && strlen ("cmtt") + 1 <= 8 ? __strcpy_small (LATEX_font, __extension__ (((__const unsigned char *) (__const char *) ("cmtt"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("cmtt"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("cmtt"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("cmtt"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cmtt"))[4 + 1]) << 8 | ((__! const unsigned char *) (__const char *) ("cmtt"))[4]), strlen ("cmtt") + 1) : (char *) memcpy (LATEX_font, "cmtt", strlen ("cmtt") + 1)) : strcpy (LATEX_font, "cmtt"))); c_token++; } else if (almost_equals(c_token, "r$oman")) { (__extension__ (__builtin_constant_p ("cmr") ? (((size_t)(const void *)(("cmr") + 1) - (size_t)(const void *)("cmr") == 1) && strlen ("cmr") + 1 <= 8 ? __strcpy_small (LATEX_font, __extension__ (((__const unsigned char *) (__const char *) ("cmr"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("cmr"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("cmr"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("cmr"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cmr"))[4 + 1]) << 8 | ((__const unsigned ! char *) (__const char *) ("cmr"))[4]), strlen ("cmr") + 1) : (char *) memcpy (LATEX_font, "cmr", strlen ("cmr") + 1)) : strcpy (LATEX_font, "cmr"))); c_token++; } else if (almost_equals(c_token, "d$efault")) { (__extension__ (__builtin_constant_p ("doc") ? (((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) && strlen ("doc") + 1 <= 8 ? __strcpy_small (LATEX_font, __extension__ (((__const unsigned char *) (__const char *) ("doc"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("doc"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("doc"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("doc"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("doc"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("doc"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("doc"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("doc"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("doc"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("doc"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("doc"))[4 + 1]) << 8 | ((__const unsigned ! char *) (__const char *) ("doc"))[4]), strlen ("doc") + 1) : (char *) memcpy (LATEX_font, "doc", strlen ("doc") + 1)) : strcpy (LATEX_font, "doc"))); c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; LATEX_fontsize = (int) real(const_express(&a)); } term->v_char = (unsigned int) (LATEX_fontsize * (300) / 72); term->h_char = (unsigned int) (LATEX_fontsize * (300) / 144); if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (LATEX_font) && __builtin_constant_p ("doc") && (__s1_len = strlen (LATEX_font), __s2_len = strlen ("doc"), (!((size_t)(const void *)((LATEX_font) + 1) - (size_t)(const void *)(LATEX_font) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (LATEX_font), (__const char *) ("doc"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (LATEX_font) && ((size_t)(const void *)((LATEX_font) + 1) - (size_t)(const void *)(LATEX_font) == 1) && (__s1_len = strlen (LATEX_font), __s1_len < 4) ? (__builtin_constant_p ("doc") && ((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (LATEX_font))[0] - ((__const unsigned char *) (__const char *)("doc"))[0]); if (__s1_len > 0 && __result == 0) { ! __result = (((__const unsigned char *) (__const char *) (LATEX_font))[1] - ((__const unsigned char *) (__const char *) ("doc"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[2] - ((__const unsigned char *) (__const char *) ("doc"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (LATEX_font))[3] - ((__const unsigned char *) (__const char *) ("doc"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("doc"); register int __result = (((__const unsigned char *) (__const char *) (LATEX_font))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const! unsigned char *) (__const char *) (LATEX_font))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("doc") && ((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) && (__s2_len = strlen ("doc"), __s2_len < 4) ? (__builtin_constant_p (LATEX_font) && ((size_t)(const void *)((LATEX_font) + 1) - (size_t)(const void *)(LATEX_font) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (LATEX_font))[0] - ((__const unsigned char *) (__const char *)("doc"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[1] - ((__const unsigned char *) (__const char *) ("doc"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[2] - ((__const unsigned char *) (__const char *) ("doc"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (LATEX_font))[3] - ((__const u! nsigned char *) (__const char *) ("doc"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (LATEX_font); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("doc"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("doc"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("doc"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("doc"))[3]); } } __result; }))) : strcmp (LATEX_font, "doc")))); })==0) (__extension__ (__builtin_constant_p ("(document specific font)") && __builtin_constant_p (1024) ? (strlen ("(document specific font)") + 1 >= ((size_t) (1024)) ? (char *) memcpy (term_options, "(document specific font)", 1024) : strncpy (term_options, "(document specific font)", 1024)) : strncpy (term_options, "(document specific font)", 1024))); else sprintf(term_options, "%s %d", LATEX_font[2] == 't' ? "courier" : "roman", LATEX_fontsize); } static void LATEX_init() { emtex = 0; LATEX_posx = LATEX_posy = 0; fprintf(gpoutfile, "%% GNUPLOT: LaTeX picture\n\\setlength{\\unitlength}{%fpt}\n\\ifx\\plotpoint\\undefined\\newsavebox{\\plotpoint}\\fi\n", ((72.27)/(300))); LATEX_linetype(-1); LATEX_size = 0; } static void LATEX_graphics() { register struct TERMENTRY *t = term; int xscale = xsize * t->xmax; int yscale = ysize * t->ymax; fprintf(gpoutfile, "\\begin{picture}(%d,%d)(0,0)\n", xscale, yscale); if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (LATEX_font) && __builtin_constant_p ("doc") && (__s1_len = strlen (LATEX_font), __s2_len = strlen ("doc"), (!((size_t)(const void *)((LATEX_font) + 1) - (size_t)(const void *)(LATEX_font) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (LATEX_font), (__const char *) ("doc"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (LATEX_font) && ((size_t)(const void *)((LATEX_font) + 1) - (size_t)(const void *)(LATEX_font) == 1) && (__s1_len = strlen (LATEX_font), __s1_len < 4) ? (__builtin_constant_p ("doc") && ((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (LATEX_font))[0] - ((__const unsigned char *) (__const char *)("doc"))[0]); if (__s1_len > 0 && __result == 0) { ! __result = (((__const unsigned char *) (__const char *) (LATEX_font))[1] - ((__const unsigned char *) (__const char *) ("doc"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[2] - ((__const unsigned char *) (__const char *) ("doc"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (LATEX_font))[3] - ((__const unsigned char *) (__const char *) ("doc"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("doc"); register int __result = (((__const unsigned char *) (__const char *) (LATEX_font))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const! unsigned char *) (__const char *) (LATEX_font))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("doc") && ((size_t)(const void *)(("doc") + 1) - (size_t)(const void *)("doc") == 1) && (__s2_len = strlen ("doc"), __s2_len < 4) ? (__builtin_constant_p (LATEX_font) && ((size_t)(const void *)((LATEX_font) + 1) - (size_t)(const void *)(LATEX_font) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (LATEX_font))[0] - ((__const unsigned char *) (__const char *)("doc"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[1] - ((__const unsigned char *) (__const char *) ("doc"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (LATEX_font))[2] - ((__const unsigned char *) (__const char *) ("doc"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (LATEX_font))[3] - ((__const u! nsigned char *) (__const char *) ("doc"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (LATEX_font); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("doc"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("doc"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("doc"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("doc"))[3]); } } __result; }))) : strcmp (LATEX_font, "doc")))); }) != 0) { fprintf(gpoutfile, "\\font\\gnuplot=%s10 at %dpt\n\\gnuplot\n", LATEX_font, LATEX_fontsize); } } static void LATEX_text() { LATEX_rule(2, 0.,0.,0.,0.); LATEX_flushdot(); fputs("\\end{picture}\n", gpoutfile); LATEX_posx = LATEX_posy = 0; LATEX_moved = 1; } static void LATEX_linetype(linetype) int linetype; { float size; if (linetype >= 6) linetype %= 6; if (!emtex) LATEX_rule(2, 0.,0.,0.,0.); LATEX_flushdot(); size = (linetype >= 0 ? LATEX_lines[linetype].size : LATEX_lines[0].size); if (size != LATEX_size) { fprintf(gpoutfile, "\\sbox{\\plotpoint}{\\rule[%.3fpt]{%.3fpt}{%.3fpt}}%%\n", -size / 2, size, size); if (emtex) fprintf(gpoutfile, "\\special{em:linewidth %.1fpt}%%\n", size); } LATEX_size = size; LATEX_dotsize = size / ((72.27)/(300)); LATEX_dotspace = (linetype >= 0) ? LATEX_lines[linetype].dotspace : 0; LATEX_moved = 1; } static void LATEX_move(x, y) unsigned int x, y; { LATEX_flushdot(); LATEX_posx = x; LATEX_posy = y; LATEX_moved = 1; } static void LATEX_point(x, y, number) unsigned int x, y; int number; { LATEX_move(x, y); fprintf(gpoutfile, "\\put(%d,%d){%s}\n", x, y, (number < 0 ? "\\rule{1pt}{1pt}" : LATEX_points[number % 12])); } static void LATEX_vector(ux, uy) unsigned int ux, uy; { if (LATEX_dotspace == 0.0) { if (emtex) EMTEX_solid_line(LATEX_posx, (int) ux, LATEX_posy, (int) uy); else LATEX_solid_line(LATEX_posx, (int) ux, LATEX_posy, (int) uy); } else LATEX_dot_line(LATEX_posx, (int) ux, LATEX_posy, (int) uy); LATEX_posx = ux; LATEX_posy = uy; } static void LATEX_solid_line(x1, x2, y1, y2) int x1, x2, y1, y2; { float slope; int inc; float dx, dy, x, y; float offset, length; int code; if (x1 == x2 && y1 == y2) { if (LATEX_moved) { LATEX_rule(2, 0.,0.,0.,0.); fprintf(gpoutfile, "\\put(%u,%u){%s}\n", x1, y1, "\\usebox{\\plotpoint}"); } } else { code = (LATEX_moved ? 0 : 1); LATEX_moved = 0; if (x1 == x2) LATEX_rule(code, (double) x1, (double) y1, LATEX_dotsize, (double) y2 - y1); else if (y1 == y2) LATEX_rule(code, (double) x1, (double) y1, (double) x2 - x1, LATEX_dotsize); else { dx = (float) x2 - x1; dy = (float) y2 - y1; slope = dy / dx; if (((slope) >= 0 ? (slope) : -(slope)) <= 1.0) { x = ( (((dx) >= 0 ? (dx) : -(dx))) < ((0.25 + 1.0 / ((slope) >= 0 ? (slope) : -(slope))) * LATEX_dotsize) ? (((dx) >= 0 ? (dx) : -(dx))) : ((0.25 + 1.0 / ((slope) >= 0 ? (slope) : -(slope))) * LATEX_dotsize) ); offset = ((dy) >= 0 ? 1 : -1) * ( (LATEX_dotsize) < (((dy) >= 0 ? (dy) : -(dy))) ? (LATEX_dotsize) : (((dy) >= 0 ? (dy) : -(dy))) ); dy = dy - offset; length = x * ((72.27)/(300)); inc = (x == ((dx) >= 0 ? (dx) : -(dx)) ? 1 : ( (1) > (((dy) >= 0 ? (dy) : -(dy)) / 0.5 + 0.5) ? (1) : (((dy) >= 0 ? (dy) : -(dy)) / 0.5 + 0.5) )); if (inc == 1) { fprintf(gpoutfile, "\\put(%u,%.2f){\\rule{%.3fpt}{%.3fpt}}\n", (x2 >= x1 ? x1 : x2), ((float) y1 + y2 - LATEX_dotsize) / 2, length, LATEX_dotsize * ((72.27)/(300))); } else { dy = dy / inc; dx = (dx - ((dx) >= 0 ? 1 : -1) * x) / (inc - 1); fprintf(gpoutfile, "\\multiput(%.2f,%.2f)(%.3f,%.3f){%u}{\\rule{%.3fpt}{%.3fpt}}\n", (dx >= 0.0 ? (float) x1 : x1 - x), (float) y1 - (((dy) >= 0 ? (dy) : -(dy)) - offset) / 2, dx, dy, inc, length, ((dy) >= 0 ? (dy) : -(dy)) * ((72.27)/(300))); } x = x / 2; dx = ((dx) >= 0 ? 1 : -1) * x; dx = (float) x2 - x1 - dx; dy = (float) y2 - y1; fprintf(gpoutfile, "\\multiput(%.2f,%.2f)(%.3f,%.3f){2}{\\rule{%.3fpt}{%.3fpt}}\n", (dx >= 0.0 ? (float) x1 : x1 - x), (float) y1 - LATEX_dotsize / 2, dx, dy, x * ((72.27)/(300)), LATEX_dotsize * ((72.27)/(300))); LATEX_moved = 1; } else { y = ( (((dy) >= 0 ? (dy) : -(dy))) < ((0.25 + ((slope) >= 0 ? (slope) : -(slope))) * LATEX_dotsize) ? (((dy) >= 0 ? (dy) : -(dy))) : ((0.25 + ((slope) >= 0 ? (slope) : -(slope))) * LATEX_dotsize) ); offset = ((dx) >= 0 ? 1 : -1) * ( (LATEX_dotsize) < (((dx) >= 0 ? (dx) : -(dx))) ? (LATEX_dotsize) : (((dx) >= 0 ? (dx) : -(dx))) ); dx = dx - offset; length = y * ((72.27)/(300)); inc = (y == ((dy) >= 0 ? (dy) : -(dy)) ? 1 : ( (1) > (((dx) >= 0 ? (dx) : -(dx)) / 0.5 + 0.5) ? (1) : (((dx) >= 0 ? (dx) : -(dx)) / 0.5 + 0.5) )); if (inc == 1) { fprintf(gpoutfile, "\\put(%.2f,%u){\\rule{%.3fpt}{%.3fpt}}\n", ((float) x1 + x2 - LATEX_dotsize) / 2, (y2 >= y1 ? y1 : y2), LATEX_dotsize * ((72.27)/(300)), length); } else { dx = dx / inc; dy = (dy - ((dy) >= 0 ? 1 : -1) * y) / (inc - 1); fprintf(gpoutfile, "\\multiput(%.2f,%.2f)(%.3f,%.3f){%u}{\\rule{%.3fpt}{%.3fpt}}\n", (float) x1 - (((dx) >= 0 ? (dx) : -(dx)) - offset) / 2, (dy >= 0 ? (float) y1 : y1 - y), dx, dy, inc, ((dx) >= 0 ? (dx) : -(dx)) * ((72.27)/(300)), length); } y = y / 2; dx = (float) x2 - x1; dy = ((dy) >= 0 ? 1 : -1) * y; dy = (float) y2 - y1 - dy; fprintf(gpoutfile, "\\multiput(%.2f,%.2f)(%.3f,%.3f){2}{\\rule{%.3fpt}{%.3fpt}}\n", (float) x1 - LATEX_dotsize / 2, (dy >= 0.0 ? (float) y1 : y1 - y), dx, dy, LATEX_dotsize * ((72.27)/(300)), y * ((72.27)/(300))); LATEX_moved = 1; } } } } static void LATEX_rule(code, x, y, width, height) int code; double x, y; double width; double height; { static float lastx, lasty; static float lastw, lasth; static TBOOLEAN isvalid = 0; TBOOLEAN combine = (code == 1); TBOOLEAN flush = (code == 2); if (!flush) if (width == 0 || height == 0) return; if (isvalid && combine) { if ((int) lastx == (int) x && lastw == width) { if (lasth * height >= 0) { lasth += height; return; } } else if ((int) lasty == (int) y && lasth == height) { if (lastw * width >= 0) { lastw += width; return; } } } if (isvalid) { if (lastw < 0) { lastx += lastw; lastw = -lastw; } if (lasth < 0) { lasty += lasth; lasth = -lasth; } if (lastw < LATEX_dotsize || lasth < LATEX_dotsize) fprintf(gpoutfile, "\\put(%.1f,%.1f){%s}\n", lastx, lasty, "\\usebox{\\plotpoint}"); else fprintf(gpoutfile, "\\put(%.1f,%.1f){\\rule[%.3fpt]{%.3fpt}{%.3fpt}}\n", lastx, lasty, -LATEX_dotsize * ((72.27)/(300)) / 2, lastw * ((72.27)/(300)), lasth * ((72.27)/(300))); } if (flush) { isvalid = 0; } else { lastx = x; lasty = y; lastw = width; lasth = height; isvalid = 1; } } static void LATEX_dot_line(x1, x2, y1, y2) int x1, x2, y1, y2; { static float LATEX_left; if (LATEX_moved) LATEX_left = 1.0; if (x1 == x2 && y1 == y2) { if (LATEX_moved) fprintf(gpoutfile, "\\put(%u,%u){%s}\n", x1, y1, "\\usebox{\\plotpoint}"); } else { float dotspace = LATEX_dotspace / ((72.27)/(300)); float x, y; float xinc, yinc; float slope; float lastx = -1; float lasty = -1; int numdots = 0; if (x2 == x1) { xinc = 0.0; yinc = (y2 - y1 > 0) ? dotspace : -dotspace; } else { slope = ((float) y2 - y1) / ((float) x2 - x1); xinc = dotspace / sqrt(1 + slope * slope) * ((x2 - x1) >= 0 ? 1 : -1); yinc = slope * xinc; } for (x = x1 + xinc * (1 - LATEX_left), y = y1 + yinc * (1 - LATEX_left); (x2 - x) * xinc >= 0 && (y2 - y) * yinc >= 0; lastx = x, x += xinc, lasty = y, y += yinc) numdots++; if (numdots == 1) fprintf(gpoutfile, "\\put(%.2f,%.2f){%s}\n", lastx, lasty, "\\usebox{\\plotpoint}"); else if (numdots > 0) fprintf(gpoutfile, "\\multiput(%u,%u)(%.3f,%.3f){%u}{%s}\n", x1, y1, xinc, yinc, numdots, "\\usebox{\\plotpoint}"); if (xinc != 0.0) if (lastx >= 0) LATEX_left = ((x2 - lastx) >= 0 ? (x2 - lastx) : -(x2 - lastx)) / ((xinc) >= 0 ? (xinc) : -(xinc)); else LATEX_left += ((x2 - x1) >= 0 ? (x2 - x1) : -(x2 - x1)) / ((xinc) >= 0 ? (xinc) : -(xinc)); else if (lasty >= 0) LATEX_left = ((y2 - lasty) >= 0 ? (y2 - lasty) : -(y2 - lasty)) / ((yinc) >= 0 ? (yinc) : -(yinc)); else LATEX_left += ((y2 - y1) >= 0 ? (y2 - y1) : -(y2 - y1)) / ((yinc) >= 0 ? (yinc) : -(yinc)); } LATEX_needsdot = (LATEX_left > 0); LATEX_moved = 0; } static void LATEX_flushdot() { if (LATEX_needsdot) fprintf(gpoutfile, "\\put(%d,%d){%s}\n", LATEX_posx, LATEX_posy, "\\usebox{\\plotpoint}"); LATEX_needsdot = 0; } static void LATEX_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; TBOOLEAN head; { best_latex_arrow(sx, sy, ex, ey, 1, head); LATEX_posx = ex; LATEX_posy = ey; } void best_latex_arrow(sx, sy, ex, ey, who, head) int sx, sy, ex, ey; int who; TBOOLEAN head; { int dx = ex - sx; int dy = ey - sy; float m; float arrowslope; float minerror = 0; struct vslope *slope; struct vslope *bestslope; if (dx == 0) { fprintf(gpoutfile, "\\put(%d,%d){\\%s(0,%d){%d}}\n", sx, sy, head ? "vector" : "line", ((ey - sy) >= 0 ? 1 : -1), ((ey - sy) >= 0 ? (ey - sy) : -(ey - sy))); } else if (dy == 0) { fprintf(gpoutfile, "\\put(%d,%d){\\%s(%d,0){%d}}\n", sx, sy, head ? "vector" : "line", ((ex - sx) >= 0 ? 1 : -1), ((ex - sx) >= 0 ? (ex - sx) : -(ex - sx))); } else { bestslope = ((void *)0); minerror = 0; m = (((float) dy / dx) >= 0 ? ((float) dy / dx) : -((float) dy / dx)); for (slope = LATEX_slopes; slope->dx != 0.0; slope++) { arrowslope = (float) slope->dy / slope->dx; if (bestslope == ((void *)0) || ((m - arrowslope) >= 0 ? (m - arrowslope) : -(m - arrowslope)) < minerror) { minerror = ((m - arrowslope) >= 0 ? (m - arrowslope) : -(m - arrowslope)); bestslope = slope; } } if (minerror == 0.0) fprintf(gpoutfile, "\\put(%d,%d){\\%s(%d,%d){%d}}\n", sx, sy, head ? "vector" : "line", bestslope->dx * ((ex - sx) >= 0 ? 1 : -1), bestslope->dy * ((ey - sy) >= 0 ? 1 : -1), ((ex - sx) >= 0 ? (ex - sx) : -(ex - sx))); else { if (emtex) { LATEX_linetype(0); EMTEX_solid_line(sx, ex, sy, ey); } else if (who == 1) { LATEX_linetype(0); LATEX_solid_line(sx, ex, sy, ey); } else { EEPIC_move(sx, sy); EEPIC_vector(ex, ey); } if (head) fprintf(gpoutfile, "\\put(%d,%d){\\vector(%d,%d){0}}\n", ex, ey, bestslope->dx * ((ex - sx) >= 0 ? 1 : -1), bestslope->dy * ((ey - sy) >= 0 ? 1 : -1)); } } } static void LATEX_put_text(x, y, str) unsigned int x, y; char str[]; { static char *justify[] = {"[l]", "", "[r]"}; int flag, i; if (str[0] == ('\0')) return; for (flag = 0, i = 0; str[i] && !flag;) flag = (str[i++] == '\\') && (str[i++] == '\\'); fprintf(gpoutfile, "\\put(%d,%d)", x, y); if ((str[0] == '{') || (str[0] == '[')) { fprintf(gpoutfile, "{\\makebox(0,0)%s}\n", str); } else if (flag) fprintf(gpoutfile, "{\\makebox(0,0)%s{\\shortstack{%s}}}\n", justify[latex_justify], str); else fprintf(gpoutfile, "{\\makebox(0,0)%s{%s}}\n", justify[latex_justify], str); } static int LATEX_justify_text(mode) enum JUSTIFY mode; { latex_justify = mode; return (1); } static int LATEX_text_angle(ang) int ang; { latex_angle = ang; return (1); } static void LATEX_reset() { LATEX_posx = LATEX_posy = 0; LATEX_moved = 1; } static void EMTEX_init() { emtex = 1; LATEX_posx = LATEX_posy = 0; fprintf(gpoutfile, "%% GNUPLOT: LaTeX picture with emtex specials\n\\setlength{\\unitlength}{%fpt}\n\\ifx\\plotpoint\\undefined\\newsavebox{\\plotpoint}\\fi\n", ((72.27)/(300))); LATEX_linetype(-1); } static void EMTEX_reset() { emtex = 0; LATEX_posx = LATEX_posy = 0; } static void EMTEX_text() { fputs("\\end{picture}\n", gpoutfile); } static void EMTEX_solid_line(x1, x2, y1, y2) int x1, x2, y1, y2; { if (LATEX_moved) fprintf(gpoutfile, "\\put(%d,%d){\\special{em:moveto}}\n", x1, y1); if ((x1 != x2) || (y1 != y2)) fprintf(gpoutfile, "\\put(%d,%d){\\special{em:lineto}}\n", x2, y2); LATEX_posx = x2; LATEX_posy = y2; LATEX_moved = 0; } # 373 "term.h" 2 # 1 "term/pslatex.trm" 1 # 52 "term/pslatex.trm" # 1 "term/driver.h" 1 # 53 "term/pslatex.trm" 2 static void PSLATEX_options (void); static void PSLATEX_init (void); static void PSLATEX_graphics (void); static void PSLATEX_put_text (unsigned int x, unsigned int y, char str[]); static int PSLATEX_justify_text (enum JUSTIFY mode); static int PSLATEX_text_angle (int ang); static void PSLATEX_reset (void); static void PSLATEX_text (void); static void PSLATEX_move (unsigned int x, unsigned int y); static void PSLATEX_vector (unsigned int x, unsigned int y); static void PSLATEX_linetype (int lt); static void PSLATEX_point (unsigned int x, unsigned int y, int number); static void PSLATEX_pointsize (double size); static void PSLATEX_linewidth (double width); # 89 "term/pslatex.trm" static int PSLATEX_angle; static int PSLATEX_justify; static int PSLATEX_rotate = 1; static char *PSLATEX_psfile = ((void *)0); static TBOOLEAN PSLATEX_useAuxFile = 0; static FILE *PSLATEX_auxFile = ((void *)0); static TBOOLEAN PSLATEX_output = 1; struct text_command { int x, y, angle, justify; char *label; struct text_command *next; }; static struct text_command *PSLATEX_labels; static void PSLATEX_options() { if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "d$efault")) { ps_color = 0; ps_solid = 0; PSLATEX_rotate = 1; PSLATEX_useAuxFile = 0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) { ps_color = 1; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "m$onochrome")) { ps_color = 0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "so$lid")) { ps_solid = 1; c_token++; } else if (almost_equals(c_token, "da$shed")) { ps_solid = 0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "r$otate")) { PSLATEX_rotate = 1; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "n$orotate")) { PSLATEX_rotate = 0; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "a$uxfile")) { PSLATEX_useAuxFile = 1; c_token++; } } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; int ps_fontsize = (int) real(const_express(&a)); term->v_char = (unsigned int) (ps_fontsize * (10)); term->h_char = (unsigned int) (ps_fontsize * (10) / 2); } sprintf(term_options, "%s %s %s%s", ps_color ? "color" : "monochrome", ps_solid ? "solid" : "dashed", PSLATEX_rotate ? "rotate" : "norotate", PSLATEX_useAuxFile ? " auxfile" : ""); } static void PSLATEX_init() { char *dotIndex; if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (term->name) && __builtin_constant_p ("pstex") && (__s1_len = strlen (term->name), __s2_len = strlen ("pstex"), (!((size_t)(const void *)((term->name) + 1) - (size_t)(const void *)(term->name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("pstex") + 1) - (size_t)(const void *)("pstex") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (term->name), (__const char *) ("pstex"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (term->name) && ((size_t)(const void *)((term->name) + 1) - (size_t)(const void *)(term->name) == 1) && (__s1_len = strlen (term->name), __s1_len < 4) ? (__builtin_constant_p ("pstex") && ((size_t)(const void *)(("pstex") + 1) - (size_t)(const void *)("pstex") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (term->name))[0] - ((__const unsigned char *) (__const char *)("pstex"))[0]); if (__s1_len > 0 &&! __result == 0) { __result = (((__const unsigned char *) (__const char *) (term->name))[1] - ((__const unsigned char *) (__const char *) ("pstex"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (term->name))[2] - ((__const unsigned char *) (__const char *) ("pstex"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (term->name))[3] - ((__const unsigned char *) (__const char *) ("pstex"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("pstex"); register int __result = (((__const unsigned char *) (__const char *) (term->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (term->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (term->name))[2] - __s2[2]); if (__s1_len > 2 && __result =! = 0) __result = (((__const unsigned char *) (__const char *) (term->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("pstex") && ((size_t)(const void *)(("pstex") + 1) - (size_t)(const void *)("pstex") == 1) && (__s2_len = strlen ("pstex"), __s2_len < 4) ? (__builtin_constant_p (term->name) && ((size_t)(const void *)((term->name) + 1) - (size_t)(const void *)(term->name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (term->name))[0] - ((__const unsigned char *) (__const char *)("pstex"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (term->name))[1] - ((__const unsigned char *) (__const char *) ("pstex"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (term->name))[2] - ((__const unsigned char *) (__const char *) ("pstex"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__cons! t char *) (term->name))[3] - ((__const unsigned char *) (__const char *) ("pstex"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (term->name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("pstex"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("pstex"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("pstex"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("pstex"))[3]); } } __result; }))) : strcmp (term->name, "pstex")))); }) == 0) PSLATEX_output = 0; PSLATEX_auxFile = ((void *)0); # 189 "term/pslatex.trm" if ((dotIndex = strrchr(outstr, '.')) == ((void *)0)) dotIndex = (__extension__ (__builtin_constant_p (('\0')) && (('\0')) == '\0' ? (char *) __rawmemchr (outstr, ('\0')) : strchr (outstr, ('\0')))); if (outstr && PSLATEX_useAuxFile == 1) { PSLATEX_psfile = gp_realloc (PSLATEX_psfile,(dotIndex - outstr) + 4,"pslatex aux filename"); if (PSLATEX_psfile) { (__extension__ (__builtin_constant_p (outstr) && __builtin_constant_p ((dotIndex - outstr) + 1) ? (strlen (outstr) + 1 >= ((size_t) ((dotIndex - outstr) + 1)) ? (char *) memcpy (PSLATEX_psfile, outstr, (dotIndex - outstr) + 1) : strncpy (PSLATEX_psfile, outstr, (dotIndex - outstr) + 1)) : strncpy (PSLATEX_psfile, outstr, (dotIndex - outstr) + 1))); (__extension__ (__builtin_constant_p (".ps") ? (((size_t)(const void *)((".ps") + 1) - (size_t)(const void *)(".ps") == 1) && strlen (".ps") + 1 <= 8 ? __strcpy_small (PSLATEX_psfile + (dotIndex - outstr), __extension__ (((__const unsigned char *) (__const char *) (".ps"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (".ps"))[0]), __extension__ (((__const unsigned char *) (__const char *) (".ps"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (".ps"))[4]), __extension__ (((((__const unsigned char *) (__const char *) (".ps"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (".ps"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (".ps"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (".ps"))[0]), __extension__ (((((__const unsigned char *) (__const char *) (".ps"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (".ps"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (".ps"))[4 + 1]) ! << 8 | ((__const unsigned char *) (__const char *) (".ps"))[4]), strlen (".ps") + 1) : (char *) memcpy (PSLATEX_psfile + (dotIndex - outstr), ".ps", strlen (".ps") + 1)) : strcpy (PSLATEX_psfile + (dotIndex - outstr), ".ps"))); PSLATEX_auxFile = fopen(PSLATEX_psfile, "w"); if (PSLATEX_auxFile == (FILE *) ((void *)0)) { fprintf(stderr, "Cannot open aux file %s for output\n", PSLATEX_psfile); } } else { fprintf(stderr, "Cannot make PostScript file name from %s\nTurning off auxfile option\n", outstr); PSLATEX_auxFile = ((void *)0); PSLATEX_useAuxFile = 0; } } if (PSLATEX_output) { fputs("% GNUPLOT: LaTeX picture with Postscript\n\\begingroup%\n \\makeatletter%\n \\newcommand{\\GNUPLOTspecial}{%\n \\@sanitize\\catcode`\\%=14\\relax\\special}%\n \\setlength{\\unitlength}{0.1bp}%\n", gpoutfile); } else { fputs("% GNUPLOT: plain TeX with Postscript\n\\begingroup\n \\catcode`\\@=11\\relax\n \\def\\GNUPLOTspecial{%\n \\def\\do##1{\\catcode`##1=12\\relax}\\dospecials\n \\catcode`\\{=1\\catcode`\\}=2\\catcode\\%=14\\relax\\special}%\n%\n\\expandafter\\ifx\\csname GNUPLOTpicture\\endcsname\\relax\n \\csname newdimen\\endcsname\\GNUPLOTunit\n \\gdef\\GNUPLOTpicture(#1,#2){\\vbox to#2\\GNUPLOTunit\\bgroup\n \\def\\put(##1,##2)##3{\\unskip\\raise##2\\GNUPLOTunit\n \\hbox to0pt{\\kern##1\\GNUPLOTunit ##3\\hss}\\ignorespaces}%\n \\def\\ljust##1{\\vbox to0pt{\\vss\\hbox to0pt{##1\\hss}\\vss}}%\n \\def\\cjust##1{\\vbox to0pt{\\vss\\hbox to0pt{\\hss ##1\\hss}\\vss}}%\n \\def\\rjust##1{\\vbox to0pt{\\vss\\hbox to0pt{\\hss ##1}\\vss}}%\n \\def\\stack##1{\\let\\\\=\\cr\\tabskip=0pt\\halign{\\hfil ####\\hfil\\cr ##1\\crcr}}%\n \\def\\lstack##1{\\hbox to0pt{\\vbox to0pt{\\vss\\stack{##1}}\\hss}}%\n \\def\\cstack##1{\\hbox to0pt{\\hss\\vbox to0pt{\\vs! s\\stack{##1}}\\hss}}%\n \\def\\rstack##1{\\hbox to0pt{\\vbox to0pt{\\stack{##1}\\vss}\\hss}}%\n \\vss\\hbox to#1\\GNUPLOTunit\\bgroup\\ignorespaces}%\n \\gdef\\endGNUPLOTpicture{\\hss\\egroup\\egroup}%\n\\fi\n\\GNUPLOTunit=0.1bp\n", gpoutfile); # 252 "term/pslatex.trm" } { unsigned int xmin_t = xoffset * (5*720) / (10); unsigned int xmax_t = (xoffset + xsize) * (5*720) / (10); unsigned int ymin_t = yoffset * (3*720) / (10); unsigned int ymax_t = (yoffset + ysize) * (3*720) / (10); if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_common_init(1, 1, 0, 0, 0, xmin_t, ymin_t, xmax_t, ymax_t, ((void *)0)); gpoutfile = tmp; } else { fputs("{\\GNUPLOTspecial{!\n", gpoutfile); PS_common_init(1, 1, 0, 0, 0, xmin_t, ymin_t, xmax_t, ymax_t, ((void *)0)); fputs("}}%\n", gpoutfile); } } PSLATEX_angle = 0; PSLATEX_justify = 0; PSLATEX_labels = 0; } static void PSLATEX_graphics() { struct TERMENTRY *t = term; if (PSLATEX_output) fprintf(gpoutfile, "\\begin{picture}(%d,%d)(0,0)%%\n", (int) (xsize * t->xmax), (int) (ysize * t->ymax)); else fprintf(gpoutfile, "\\GNUPLOTpicture(%d,%d)\n", (int) (xsize * t->xmax), (int) (ysize * t->ymax)); if (PSLATEX_auxFile) { FILE *tmp; int urx = (int) (xsize * (7200) / (10) + 0.5); int ury = (int) (ysize * (5040) / (10) + 0.5); char *psfile_basename = strrchr(PSLATEX_psfile, '/'); if (psfile_basename) psfile_basename++; else { if (('\0') != ('\0')) { psfile_basename = strrchr(PSLATEX_psfile, ('\0')); if (psfile_basename) psfile_basename++; else psfile_basename = PSLATEX_psfile; } else psfile_basename = PSLATEX_psfile; } fprintf(gpoutfile, "\\special{psfile=%s llx=0 lly=0 urx=%d ury=%d rwi=%d}\n", psfile_basename, urx, ury, 10 * urx); tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_graphics(); gpoutfile = tmp; } else { fputs("{\\GNUPLOTspecial{\"\n", gpoutfile); PS_graphics(); } PSLATEX_labels = (struct text_command *) ((void *)0); } static void PSLATEX_put_text(x, y, str) unsigned int x, y; char str[]; { struct text_command *tc; if (str[0] == ('\0')) return; tc = (struct text_command *) gp_alloc(sizeof(struct text_command), term->name); tc->x = x; tc->y = y; tc->label = (char *) gp_alloc(strlen(str) + 1, term->name); (__extension__ (__builtin_constant_p (str) ? (((size_t)(const void *)((str) + 1) - (size_t)(const void *)(str) == 1) && strlen (str) + 1 <= 8 ? __strcpy_small (tc->label, __extension__ (((__const unsigned char *) (__const char *) (str))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (str))[0]), __extension__ (((__const unsigned char *) (__const char *) (str))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (str))[4]), __extension__ (((((__const unsigned char *) (__const char *) (str))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (str))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (str))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (str))[0]), __extension__ (((((__const unsigned char *) (__const char *) (str))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (str))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (str))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (str))[4]), st! rlen (str) + 1) : (char *) memcpy (tc->label, str, strlen (str) + 1)) : strcpy (tc->label, str))); tc->justify = PSLATEX_justify; tc->angle = PSLATEX_angle; tc->next = PSLATEX_labels; PSLATEX_labels = tc; } static int PSLATEX_justify_text(mode) enum JUSTIFY mode; { PSLATEX_justify = mode; return 1; } static int PSLATEX_text_angle(ang) int ang; { PSLATEX_angle = ang; return 1; } static void PSLATEX_reset() { if (PSLATEX_auxFile) { fclose(PSLATEX_auxFile); PSLATEX_auxFile = ((void *)0); } if (PSLATEX_psfile) { free(PSLATEX_psfile); PSLATEX_psfile = ((void *)0); } } static void PSLATEX_text() { struct text_command *tc; if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_text(); gpoutfile = tmp; } else { PS_text(); fputs("}}%\n", gpoutfile); } for (tc = PSLATEX_labels; tc != (struct text_command *) ((void *)0); tc = tc->next) { fprintf(gpoutfile, "\\put(%d,%d){", tc->x, tc->y); if (PSLATEX_output && ((tc->label[0] == '{') || (tc->label[0] == '['))) { fprintf(gpoutfile, "\\makebox(0,0)%s", tc->label); } else switch (tc->angle) { case 0: switch (tc->justify) { case LEFT: fprintf(gpoutfile, (PSLATEX_output ? "\\makebox(0,0)[l]{%s}" : "\\ljust{%s}"), tc->label); break; case CENTRE: fprintf(gpoutfile, (PSLATEX_output ? "\\makebox(0,0){%s}" : "\\cjust{%s}"), tc->label); break; case RIGHT: fprintf(gpoutfile, (PSLATEX_output ? "\\makebox(0,0)[r]{%s}" : "\\rjust{%s}"), tc->label); break; } break; case 1: if (PSLATEX_rotate) { fputs("%\n\\special{ps: gsave currentpoint currentpoint translate\n270 rotate neg exch neg exch translate}%\n", gpoutfile); } switch (tc->justify) { case LEFT: fprintf(gpoutfile, (PSLATEX_output ? "\\makebox(0,0)[lb]{\\shortstack{%s}}" : "\\lstack{%s}"), tc->label); break; case CENTRE: fprintf(gpoutfile, (PSLATEX_output ? "\\makebox(0,0)[b]{\\shortstack{%s}}" : "\\cstack{%s}"), tc->label); break; case RIGHT: fprintf(gpoutfile, (PSLATEX_output ? "\\makebox(0,0)[lt]{\\shortstack{%s}}" : "\\rstack{%s}"), tc->label); break; } if (PSLATEX_rotate) { fputs("%\n\\special{ps: currentpoint grestore moveto}%\n", gpoutfile); } } fputs("}%\n", gpoutfile); } while (PSLATEX_labels) { tc = PSLATEX_labels->next; free(PSLATEX_labels->label); free(PSLATEX_labels); PSLATEX_labels = tc; } if (PSLATEX_output) { fputs("\\end{picture}%\n\\endgroup\n\\endinput\n", gpoutfile); } else { fputs("\\endGNUPLOTpicture\n\\endgroup\n\\endinput\n", gpoutfile); } } static void PSLATEX_move(x, y) unsigned int x, y; { if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_move(x, y); gpoutfile = tmp; } else { PS_move(x, y); } } static void PSLATEX_vector(x, y) unsigned int x, y; { if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_vector(x, y); gpoutfile = tmp; } else { PS_vector(x, y); } } static void PSLATEX_linetype(lt) int lt; { if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_linetype(lt); gpoutfile = tmp; } else { PS_linetype(lt); } } static void PSLATEX_point(x, y, number) unsigned int x, y; int number; { if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_point(x, y, number); gpoutfile = tmp; } else PS_point(x, y, number); } static void PSLATEX_pointsize(ps) double ps; { if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_pointsize(ps); gpoutfile = tmp; } else PS_pointsize(ps); } static void PSLATEX_linewidth(ps) double ps; { if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_linewidth(ps); gpoutfile = tmp; } else PS_linewidth(ps); } # 376 "term.h" 2 # 1 "term/eepic.trm" 1 # 67 "term/eepic.trm" # 1 "term/driver.h" 1 # 68 "term/eepic.trm" 2 static void EEPIC_init (void); static void EEPIC_graphics (void); static void EEPIC_text (void); static void EEPIC_linetype (int linetype); static void EEPIC_move (unsigned int x, unsigned int y); static void EEPIC_point (unsigned int x, unsigned int y, int number); static void EEPIC_vector (unsigned int ux, unsigned int uy); static void EEPIC_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void EEPIC_put_text (unsigned int x, unsigned int y, char str[]); static int EEPIC_justify_text (enum JUSTIFY mode); static int EEPIC_text_angle (int ang); static void EEPIC_reset (void); # 112 "term/eepic.trm" static unsigned int EEPIC_posx; static unsigned int EEPIC_posy; enum JUSTIFY eepic_justify = LEFT; static int eepic_angle = 0; static char * EEPIC_points[] = { "\\raisebox{-1.2pt}{\\makebox(0,0){$\\Diamond$}}", "\\makebox(0,0){$+$}", "\\raisebox{-1.2pt}{\\makebox(0,0){$\\Box$}}", "\\makebox(0,0){$\\times$}", "\\makebox(0,0){$\\triangle$}", "\\makebox(0,0){$\\star$}", "\\circle{12}", "\\circle{18}", "\\circle{24}", "\\circle*{12}", "\\circle*{18}", "\\circle*{24}" }; static char * EEPIC_lines[] = { "\\thicklines \\path", "\\thinlines \\drawline[-50]", "\\thinlines \\path", "\\thicklines \\path", "\\Thicklines \\path", }; static int EEPIC_type; static TBOOLEAN EEPIC_inline = 0; void EEPIC_endline (void); static int EEPIC_linecount = 0; void best_latex_arrow (int sx, int sy, int ex, int ey, int who, TBOOLEAN head); static void EEPIC_init() { EEPIC_posx = EEPIC_posy = 0; EEPIC_linetype(-1); fprintf(gpoutfile, "%% GNUPLOT: LaTeX picture using EEPIC macros\n\\setlength{\\unitlength}{%fpt}\n", ((72.27)/(300))); } static void EEPIC_graphics() { register struct TERMENTRY *t = term; fprintf(gpoutfile, "\\begin{picture}(%d,%d)(0,0)\n\\footnotesize\n", t->xmax, t->ymax); } static void EEPIC_text() { EEPIC_endline(); fputs("\\end{picture}\n", gpoutfile); } static void EEPIC_linetype(linetype) int linetype; { EEPIC_endline(); if (linetype >= 5 - 2) linetype %= (5 - 2); EEPIC_type = linetype; } static void EEPIC_move(x, y) unsigned int x, y; { EEPIC_endline(); EEPIC_posx = x; EEPIC_posy = y; } static void EEPIC_point(x, y, number) unsigned int x, y; int number; { EEPIC_move(x, y); fprintf(gpoutfile, "\\put(%d,%d){%s}\n", x, y, (number < 0 ? "\\rule{.1pt}{.1pt}" : EEPIC_points[number % 12])); } static void EEPIC_vector(ux, uy) unsigned int ux, uy; { if (!EEPIC_inline) { EEPIC_inline = 1; fprintf(gpoutfile, "%s(%u,%u)", EEPIC_lines[EEPIC_type + 2], EEPIC_posx, EEPIC_posy); EEPIC_linecount = 1; } else { if (EEPIC_linecount++ >= 50) { fprintf(gpoutfile, "\n%s(%u,%u)", EEPIC_lines[EEPIC_type + 2], EEPIC_posx, EEPIC_posy); EEPIC_linecount = 1; } } fprintf(gpoutfile, "(%u,%u)", ux, uy); EEPIC_posx = ux; EEPIC_posy = uy; } void EEPIC_endline() { if (EEPIC_inline) { _IO_putc ('\n', gpoutfile); EEPIC_inline = 0; } } static void EEPIC_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; TBOOLEAN head; { best_latex_arrow(sx, sy, ex, ey, 2, head); EEPIC_posx = ex; EEPIC_posy = ey; } static void EEPIC_put_text(x, y, str) unsigned int x, y; char str[]; { EEPIC_endline(); fprintf(gpoutfile, "\\put(%d,%d)", x, y); if ((str[0] == '{') || (str[0] == '[')) { fprintf(gpoutfile, "{\\makebox(0,0)%s}\n", str); } else switch (eepic_angle) { case 0:{ switch (eepic_justify) { case LEFT:{ fprintf(gpoutfile, "{\\makebox(0,0)[l]{%s}}\n", str); break; } case CENTRE:{ fprintf(gpoutfile, "{\\makebox(0,0){%s}}\n", str); break; } case RIGHT:{ fprintf(gpoutfile, "{\\makebox(0,0)[r]{%s}}\n", str); break; } } break; } case 1:{ switch (eepic_justify) { case LEFT:{ fprintf(gpoutfile, "{\\makebox(0,0)[lb]{\\shortstack{%s}}}\n", str); break; } case CENTRE:{ fprintf(gpoutfile, "{\\makebox(0,0)[l]{\\shortstack{%s}}}\n", str); break; } case RIGHT:{ fprintf(gpoutfile, "{\\makebox(0,0)[lt]{\\shortstack{%s}}}\n", str); break; } } break; } } } static int EEPIC_justify_text(mode) enum JUSTIFY mode; { eepic_justify = mode; return (1); } static int EEPIC_text_angle(ang) int ang; { eepic_angle = ang; return (1); } static void EEPIC_reset() { EEPIC_endline(); EEPIC_posx = EEPIC_posy = 0; } # 379 "term.h" 2 # 1 "term/tpic.trm" 1 # 82 "term/tpic.trm" # 1 "term/driver.h" 1 # 83 "term/tpic.trm" 2 static void TPIC_options (void); static void TPIC_init (void); static void TPIC_reset (void); static void TPIC_text (void); static void TPIC_graphics (void); static void TPIC_move (unsigned int x, unsigned int y); static void TPIC_vector (unsigned int ux, unsigned int uy); static void TPIC_linetype (int linetype); static void TPIC_put_text (unsigned int x, unsigned int y, char *str); static int TPIC_text_angle (int ang); static int TPIC_justify_text (enum JUSTIFY mode); static void TPIC_point (unsigned int x, unsigned int y, int number); static void TPIC_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); # 118 "term/tpic.trm" static int tpic_pointsize = 40; static int tpic_linewidth = 6; static double tpic_interval = 0.1; void best_latex_arrow (int sx, int sy, int ex, int ey, int who, TBOOLEAN head); static void tpic_startline (void); static void tpic_endline (void); static void tpic_pushpath (unsigned int x, unsigned int y); static void tpic_scanpath (void); void tpic_diamond (int size); void tpic_plus (int size); void tpic_box (int size); void tpic_times (int size); void tpic_triangle (int size); void tpic_star (int size); void tpic_hexagon (int size); void tpic_circle (int size); void tpic_doublecircle (int size); void tpic_vercircle (int size); void tpic_horcircle (int size); void tpic_pluscircle (int size); void tpic_timescircle (int size); void tpic_starcircle (int size); void tpic_dotcircle (int size); void tpic_diamondcircle (int size); void tpic_boxcircle (int size); void tpic_trianglecircle (int size); void tpic_hexagoncircle (int size); void tpic_plustimescircle (int size); void tpic_abspath (unsigned int x, unsigned int y); void tpic_path (int x, int y); void tpic_flush (void); void tpic_arc (int radius); void tpic_shade (double grayscale); void tpic_pen (int thickness); void tpic_dottedflush (double interval); void tpic_dashedflush (double interval); typedef enum { tpic_none, tpic_white, tpic_gray, tpic_black } tpic_shadestyle; typedef enum { tpic_nosize, tpic_small, tpic_medium, tpic_large } tpic_size; typedef void (*tpic_function) (int size); typedef struct { tpic_shadestyle shadestyle; tpic_size size; tpic_function function; } tpic_point_info; static tpic_point_info tpic_point[] = { {tpic_white, tpic_medium, tpic_diamond}, {tpic_none, tpic_medium, tpic_plus}, {tpic_white, tpic_medium, tpic_box}, {tpic_none, tpic_medium, tpic_times}, {tpic_white, tpic_medium, tpic_triangle}, {tpic_none, tpic_medium, tpic_star}, {tpic_white, tpic_small, tpic_circle}, {tpic_white, tpic_medium, tpic_circle}, {tpic_white, tpic_large, tpic_circle}, {tpic_black, tpic_small, tpic_circle}, {tpic_black, tpic_medium, tpic_circle}, {tpic_black, tpic_large, tpic_circle}, {tpic_black, tpic_medium, tpic_diamond}, {tpic_black, tpic_medium, tpic_box}, {tpic_black, tpic_medium, tpic_triangle}, {tpic_white, tpic_medium, tpic_hexagon}, {tpic_black, tpic_medium, tpic_hexagon}, {tpic_white, tpic_medium, tpic_doublecircle}, {tpic_white, tpic_medium, tpic_vercircle}, {tpic_white, tpic_medium, tpic_horcircle}, {tpic_white, tpic_medium, tpic_pluscircle}, {tpic_white, tpic_medium, tpic_timescircle}, {tpic_white, tpic_medium, tpic_starcircle}, {tpic_black, tpic_medium, tpic_doublecircle}, {tpic_white, tpic_medium, tpic_dotcircle}, {tpic_white, tpic_medium, tpic_diamondcircle}, {tpic_white, tpic_medium, tpic_boxcircle}, {tpic_white, tpic_medium, tpic_trianglecircle}, {tpic_white, tpic_medium, tpic_hexagoncircle}, {tpic_white, tpic_medium, tpic_plustimescircle} }; typedef enum { tpic_solid, tpic_dotted, tpic_dashed, tpic_dashed_sdot, tpic_dashed_ddot } tpic_linestyle; typedef struct { tpic_size thickness, interval; tpic_linestyle linestyle; } tpic_line_info; static tpic_line_info tpic_line[] = { {tpic_medium, tpic_nosize, tpic_solid}, {tpic_small, tpic_small, tpic_dashed}, {tpic_small, tpic_nosize, tpic_solid}, {tpic_medium, tpic_nosize, tpic_solid}, {tpic_large, tpic_nosize, tpic_solid}, {tpic_small, tpic_small, tpic_dotted}, {tpic_medium, tpic_small, tpic_dotted}, {tpic_large, tpic_small, tpic_dotted}, {tpic_small, tpic_small, tpic_dashed}, {tpic_medium, tpic_small, tpic_dashed}, {tpic_large, tpic_small, tpic_dashed}, {tpic_small, tpic_small, tpic_dashed_sdot}, {tpic_medium, tpic_small, tpic_dashed_sdot}, {tpic_large, tpic_small, tpic_dashed_sdot}, {tpic_small, tpic_small, tpic_dashed_ddot}, {tpic_medium, tpic_small, tpic_dashed_ddot}, {tpic_large, tpic_small, tpic_dashed_ddot}, {tpic_small, tpic_medium, tpic_dotted}, {tpic_medium, tpic_medium, tpic_dotted}, {tpic_large, tpic_medium, tpic_dotted}, {tpic_small, tpic_medium, tpic_dashed}, {tpic_medium, tpic_medium, tpic_dashed}, {tpic_large, tpic_medium, tpic_dashed}, {tpic_small, tpic_medium, tpic_dashed_sdot}, {tpic_medium, tpic_medium, tpic_dashed_sdot}, {tpic_large, tpic_medium, tpic_dashed_sdot}, {tpic_small, tpic_medium, tpic_dashed_ddot}, {tpic_medium, tpic_medium, tpic_dashed_ddot}, {tpic_large, tpic_medium, tpic_dashed_ddot}, {tpic_small, tpic_large, tpic_dotted}, {tpic_medium, tpic_large, tpic_dotted}, {tpic_large, tpic_large, tpic_dotted}, {tpic_small, tpic_large, tpic_dashed}, {tpic_medium, tpic_large, tpic_dashed}, {tpic_large, tpic_large, tpic_dashed}, {tpic_small, tpic_large, tpic_dashed_sdot}, {tpic_medium, tpic_large, tpic_dashed_sdot}, {tpic_large, tpic_large, tpic_dashed_sdot}, {tpic_small, tpic_large, tpic_dashed_ddot}, {tpic_medium, tpic_large, tpic_dashed_ddot}, {tpic_large, tpic_large, tpic_dashed_ddot} }; static void TPIC_options() { struct value a; int ptsize, linewidth; double interval; if (!(c_token >= num_tokens || equals(c_token,";"))) { ptsize = (int) real(const_express(&a)); if (ptsize > 0) tpic_pointsize = ptsize; } if (!(c_token >= num_tokens || equals(c_token,";"))) { linewidth = (int) real(const_express(&a)); if (linewidth > 0) tpic_linewidth = linewidth; } if (!(c_token >= num_tokens || equals(c_token,";"))) { interval = (double) real(const_express(&a)); if (interval > 0) tpic_interval = interval; } sprintf(term_options, "%d %d %f", tpic_pointsize, tpic_linewidth, tpic_interval); } static unsigned int tpic_posx; static unsigned int tpic_posy; static int tpic_point_types; static int tpic_numlines; static void TPIC_init() { static char tpic1[] = "%% GNUPLOT: LaTeX picture using tpic \\specials\n%% with %d point types and %d line types\n%% Options: pointsize = %d, linewidth = %d, interval = %f\n%% To change above options, say:\n%% set terminal tpic pointsize_value linewidth_value interval_value\n%% (pointsize and linewidth - integers in milli-inches.\n%% interval - a float in inches. If zero is specified, \n%% the default value is chosen.)\n\\setlength{\\unitlength}{%fin}%%\n"; # 306 "term/tpic.trm" tpic_point_types = sizeof(tpic_point) / sizeof(tpic_point[0]); tpic_numlines = sizeof(tpic_line) / sizeof(tpic_line[0]); tpic_posx = tpic_posy = 0; TPIC_linetype(-1); fprintf(gpoutfile, tpic1, tpic_point_types, tpic_numlines - 2, tpic_pointsize, tpic_linewidth, tpic_interval, 0.001); } static void TPIC_reset() { tpic_endline(); tpic_posx = tpic_posy = 0; } static void TPIC_text() { tpic_endline(); fputs("\\end{picture}\n", gpoutfile); } static void TPIC_graphics() { register struct TERMENTRY *t = term; int left, right, top, bottom; static char begin[] = "%s\\begin{picture}(%d,%d)(%d,%d)%% %s\n"; fprintf(gpoutfile, begin, "", t->xmax, t->ymax, 0, 0, ""); left = (unsigned int) ( 5.3 / (72.27 * 0.001)) * 12; right = (unsigned int) ( 5.3 / (72.27 * 0.001)) * 2 + (unsigned int) ( 5.0 / (72.27 * 0.001)); bottom = (unsigned int) (11.0 / (72.27 * 0.001)) * 7 / 2 + 1; top = (unsigned int) (11.0 / (72.27 * 0.001)) * 5 / 2 - 1; fprintf(gpoutfile, begin, "%% ", t->xmax - left, t->ymax, left, 0, "trim left margin"); fprintf(gpoutfile, begin, "%% ", t->xmax - right, t->ymax, 0, 0, "trim right margin"); fprintf(gpoutfile, begin, "%% ", t->xmax - left - right, t->ymax, left, 0, "trim left & right margins"); fprintf(gpoutfile, begin, "%% ", t->xmax, t->ymax - top, 0, 0, "trim top margin"); fprintf(gpoutfile, begin, "%% ", t->xmax, t->ymax - bottom, 0, bottom, "trim bottom margin"); fprintf(gpoutfile, begin, "%% ", t->xmax, t->ymax - top - bottom, 0, bottom, "trim top & bottom margins"); fputs("\\footnotesize%\n", gpoutfile); } static void TPIC_move(x, y) unsigned int x; unsigned int y; { tpic_endline(); tpic_posx = x; tpic_posy = y; } static TBOOLEAN tpic_inline = 0; static int tpic_linecount = 0; static void TPIC_vector(ux, uy) unsigned int ux; unsigned int uy; { if (!tpic_inline) { tpic_startline(); } else if (tpic_linecount >= 100) { tpic_endline(); tpic_startline(); } tpic_pushpath(ux, uy); tpic_posx = ux; tpic_posy = uy; } static int tpic_linetype; static void tpic_startline() { int thickness = 1; tpic_inline = 1; switch (tpic_line[tpic_linetype + 2].thickness) { case tpic_small: thickness = tpic_linewidth; break; case tpic_medium: thickness = (int) (tpic_linewidth * 3); break; case tpic_large: thickness = (int) (tpic_linewidth * 5); break; default: break; } tpic_pen(thickness); tpic_linecount = 0; tpic_pushpath(tpic_posx, tpic_posy); return; } static void tpic_endline() { double interval = 1; if (tpic_inline) { tpic_scanpath(); switch (tpic_line[tpic_linetype + 2].interval) { case tpic_small: interval = tpic_interval; break; case tpic_medium: interval = tpic_interval * 2; break; case tpic_large: interval = tpic_interval * 3; break; case tpic_nosize: break; } switch (tpic_line[tpic_linetype + 2].linestyle) { case tpic_solid: tpic_flush(); break; case tpic_dotted: tpic_dottedflush(interval); break; case tpic_dashed: tpic_dashedflush(interval); break; case tpic_dashed_sdot: tpic_dashedflush(interval); tpic_scanpath(); tpic_dottedflush(interval / 2); break; case tpic_dashed_ddot: tpic_dashedflush(interval); tpic_scanpath(); tpic_dottedflush(interval / 3); break; } tpic_inline = 0; } return; } static unsigned int pathpoint[100][2]; static void tpic_pushpath(x, y) unsigned int x; unsigned int y; { if (tpic_linecount < 100) { pathpoint[tpic_linecount][0] = x; pathpoint[tpic_linecount][1] = y; tpic_linecount++; } return; } static void tpic_scanpath() { int i; for (i = 0; i < tpic_linecount; i++) tpic_abspath(pathpoint[i][0], pathpoint[i][1]); return; } static void TPIC_linetype(linetype) int linetype; { tpic_endline(); if (linetype >= tpic_numlines - 2) linetype %= (tpic_numlines - 2); tpic_linetype = linetype; } static int tpic_angle = 0; static enum JUSTIFY tpic_justify = LEFT; static void TPIC_put_text(x, y, str) unsigned int x; unsigned int y; char *str; { char *justify = ((void *)0); tpic_endline(); fprintf(gpoutfile, "\\put(%d,%d)", x, y); if ((str[0] == '{') || (str[0] == '[')) { fprintf(gpoutfile, "{\\makebox(0,0)%s}\n", str); } else switch (tpic_angle) { case 0: switch (tpic_justify) { case LEFT: justify = "[l]"; break; case CENTRE: justify = ""; break; case RIGHT: justify = "[r]"; break; } fprintf(gpoutfile, "{\\makebox(0,0)%s{%s}}\n", justify, str); break; case 1: switch (tpic_justify) { case LEFT: justify = "[lb]"; break; case CENTRE: justify = "[l]"; break; case RIGHT: justify = "[lt]"; break; } fprintf(gpoutfile, "{\\makebox(0,0)%s{\\shortstack{%s}}}\n", justify, str); break; } } static int TPIC_text_angle(ang) int ang; { tpic_angle = ang; return (1); } static int TPIC_justify_text(mode) enum JUSTIFY mode; { tpic_justify = mode; return (1); } static void TPIC_point(x, y, number) unsigned int x; unsigned int y; int number; { int size = 0; TPIC_move(x, y); fprintf(gpoutfile, "\\put(%d,%d){", x, y); if (number < 0) { fprintf(gpoutfile, "\\rule{.1pt}{.1pt}"); } else { number %= tpic_point_types; switch (tpic_point[number].shadestyle) { case tpic_white: tpic_pen(tpic_linewidth); tpic_shade(0.0); break; case tpic_gray: tpic_pen(tpic_linewidth); tpic_shade(0.5); break; case tpic_black: tpic_pen(tpic_linewidth); tpic_shade(1.0); break; case tpic_none: tpic_pen(tpic_linewidth * 3); break; } switch (tpic_point[number].size) { case tpic_small: size = tpic_pointsize; break; case tpic_medium: size = (int) (tpic_pointsize * 1.4142); break; case tpic_large: size = (int) (tpic_pointsize * 2.0); break; default: break; } (tpic_point[number].function) (size); } fputs("}%%\n", gpoutfile); } static void TPIC_arrow(sx, sy, ex, ey, head) unsigned int sx; unsigned int sy; unsigned int ex; unsigned int ey; TBOOLEAN head; { best_latex_arrow(sx, sy, ex, ey, 1, head); tpic_posx = ex; tpic_posy = ey; } void tpic_diamond(size) int size; { size = (int) (size * 1.4142); tpic_path(0, size); tpic_path(-size, 0); tpic_path(0, -size); tpic_path(size, 0); tpic_path(0, size); tpic_flush(); return; } void tpic_plus(size) int size; { tpic_path(0, size); tpic_path(0, -size); tpic_flush(); tpic_path(size, 0); tpic_path(-size, 0); tpic_flush(); return; } void tpic_box(size) int size; { tpic_path(size, size); tpic_path(-size, size); tpic_path(-size, -size); tpic_path(size, -size); tpic_path(size, size); tpic_flush(); return; } void tpic_times(size) int size; { size = (int) (size / 1.4142); tpic_path(size, size); tpic_path(-size, -size); tpic_flush(); tpic_path(size, -size); tpic_path(-size, size); tpic_flush(); return; } void tpic_triangle(size) int size; { int x; size = (int) (size / 1.6119); x = (int) (size * 1.7321); tpic_path(0, -size * 2); tpic_path(-x, size); tpic_path(x, size); tpic_path(0, -size * 2); tpic_flush(); return; } void tpic_star(size) int size; { int x; size = (int) (size / 2); x = (int) (size * 1.7321); tpic_path(0, size * 2); tpic_path(0, -size * 2); tpic_flush(); tpic_path(x, size); tpic_path(-x, -size); tpic_flush(); tpic_path(x, -size); tpic_path(-x, size); tpic_flush(); return; } void tpic_hexagon(size) int size; { int x; size = (int) (size / 2); x = (int) (size * 1.7321); tpic_path(0, size * 2); tpic_path(-x, size); tpic_path(-x, -size); tpic_path(0, -size * 2); tpic_path(x, -size); tpic_path(x, size); tpic_path(0, size * 2); tpic_flush(); return; } void tpic_circle(size) int size; { tpic_arc(size); return; } void tpic_doublecircle(size) int size; { tpic_arc(size); tpic_shade(0.0); tpic_arc(size / 2); return; } void tpic_vercircle(size) int size; { tpic_arc(size); tpic_path(0, size); tpic_path(0, -size); tpic_flush(); return; } void tpic_horcircle(size) int size; { tpic_arc(size); tpic_path(size, 0); tpic_path(-size, 0); tpic_flush(); return; } void tpic_pluscircle(size) int size; { tpic_arc(size); tpic_plus(size); return; } void tpic_timescircle(size) int size; { tpic_arc(size); tpic_times(size); return; } void tpic_starcircle(size) int size; { tpic_arc(size); tpic_star(size); return; } void tpic_dotcircle(size) int size; { tpic_arc(size); tpic_shade(1.0); tpic_arc(size / 2); return; } void tpic_diamondcircle(size) int size; { tpic_arc(size); tpic_shade(1.0); tpic_diamond((int) (size / 1.5)); return; } void tpic_boxcircle(size) int size; { tpic_arc(size); tpic_shade(1.0); tpic_box((int) (size / 1.5)); return; } void tpic_trianglecircle(size) int size; { tpic_arc(size); tpic_shade(1.0); tpic_triangle((int) (size / 1.5)); return; } void tpic_hexagoncircle(size) int size; { tpic_arc(size); tpic_shade(1.0); tpic_hexagon((int) (size / 1.2)); return; } void tpic_plustimescircle(size) int size; { tpic_arc(size); tpic_plus(size); tpic_times(size); return; } void tpic_abspath(x, y) unsigned int x; unsigned int y; { fprintf(gpoutfile, "\\put(%u,%u){", x, y); tpic_path(0, 0); fputs("}%\n", gpoutfile); return; } void tpic_path(x, y) int x; int y; { fprintf(gpoutfile, "\\special{pa %d %d}", x, y); return; } void tpic_flush() { fputs("\\special{fp}%\n", gpoutfile); return; } void tpic_arc(radius) int radius; { fprintf(gpoutfile, "\\special{ar 0 0 %d %d 0 7}", radius, radius); return; } void tpic_shade(grayscale) double grayscale; { fprintf(gpoutfile, "\\special{sh %f}", grayscale); return; } void tpic_pen(thickness) int thickness; { fprintf(gpoutfile, "\\special{pn %d}", thickness); return; } void tpic_dottedflush(interval) double interval; { fprintf(gpoutfile, "\\special{dt %f}%%\n", interval); return; } void tpic_dashedflush(interval) double interval; { fprintf(gpoutfile, "\\special{da %f}%%\n", interval); return; } # 382 "term.h" 2 # 1 "term/pstricks.trm" 1 # 80 "term/pstricks.trm" # 1 "term/driver.h" 1 # 81 "term/pstricks.trm" 2 static void PSTRICKS_options (void); static void PSTRICKS_init (void); static void PSTRICKS_graphics (void); static void PSTRICKS_text (void); static void PSTRICKS_linetype (int linetype); static void PSTRICKS_move (unsigned int x, unsigned int y); static void PSTRICKS_point (unsigned int x, unsigned int y, int number); static void PSTRICKS_vector (unsigned int ux, unsigned int uy); static void PSTRICKS_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void PSTRICKS_put_text (unsigned int x, unsigned int y, char str[]); static int PSTRICKS_justify_text (enum JUSTIFY mode); static int PSTRICKS_text_angle (int ang); static void PSTRICKS_reset (void); # 112 "term/pstricks.trm" static void PSTRICKS_endline (void); static char *PSTRICKS_hack_text (char s[]); static float PSTRICKS_xscale = 1.0; static float PSTRICKS_yscale = 1.0; static float PSTRICKS_posx; static float PSTRICKS_posy; enum JUSTIFY PSTRICKS_justify = LEFT; static int PSTRICKS_angle = 0; static char *PSTRICKS_points[] = { "\\PST@Diamond", "\\PST@Plus", "\\PST@Square", "\\PST@Cross", "\\PST@Circle", "\\PST@Triangle", "\\PST@Pentagon", "\\PST@Filldiamond", "\\PST@Fillsquare", "\\PST@Filltriangle", "\\PST@Fillcircle", "\\PST@Fillpentagon" }; static char *PSTRICKS_lines[] = { "\\PST@Border", "\\PST@Axes", "\\PST@Solid", "\\PST@Dashed", "\\PST@Dotted", "\\PST@LongDash" }; static int PSTRICKS_type; static TBOOLEAN PSTRICKS_inline = 0; static void PSTRICKS_endline (void); static int PSTRICKS_linecount = 0; # 173 "term/pstricks.trm" static int PST_hack_text = 1; static int PST_unit_plot = 0; static void PSTRICKS_options() { if (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "no$hacktext")) { PST_hack_text = 0; c_token++; } else if (almost_equals(c_token, "u$nit")) { PST_unit_plot = 1; c_token++; } } } static void PSTRICKS_init() { PSTRICKS_posx = PSTRICKS_posy = 0; PSTRICKS_linetype(-1); fputs("% GNUPLOT: LaTeX picture using PSTRICKS macros\n", gpoutfile); } static void PSTRICKS_graphics() { fputs("% Define new PST objects, if not already defined\n\\ifx\\PSTloaded\\undefined\n\\def\\PSTloaded{t}\n\\psset{arrowsize=.01 3.2 1.4 .3}\n\\psset{dotsize=.01}\n\\catcode`@=11\n\n", gpoutfile); # 208 "term/pstricks.trm" fputs("\\newpsobject{PST@Border}{psline}{linewidth=.0015,linestyle=solid}\n\\newpsobject{PST@Axes}{psline}{linewidth=.0015,linestyle=dotted,dotsep=.004}\n\\newpsobject{PST@Solid}{psline}{linewidth=.0015,linestyle=solid}\n\\newpsobject{PST@Dashed}{psline}{linewidth=.0015,linestyle=dashed,dash=.01 .01}\n\\newpsobject{PST@Dotted}{psline}{linewidth=.0025,linestyle=dotted,dotsep=.008}\n\\newpsobject{PST@LongDash}{psline}{linewidth=.0015,linestyle=dashed,dash=.02 .01}\n", gpoutfile); # 226 "term/pstricks.trm" fputs("\\newpsobject{PST@Diamond}{psdots}{linewidth=.001,linestyle=solid,dotstyle=square,dotangle=45}\n\\newpsobject{PST@Filldiamond}{psdots}{linewidth=.001,linestyle=solid,dotstyle=square*,dotangle=45}\n\\newpsobject{PST@Cross}{psdots}{linewidth=.001,linestyle=solid,dotstyle=+,dotangle=45}\n", gpoutfile); fputs("\\newpsobject{PST@Plus}{psdots}{linewidth=.001,linestyle=solid,dotstyle=+}\n\\newpsobject{PST@Square}{psdots}{linewidth=.001,linestyle=solid,dotstyle=square}\n\\newpsobject{PST@Circle}{psdots}{linewidth=.001,linestyle=solid,dotstyle=o}\n\\newpsobject{PST@Triangle}{psdots}{linewidth=.001,linestyle=solid,dotstyle=triangle}\n\\newpsobject{PST@Pentagon}{psdots}{linewidth=.001,linestyle=solid,dotstyle=pentagon}\n\\newpsobject{PST@Fillsquare}{psdots}{linewidth=.001,linestyle=solid,dotstyle=square*}\n\\newpsobject{PST@Fillcircle}{psdots}{linewidth=.001,linestyle=solid,dotstyle=*}\n\\newpsobject{PST@Filltriangle}{psdots}{linewidth=.001,linestyle=solid,dotstyle=triangle*}\n\\newpsobject{PST@Fillpentagon}{psdots}{linewidth=.001,linestyle=solid,dotstyle=pentagon*}\n", gpoutfile); # 244 "term/pstricks.trm" fputs("\\newpsobject{PST@Arrow}{psline}{linewidth=.001,linestyle=solid}\n\\catcode`@=12\n\n\\fi\n", gpoutfile); if (!PST_unit_plot) { fprintf(gpoutfile, "\\psset{unit=%fin,xunit=%fin,yunit=%fin}\n", 5.0 * PSTRICKS_xscale, 5.0 * PSTRICKS_xscale, 3.0 * PSTRICKS_yscale); } fputs("\\pspicture(0,0)(1,1)\n\\ifx\\nofigs\\undefined\n\\catcode`@=11\n\n", gpoutfile); } static void PSTRICKS_text() { PSTRICKS_endline(); fputs("\\catcode`@=12\n\\fi\n\\endpspicture\n", gpoutfile); } static void PSTRICKS_linetype(linetype) int linetype; { PSTRICKS_endline(); if (linetype >= 6 - 2) linetype %= (6 - 2); PSTRICKS_type = linetype; } static void PSTRICKS_move(x, y) unsigned int x; unsigned int y; { PSTRICKS_endline(); PSTRICKS_posx = x / 10000.0; PSTRICKS_posy = y / 10000.0; } static void PSTRICKS_point(x, y, number) unsigned x; unsigned y; int number; { PSTRICKS_move(x, y); if (number < 0) { fprintf(gpoutfile, "\\qdisk(%.4f,%.4f){%.4f}\n", x / 10000.0, y / 10000.0, 0.00025); } else { fprintf(gpoutfile, "%s(%.4f,%.4f)\n", PSTRICKS_points[number % 12], x / 10000.0, y / 10000.0); } } static void PSTRICKS_vector(ux, uy) unsigned ux; unsigned uy; { if (!PSTRICKS_inline) { PSTRICKS_inline = 1; fprintf(gpoutfile, "%s(%.4f,%.4f)\n", PSTRICKS_lines[PSTRICKS_type + 2], PSTRICKS_posx, PSTRICKS_posy); PSTRICKS_linecount = 1; } else { if (PSTRICKS_linecount++ >= 100) { fprintf(gpoutfile, "%s(%.4f,%.4f)\n", PSTRICKS_lines[PSTRICKS_type + 2], PSTRICKS_posx, PSTRICKS_posy); PSTRICKS_linecount = 1; } } PSTRICKS_posx = ux / 10000.0; PSTRICKS_posy = uy / 10000.0; fprintf(gpoutfile, "(%.4f,%.4f)\n", PSTRICKS_posx, PSTRICKS_posy); } static void PSTRICKS_endline() { if (PSTRICKS_inline) { _IO_putc ('\n', gpoutfile); PSTRICKS_inline = 0; } } static void PSTRICKS_arrow(sx, sy, ex, ey, head) unsigned int sx; unsigned int sy; unsigned int ex; unsigned int ey; TBOOLEAN head; { fprintf(gpoutfile, "\\PST@Arrow%s(%.4f,%.4f)(%.4f,%.4f)\n", head ? "{->}" : "", sx / 10000.0, sy / 10000.0, ex / 10000.0, ey / 10000.0); PSTRICKS_posx = ex / 10000.0; PSTRICKS_posy = ey / 10000.0; } # 393 "term/pstricks.trm" static char *PSTRICKS_hack_text(s) char s[]; { double value; char *ends; static char hack[8192]; value = strtod(s, &ends); if (s == ends) { (__extension__ (__builtin_constant_p (s) ? (((size_t)(const void *)((s) + 1) - (size_t)(const void *)(s) == 1) && strlen (s) + 1 <= 8 ? __strcpy_small (hack, __extension__ (((__const unsigned char *) (__const char *) (s))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (s))[0]), __extension__ (((__const unsigned char *) (__const char *) (s))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (s))[4]), __extension__ (((((__const unsigned char *) (__const char *) (s))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (s))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s))[0]), __extension__ (((((__const unsigned char *) (__const char *) (s))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (s))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s))[4]), strlen (s) + 1) : (char *) memcpy (! hack, s, strlen (s) + 1)) : strcpy (hack, s))); } else { char *ptr; safe_strncpy(hack, s, ends - s + 1); ptr = (__extension__ (__builtin_constant_p ('e') && ('e') == '\0' ? (char *) __rawmemchr (hack, 'e') : strchr (hack, 'e'))); if (ptr == ((void *)0)) { ptr = (__extension__ (__builtin_constant_p ('E') && ('E') == '\0' ? (char *) __rawmemchr (hack, 'E') : strchr (hack, 'E'))); } if (ptr != ((void *)0)) { double man_val; int expo_val; *ptr = ('\0'); man_val = atof(hack); expo_val = atoi(ptr + 1); if (man_val == 0) { sprintf(hack, "0"); } else if (man_val == 1) { sprintf(hack, "$10^{%d}$", expo_val); } else if (man_val == (int) man_val) { if (expo_val == 1) { sprintf(hack, "$%d$", (int) man_val); } else { sprintf(hack, "$%d \\times 10^{%d}$", (int) man_val, expo_val); } } else { if (expo_val == 1) { sprintf(hack, "$%f$", man_val); } else { sprintf(hack, "$%f \\times 10^{%d}$", man_val, expo_val); } } } strcat(hack, ends); } return hack; } static void PSTRICKS_put_text(x, y, str) unsigned int x; unsigned int y; char str[]; { PSTRICKS_endline(); if (strlen(str) > 0) { fputs("\\rput", gpoutfile); switch (PSTRICKS_justify) { case LEFT: fputs("[l]", gpoutfile); break; case CENTRE: break; case RIGHT: fputs("[r]", gpoutfile); break; } switch (PSTRICKS_angle) { case 0: break; case 1: fputs("{L}", gpoutfile); break; } fprintf(gpoutfile, "(%.4f,%.4f)", x / 10000.0, y / 10000.0); if (PST_hack_text) { char *hack; hack = PSTRICKS_hack_text(str); fprintf(gpoutfile, "{%s}\n", hack); } else { fprintf(gpoutfile, "{%s}\n", str); } } } static int PSTRICKS_justify_text(mode) enum JUSTIFY mode; { PSTRICKS_justify = mode; return (1); } static int PSTRICKS_text_angle(ang) int ang; { PSTRICKS_angle = ang; return (1); } static void PSTRICKS_reset() { PSTRICKS_endline(); PSTRICKS_posx = PSTRICKS_posy = 0; } # 385 "term.h" 2 # 1 "term/texdraw.trm" 1 # 58 "term/texdraw.trm" # 1 "term/driver.h" 1 # 59 "term/texdraw.trm" 2 static void TEXDRAW_init (void); static void TEXDRAW_graphics (void); static void TEXDRAW_text (void); static void TEXDRAW_linetype (int linetype); static void TEXDRAW_move (unsigned int x, unsigned int y); static void TEXDRAW_point (unsigned int x, unsigned int y, int number); static void TEXDRAW_vector (unsigned int ux, unsigned int uy); static void TEXDRAW_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void TEXDRAW_put_text (unsigned int x, unsigned int y, char str[]); static int TEXDRAW_justify_text (enum JUSTIFY mode); static int TEXDRAW_text_angle (int ang); static void TEXDRAW_reset (void); # 102 "term/texdraw.trm" static void TEXDRAW_endline (void); static unsigned int TEXDRAW_posx; static unsigned int TEXDRAW_posy; enum JUSTIFY TEXDRAW_justify = LEFT; enum JUSTIFY TEXDRAW_last_justify = LEFT; static int TEXDRAW_angle = 0; static float TEXDRAW_scalefactor = 0.2409; static double TEXDRAW_xscale = 1.0, TEXDRAW_yscale = 1.0; static char * TEXDRAW_points[] = { "\\rmove(0 4)\\htext{$\\Diamond$}", "\\htext{$+$}", "\\rmove(0 4)\\htext{$\\Box$}", "\\htext{$\\times$}", "\\htext{$\\triangle$}", "\\htext{$\\star$}", "\\lcir r:9", "\\lcir r:12", "\\lcir r:16", "\\fcir f:0.9 r:9", "\\fcir f:0.9 r:12", "\\fcir f:0.9 r:16" }; static int TEXDRAW_lines[] = { 4, 3, 3, 4, 6, }; static int TEXDRAW_last_type = 0; static int TEXDRAW_type; static TBOOLEAN TEXDRAW_inline = 0; static void TEXDRAW_endline (void); static int TEXDRAW_linecount = 0; static void TEXDRAW_init() { TEXDRAW_posx = TEXDRAW_posy = 0; TEXDRAW_linetype(-1); fputs("%% GNUPLOT: LaTeX using TEXDRAW macros\n", gpoutfile); } static void TEXDRAW_graphics() { static char tdg1[] = "\\begin{texdraw}\n\\normalsize\n\\ifx\\pathDEFINED\\relax\\else\\let\\pathDEFINED\\relax\n \\def\\QtGfr{\\ifx (\\TGre \\let\\YhetT\\cpath\\else\\let\\YhetT\\relax\\fi\\YhetT}\n \\def\\path (#1 #2){\\move (#1 #2)\\futurelet\\TGre\\QtGfr}\n \\def\\cpath (#1 #2){\\lvec (#1 #2)\\futurelet\\TGre\\QtGfr}\n\\fi\n\\drawdim pt\n\\setunitscale %2.2f\n\\linewd %d\n\\textref h:L v:C\n"; # 177 "term/texdraw.trm" fprintf(gpoutfile, tdg1, TEXDRAW_scalefactor, TEXDRAW_lines[2]); TEXDRAW_last_type = 0; TEXDRAW_type = 0; } static void TEXDRAW_text() { TEXDRAW_endline(); fputs("\\end{texdraw}\n", gpoutfile); } static void TEXDRAW_linetype(linetype) int linetype; { TEXDRAW_endline(); if (linetype >= 5 - 2) linetype %= (5 - 2); TEXDRAW_type = linetype; } static void TEXDRAW_move(x, y) unsigned int x, y; { TEXDRAW_endline(); TEXDRAW_posx = x; TEXDRAW_posy = y; } static void TEXDRAW_point(x, y, number) unsigned int x, y; int number; { TEXDRAW_move(x, y); fprintf(gpoutfile, "\\move (%d %d)\n", (int) ((double) x * TEXDRAW_xscale), (int) ((double) y * TEXDRAW_yscale)); if (TEXDRAW_last_justify != CENTRE) { fprintf(gpoutfile, "\\textref h:C v:C "); TEXDRAW_last_justify = CENTRE; } fprintf(gpoutfile, "%s\n", (number < 0 ? "\\htext{$\\cdot$}" : TEXDRAW_points[number % 12])); } static void TEXDRAW_vector(ux, uy) unsigned int ux, uy; { if (!TEXDRAW_inline) { TEXDRAW_inline = 1; if (TEXDRAW_type != TEXDRAW_last_type) { if (TEXDRAW_lines[TEXDRAW_type + 2] != TEXDRAW_lines[TEXDRAW_last_type + 2]) fprintf(gpoutfile, "\\linewd %d\n", TEXDRAW_lines[TEXDRAW_type + 2]); TEXDRAW_last_type = TEXDRAW_type; } fprintf(gpoutfile, "\\path (%d %d)", (int) ((double) TEXDRAW_posx * TEXDRAW_xscale), (int) ((double) TEXDRAW_posy * TEXDRAW_yscale)); TEXDRAW_linecount = 1; } else { if (TEXDRAW_linecount++ >= 5) { fputs("\n\\cpath ", gpoutfile); TEXDRAW_linecount = 1; } } fprintf(gpoutfile, "(%d %d)", (int) ((double) ux * TEXDRAW_xscale), (int) ((double) uy * TEXDRAW_yscale)); TEXDRAW_posx = ux; TEXDRAW_posy = uy; } static void TEXDRAW_endline() { if (TEXDRAW_inline) { _IO_putc ('\n', gpoutfile); TEXDRAW_inline = 0; } } static void TEXDRAW_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; TBOOLEAN head; { char text; if (head) text = 'a'; else text = 'l'; fprintf(gpoutfile, "\\move (%d %d)\\%cvec (%d %d)", (int) ((double) sx * TEXDRAW_xscale), (int) ((double) sy * TEXDRAW_yscale), text, (int) ((double) ex * TEXDRAW_xscale), (int) ((double) ey * TEXDRAW_yscale)); TEXDRAW_posx = ex; TEXDRAW_posy = ey; } static void TEXDRAW_put_text(x, y, str) unsigned int x, y; char str[]; { char text; TEXDRAW_endline(); fprintf(gpoutfile, "\\move (%d %d)", (int) ((double) x * TEXDRAW_xscale), (int) ((double) y * TEXDRAW_yscale)); if (!TEXDRAW_angle) text = 'h'; else text = 'v'; if (TEXDRAW_last_justify != TEXDRAW_justify) { TEXDRAW_last_justify = TEXDRAW_justify; if (TEXDRAW_justify == LEFT) fputs("\\textref h:L v:C ", gpoutfile); else if (TEXDRAW_justify == CENTRE) fputs("\\textref h:C v:C ", gpoutfile); else if (TEXDRAW_justify == RIGHT) fputs("\\textref h:R v:C ", gpoutfile); } fprintf(gpoutfile, "\\%ctext{%s}\n", text, str); } static int TEXDRAW_justify_text(mode) enum JUSTIFY mode; { TEXDRAW_justify = mode; return (1); } static int TEXDRAW_text_angle(ang) int ang; { TEXDRAW_angle = ang; return (1); } static void TEXDRAW_reset() { TEXDRAW_endline(); TEXDRAW_posx = TEXDRAW_posy = 0; } # 388 "term.h" 2 # 1 "term/metafont.trm" 1 # 70 "term/metafont.trm" # 1 "term/driver.h" 1 # 71 "term/metafont.trm" 2 # 94 "term/metafont.trm" static void MF_init (void); static void MF_graphics (void); static void MF_text (void); static int MF_justify_text (enum JUSTIFY mode); static int MF_text_angle (int ang); static void MF_linetype (int linetype); static void MF_move (unsigned int x, unsigned int y); static void MF_vector (unsigned int x, unsigned int y); static void MF_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void MF_put_text (unsigned int x, unsigned int y, char *str); static void MF_reset (void); # 119 "term/metafont.trm" static double MF_xsize = 5.0; static double MF_ysize = 3.0; static int MF_char_code; static int MF_ang; static int MF_line_type; static enum JUSTIFY MF_justify; static double MF_dist_left; static int MF_is_solid; static int MF_picked_up_pen; static int MF_dash_index; static unsigned int MF_last_x, MF_last_y; static struct { int solid; float thickness; int dashlen[4]; } MF_lines[10] = { { 1, 1.5, { 0, 0, 0, 0 } }, { 0, 1.0, { (300) / 60, (300) / 50, (300) / 60, (300) / 50 } }, { 1, 1.5, { 0, 0, 0, 0 } }, { 0, 1.5, { (300) / 20, (300) / 30, (300) / 20, (300) / 30 } }, { 0, 1.5, { (300) / 30, (300) / 20, (300) / 30, (300) / 20 } }, { 0, 1.5, { (300) / 15, (300) / 30, (300) / 60, (300) / 30 } }, { 0, 1.5, { (300) / 30, (300) / 50, (300) / 30, (300) / 50 } }, { 0, 1.5, { (300) / 20, (300) / 50, (300) / 60, (300) / 30 } }, { 0, 1.5, { (300) / 30, (300) / 50, (300) / 30, (300) / 30 } }, { 0, 1.5, { (300) / 60, (300) / 50, (300) / 60, (300) / 30 } } }; static void MF_init() { MF_char_code = 0; MF_ang = 0; fputs("if unknown cmbase: input cmbase fi\n\ntracingstats:=1;\npicture r[];\n\ndef openit = openwindow currentwindow\n from (0,0) to (400,800) at (-50,500) enddef;\n\nmode_setup;\n", gpoutfile); fputs("\n%Include next eight lines if you have problems with the mode on your system..\n%proofing:=0;\n%fontmaking:=1;\n%tracingtitles:=0;\n%pixels_per_inch:=300;\n%blacker:=0;\n%fillin:=.2;\n%o_correction:=.6;\n%fix_units;\n", gpoutfile); # 203 "term/metafont.trm" fputs("\ndef put_text(expr ts,xstart,ystart,rot,justification) =\n begingroup\n text_width:=0;text_height:=0;\n for ind:=0 step 1 until length(ts)-1:\n dec_num:=ASCII substring (ind,ind+1) of ts;\n if unknown r[dec_num]: dec_num:=32; fi\n if dec_num=32: \n text_width:=text_width+wd[65];\n text_height:=GPMAX(text_height,ht[65]+dp[65]);\n elseif dec_num>=0: \n text_width:=text_width+wd[dec_num];\n text_height:=GPMAX(text_height,ht[dec_num]+dp[dec_num]);\n fi\n endfor\n if rot=90:\n if justification=1: ynext:=ystart;\n elseif justification=2: ynext:=round(ystart-text_width/2);\n else: ynext:=round(ystart-text_width);\n fi\n xnext:=xstart+text_height/2;\n else:\n if justification=1: xnext:=xstart;\n elseif justification=2: xnext:=round(xstart-text_width/2);\n else: xnext:=round(xstart-text_width);\n fi\n ynext:=ystart-text_height/2;\n fi\n for ind:=0 s! tep 1 until length(ts)-1:\n dec_num:=ASCII substring (ind,ind+1) of ts;\n if unknown r[dec_num]: dec_num:=32; fi\n if dec_num=32: \n xnext:=xnext+wd[65]*cosd rot;\n ynext:=ynext+wd[65]*sind rot;\n elseif dec_num>=0: \n currentpicture:=currentpicture+r[dec_num] shifted(xnext,ynext)\n rotatedaround ((xnext,ynext),rot); \n xnext:=xnext+wd[dec_num]*cosd rot;\n ynext:=ynext+wd[dec_num]*sind rot;\n fi\n endfor\n endgroup \nenddef;\n", gpoutfile); # 247 "term/metafont.trm" fputs("\ndef endchar =\n r[charcode]:=currentpicture;\n wd[charcode]:=w;ht[charcode]:=h;dp[charcode]:=d;\n message \"Picture of charcode no.\" & decimal charcode;\n endgroup;\nenddef;\nlet endchar_ = endchar;\nlet generate = relax;\nlet roman = relax;\n", gpoutfile); # 258 "term/metafont.trm" fputs("input cmr10.mf\nif ligs>1: font_coding_scheme:=\"TeX text\";\n spanish_shriek=oct\"074\"; spanish_query=oct\"076\";\nelse: font_coding_scheme:=\n if ligs=0: \"TeX typewriter text\"\n else: \"TeX text without f-ligatures\" fi;\n spanish_shriek=oct\"016\"; spanish_query=oct\"017\"; fi\nfont_setup;\ninput romanu.mf %Roman uppercase.\ninput romanl.mf %Roman lowerrcase.\ninput greeku.mf %Greek uppercase.\ninput romand.mf %Numerals.\ninput romanp.mf %Ampersand, question marks, currency sign.\ninput romspl.mf %Lowercase specials (dotless \\i, ligature \\ae, etc.)\ninput romspu.mf %Uppercase specials (\\AE, \\OE, \\O)\ninput punct.mf %Punctuation symbols.\n\nminus=ASCII\"-\"; cmchar \"Minus sign\";\nbeginarithchar(minus); \n pickup rule.nib;\n lft x1=hround 1.5u-eps;\n x2=w-x1; y1=y2=math_axis;\n draw z1--z2; % bar\n labels(1,2); \nendchar;\n", gpoutfile); # 284 "term/metafont.trm" fputs("\ncmchar \"Period\";\n numeric dot_diam#; dot_diam#:=if monospace: 5/4 fi\\ dot_size#;\n define_whole_blacker_pixels(dot_diam);\n beginchar(\".\",5u#,dot_diam#,0);\n adjust_fit(0,0); pickup fine.nib;\n pos1(dot_diam,0); pos2(dot_diam,90);\n lft x1l=hround(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2); % dot\n penlabels(1,2);\nendchar;\n", gpoutfile); # 295 "term/metafont.trm" fputs("\ndef endchar =\n % Next line should probably be removed if CM base is used\n l:=0; r:=w;\n %Include the next two lines if you want to\n %rotate the picture 90 deg.(Portrait to Landscape)\n %currentpicture:=currentpicture rotated 90 shifted (h,0);\n %tmp:=charht; charht:=charwd; charwd:=tmp;\n scantokens extra_endchar;\n if proofing>0: makebox(proofrule); fi\n chardx:=w;\n shipit;\n if displaying>0: makebox(screenrule); showit; fi\n endgroup \nenddef;\nlet endchar_ = endchar;\nlet generate = input;\nlet roman = roman;\n", gpoutfile); # 318 "term/metafont.trm" fputs("\n\nfont_identifier:=\"GNUPLOT\";\nfont_size 72pt#;\nth#=0.4pt#; define_whole_pixels(th);\n\npath arrowhead;\narrowhead = (-7pt,-2pt){dir30}..(-6pt,0pt)..{dir150}(-7pt,2pt) &\n (-7pt,2pt)--(0pt,0pt)--(-7pt,-2pt) & cycle;\n", gpoutfile); } static void MF_graphics() { register struct TERMENTRY *t = term; fprintf(gpoutfile, "\n\nbeginchar(%d,%gin#,%gin#,0);\n", MF_char_code, MF_xsize, MF_ysize); MF_char_code++; fprintf(gpoutfile, "a:=w/%d;b:=h/%d;\n", t->xmax, t->ymax); MF_picked_up_pen = 0; } static void MF_text() { fputs("endchar;\n", gpoutfile); } static int MF_justify_text(mode) enum JUSTIFY mode; { MF_justify = mode; return 1; } static int MF_text_angle(ang) int ang; { if (ang > 0) MF_ang = 90; else MF_ang = 0; return 1; } static void MF_linetype(linetype) int linetype; { if (linetype >= 8) linetype %= 8; linetype += 2; if ((MF_lines[linetype].thickness != MF_lines[MF_line_type].thickness) || (!MF_picked_up_pen)) { fprintf(gpoutfile, "pickup pencircle scaled %gth;\n", MF_lines[linetype].thickness); MF_picked_up_pen = 1; } MF_line_type = linetype; MF_dash_index = 0; MF_dist_left = MF_lines[MF_line_type].dashlen[MF_dash_index]; MF_is_solid = MF_lines[MF_line_type].solid; } static void MF_move(x, y) unsigned int x, y; { MF_last_x = x; MF_last_y = y; MF_dash_index = 0; MF_dist_left = MF_lines[MF_line_type].dashlen[MF_dash_index]; } static void MF_vector(x, y) unsigned int x, y; { if (MF_is_solid) { if (x == MF_last_x && y == MF_last_y) fprintf(gpoutfile, "drawdot (%da,%db);\n", x, y); else fprintf(gpoutfile, "draw (%da,%db)--(%da,%db);\n", MF_last_x, MF_last_y, x, y); } else { double dist_to_go, delta_x, delta_y, inc_x, inc_y; double last_x_d, last_y_d, next_x_d, next_y_d; unsigned int next_x, next_y; if (x == MF_last_x && y == MF_last_y) { if (!(MF_dash_index & 1)) fprintf(gpoutfile, "drawdot (%da,%db);\n", x, y); } else { last_x_d = MF_last_x; last_y_d = MF_last_y; delta_x = x - last_x_d; delta_y = y - last_y_d; dist_to_go = sqrt(delta_x * delta_x + delta_y * delta_y); inc_x = delta_x / dist_to_go; inc_y = delta_y / dist_to_go; while (MF_dist_left < dist_to_go) { next_x_d = last_x_d + inc_x * MF_dist_left; next_y_d = last_y_d + inc_y * MF_dist_left; next_x = floor(next_x_d + 0.5); next_y = floor(next_y_d + 0.5); if (!(MF_dash_index & 1)) fprintf(gpoutfile, "draw (%da,%db)--(%da,%db);\n", MF_last_x, MF_last_y, next_x, next_y); MF_last_x = next_x; MF_last_y = next_y; last_x_d = next_x_d; last_y_d = next_y_d; dist_to_go -= MF_dist_left; MF_dash_index = (MF_dash_index + 1) & 3; MF_dist_left = MF_lines[MF_line_type].dashlen[MF_dash_index]; } delta_x = x - last_x_d; delta_y = y - last_y_d; MF_dist_left -= sqrt(delta_x * delta_x + delta_y * delta_y); if (!(MF_dash_index & 1)) { if (x == MF_last_x && y == MF_last_y) fprintf(gpoutfile, "drawdot (%da,%db);\n", x, y); else fprintf(gpoutfile, "draw (%da,%db)--(%da,%db);\n", MF_last_x, MF_last_y, x, y); } } } MF_last_x = x; MF_last_y = y; } static void MF_arrow(sx, sy, ex, ey, head) unsigned int sx, sy, ex, ey; TBOOLEAN head; { int delta_x, delta_y; MF_move(sx, sy); MF_vector(ex, ey); if (head) { delta_x = ex - sx; delta_y = ey - sy; fprintf(gpoutfile, "fill arrowhead rotated angle(%d,%d) shifted (%da,%db);\n", delta_x, delta_y, ex, ey); } } static void MF_put_text(x, y, str) unsigned int x, y; char *str; { int i, j = 0; for (i = 0; i < strlen(str); i++) if (str[i] == '"') str[i] = '\''; switch (MF_justify) { case LEFT: j = 1; break; case CENTRE: j = 2; break; case RIGHT: j = 3; break; } fprintf(gpoutfile, "put_text(\"%s\",%da,%db,%d,%d);\n", str, x, y, MF_ang, j); } static void MF_reset() { fputs("end.\n", gpoutfile); } # 391 "term.h" 2 # 1 "term/metapost.trm" 1 # 57 "term/metapost.trm" # 1 "term/driver.h" 1 # 58 "term/metapost.trm" 2 static void MP_options (void); static void MP_init (void); static void MP_graphics (void); static void MP_text (void); static void MP_linetype (int linetype); static void MP_move (unsigned int x, unsigned int y); static void MP_point (unsigned int x, unsigned int y, int number); static void MP_pointsize (double size); static void MP_linewidth (double width); static void MP_vector (unsigned int ux, unsigned int uy); static void MP_arrow (unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head); static void MP_put_text (unsigned int x, unsigned int y, char str[]); static int MP_justify_text (enum JUSTIFY mode); static int MP_text_angle (int ang); static void MP_reset (void); static int MP_set_font (char *font); static void MP_boxfill (int style, unsigned int x1, unsigned int y1, unsigned int width, unsigned int height); # 106 "term/metapost.trm" static double MP_xsize = 5.0; static double MP_ysize = 3.0; static int MP_posx; static int MP_posy; static char MP_fontname[50 + 1]; static double MP_fontsize; static double MP_textmag; enum JUSTIFY MP_justify = LEFT; static int MP_ang = 0; static int MP_char_code = 0; static int MP_linecount = 1; # 131 "term/metapost.trm" static TBOOLEAN MP_inline = 0; static TBOOLEAN MP_color = 0; static TBOOLEAN MP_solid = 0; static TBOOLEAN MP_notex = 0; static TBOOLEAN MP_fontchanged = 0; static int MP_oldline = -2; static double MP_oldptsize = 1.0; static double MP_oldpen = 1.0; static void MP_endline (void); static void MP_options() { MP_color = 0; MP_solid = 0; MP_notex = 0; MP_fontsize = 10.0; MP_textmag = 1.0; (__extension__ (__builtin_constant_p ("cmr10") ? (((size_t)(const void *)(("cmr10") + 1) - (size_t)(const void *)("cmr10") == 1) && strlen ("cmr10") + 1 <= 8 ? __strcpy_small (MP_fontname, __extension__ (((__const unsigned char *) (__const char *) ("cmr10"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("cmr10"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("cmr10"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("cmr10"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[4 + 1]) << ! 8 | ((__const unsigned char *) (__const char *) ("cmr10"))[4]), strlen ("cmr10") + 1) : (char *) memcpy (MP_fontname, "cmr10", strlen ("cmr10") + 1)) : strcpy (MP_fontname, "cmr10"))); (__extension__ (__builtin_constant_p ("") ? (((size_t)(const void *)(("") + 1) - (size_t)(const void *)("") == 1) && strlen ("") + 1 <= 8 ? __strcpy_small (default_font, __extension__ (((__const unsigned char *) (__const char *) (""))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (""))[0]), __extension__ (((__const unsigned char *) (__const char *) (""))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (""))[4]), __extension__ (((((__const unsigned char *) (__const char *) (""))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (""))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (""))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (""))[0]), __extension__ (((((__const unsigned char *) (__const char *) (""))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (""))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (""))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (""))[4]), strlen ("") + 1! ) : (char *) memcpy (default_font, "", strlen ("") + 1)) : strcpy (default_font, ""))); while (!(c_token >= num_tokens || equals(c_token,";"))) { if (almost_equals(c_token, "m$onochrome")) { MP_color = 0; c_token++; continue; } if (almost_equals(c_token, "c$olor") || almost_equals(c_token, "c$olour")) { MP_color = 1; c_token++; continue; } if (almost_equals(c_token, "s$olid")) { MP_solid = 1; c_token++; continue; } if (almost_equals(c_token, "da$shed")) { MP_solid = 0; c_token++; continue; } if (almost_equals(c_token, "n$otex")) { MP_notex = 1; (__extension__ (__builtin_constant_p ("pcrr8r") ? (((size_t)(const void *)(("pcrr8r") + 1) - (size_t)(const void *)("pcrr8r") == 1) && strlen ("pcrr8r") + 1 <= 8 ? __strcpy_small (MP_fontname, __extension__ (((__const unsigned char *) (__const char *) ("pcrr8r"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("pcrr8r"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("pcrr8r"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("pcrr8r"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ! ("pcrr8r"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("pcrr8r"))[4]), strlen ("pcrr8r") + 1) : (char *) memcpy (MP_fontname, "pcrr8r", strlen ("pcrr8r") + 1)) : strcpy (MP_fontname, "pcrr8r"))); c_token++; continue; } if (almost_equals(c_token, "t$ex")) { MP_notex = 0; c_token++; continue; } if (almost_equals(c_token, "de$fault")) { c_token++; continue; } if (almost_equals(c_token, "m$agnification")) { c_token++; if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; MP_textmag = (double) real(const_express(&a)); } c_token++; continue; } break; } if (!(c_token >= num_tokens || equals(c_token,";")) && isstring(c_token)) { quote_str(MP_fontname, c_token, 50); c_token++; } if (!(c_token >= num_tokens || equals(c_token,";"))) { struct value a; MP_fontsize = (double) real(const_express(&a)); c_token++; } if (MP_fontsize < 5.0) MP_fontsize = 5.0; if (MP_fontsize > 99.99) MP_fontsize = 99.99; term->v_char = (unsigned int) ((300) * MP_fontsize * MP_textmag * 11 / 720); if (MP_notex) { term->h_char = (unsigned int) ((300) * MP_fontsize * MP_textmag * 6.0 / 720 + 0.5); } else { term->h_char = (unsigned int) ((300) * MP_fontsize * MP_textmag * 5.3 / 720 + 0.5); } sprintf(term_options, "%s%s%s%s%6.3f \"%s\" %5.2f", MP_color ? "color " : "", MP_solid ? "solid " : "", MP_notex ? "notex " : "", "mag ", MP_textmag, MP_fontname, MP_fontsize); } static void MP_init() { time_t now; time(&now); MP_posx = MP_posy = 0; fprintf(gpoutfile, "%%GNUPLOT Metapost output: %s\n", asctime(localtime(&now))); fputs("\ndefaultmpt:=mpt:=4;\nth:=.6;\n\ndef scalepen expr n = pickup pencircle scaled (n*th) enddef;\ndef ptsize expr n = mpt:=n*defaultmpt enddef;\n", gpoutfile); fprintf(gpoutfile, "\ntextmag:=%6.3f;\n", MP_textmag); fputs("vardef makepic(expr str) =\n if picture str : str scaled textmag\n % otherwise a string\n else: str infont defaultfont scaled (defaultscale*textmag)\n fi\nenddef;\n\ndef infontsize(expr str, size) =\n infont str scaled (size / fontsize str)\nenddef;\n", # 267 "term/metapost.trm" gpoutfile); if (MP_notex) { fprintf(gpoutfile, "\ndefaultfont:= \"%s\";\ndefaultscale := %6.3f/fontsize defaultfont;\n", MP_fontname, MP_fontsize); } else { fputs("\n%font changes\nverbatimtex\n \\def\\setfont#1#2{%.\n \\font\\gpfont=#1 at #2pt\n \\gpfont}\n", gpoutfile); fprintf(gpoutfile, "\\setfont{%s}{%5.2f}\netex\n", MP_fontname, MP_fontsize); } fputs("\ncolor currentcolor; currentcolor=black;\nboolean colorlines,dashedlines;\n", gpoutfile); if (MP_color) { fputs("colorlines:=true;\n", gpoutfile); } else { fputs("colorlines:=false;\n", gpoutfile); } if (MP_solid) { fputs("dashedlines:=false;\n", gpoutfile); } else { fputs("dashedlines:=true;\n", gpoutfile); } fputs("\ndef _wc = withpen currentpen withcolor currentcolor enddef;\ndef _ac = addto currentpicture enddef;\ndef _sms = scaled mpt shifted enddef;\n% drawing point-types\ndef gpdraw (expr n, x, y) =\n if n<0: _ac contour fullcircle _sms (x,y)\n elseif (n=1) or (n=3):\n _ac doublepath ptpath[n] _sms (x,y) _wc;\n _ac doublepath ptpath[n] rotated 90 _sms (x,y) _wc\n elseif n<6: _ac doublepath ptpath[n] _sms (x,y) _wc\n else: _ac contour ptpath[n] _sms (x,y) _wc\n fi\nenddef;\n\n% the point shapes\npath ptpath[];\n%diamond\nptpath0 = ptpath6 = (-1/2,0)--(0,-1/2)--(1/2,0)--(0,1/2)--cycle;\n% plus sign\nptpath1 = (-1/2,0)--(1/2,0);\n% square\nptpath2 = ptpath7 = (-1/2,-1/2)--(1/2,-1/2)--(1/2,1/2)--(-1/2,1/2)--cycle;\n% cross\nptpath3 := (-1/2,-1/2)--(1/2,1/2);\n% circle:\nptpath4 = ptpath8:= fullcircle;\n% triangle\nptpath5 = ptpath9 := (0,1/2)--(-1/2,-1/2)--(1/2,-1/2)--cycle;\n\ndef linetype expr n =\n currentcolor:= if colorlines : col[n] else: black fi;\n if n! = -1 :\n drawoptions(withcolor currentcolor withpen (currentpen scaled .5));\n elseif n < 1 :\n drawoptions(_wc);\n else :\n drawoptions( if dashedlines: dashed lt[n] fi _wc);\n fi\nenddef;\n\n% dash patterns\npicture lt[];\nlt1=dashpattern(on 2 off 2); % dashes\nlt2=dashpattern(on 2 off 2 on 0.2 off 2); %dash-dot\nlt3=lt1 scaled 1.414;\nlt4=lt2 scaled 1.414;\nlt5=lt1 scaled 2;\nlt6:=lt2 scaled 2;\nlt7=dashpattern(on 0.2 off 2); %dots\n\ncolor col[],cyan, magenta, yellow;\ncyan=blue+green; magenta=red+blue;yellow=green+red;\ncol[-2]:=col[-1]:=col0:=black;\ncol1:=red;\ncol2:=(.2,.2,1); %blue\ncol3:=(1,.66,0); %orange\ncol4:=.85*green;\ncol5:=.9*magenta;\ncol6:=0.85*cyan;\ncol7:=.85*yellow;\n\n%placing text\npicture GPtext;\ndef put_text(expr pic, x, y, r, j) =\n GPtext:=makepic(pic);\n GPtext:=GPtext shifted\n if j = 1: (-(ulcorner GPtext + llcorner GPtext)/2)\n elseif j = 2: (-center GPtext)\n else: (-(urcorner GPtext + lrcorner GPtext)/2)\n fi\n! rotated if r > 0: 90 else: 0 fi;\n draw GPtext shifted (x,y)\nenddef;\n", # 374 "term/metapost.trm" gpoutfile); } static void MP_graphics() { MP_oldline = -2; MP_oldpen = 1.0; MP_oldptsize = pointsize; fprintf(gpoutfile, "\nbeginfig(%d);\nw:=%gin;h:=%gin;\n", MP_char_code, MP_xsize, MP_ysize); fprintf(gpoutfile, "a:=w/%d;b:=h/%d;\n", term->xmax, term->ymax); fprintf(gpoutfile, "scalepen 1; ptsize %g;linetype -2;\n", pointsize); MP_char_code++; } static void MP_text() { if (MP_inline) MP_endline(); fputs("endfig;\n", gpoutfile); } static void MP_linetype(lt) int lt; { int linetype = lt; if (linetype >= 8) linetype %= 8; if (MP_inline) MP_endline(); if (MP_oldline != linetype) { fprintf(gpoutfile, "linetype %d;\n", linetype); MP_oldline = linetype; } } static void MP_move(x, y) unsigned int x; unsigned int y; { if ((x != MP_posx) || (y != MP_posy)) { if (MP_inline) MP_endline(); MP_posx = x; MP_posy = y; } } static void MP_point(x, y, pt) unsigned int x; unsigned int y; int pt; { int pointtype = pt; if (MP_inline) MP_endline(); if (pointtype >= 10) pointtype %= 10; fprintf(gpoutfile, "gpdraw(%d,%da,%db);\n", pointtype, x, y); } static void MP_pointsize(ps) double ps; { if (MP_oldptsize != ps) { if (MP_inline) MP_endline(); fprintf(gpoutfile, "ptsize %g;\n", ps); MP_oldptsize = ps; } } static void MP_linewidth(lw) double lw; { if (MP_oldpen != lw) { if (MP_inline) MP_endline(); fprintf(gpoutfile, "scalepen %g;\n", lw); MP_oldpen = lw; } } static void MP_vector(ux, uy) unsigned int ux; unsigned int uy; { if ((ux == MP_posx) && (uy == MP_posy)) return; if (MP_inline) { if (MP_linecount++ >= 5) { fputs("\n", gpoutfile); MP_linecount = 1; } } else { MP_inline = 1; fprintf(gpoutfile, "draw (%da,%db)", MP_posx, MP_posy); MP_linecount = 2; } MP_posx = ux; MP_posy = uy; fprintf(gpoutfile, "--(%da,%db)", MP_posx, MP_posy); } static void MP_endline() { MP_inline = 0; fprintf(gpoutfile, ";\n"); } static void MP_arrow(sx, sy, ex, ey, head) unsigned int sx; unsigned int sy; unsigned int ex; unsigned int ey; TBOOLEAN head; { MP_move(sx, sy); if (head) { fprintf(gpoutfile, "drawarrow (%da,%db)--(%da,%db);\n", sx, sy, ex, ey); } else if ((sx != ex) || (sy != ey)) { fprintf(gpoutfile, "draw (%da,%db)--(%da,%db);\n", sx, sy, ex, ey); } MP_posx = ex; MP_posy = ey; } static void MP_put_text(x, y, str) unsigned int x, y; char str[]; { int i, j = 0; char *text; if (!str || !*str) return; text = gp_alloc(strlen(str)+1, "temp string"); (__extension__ (__builtin_constant_p (str) ? (((size_t)(const void *)((str) + 1) - (size_t)(const void *)(str) == 1) && strlen (str) + 1 <= 8 ? __strcpy_small (text, __extension__ (((__const unsigned char *) (__const char *) (str))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (str))[0]), __extension__ (((__const unsigned char *) (__const char *) (str))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (str))[4]), __extension__ (((((__const unsigned char *) (__const char *) (str))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (str))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (str))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (str))[0]), __extension__ (((((__const unsigned char *) (__const char *) (str))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (str))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (str))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (str))[4]), strlen ! (str) + 1) : (char *) memcpy (text, str, strlen (str) + 1)) : strcpy (text, str))); if (MP_inline) MP_endline(); switch (MP_justify) { case LEFT: j = 1; break; case CENTRE: j = 2; break; case RIGHT: j = 3; break; } if (MP_notex) { for (i = 0; i < strlen(text); i++) if (text[i] == '"') text[i] = '\''; if (MP_fontchanged) { fprintf(gpoutfile, "put_text(\"%s\" infontsize(\"%s\",%5.2f), %da, %db, %d, %d);\n", text, MP_fontname, MP_fontsize, x, y, MP_ang, j); } else { fprintf(gpoutfile, "put_text(\"%s\", %da, %db, %d, %d);\n", text, x, y, MP_ang, j); } } else if (MP_fontchanged) { fprintf(gpoutfile, "put_text( btex \\setfont{%s}{%5.2f} %s etex, %da, %db, %d, %d);\n", MP_fontname, MP_fontsize, text, x, y, MP_ang, j); } else { fprintf(gpoutfile, "put_text( btex %s etex, %da, %db, %d, %d);\n", text, x, y, MP_ang, j); } free(text); } static int MP_justify_text(mode) enum JUSTIFY mode; { MP_justify = mode; return (1); } static int MP_text_angle(ang) int ang; { MP_ang = ang; return (1); } static int MP_set_font(font) char *font; { if (*font) { size_t sep = __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (",") && ((size_t)(const void *)((",") + 1) - (size_t)(const void *)(",") == 1) ? ((__r0 = ((__const char *) (","))[0], __r0 == '\0') ? strlen (font) : ((__r1 = ((__const char *) (","))[1], __r1 == '\0') ? __strcspn_c1 (font, __r0) : ((__r2 = ((__const char *) (","))[2], __r2 == '\0') ? __strcspn_c2 (font, __r0, __r1) : (((__const char *) (","))[3] == '\0' ? __strcspn_c3 (font, __r0, __r1, __r2) : strcspn (font, ","))))) : strcspn (font, ",")); }); (__extension__ (__builtin_constant_p (font) && __builtin_constant_p (sep) ? (strlen (font) + 1 >= ((size_t) (sep)) ? (char *) memcpy (MP_fontname, font, sep) : strncpy (MP_fontname, font, sep)) : strncpy (MP_fontname, font, sep))); MP_fontname[sep] = ('\0'); sscanf(&(font[sep + 1]), "%lf", &MP_fontsize); if (MP_fontsize < 5) MP_fontsize = 5.0; if (MP_fontsize >= 100) MP_fontsize = 99.99; MP_fontchanged = 1; } else { MP_fontchanged = 0; } return 1; } static void MP_reset() { fputs("end.\n", gpoutfile); } static void MP_boxfill(sty, x1, y1, wd, ht) int sty; unsigned int x1, y1, wd, ht; { if (MP_inline) MP_endline(); if (sty <= 0) fprintf(gpoutfile, "fill (%da,%db)--(%da,%db)--(%da,%db)--(%da,%db)--cycle withcolor background;\n", x1, y1, x1 + wd, y1, x1 + wd, y1 + ht, x1, y1 + ht); } # 394 "term.h" 2 # 699 "term.c" 2 # 714 "term.c" int null_text_angle(ang) int ang; { return (ang == 0); } int null_justify_text(just) enum JUSTIFY just; { return (just == LEFT); } int null_scale(x, y) double x; double y; { return 0; } int do_scale(x, y) double x; double y; { return 1; } void options_null() { term_options[0] = '\0'; } void UNKNOWN_null() { } void MOVE_null(x, y) unsigned int x, y; { } void LINETYPE_null(t) int t; { } void PUTTEXT_null(x, y, s) unsigned int x, y; char *s; { } int set_font_null(s) char *s; { return 0; } static void null_linewidth(s) double s; { } typedef void (*void_fp) (void); # 803 "term.c" struct TERMENTRY term_tbl[] = { {"unknown", "Unknown terminal type - not a plotting device", 100, 100, 1, 1, 1, 1, options_null, UNKNOWN_null, UNKNOWN_null, UNKNOWN_null, null_scale, UNKNOWN_null, MOVE_null, MOVE_null, LINETYPE_null, PUTTEXT_null} , {"table", "Dump ASCII table of X Y [Z] values to output", 100, 100, 1, 1, 1, 1, options_null, UNKNOWN_null, UNKNOWN_null, UNKNOWN_null, null_scale, UNKNOWN_null, MOVE_null, MOVE_null, LINETYPE_null, PUTTEXT_null} # 1 "term.h" 1 # 220 "term.h" # 1 "term/aed.trm" 1 # 55 "term/aed.trm" # 1 "term/driver.h" 1 # 56 "term/aed.trm" 2 # 172 "term/aed.trm" ,{ "aed512", "AED 512 Terminal", 512, 575, 13, 8, 8, 7, options_null, AED_init, AED_reset, AED_text, null_scale, AED_graphics, AED_move, AED_vector, AED_linetype, AED_put_text, null_text_angle, null_justify_text, do_point, do_arrow, set_font_null } ,{ "aed767", "AED 767 Terminal", 768, 575, 13, 8, 8, 7, options_null, AED_init, AED_reset, AED_text, null_scale, AED_graphics, AED_move, AED_vector, AED_linetype, AED_put_text, null_text_angle, null_justify_text, do_point, do_arrow, set_font_null } # 221 "term.h" 2 # 231 "term.h" # 1 "term/gpic.trm" 1 # 56 "term/gpic.trm" # 1 "term/driver.h" 1 # 57 "term/gpic.trm" 2 # 271 "term/gpic.trm" ,{ "gpic", "GPIC -- Produce graphs in groff using the gpic preprocessor", (5*(300)), (3*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), GPIC_options, GPIC_init, GPIC_reset, GPIC_text, null_scale, GPIC_graphics, GPIC_move, GPIC_vector, GPIC_linetype, GPIC_put_text, GPIC_text_angle, GPIC_justify_text, line_and_point, GPIC_arrow, set_font_null } # 232 "term.h" 2 # 1 "term/regis.trm" 1 # 51 "term/regis.trm" # 1 "term/driver.h" 1 # 52 "term/regis.trm" 2 # 238 "term/regis.trm" ,{ "regis", "REGIS graphics language", 800, 440, 20, 9, 8, 6, REGISoptions, REGISinit, REGISreset, REGIStext, null_scale, REGISgraphics, REGISmove, REGISvector, REGISlinetype, REGISput_text, REGIStext_angle, null_justify_text, line_and_point, do_arrow, set_font_null } # 235 "term.h" 2 # 1 "term/t410x.trm" 1 # 67 "term/t410x.trm" # 1 "term/driver.h" 1 # 68 "term/t410x.trm" 2 # 296 "term/t410x.trm" ,{ "tek410x", "Tektronix 4106, 4107, 4109 and 420X terminals", 4095, 3131, 71, 51, 36, 36, options_null, T410X_init, T410X_reset, T410X_text, null_scale, T410X_graphics, T410X_move, T410X_vector, T410X_linetype, T410X_put_text, T410X_text_angle, null_justify_text, T410X_point, do_arrow, set_font_null } # 238 "term.h" 2 # 1 "term/tek.trm" 1 # 62 "term/tek.trm" # 1 "term/driver.h" 1 # 63 "term/tek.trm" 2 # 615 "term/tek.trm" ,{ # 624 "term/tek.trm" "tek40xx", "Tektronix 4010 and others; most TEK emulators", 1024, 780, 25, 14, 11, 11, options_null, TEK40init, TEK40reset, TEK40text, null_scale, TEK40graphics, CTEK_move, CTEK_vector, CTEK_linetype, TEK40put_text, null_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } ,{ "vttek", "VT-like tek40xx terminal emulator", 1024, 780, 25, 14, 11, 11, options_null, VTTEK40init, VTTEK40reset, TEK40text, null_scale, TEK40graphics, TEK40move, TEK40vector, VTTEK40linetype, VTTEK40put_text, null_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } ,{ "kc_tek40xx", "MS-DOS Kermit Tek4010 terminal emulator - color", 1024, 780, 25, 13, 11, 11, options_null, TEK40init, KTEK40reset, KTEK40Ctext, null_scale, KTEK40graphics, TEK40move, TEK40vector, KTEK40Clinetype, TEK40put_text, null_text_angle, null_justify_text, do_point, do_arrow, set_font_null } ,{ "km_tek40xx", "MS-DOS Kermit Tek4010 terminal emulator - monochrome", 1024, 780, 25, 13, 11, 11, options_null, TEK40init, KTEK40reset, TEK40text, null_scale, KTEK40graphics, TEK40move, TEK40vector, KTEK40Mlinetype, TEK40put_text, null_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } ,{ "selanar", "Selanar", 1024, 780, 25, 14, 11, 11, options_null, SEL_init, SEL_reset, SEL_text, null_scale, SEL_graphics, TEK40move, TEK40vector, TEK40linetype, TEK40put_text, null_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } ,{ "bitgraph", "BBN Bitgraph Terminal", 768, 768, 16, 9, 8, 8, options_null, TEK40init, TEK40reset, BG_text, null_scale, TEK40graphics, TEK40move, TEK40vector, TEK40linetype, BG_put_text, null_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } # 241 "term.h" 2 # 1 "term/xlib.trm" 1 # 47 "term/xlib.trm" # 1 "term/driver.h" 1 # 48 "term/xlib.trm" 2 # 140 "term/xlib.trm" ,{ "xlib", "X11 Window System (gnulib_x11 dump)", 4096, 4096, (4096/25), (4096/100), (4096/100), (4096/150), options_null, Xlib_init, Xlib_reset, Xlib_text, null_scale, Xlib_graphics, Xlib_move, Xlib_vector, Xlib_linetype, Xlib_put_text, null_text_angle, Xlib_justify_text, line_and_point, do_arrow, set_font_null } # 244 "term.h" 2 # 253 "term.h" # 1 "term/x11.trm" 1 # 40 "term/x11.trm" # 1 "term/driver.h" 1 # 41 "term/x11.trm" 2 # 635 "term/x11.trm" ,{ "x11", "X11 Window System", 4096, 4096, (4096/25), (4096/100), (4096/100), (4096/150), X11_options, X11_init, X11_reset, X11_text, null_scale, X11_graphics, X11_move, X11_vector, X11_linetype, X11_put_text, null_text_angle, X11_justify_text, X11_point, do_arrow, set_font_null, X11_pointsize, 1, X11_text , 0 , X11_fillbox, X11_linewidth } ,{ "X11", "X11 Window System (identical to x11)", 4096, 4096, (4096/25), (4096/100), (4096/100), (4096/150), X11_options, X11_init, X11_reset, X11_text, null_scale, X11_graphics, X11_move, X11_vector, X11_linetype, X11_put_text, null_text_angle, X11_justify_text, X11_point, do_arrow, set_font_null, X11_pointsize, 1, X11_text , 0 , X11_fillbox, X11_linewidth } # 254 "term.h" 2 # 1 "term/ai.trm" 1 # 64 "term/ai.trm" # 1 "term/driver.h" 1 # 65 "term/ai.trm" 2 # 487 "term/ai.trm" ,{ "aifm", "Adobe Illustrator 3.0 Format", 5000, 3500, (14*(10.0)), (14*(10.0)*6/10), (3500/80), (3500/80), AI_options, AI_init, AI_reset, AI_text, null_scale, AI_graphics, AI_move, AI_vector, AI_linetype, AI_put_text, AI_text_angle, AI_justify_text, do_point, do_arrow, AI_set_font, ((void *)0), 0, AI_suspend, AI_resume } # 258 "term.h" 2 # 1 "term/cgm.trm" 1 # 54 "term/cgm.trm" # 1 "term/driver.h" 1 # 55 "term/cgm.trm" 2 # 1099 "term/cgm.trm" ,{ "cgm", "Computer Graphics Metafile", 32767 - (32767/180), 32767/18*13 - (32767/180), (32767/18*13/360*12), (32767/18*13/360*12*5/9), (32767/80), (32767/80), CGM_options, CGM_init, CGM_reset, CGM_text, null_scale, CGM_graphics, CGM_move, CGM_solid_vector, CGM_linetype, CGM_put_text, CGM_text_angle, CGM_justify_text, CGM_point, do_arrow, CGM_set_font, CGM_set_pointsize, 4, ((void *)0), ((void *)0), ((void *)0), CGM_linewidth } # 261 "term.h" 2 # 1 "term/corel.trm" 1 # 28 "term/corel.trm" # 1 "term/driver.h" 1 # 29 "term/corel.trm" 2 # 391 "term/corel.trm" ,{ "corel", "EPS format for CorelDRAW", 5960, 7200, (22*(10.0)), (22*(10.0)*6/10), (7200/80), (7200/80), COREL_options, COREL_init, COREL_reset, COREL_text, null_scale, COREL_graphics, COREL_move, COREL_vector, COREL_linetype, COREL_put_text, COREL_text_angle, COREL_justify_text, do_point, do_arrow, set_font_null } # 264 "term.h" 2 # 1 "term/dumb.trm" 1 # 51 "term/dumb.trm" # 1 "term/driver.h" 1 # 52 "term/dumb.trm" 2 # 348 "term/dumb.trm" ,{ "dumb", "printer or glass dumb terminal", 79, 24, 1, 1, 1, 1, DUMB_options, DUMB_init, DUMB_reset, DUMB_text, null_scale, DUMB_graphics, DUMB_move, DUMB_vector, DUMB_linetype, DUMB_put_text, null_text_angle, null_justify_text, DUMB_point, DUMB_arrow, set_font_null, 0, 1 } # 272 "term.h" 2 # 1 "term/dxf.trm" 1 # 55 "term/dxf.trm" # 1 "term/driver.h" 1 # 56 "term/dxf.trm" 2 # 374 "term/dxf.trm" ,{ "dxf", "dxf-file for AutoCad (default size 120x80)", (120.0 * 60.0), (80.0 * 60.0), (0.026 * (80.0 * 60.0)), (0.014 * (120.0 * 60.0)), (0.01 * (80.0 * 60.0)), (0.01 * (120.0 * 60.0)), options_null, DXF_init, DXF_reset, DXF_text, null_scale, DXF_graphics, DXF_move, DXF_vector, DXF_linetype, DXF_put_text, DXF_text_angle, DXF_justify_text, do_point, do_arrow, set_font_null } # 275 "term.h" 2 # 1 "term/fig.trm" 1 # 63 "term/fig.trm" # 1 "term/driver.h" 1 # 64 "term/fig.trm" 2 # 765 "term/fig.trm" ,{ "fig", "FIG 3.1 graphics language: X graphics editor", (5 * (1200)), (3 * (1200)), (((10))*(1200)/72*3/4), ((((10))*(1200)/72*3/4)*6/10), (5*(1200)/80), (5*(1200)/80), FIG_options, FIG_init, FIG_reset, FIG_text, null_scale, FIG_graphics, FIG_move, FIG_vector, FIG_linetype, FIG_put_text, FIG_text_angle, FIG_justify_text, FIG_lpoint, FIG_arrow, set_font_null, FIG_pointsize, 0 , 0 , 0 , 0 , FIG_linewidth } # 283 "term.h" 2 # 294 "term.h" # 1 "term/hp26.trm" 1 # 55 "term/hp26.trm" # 1 "term/driver.h" 1 # 56 "term/hp26.trm" 2 # 682 "term/hp26.trm" ,{ "hp2623A", "HP2623A and maybe others", 512, 390, 10, 7, 5, 5, options_null, HP26_init, HP26_reset, HP26_text, null_scale, HP26_graphics, HP26_move, HP26_vector, HP26_linetype, HP26_put_text, HP26_text_angle, null_justify_text, HP26_line_and_point, do_arrow, set_font_null } # 295 "term.h" 2 # 1 "term/hp2648.trm" 1 # 55 "term/hp2648.trm" # 1 "term/driver.h" 1 # 56 "term/hp2648.trm" 2 # 169 "term/hp2648.trm" ,{ "hp2648", "HP2648 and HP2647", 720, 360, 12, 7, 8, 8, options_null, HP2648init, HP2648reset, HP2648text, null_scale, HP2648graphics, HP2648move, HP2648vector, HP2648linetype, HP2648put_text, HP2648_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } # 298 "term.h" 2 # 1 "term/hp500c.trm" 1 # 69 "term/hp500c.trm" # 1 "term/driver.h" 1 # 70 "term/hp500c.trm" 2 # 507 "term/hp500c.trm" ,{ "hp500c", "HP DeskJet 500c, [75 100 150 300] [rle tiff]", (1920/4), (1920/4), (1920/4/10), (1920/4/6), 5, 5, HP500Coptions, HP500Cinit, HP500Creset, HP500Ctext, null_scale, HP500Cgraphics, b_move, b_vector, HP500Clinetype, b_put_text, b_text_angle, null_justify_text, do_point, do_arrow, set_font_null, 0, 4 } # 301 "term.h" 2 # 1 "term/hpgl.trm" 1 # 64 "term/hpgl.trm" # 1 "term/driver.h" 1 # 65 "term/hpgl.trm" 2 # 1095 "term/hpgl.trm" ,{ "hpgl", "HP7475 and relatives [number of pens] [eject]", 10000, 7500, (7500/100*32/10), (10000/100*12/10), (7500/70), (7500/70), HPGL_options, HPGL_init, HPGL_reset, HPGL_text, null_scale, HPGL_graphics, HPGL_move, HPGL_vector, HPGL_linetype, HPGL_put_text, HPGL_text_angle, null_justify_text, do_point, do_arrow, set_font_null } ,{ "pcl5", "HP LaserJet III [mode] [font] [point]", 10000, (7500 -60), ((int) 1016 * 14 / 72), (((int) 1016 * 14 / 72) * 2 / 3), ((7500 -60)/70), ((7500 -60)/70), PCL_options, PCL_init, PCL_reset, PCL_text, null_scale, PCL_graphics, HPGL2_move, HPGL2_vector, HPGL2_linetype, HPGL2_put_text, HPGL2_text_angle, HPGL2_justify_text, do_point, do_arrow, set_font_null } # 304 "term.h" 2 # 1 "term/hpljii.trm" 1 # 68 "term/hpljii.trm" # 1 "term/driver.h" 1 # 69 "term/hpljii.trm" 2 # 373 "term/hpljii.trm" ,{ "hpljii", "HP Laserjet series II, [75 100 150 300]", (1920/4), (1920/4), (1920/4/10), (1920/4/6), 5, 5, HPLJIIoptions, HPLJIIinit, HPLJIIreset, HPLJIItext, null_scale, HPLJIIgraphics, b_move, b_vector, HPLJIIlinetype, HPLJIIput_text, b_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null, 0, 4 } ,{ "hpdj", "HP DeskJet 500, [75 100 150 300]", (1920/4), (1920/4), (1920/4/10), (1920/4/6), 5, 5, HPLJIIoptions, HPLJIIinit, HPLJIIreset, HPDJtext, null_scale, HPDJgraphics, b_move, b_vector, HPLJIIlinetype, b_put_text, b_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null, 0, 4 } # 307 "term.h" 2 # 1 "term/hppj.trm" 1 # 64 "term/hppj.trm" # 1 "term/driver.h" 1 # 65 "term/hppj.trm" 2 # 257 "term/hppj.trm" ,{ "hppj", "HP PaintJet and HP3630 [FNT5X9 FNT9X17 FNT13X25]", (8*(unsigned int)(9.5 * 180 / 8.0 + 0.9)), (8 * 180), 21, 13, (21 / 2), (13 / 2), HPPJoptions, HPPJinit, HPPJreset, HPPJtext, null_scale, HPPJgraphics, b_move, b_vector, HPPJlinetype, b_put_text, b_text_angle, null_justify_text, do_point, do_arrow, set_font_null, 0, 4 } # 310 "term.h" 2 # 1 "term/imagen.trm" 1 # 63 "term/imagen.trm" # 1 "term/driver.h" 1 # 64 "term/imagen.trm" 2 # 856 "term/imagen.trm" ,{ "imagen", "Imagen laser printer", ((300) * 11), ((300) * 78 / 10), (12*5), ((12*5)/2), (20), (20), IMAGEN_options, IMAGEN_init, IMAGEN_reset, IMAGEN_text, null_scale, IMAGEN_graphics, IMAGEN_move, IMAGEN_vector, IMAGEN_linetype, IMAGEN_put_text, IMAGEN_text_angle, IMAGEN_justify_text, line_and_point, do_arrow, set_font_null } # 313 "term.h" 2 # 1 "term/mif.trm" 1 # 90 "term/mif.trm" # 1 "term/driver.h" 1 # 91 "term/mif.trm" 2 # 843 "term/mif.trm" ,{ "mif", "Frame maker MIF 3.00 format", 15000, 10000, (10000/31), (15000/95), (10000/150), (15000/225), MIF_options, MIF_init, MIF_reset, MIF_text, null_scale, MIF_graphics, MIF_move, MIF_vector, MIF_linetype, MIF_put_text, MIF_text_angle, MIF_justify_text, MIF_point, do_arrow, set_font_null } # 319 "term.h" 2 # 1 "term/pbm.trm" 1 # 63 "term/pbm.trm" # 1 "term/driver.h" 1 # 64 "term/pbm.trm" 2 # 386 "term/pbm.trm" ,{ "pbm", "Portable bitmap [small medium large] [monochrome gray color]", (640), (480), (11), (11), 5, 5, PBMoptions, PBMinit, PBMreset, PBMtext, null_scale, PBMgraphics, b_move, b_vector, PBMlinetype, b_put_text, b_text_angle, null_justify_text, PBMpoint, do_arrow, set_font_null, 0, 1 | 4 } # 322 "term.h" 2 # 1 "term/post.trm" 1 # 60 "term/post.trm" # 1 "term/driver.h" 1 # 61 "term/post.trm" 2 # 1644 "term/post.trm" ,{ "postscript", "PostScript graphics language [mode \042fontname\042 font_size]", 7200, 5040, (14*(10)), (14*(10)*6/10), (5040/80), (5040/80), PS_options, PS_init, PS_reset, PS_text, null_scale, PS_graphics, PS_move, PS_vector, PS_linetype, PS_put_text, PS_text_angle, PS_justify_text, PS_point, do_arrow, PS_set_font, PS_pointsize, 0 , 0 , 0 , PS_fillbox, PS_linewidth } # 330 "term.h" 2 # 1 "term/qms.trm" 1 # 55 "term/qms.trm" # 1 "term/driver.h" 1 # 56 "term/qms.trm" 2 # 208 "term/qms.trm" ,{ "qms", "QMS/QUIC Laser printer (also Talaris 1200 and others)", 9000, 6000, 120, 70, 70, 70, options_null, QMS_init, QMS_reset, QMS_text, null_scale, QMS_graphics, QMS_move, QMS_vector, QMS_linetype, QMS_put_text, null_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null } # 333 "term.h" 2 # 1 "term/table.trm" 1 # 336 "term.h" 2 # 1 "term/tgif.trm" 1 # 69 "term/tgif.trm" # 1 "term/driver.h" 1 # 70 "term/tgif.trm" 2 # 1418 "term/tgif.trm" ,{ "tgif", "TGIF X11 [mode] [x,y] [dashed] [\042font\042 [fontsize]]", 950, 634, 18, (18*6/10), (634/80), (634/80), TGIF_options, TGIF_init, TGIF_reset, TGIF_text, null_scale, TGIF_graphics, TGIF_move, TGIF_vector, TGIF_linetype, TGIF_put_text, TGIF_text_angle, TGIF_justify_text, TGIF_point, TGIF_arrow, TGIF_set_font, TGIF_set_pointsize, 1 } # 339 "term.h" 2 # 1 "term/tkcanvas.trm" 1 # 75 "term/tkcanvas.trm" # 1 "term/driver.h" 1 # 76 "term/tkcanvas.trm" 2 # 569 "term/tkcanvas.trm" ,{ "tkcanvas", "Tk/Tcl canvas widget [perltk] [interactive]", 1000, 1000, (25), (16), (18), (18), TK_options, TK_init, TK_reset, TK_text, null_scale, TK_graphics, TK_move, TK_vector, TK_linetype, TK_put_text, null_text_angle, TK_justify_text, do_point, do_arrow, TK_set_font, ((void *)0), 0, ((void *)0), ((void *)0), ((void *)0), TK_linewidth } # 342 "term.h" 2 # 364 "term.h" # 1 "term/epson.trm" 1 # 58 "term/epson.trm" # 1 "term/driver.h" 1 # 59 "term/epson.trm" 2 # 740 "term/epson.trm" ,{ "epson_180dpi", "Epson LQ-style 180-dot per inch (24 pin) printers", 1260, 1080, 31, 19, 18, 18, options_null, EPSONinit, EPSONreset, EPS180text, null_scale, EPS180graphics, b_move, b_vector, b_setlinetype, b_put_text, b_text_angle, null_justify_text, do_point, do_arrow, set_font_null, 0, 4 } ,{ "epson_60dpi", "Epson-style 60-dot per inch printers", 480, 360, 11, 7, 6, 6, options_null, EPSONinit, EPSONreset, EPS60text, null_scale, EPS60graphics, b_move, b_vector, b_setlinetype, b_put_text, b_text_angle, null_justify_text, do_point, do_arrow, set_font_null, 0, 4 } ,{ "epson_lx800", "Epson LX-800, Star NL-10, NX-1000, PROPRINTER ...", 512, 384, 11, 7, 6, 6, options_null, EPSONinit, EPSONreset, EPSONtext, null_scale, EPSONgraphics, b_move, b_vector, b_setlinetype, b_put_text, b_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null, 0, 4 } ,{ "nec_cp6", "NEC printer CP6, Epson LQ-800 [monocrome color draft]", 400, 320, 11, 7, 6, 6, NECoptions, NECinit, NECreset, NECtext, null_scale, NECgraphics, b_move, b_vector, NEClinetype, b_put_text, b_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null, 0, 4 } ,{ "okidata", "OKIDATA 320/321 Standard", 480, 360, 11, 7, 6, 6, options_null, EPSONinit, EPSONreset, OKIDATAtext, null_scale, EPS60graphics, b_move, b_vector, b_setlinetype, b_put_text, b_text_angle, null_justify_text, do_point, do_arrow, set_font_null, 0, 4 } ,{ "starc", "Star Color Printer", 512, 384, 11, 7, 6, 6, options_null, STARCinit, STARCreset, STARCtext, null_scale, STARCgraphics, b_move, b_vector, STARClinetype, b_put_text, b_text_angle, null_justify_text, line_and_point, do_arrow, set_font_null, 0, 4 } ,{ "tandy_60dpi", "Tandy DMP-130 series 60-dot per inch graphics", 480, 360, 11, 7, 6, 6, options_null, EPSONinit, EPSONreset, TANDY60text, null_scale, EPS60graphics, b_move, b_vector, b_setlinetype, b_put_text, b_text_angle, null_justify_text, do_point, do_arrow, set_font_null, 0, 4 } # 365 "term.h" 2 # 1 "term/latex.trm" 1 # 77 "term/latex.trm" # 1 "term/driver.h" 1 # 78 "term/latex.trm" 2 # 794 "term/latex.trm" ,{ "latex", "LaTeX picture environment", (5*(300)), (3*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), LATEX_options, LATEX_init, LATEX_reset, LATEX_text, null_scale, LATEX_graphics, LATEX_move, LATEX_vector, LATEX_linetype, LATEX_put_text, LATEX_text_angle, LATEX_justify_text, LATEX_point, LATEX_arrow, set_font_null } ,{ "emtex", "LaTeX picture environment with emTeX specials", (5*(300)), (3*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), LATEX_options, EMTEX_init, EMTEX_reset, EMTEX_text, null_scale, LATEX_graphics, LATEX_move, LATEX_vector, LATEX_linetype, LATEX_put_text, LATEX_text_angle, LATEX_justify_text, LATEX_point, LATEX_arrow, set_font_null } # 373 "term.h" 2 # 1 "term/pslatex.trm" 1 # 52 "term/pslatex.trm" # 1 "term/driver.h" 1 # 53 "term/pslatex.trm" 2 # 558 "term/pslatex.trm" # 1 "term/post.trm" 1 # 60 "term/post.trm" # 1 "term/driver.h" 1 # 61 "term/post.trm" 2 # 559 "term/pslatex.trm" 2 ,{ "pslatex", "LaTeX picture environment with PostScript \\specials", (5*720), (3*720), (100), (50), (5040/80), (5040/80), PSLATEX_options, PSLATEX_init, PSLATEX_reset, PSLATEX_text, null_scale, PSLATEX_graphics, PSLATEX_move, PSLATEX_vector, PSLATEX_linetype, PSLATEX_put_text, PSLATEX_text_angle, PSLATEX_justify_text, PSLATEX_point, do_arrow, set_font_null, PSLATEX_pointsize, 0 , 0 , 0 , 0 , PSLATEX_linewidth } ,{ "pstex", "plain TeX with PostScript \\specials", (5*720), (3*720), (100), (50), (5040/80), (5040/80), PSLATEX_options, PSLATEX_init, PSLATEX_reset, PSLATEX_text, null_scale, PSLATEX_graphics, PSLATEX_move, PSLATEX_vector, PSLATEX_linetype, PSLATEX_put_text, PSLATEX_text_angle, PSLATEX_justify_text, PSLATEX_point, do_arrow, set_font_null, PSLATEX_pointsize, 0 , 0 , 0 , 0 , PSLATEX_linewidth } # 376 "term.h" 2 # 1 "term/eepic.trm" 1 # 67 "term/eepic.trm" # 1 "term/driver.h" 1 # 68 "term/eepic.trm" 2 # 357 "term/eepic.trm" ,{ "eepic", "EEPIC -- extended LaTeX picture environment", (5*(300)), (3*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), options_null, EEPIC_init, EEPIC_reset, EEPIC_text, null_scale, EEPIC_graphics, EEPIC_move, EEPIC_vector, EEPIC_linetype, EEPIC_put_text, EEPIC_text_angle, EEPIC_justify_text, EEPIC_point, EEPIC_arrow, set_font_null } # 379 "term.h" 2 # 1 "term/tpic.trm" 1 # 82 "term/tpic.trm" # 1 "term/driver.h" 1 # 83 "term/tpic.trm" 2 # 913 "term/tpic.trm" ,{ "tpic", "TPIC -- LaTeX picture environment with tpic \\specials", (unsigned int) (5 / 0.001), (unsigned int) (3 / 0.001), (unsigned int) (11.0 / (72.27 * 0.001)), (unsigned int) ( 5.3 / (72.27 * 0.001)), (unsigned int) ( 5.0 / (72.27 * 0.001)), (unsigned int) ( 5.0 / (72.27 * 0.001)), TPIC_options, TPIC_init, TPIC_reset, TPIC_text, null_scale, TPIC_graphics, TPIC_move, TPIC_vector, TPIC_linetype, TPIC_put_text, TPIC_text_angle, TPIC_justify_text, TPIC_point, TPIC_arrow, set_font_null } # 382 "term.h" 2 # 1 "term/pstricks.trm" 1 # 80 "term/pstricks.trm" # 1 "term/driver.h" 1 # 81 "term/pstricks.trm" 2 # 547 "term/pstricks.trm" ,{ "pstricks", "LaTeX picture environment with PSTricks macros", 10000.0, 10000.0, 420, 160, 200, 150, PSTRICKS_options, PSTRICKS_init, PSTRICKS_reset, PSTRICKS_text, null_scale, PSTRICKS_graphics, PSTRICKS_move, PSTRICKS_vector, PSTRICKS_linetype, PSTRICKS_put_text, PSTRICKS_text_angle, PSTRICKS_justify_text, PSTRICKS_point, PSTRICKS_arrow, set_font_null } # 385 "term.h" 2 # 1 "term/texdraw.trm" 1 # 58 "term/texdraw.trm" # 1 "term/driver.h" 1 # 59 "term/texdraw.trm" 2 # 346 "term/texdraw.trm" ,{ "texdraw", "LaTeX texdraw environment", (5*(300)), (3*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), options_null, TEXDRAW_init, TEXDRAW_reset, TEXDRAW_text, null_scale, TEXDRAW_graphics, TEXDRAW_move, TEXDRAW_vector, TEXDRAW_linetype, TEXDRAW_put_text, TEXDRAW_text_angle, TEXDRAW_justify_text, TEXDRAW_point, TEXDRAW_arrow, set_font_null } # 388 "term.h" 2 # 1 "term/metafont.trm" 1 # 70 "term/metafont.trm" # 1 "term/driver.h" 1 # 71 "term/metafont.trm" 2 # 507 "term/metafont.trm" ,{ "mf", "Metafont plotting standard", (5.0*(300)), (3.0*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), options_null, MF_init, MF_reset, MF_text, null_scale, MF_graphics, MF_move, MF_vector, MF_linetype, MF_put_text, MF_text_angle, MF_justify_text, line_and_point, MF_arrow, set_font_null } # 391 "term.h" 2 # 1 "term/metapost.trm" 1 # 57 "term/metapost.trm" # 1 "term/driver.h" 1 # 58 "term/metapost.trm" 2 # 640 "term/metapost.trm" ,{ "mp", "MetaPost plotting standard", (5.0*(300)), (3.0*(300)), ((300)*11/72), ((300)*53/10/72), (5*(300)/72), (5*(300)/72), MP_options, MP_init, MP_reset, MP_text, null_scale, MP_graphics, MP_move, MP_vector, MP_linetype, MP_put_text, MP_text_angle, MP_justify_text, MP_point, MP_arrow, MP_set_font, MP_pointsize, 0, 0, 0, MP_boxfill, MP_linewidth } # 394 "term.h" 2 # 817 "term.c" 2 }; __inline__ int term_count() { return (sizeof(term_tbl)/sizeof(struct TERMENTRY)); } void list_terms() { register int i; char line_buffer[8192]; StartOutput(); sprintf(line_buffer,"\nAvailable terminal types:\n"); OutLine(line_buffer); for (i = 0; i < (sizeof(term_tbl)/sizeof(struct TERMENTRY)); i++) { sprintf(line_buffer," %15s %s\n", term_tbl[i].name, term_tbl[i].description); OutLine(line_buffer); } EndOutput(); } struct TERMENTRY * set_term(c_token_arg) int c_token_arg; { register struct TERMENTRY *t = ((void *)0); char *input_name; if (!token[c_token_arg].is_token) int_error("terminal name expected", c_token_arg); input_name = input_line + token[c_token_arg].start_index; t = change_term(input_name, token[c_token_arg].length); if (!t) int_error("unknown or ambiguous terminal type; type just 'set terminal' for a list", c_token_arg); return (t); } struct TERMENTRY * change_term(name, length) char *name; int length; { int i; struct TERMENTRY *t = ((void *)0); for (i = 0; i < (sizeof(term_tbl)/sizeof(struct TERMENTRY)); i++) { if (!(__extension__ (__builtin_constant_p (length) && ((__builtin_constant_p (name) && strlen (name) < ((size_t) (length))) || (__builtin_constant_p (term_tbl[i].name) && strlen (term_tbl[i].name) < ((size_t) (length)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p (term_tbl[i].name) && (__s1_len = strlen (name), __s2_len = strlen (term_tbl[i].name), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((term_tbl[i].name) + 1) - (size_t)(const void *)(term_tbl[i].name) == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (name), (__const char *) (term_tbl[i].name), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p (term_tbl[i].name) && ((size_t)(const void *)((term_tbl[i].name)! + 1) - (size_t)(const void *)(term_tbl[i].name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (name))[0] - ((__const unsigned char *) (__const char *)(term_tbl[i].name))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (term_tbl[i].name); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 &! & __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (term_tbl[i].name) && ((size_t)(const void *)((term_tbl[i].name) + 1) - (size_t)(const void *)(term_tbl[i].name) == 1) && (__s2_len = strlen (term_tbl[i].name), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (name))[0] - ((__const unsigned char *) (__const char *)(term_tbl[i].name))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - ((__const unsigned char *) (__const char *) (term_tbl[i].nam! e))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (term_tbl[i].name))[3]); } } __result; }))) : strcmp (! name, term_tbl[i].name)))); }) : strncmp (name, term_tbl[i].name, length)))) { if (t) return (((void *)0)); t = term_tbl + i; } } if (!t) return (((void *)0)); term = t; term_initialised = 0; name = term->name; if (term->scale != null_scale) fputs("Warning : scale interface is not null_scale - may not work with multiplot\n", stderr); if (term->text_angle == 0) term->text_angle = null_text_angle; if (term->justify_text == 0) term->justify_text = null_justify_text; if (term->point == 0) term->point = do_point; if (term->arrow == 0) term->arrow = do_arrow; if (term->set_font == 0) term->set_font = set_font_null; if (term->pointsize == 0) term->pointsize = do_pointsize; if (term->linewidth == 0) term->linewidth = null_linewidth; if (!(__extension__ (__builtin_constant_p (8) && ((__builtin_constant_p ("unixplot") && strlen ("unixplot") < ((size_t) (8))) || (__builtin_constant_p (name) && strlen (name) < ((size_t) (8)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ("unixplot") && __builtin_constant_p (name) && (__s1_len = strlen ("unixplot"), __s2_len = strlen (name), (!((size_t)(const void *)(("unixplot") + 1) - (size_t)(const void *)("unixplot") == 1) || __s1_len >= 4) && (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s2_len >= 4)) ? memcmp ((__const char *) ("unixplot"), (__const char *) (name), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p ("unixplot") && ((size_t)(const void *)(("unixplot") + 1) - (size_t)(const void *)("unixplot") == 1) && (__s1_len = strlen ("unixplot"), __s1_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? (__extension__ (! { register int __result = (((__const unsigned char *) (__const char *) ("unixplot"))[0] - ((__const unsigned char *) (__const char *)(name))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ("unixplot"))[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ("unixplot"))[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ("unixplot"))[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (name); register int __result = (((__const unsigned char *) (__const char *) ("unixplot"))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ("unixplot"))[1] - __s2[1]);! if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ("unixplot"))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ("unixplot"))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s2_len = strlen (name), __s2_len < 4) ? (__builtin_constant_p ("unixplot") && ((size_t)(const void *)(("unixplot") + 1) - (size_t)(const void *)("unixplot") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) ("unixplot"))[0] - ((__const unsigned char *) (__const char *)(name))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ("unixplot"))[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ("unixplot"))[2] - ((__co! nst unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ("unixplot"))[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ("unixplot"); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (name))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; }))) : strcmp ("unixplot", name)))); }) : strncmp ("unixplot", name, 8)))) { UP_redirect(2); } else if (unixplot) { UP_redirect(3); } if (interactive) fprintf(stderr, "Terminal type set to '%s'\n", name); return (t); } # 943 "term.c" void init_terminal() { char *term_name = ((void *)0); char *env_term = ((void *)0); char *display = ((void *)0); char *gnuterm = ((void *)0); gnuterm = getenv("GNUTERM"); if (gnuterm != (char *) ((void *)0)) { term_name = gnuterm; } else { # 999 "term.c" env_term = getenv("TERM"); if (term_name == (char *) ((void *)0) && env_term != (char *) ((void *)0) && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (env_term) && __builtin_constant_p ("xterm") && (__s1_len = strlen (env_term), __s2_len = strlen ("xterm"), (!((size_t)(const void *)((env_term) + 1) - (size_t)(const void *)(env_term) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("xterm") + 1) - (size_t)(const void *)("xterm") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (env_term), (__const char *) ("xterm"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (env_term) && ((size_t)(const void *)((env_term) + 1) - (size_t)(const void *)(env_term) == 1) && (__s1_len = strlen (env_term), __s1_len < 4) ? (__builtin_constant_p ("xterm") && ((size_t)(const void *)(("xterm") + 1) - (size_t)(const void *)("xterm") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (env_term))[0] - ((__const unsigned char *) (__const char *)("xterm"))[0! ]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (env_term))[1] - ((__const unsigned char *) (__const char *) ("xterm"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (env_term))[2] - ((__const unsigned char *) (__const char *) ("xterm"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (env_term))[3] - ((__const unsigned char *) (__const char *) ("xterm"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("xterm"); register int __result = (((__const unsigned char *) (__const char *) (env_term))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (env_term))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (env_term))[2] - __s2[2]); if (__s1_len > 2 &&! __result == 0) __result = (((__const unsigned char *) (__const char *) (env_term))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("xterm") && ((size_t)(const void *)(("xterm") + 1) - (size_t)(const void *)("xterm") == 1) && (__s2_len = strlen ("xterm"), __s2_len < 4) ? (__builtin_constant_p (env_term) && ((size_t)(const void *)((env_term) + 1) - (size_t)(const void *)(env_term) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (env_term))[0] - ((__const unsigned char *) (__const char *)("xterm"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (env_term))[1] - ((__const unsigned char *) (__const char *) ("xterm"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (env_term))[2] - ((__const unsigned char *) (__const char *) ("xterm"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const c! har *) (env_term))[3] - ((__const unsigned char *) (__const char *) ("xterm"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (env_term); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("xterm"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("xterm"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("xterm"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("xterm"))[3]); } } __result; }))) : strcmp (env_term, "xterm")))); }) == 0) term_name = "x11"; display = getenv("DISPLAY"); if (term_name == (char *) ((void *)0) && display != (char *) ((void *)0)) term_name = "x11"; if (X11_Display) term_name = "x11"; # 1056 "term.c" } if (term_name != ((void *)0) && *term_name != '\0') { if (change_term(term_name, (int) strlen(term_name))) return; fprintf(stderr, "Unknown or ambiguous terminal name '%s'\n", term_name); } change_term("unknown", 7); } # 1113 "term.c" void UP_redirect(caller) int caller; { caller = caller; } # 1170 "term.c" void test_term() { register struct TERMENTRY *t = term; char *str; int x, y, xl, yl, i; unsigned int xmax_t, ymax_t; char label[50]; int key_entry_height; int p_width; term_start_plot(); screen_ok = 0; xmax_t = (unsigned int) (t->xmax * xsize); ymax_t = (unsigned int) (t->ymax * ysize); p_width = pointsize * (t->h_tic); key_entry_height = pointsize * (t->v_tic) * 1.25; if (key_entry_height < (t->v_char)) key_entry_height = (t->v_char); (*t->linewidth) (1.0); (*t->linetype) (-2); (*t->move) (0, 0); (*t->vector) (xmax_t - 1, 0); (*t->vector) (xmax_t - 1, ymax_t - 1); (*t->vector) (0, ymax_t - 1); (*t->vector) (0, 0); (void) (*t->justify_text) (LEFT); (*t->put_text) (t->h_char * 5, ymax_t - t->v_char * 3, "Terminal Test"); (*t->linetype) (-1); (*t->move) (xmax_t / 2, 0); (*t->vector) (xmax_t / 2, ymax_t - 1); (*t->move) (0, ymax_t / 2); (*t->vector) (xmax_t - 1, ymax_t / 2); (*t->linetype) (-2); (*t->move) (xmax_t / 2 - t->h_char * 10, ymax_t / 2 + t->v_char / 2); (*t->vector) (xmax_t / 2 + t->h_char * 10, ymax_t / 2 + t->v_char / 2); (*t->vector) (xmax_t / 2 + t->h_char * 10, ymax_t / 2 - t->v_char / 2); (*t->vector) (xmax_t / 2 - t->h_char * 10, ymax_t / 2 - t->v_char / 2); (*t->vector) (xmax_t / 2 - t->h_char * 10, ymax_t / 2 + t->v_char / 2); (*t->put_text) (xmax_t / 2 - t->h_char * 10, ymax_t / 2, "12345678901234567890"); (void) (*t->justify_text) (LEFT); (*t->put_text) (xmax_t / 2, ymax_t / 2 + t->v_char * 6, "left justified"); str = "centre+d text"; if ((*t->justify_text) (CENTRE)) (*t->put_text) (xmax_t / 2, ymax_t / 2 + t->v_char * 5, str); else (*t->put_text) (xmax_t / 2 - strlen(str) * t->h_char / 2, ymax_t / 2 + t->v_char * 5, str); str = "right justified"; if ((*t->justify_text) (RIGHT)) (*t->put_text) (xmax_t / 2, ymax_t / 2 + t->v_char * 4, str); else (*t->put_text) (xmax_t / 2 - strlen(str) * t->h_char, ymax_t / 2 + t->v_char * 4, str); str = "rotated ce+ntred text"; if ((*t->text_angle) (1)) { if ((*t->justify_text) (CENTRE)) (*t->put_text) (t->v_char, ymax_t / 2, str); else (*t->put_text) (t->v_char, ymax_t / 2 - strlen(str) * t->h_char / 2, str); } else { (void) (*t->justify_text) (LEFT); (*t->put_text) (t->h_char * 2, ymax_t / 2 - t->v_char * 2, "Can't rotate text"); } (void) (*t->justify_text) (LEFT); (void) (*t->text_angle) (0); (*t->move) ((unsigned int) (xmax_t / 2 + t->h_tic * (1 + ticscale)), (unsigned) 0); (*t->vector) ((unsigned int) (xmax_t / 2 + t->h_tic * (1 + ticscale)), (unsigned int) (ticscale * t->v_tic)); (*t->move) ((unsigned int) (xmax_t / 2), (unsigned int) (t->v_tic * (1 + ticscale))); (*t->vector) ((unsigned int) (xmax_t / 2 + ticscale * t->h_tic), (unsigned int) (t->v_tic * (1 + ticscale))); (*t->put_text) ((unsigned int) (xmax_t / 2 - 10 * t->h_char), (unsigned int) (t->v_tic * 2 + t->v_char / 2), "test tics"); x = xmax_t - t->h_char * 6 - p_width; y = ymax_t - key_entry_height; (*t->pointsize) (pointsize); for (i = -2; y > key_entry_height; i++) { (*t->linetype) (i); (void) sprintf(label, "%d", i + 1); if ((*t->justify_text) (RIGHT)) (*t->put_text) (x, y, label); else (*t->put_text) (x - strlen(label) * t->h_char, y, label); (*t->move) (x + t->h_char, y); (*t->vector) (x + t->h_char * 4, y); if (i >= -1) (*t->point) (x + t->h_char * 5 + p_width / 2, y, i); y -= key_entry_height; } (*t->linewidth) (1.0); (*t->linetype) (0); x = xmax_t / 4; y = ymax_t / 4; xl = t->h_tic * 5; yl = t->v_tic * 5; (*t->arrow) (x, y, x + xl, y, 1); (*t->arrow) (x, y, x + xl / 2, y + yl, 1); (*t->arrow) (x, y, x, y + yl, 1); (*t->arrow) (x, y, x - xl / 2, y + yl, 0); (*t->arrow) (x, y, x - xl, y, 1); (*t->arrow) (x, y, x - xl, y - yl, 1); (*t->arrow) (x, y, x, y - yl, 1); (*t->arrow) (x, y, x + xl, y - yl, 1); term_end_plot(); } >Release-Note: >Audit-Trail: >Unformatted:
reply other threads:[~2001-08-26 21:56 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=200108270445.f7R4j2O07008@apathy.killer-robot.net \ --to=maciej@imsa.edu \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).