144 lines
2.9 KiB
C
144 lines
2.9 KiB
C
#undef pipe
|
|
|
|
typedef struct Document Document;
|
|
|
|
struct Document {
|
|
char *docname;
|
|
int npage;
|
|
int fwdonly;
|
|
char* (*pagename)(Document*, int);
|
|
Image* (*drawpage)(Document*, int);
|
|
int (*addpage)(Document*, char*);
|
|
int (*rmpage)(Document*, int);
|
|
Biobuf *b;
|
|
void *extra;
|
|
int type;
|
|
};
|
|
|
|
typedef struct Graphic Graphic;
|
|
|
|
struct Graphic {
|
|
int type;
|
|
int fd;
|
|
char *name;
|
|
};
|
|
|
|
enum {
|
|
Ipic,
|
|
Itiff,
|
|
Ijpeg,
|
|
Igif,
|
|
Iinferno,
|
|
Ifax,
|
|
Icvt2pic,
|
|
Iplan9bm,
|
|
Ippm,
|
|
Ipng,
|
|
Iyuv,
|
|
Ibmp,
|
|
};
|
|
|
|
enum {
|
|
Tgfx,
|
|
Tpdf,
|
|
Tps,
|
|
}
|
|
;
|
|
|
|
void *emalloc(int);
|
|
void *erealloc(void*, int);
|
|
char *estrdup(char*);
|
|
int spawncmd(char*, char **, int, int, int);
|
|
|
|
int spooltodisk(uchar*, int, char**);
|
|
int stdinpipe(uchar*, int);
|
|
Document *initps(Biobuf*, int, char**, uchar*, int);
|
|
Document *initpdf(Biobuf*, int, char**, uchar*, int);
|
|
Document *initgfx(Biobuf*, int, char**, uchar*, int);
|
|
Document *inittroff(Biobuf*, int, char**, uchar*, int);
|
|
Document *initdvi(Biobuf*, int, char**, uchar*, int);
|
|
Document *initmsdoc(Biobuf*, int, char**, uchar*, int);
|
|
|
|
void viewer(Document*);
|
|
extern Cursor reading;
|
|
extern int chatty;
|
|
extern int goodps;
|
|
extern int textbits, gfxbits;
|
|
extern int reverse;
|
|
extern int clean;
|
|
extern int ppi;
|
|
extern int teegs;
|
|
extern int truetoboundingbox;
|
|
extern int wctlfd;
|
|
extern int resizing;
|
|
extern int mknewwindow;
|
|
extern int fitwin;
|
|
|
|
void rot180(Image*);
|
|
Image *rot90(Image*);
|
|
Image *rot270(Image*);
|
|
Image *resample(Image*, Image*);
|
|
|
|
/* ghostscript interface shared by ps, pdf */
|
|
typedef struct GSInfo GSInfo;
|
|
typedef struct PDFInfo PDFInfo;
|
|
typedef struct Page Page;
|
|
typedef struct PSInfo PSInfo;
|
|
struct GSInfo {
|
|
Graphic g;
|
|
int gsfd;
|
|
Biobuf gsrd;
|
|
int gspid;
|
|
int ppi;
|
|
};
|
|
struct PDFInfo {
|
|
GSInfo gs;
|
|
Rectangle *pagebbox;
|
|
};
|
|
struct Page {
|
|
char *name;
|
|
int offset; /* offset of page beginning within file */
|
|
};
|
|
struct PSInfo {
|
|
GSInfo gs;
|
|
Rectangle bbox; /* default bounding box */
|
|
Page *page;
|
|
int npage;
|
|
int clueless; /* don't know where page boundaries are */
|
|
long psoff; /* location of %! in file */
|
|
char ctm[256];
|
|
};
|
|
|
|
void waitgs(GSInfo*);
|
|
int gscmd(GSInfo*, char*, ...);
|
|
int spawngs(GSInfo*, char*);
|
|
void setdim(GSInfo*, Rectangle, int, int);
|
|
int spawnwriter(GSInfo*, Biobuf*);
|
|
Rectangle screenrect(void);
|
|
void newwin(void);
|
|
void zerox(void);
|
|
Rectangle winrect(void);
|
|
void resize(int, int);
|
|
int max(int, int);
|
|
int min(int, int);
|
|
void wexits(char*);
|
|
Image* xallocimage(Display*, Rectangle, ulong, int, ulong);
|
|
int bell(void*, char*);
|
|
Image* convert(Graphic *g);
|
|
Image* cachedpage(Document*, int, int);
|
|
void cacheflush(void);
|
|
void fit(void);
|
|
|
|
extern char tempfile[40];
|
|
|
|
extern int stdinfd;
|
|
extern int truecolor;
|
|
|
|
|
|
/* BUG BUG BUG BUG BUG: cannot use new draw operations in drawterm,
|
|
* or in vncs, and there is a bug in the kernel for copying images
|
|
* from cpu memory -> video memory (memmove is not being used).
|
|
* until all that is settled, ignore the draw operators.
|
|
*/
|
|
#define drawop(a,b,c,d,e,f) draw(a,b,c,d,e)
|
|
#define gendrawop(a,b,c,d,e,f,g) gendraw(a,b,c,d,e,f)
|