Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
7638 views
1
#ifndef PDFAPP_H
2
#define PDFAPP_H
3
4
#include "mupdf/fitz.h"
5
#include "mupdf/pdf.h"
6
7
/*
8
* Utility object for handling a pdf application / view
9
* Takes care of PDF loading and displaying and navigation,
10
* uses a number of callbacks to the GUI app.
11
*/
12
13
/* 25% .. 400% */
14
#define MINRES 18
15
#define MAXRES 576
16
17
typedef struct pdfapp_s pdfapp_t;
18
19
enum { ARROW, HAND, WAIT, CARET };
20
21
enum { DISCARD, SAVE, CANCEL };
22
23
extern void winwarn(pdfapp_t*, char *s);
24
extern void winerror(pdfapp_t*, char *s);
25
extern void wintitle(pdfapp_t*, char *title);
26
extern void winresize(pdfapp_t*, int w, int h);
27
extern void winrepaint(pdfapp_t*);
28
extern void winrepaintsearch(pdfapp_t*);
29
extern char *winpassword(pdfapp_t*, char *filename);
30
extern char *wintextinput(pdfapp_t*, char *inittext, int retry);
31
extern int winchoiceinput(pdfapp_t*, int nopts, char *opts[], int *nvals, char *vals[]);
32
extern void winopenuri(pdfapp_t*, char *s);
33
extern void wincursor(pdfapp_t*, int curs);
34
extern void windocopy(pdfapp_t*);
35
extern void windrawstring(pdfapp_t*, int x, int y, char *s);
36
extern void winclose(pdfapp_t*);
37
extern void winhelp(pdfapp_t*);
38
extern void winfullscreen(pdfapp_t*, int state);
39
extern int winsavequery(pdfapp_t*);
40
extern int wingetsavepath(pdfapp_t*, char *buf, int len);
41
extern void winalert(pdfapp_t *, pdf_alert_event *alert);
42
extern void winprint(pdfapp_t *);
43
extern void winadvancetimer(pdfapp_t *, float duration);
44
extern void winreplacefile(char *source, char *target);
45
extern void wincopyfile(char *source, char *target);
46
extern void winreloadpage(pdfapp_t *);
47
48
struct pdfapp_s
49
{
50
/* current document params */
51
fz_document *doc;
52
char *docpath;
53
char *doctitle;
54
fz_outline *outline;
55
int outline_deferred;
56
57
float layout_w;
58
float layout_h;
59
float layout_em;
60
61
int pagecount;
62
63
/* current view params */
64
int resolution;
65
int rotate;
66
fz_pixmap *image;
67
int grayscale;
68
fz_colorspace *colorspace;
69
int invert;
70
int tint, tint_r, tint_g, tint_b;
71
72
/* presentation mode */
73
int presentation_mode;
74
int transitions_enabled;
75
fz_pixmap *old_image;
76
fz_pixmap *new_image;
77
clock_t start_time;
78
int in_transit;
79
float duration;
80
fz_transition transition;
81
82
/* current page params */
83
int pageno;
84
fz_page *page;
85
fz_rect page_bbox;
86
fz_display_list *page_list;
87
fz_display_list *annotations_list;
88
fz_text_page *page_text;
89
fz_text_sheet *page_sheet;
90
fz_link *page_links;
91
int errored;
92
int incomplete;
93
94
/* snapback history */
95
int hist[256];
96
int histlen;
97
int marks[10];
98
99
/* window system sizes */
100
int winw, winh;
101
int scrw, scrh;
102
int shrinkwrap;
103
int fullscreen;
104
105
/* event handling state */
106
char number[256];
107
int numberlen;
108
109
int ispanning;
110
int panx, pany;
111
112
int iscopying;
113
int selx, sely;
114
/* TODO - While sely keeps track of the relative change in
115
* cursor position between two ticks/events, beyondy shall keep
116
* track of the relative change in cursor position from the
117
* point where the user hits a scrolling limit. This is ugly.
118
* Used in pdfapp.c:pdfapp_onmouse.
119
*/
120
int beyondy;
121
fz_rect selr;
122
123
int nowaitcursor;
124
125
/* search state */
126
int issearching;
127
int searchdir;
128
char search[512];
129
int searchpage;
130
fz_rect hit_bbox[512];
131
int hit_count;
132
133
/* client context storage */
134
void *userdata;
135
136
fz_context *ctx;
137
#ifdef HAVE_CURL
138
fz_stream *stream;
139
#endif
140
};
141
142
void pdfapp_init(fz_context *ctx, pdfapp_t *app);
143
void pdfapp_open(pdfapp_t *app, char *filename, int reload);
144
void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int bps);
145
void pdfapp_close(pdfapp_t *app);
146
int pdfapp_preclose(pdfapp_t *app);
147
void pdfapp_reloadfile(pdfapp_t *app);
148
149
char *pdfapp_version(pdfapp_t *app);
150
char *pdfapp_usage(pdfapp_t *app);
151
152
void pdfapp_onkey(pdfapp_t *app, int c, int modifiers);
153
void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int state);
154
void pdfapp_oncopy(pdfapp_t *app, unsigned short *ucsbuf, int ucslen);
155
void pdfapp_onresize(pdfapp_t *app, int w, int h);
156
void pdfapp_gotopage(pdfapp_t *app, int number);
157
void pdfapp_reloadpage(pdfapp_t *app);
158
void pdfapp_autozoom_horizontal(pdfapp_t *app);
159
void pdfapp_autozoom_vertical(pdfapp_t *app);
160
void pdfapp_autozoom(pdfapp_t *app);
161
162
void pdfapp_invert(pdfapp_t *app, const fz_rect *rect);
163
void pdfapp_inverthit(pdfapp_t *app);
164
165
void pdfapp_postblit(pdfapp_t *app);
166
167
#endif
168
169