Blob


1 #undef pipe
3 typedef struct Document Document;
5 struct 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 int type;
16 };
18 typedef struct Graphic Graphic;
20 struct Graphic {
21 int type;
22 int fd;
23 char *name;
24 };
26 enum {
27 Ipic,
28 Itiff,
29 Ijpeg,
30 Igif,
31 Iinferno,
32 Ifax,
33 Icvt2pic,
34 Iplan9bm,
35 Ippm,
36 Ipng,
37 Iyuv,
38 Ibmp,
39 };
41 enum {
42 Tgfx,
43 Tpdf,
44 Tps,
45 }
46 ;
48 void *emalloc(int);
49 void *erealloc(void*, int);
50 char *estrdup(char*);
51 int spawncmd(char*, char **, int, int, int);
53 int spooltodisk(uchar*, int, char**);
54 int stdinpipe(uchar*, int);
55 Document *initps(Biobuf*, int, char**, uchar*, int);
56 Document *initpdf(Biobuf*, int, char**, uchar*, int);
57 Document *initgfx(Biobuf*, int, char**, uchar*, int);
58 Document *inittroff(Biobuf*, int, char**, uchar*, int);
59 Document *initdvi(Biobuf*, int, char**, uchar*, int);
60 Document *initmsdoc(Biobuf*, int, char**, uchar*, int);
62 void viewer(Document*);
63 extern Cursor reading;
64 extern int chatty;
65 extern int goodps;
66 extern int textbits, gfxbits;
67 extern int reverse;
68 extern int clean;
69 extern int ppi;
70 extern int teegs;
71 extern int truetoboundingbox;
72 extern int wctlfd;
73 extern int resizing;
74 extern int mknewwindow;
75 extern int fitwin;
77 void rot180(Image*);
78 Image *rot90(Image*);
79 Image *rot270(Image*);
80 Image *resample(Image*, Image*);
82 /* ghostscript interface shared by ps, pdf */
83 typedef struct GSInfo GSInfo;
84 typedef struct PDFInfo PDFInfo;
85 typedef struct Page Page;
86 typedef struct PSInfo PSInfo;
87 struct GSInfo {
88 Graphic g;
89 int gsfd;
90 Biobuf gsrd;
91 int gspid;
92 int ppi;
93 };
94 struct PDFInfo {
95 GSInfo gs;
96 Rectangle *pagebbox;
97 };
98 struct Page {
99 char *name;
100 int offset; /* offset of page beginning within file */
101 };
102 struct PSInfo {
103 GSInfo gs;
104 Rectangle bbox; /* default bounding box */
105 Page *page;
106 int npage;
107 int clueless; /* don't know where page boundaries are */
108 long psoff; /* location of %! in file */
109 char ctm[256];
110 };
112 void waitgs(GSInfo*);
113 int gscmd(GSInfo*, char*, ...);
114 int spawngs(GSInfo*, char*);
115 void setdim(GSInfo*, Rectangle, int, int);
116 int spawnwriter(GSInfo*, Biobuf*);
117 Rectangle screenrect(void);
118 void newwin(void);
119 void zerox(void);
120 Rectangle winrect(void);
121 void resize(int, int);
122 int max(int, int);
123 int min(int, int);
124 void wexits(char*);
125 Image* xallocimage(Display*, Rectangle, ulong, int, ulong);
126 int bell(void*, char*);
127 Image* convert(Graphic *g);
128 Image* cachedpage(Document*, int, int);
129 void cacheflush(void);
130 void fit(void);
132 extern char tempfile[40];
134 extern int stdinfd;
135 extern int truecolor;
138 /* BUG BUG BUG BUG BUG: cannot use new draw operations in drawterm,
139 * or in vncs, and there is a bug in the kernel for copying images
140 * from cpu memory -> video memory (memmove is not being used).
141 * until all that is settled, ignore the draw operators.
142 */
143 #define drawop(a,b,c,d,e,f) draw(a,b,c,d,e)
144 #define gendrawop(a,b,c,d,e,f,g) gendraw(a,b,c,d,e,f)