xref: /plan9/sys/src/cmd/postscript/tr2post/tr2post.h (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
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