blob: 93e0da79cf1774fbae7cda1d7abfb53eafdf1076 [file] [log] [blame]
rsc05a4d852007-03-26 20:55:26 +00001#undef pipe
2
rsc24c02862005-01-04 21:23:50 +00003typedef struct Document Document;
4
5struct Document {
6 char *docname;
7 int npage;
8 int fwdonly;
9 char* (*pagename)(Document*, int);
10 Image* (*drawpage)(Document*, int);
11 int (*addpage)(Document*, char*);
12 int (*rmpage)(Document*, int);
13 Biobuf *b;
14 void *extra;
15};
16
rsc05a4d852007-03-26 20:55:26 +000017typedef struct Graphic Graphic;
18
19struct Graphic {
20 int type;
21 int fd;
22 char *name;
23};
24
25enum {
26 Ipic,
27 Itiff,
28 Ijpeg,
29 Igif,
30 Iinferno,
31 Ifax,
32 Icvt2pic,
33 Iplan9bm,
rsc05a4d852007-03-26 20:55:26 +000034 Ippm,
35 Ipng,
36 Iyuv,
37 Ibmp,
38};
39
40
rsc24c02862005-01-04 21:23:50 +000041void *emalloc(int);
42void *erealloc(void*, int);
43char *estrdup(char*);
44int spawncmd(char*, char **, int, int, int);
45
46int spooltodisk(uchar*, int, char**);
47int stdinpipe(uchar*, int);
48Document *initps(Biobuf*, int, char**, uchar*, int);
49Document *initpdf(Biobuf*, int, char**, uchar*, int);
50Document *initgfx(Biobuf*, int, char**, uchar*, int);
51Document *inittroff(Biobuf*, int, char**, uchar*, int);
52Document *initdvi(Biobuf*, int, char**, uchar*, int);
53Document *initmsdoc(Biobuf*, int, char**, uchar*, int);
54
55void viewer(Document*);
56extern Cursor reading;
57extern int chatty;
58extern int goodps;
59extern int textbits, gfxbits;
60extern int reverse;
61extern int clean;
62extern int ppi;
63extern int teegs;
64extern int truetoboundingbox;
65extern int wctlfd;
66extern int resizing;
67extern int mknewwindow;
68
69void rot180(Image*);
70Image *rot90(Image*);
rsc17157e42006-03-20 02:25:59 +000071Image *rot270(Image*);
rsc24c02862005-01-04 21:23:50 +000072Image *resample(Image*, Image*);
73
74/* ghostscript interface shared by ps, pdf */
75typedef struct GSInfo GSInfo;
76struct GSInfo {
rsc05a4d852007-03-26 20:55:26 +000077 Graphic g;
rsc24c02862005-01-04 21:23:50 +000078 int gsfd;
79 Biobuf gsrd;
80 int gspid;
rsc24c02862005-01-04 21:23:50 +000081 int ppi;
82};
83void waitgs(GSInfo*);
84int gscmd(GSInfo*, char*, ...);
rsc17157e42006-03-20 02:25:59 +000085int spawngs(GSInfo*, char*);
rsc24c02862005-01-04 21:23:50 +000086void setdim(GSInfo*, Rectangle, int, int);
87int spawnwriter(GSInfo*, Biobuf*);
88Rectangle screenrect(void);
89void newwin(void);
90void zerox(void);
91Rectangle winrect(void);
92void resize(int, int);
93int max(int, int);
94int min(int, int);
95void wexits(char*);
96Image* xallocimage(Display*, Rectangle, ulong, int, ulong);
97int bell(void*, char*);
rsc05a4d852007-03-26 20:55:26 +000098Image* convert(Graphic *g);
Fazlul Shahriarb3453e02009-08-09 20:13:48 -040099Image* cachedpage(Document*, int, int);
100void cacheflush(void);
rsc24c02862005-01-04 21:23:50 +0000101
J.R. Mauro2fb0c442009-08-20 14:38:31 -0400102extern char tempfile[40];
103
rsc24c02862005-01-04 21:23:50 +0000104extern int stdinfd;
105extern int truecolor;
106
J.R. Mauro2fb0c442009-08-20 14:38:31 -0400107
rsc24c02862005-01-04 21:23:50 +0000108/* BUG BUG BUG BUG BUG: cannot use new draw operations in drawterm,
109 * or in vncs, and there is a bug in the kernel for copying images
110 * from cpu memory -> video memory (memmove is not being used).
111 * until all that is settled, ignore the draw operators.
112 */
113#define drawop(a,b,c,d,e,f) draw(a,b,c,d,e)
114#define gendrawop(a,b,c,d,e,f,g) gendraw(a,b,c,d,e,f)