1219b2ee8SDavid du Colombier #define MAXSPECHARS 512 2219b2ee8SDavid du Colombier #define MAXTOKENSIZE 128 3219b2ee8SDavid du Colombier #define CHARLIB "/sys/lib/troff/font/devutf/charlib" 4219b2ee8SDavid du Colombier 5219b2ee8SDavid du Colombier extern int debug; 6219b2ee8SDavid du Colombier extern int fontsize; 7219b2ee8SDavid du Colombier extern int fontpos; 8219b2ee8SDavid du Colombier extern int resolution; /* device resolution, goobies per inch */ 9219b2ee8SDavid du Colombier extern int minx; /* minimum x motion */ 10219b2ee8SDavid du Colombier extern int miny; /* minimum y motion */ 11219b2ee8SDavid du Colombier extern char devname[]; 12219b2ee8SDavid du Colombier extern int devres; 13219b2ee8SDavid du Colombier extern int unitwidth; 14219b2ee8SDavid du Colombier extern char *printdesclang; 15219b2ee8SDavid du Colombier extern char *encoding; 16219b2ee8SDavid du Colombier extern int fontmnt; 17219b2ee8SDavid du Colombier extern char **fontmtab; 18219b2ee8SDavid du Colombier 19219b2ee8SDavid du Colombier extern int curtrofffontid; /* index into trofftab of current troff font */ 20219b2ee8SDavid du Colombier extern int troffontcnt; 21219b2ee8SDavid du Colombier 22219b2ee8SDavid du Colombier extern BOOLEAN drawflag; 23219b2ee8SDavid du Colombier 24219b2ee8SDavid du Colombier struct specname { 25219b2ee8SDavid du Colombier char *str; 26219b2ee8SDavid du Colombier struct specname *next; 27219b2ee8SDavid du Colombier }; 28219b2ee8SDavid du Colombier 29219b2ee8SDavid du Colombier /* character entries for special characters (those pointed 30219b2ee8SDavid du Colombier * to by multiple character names, e.g. \(mu for multiply. 31219b2ee8SDavid du Colombier */ 32219b2ee8SDavid du Colombier struct charent { 337dd7cddfSDavid du Colombier char postfontid; /* index into pfnamtab */ 347dd7cddfSDavid du Colombier char postcharid; /* e.g., 0x00 */ 357dd7cddfSDavid du Colombier short troffcharwidth; 36219b2ee8SDavid du Colombier char *name; 37219b2ee8SDavid du Colombier struct charent *next; 38219b2ee8SDavid du Colombier }; 39219b2ee8SDavid du Colombier 40219b2ee8SDavid du Colombier extern struct charent **build_char_list; 41219b2ee8SDavid du Colombier extern int build_char_cnt; 42219b2ee8SDavid du Colombier 43219b2ee8SDavid du Colombier struct pfnament { 44219b2ee8SDavid du Colombier char *str; 45219b2ee8SDavid du Colombier int used; 46219b2ee8SDavid du Colombier }; 47219b2ee8SDavid du Colombier 48219b2ee8SDavid du Colombier /* these entries map troff character code ranges to 49219b2ee8SDavid du Colombier * postscript font and character ranges. 50219b2ee8SDavid du Colombier */ 51219b2ee8SDavid du Colombier struct psfent { 52219b2ee8SDavid du Colombier int start; 53219b2ee8SDavid du Colombier int end; 54219b2ee8SDavid du Colombier int offset; 55219b2ee8SDavid du Colombier int psftid; 56219b2ee8SDavid du Colombier }; 57219b2ee8SDavid du Colombier 58219b2ee8SDavid du Colombier struct troffont { 59219b2ee8SDavid du Colombier char *trfontid; /* the common troff font name e.g., `R' */ 60219b2ee8SDavid du Colombier BOOLEAN special; /* flag says this is a special font. */ 61219b2ee8SDavid du Colombier int spacewidth; 62219b2ee8SDavid du Colombier int psfmapsize; 63219b2ee8SDavid du Colombier struct psfent *psfmap; 64219b2ee8SDavid du Colombier struct charent *charent[NUMOFONTS][FONTSIZE]; 65219b2ee8SDavid du Colombier }; 66219b2ee8SDavid du Colombier 67219b2ee8SDavid du Colombier extern struct troffont *troffontab; 68219b2ee8SDavid du Colombier extern struct charent spechars[]; 69219b2ee8SDavid du Colombier 70219b2ee8SDavid du Colombier /** prototypes **/ 71219b2ee8SDavid du Colombier void initialize(void); 72219b2ee8SDavid du Colombier void mountfont(int, char*); 73219b2ee8SDavid du Colombier int findtfn(char *, int); 74219b2ee8SDavid du Colombier void runeout(Rune); 75219b2ee8SDavid du Colombier void specialout(char *); 76219b2ee8SDavid du Colombier long nametorune(char *); 77219b2ee8SDavid du Colombier void conv(Biobufhdr *); 78219b2ee8SDavid du Colombier void hgoto(int); 79219b2ee8SDavid du Colombier void vgoto(int); 80219b2ee8SDavid du Colombier void hmot(int); 81219b2ee8SDavid du Colombier void vmot(int); 82219b2ee8SDavid du Colombier void draw(Biobufhdr *); 83219b2ee8SDavid du Colombier void devcntl(Biobufhdr *); 84219b2ee8SDavid du Colombier void notavail(char *); 85219b2ee8SDavid du Colombier void error(int, char *, ...); 86219b2ee8SDavid du Colombier void loadfont(int, char *); 87219b2ee8SDavid du Colombier void flushtext(void); 887dd7cddfSDavid du Colombier void t_charht(int); 89219b2ee8SDavid du Colombier void t_slant(int); 90219b2ee8SDavid du Colombier void startstring(void); 91219b2ee8SDavid du Colombier void endstring(void); 92219b2ee8SDavid du Colombier BOOLEAN pageon(void); 93219b2ee8SDavid du Colombier void setpsfont(int, int); 94219b2ee8SDavid du Colombier void settrfont(void); 95219b2ee8SDavid du Colombier int hash(char *, int); 96219b2ee8SDavid du Colombier BOOLEAN readDESC(void); 97219b2ee8SDavid du Colombier void finish(void); 98219b2ee8SDavid du Colombier void ps_include(Biobufhdr *, Biobufhdr *, int, int, 99219b2ee8SDavid du Colombier int, int, double, double, double, double, 100219b2ee8SDavid du Colombier double, double, double); 101219b2ee8SDavid du Colombier void picture(Biobufhdr *, char *); 102*80ee5cbfSDavid du Colombier void beginpath(char*, int); 103*80ee5cbfSDavid du Colombier void drawpath(char*, int); 104