Rev 7621 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4680 | right-hear | 1 | /* |
2 | * Utility object for handling a pdf application / view |
||
3 | * Takes care of PDF loading and displaying and navigation, |
||
4 | * uses a number of callbacks to the GUI app. |
||
5 | */ |
||
6 | |||
7 | #define MINRES 54 |
||
8 | #define MAXRES 300 |
||
9 | |||
10 | typedef struct pdfapp_s pdfapp_t; |
||
11 | |||
12 | enum { ARROW, HAND, WAIT }; |
||
13 | |||
14 | extern void winwarn(pdfapp_t*, char *s); |
||
15 | extern void winerror(pdfapp_t*, fz_error error); |
||
16 | extern void wintitle(pdfapp_t*, char *title); |
||
17 | extern void winresize(pdfapp_t*, int w, int h); |
||
18 | extern void winrepaint(pdfapp_t*); |
||
19 | extern void winrepaintsearch(pdfapp_t*); |
||
20 | extern char *winpassword(pdfapp_t*, char *filename); |
||
21 | extern void winopenuri(pdfapp_t*, char *s); |
||
22 | extern void wincursor(pdfapp_t*, int curs); |
||
23 | extern void windocopy(pdfapp_t*); |
||
24 | extern void winreloadfile(pdfapp_t*); |
||
25 | extern void windrawstring(pdfapp_t*, int x, int y, char *s); |
||
26 | extern void winclose(pdfapp_t*); |
||
27 | extern void winhelp(pdfapp_t*); |
||
28 | |||
29 | struct pdfapp_s |
||
30 | { |
||
31 | /* current document params */ |
||
32 | char *doctitle; |
||
33 | pdf_xref *xref; |
||
34 | pdf_outline *outline; |
||
35 | xps_context *xps; |
||
36 | |||
37 | int pagecount; |
||
38 | fz_glyph_cache *cache; |
||
39 | |||
40 | /* current view params */ |
||
41 | int resolution; |
||
42 | int rotate; |
||
43 | fz_pixmap *image; |
||
44 | int grayscale; |
||
45 | |||
46 | /* current page params */ |
||
47 | int pageno; |
||
48 | fz_rect page_bbox; |
||
49 | float page_rotate; |
||
50 | fz_display_list *page_list; |
||
51 | fz_text_span *page_text; |
||
52 | pdf_link *page_links; |
||
53 | |||
54 | /* snapback history */ |
||
55 | int hist[256]; |
||
56 | int histlen; |
||
57 | int marks[10]; |
||
58 | |||
59 | /* window system sizes */ |
||
60 | int winw, winh; |
||
61 | int scrw, scrh; |
||
62 | int shrinkwrap; |
||
63 | |||
64 | /* event handling state */ |
||
65 | char number[256]; |
||
66 | int numberlen; |
||
67 | |||
68 | int ispanning; |
||
69 | int panx, pany; |
||
70 | |||
71 | int iscopying; |
||
72 | int selx, sely; |
||
73 | /* TODO - While sely keeps track of the relative change in |
||
74 | * cursor position between two ticks/events, beyondy shall keep |
||
75 | * track of the relative change in cursor position from the |
||
76 | * point where the user hits a scrolling limit. This is ugly. |
||
77 | * Used in pdfapp.c:pdfapp_onmouse. |
||
78 | */ |
||
79 | int beyondy; |
||
80 | fz_bbox selr; |
||
81 | |||
82 | /* search state */ |
||
83 | int isediting; |
||
84 | char search[512]; |
||
85 | int hit; |
||
86 | int hitlen; |
||
87 | |||
88 | /* client context storage */ |
||
89 | void *userdata; |
||
90 | }; |
||
91 | |||
92 | void pdfapp_init(pdfapp_t *app); |
||
93 | void pdfapp_open(pdfapp_t *app, char *filename, int fd, int reload); |
||
94 | void pdfapp_close(pdfapp_t *app); |
||
95 | |||
96 | char *pdfapp_version(pdfapp_t *app); |
||
97 | char *pdfapp_usage(pdfapp_t *app); |
||
98 | |||
99 | void pdfapp_onkey(pdfapp_t *app, int c); |
||
100 | void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int state); |
||
101 | void pdfapp_oncopy(pdfapp_t *app, unsigned short *ucsbuf, int ucslen); |
||
102 | void pdfapp_onresize(pdfapp_t *app, int w, int h); |
||
103 | |||
104 | void pdfapp_invert(pdfapp_t *app, fz_bbox rect); |
||
105 | void pdfapp_inverthit(pdfapp_t *app); |