Rev 8429 | Details | Compare with Previous | 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); |
||
8438 | maxcodehac | 16 | extern void wintitle(pdfapp_t*, char *title, char param[]); |
4680 | right-hear | 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 | |||
36 | int pagecount; |
||
37 | fz_glyph_cache *cache; |
||
38 | |||
39 | /* current view params */ |
||
40 | int resolution; |
||
41 | int rotate; |
||
42 | fz_pixmap *image; |
||
43 | int grayscale; |
||
44 | |||
45 | /* current page params */ |
||
46 | int pageno; |
||
47 | fz_rect page_bbox; |
||
48 | float page_rotate; |
||
49 | fz_display_list *page_list; |
||
50 | fz_text_span *page_text; |
||
51 | pdf_link *page_links; |
||
52 | |||
53 | /* snapback history */ |
||
54 | int hist[256]; |
||
55 | int histlen; |
||
56 | int marks[10]; |
||
57 | |||
58 | /* window system sizes */ |
||
59 | int winw, winh; |
||
60 | int scrw, scrh; |
||
61 | int shrinkwrap; |
||
62 | |||
63 | /* event handling state */ |
||
64 | char number[256]; |
||
65 | int numberlen; |
||
66 | |||
67 | int ispanning; |
||
68 | int panx, pany; |
||
69 | |||
70 | int iscopying; |
||
71 | int selx, sely; |
||
72 | /* TODO - While sely keeps track of the relative change in |
||
73 | * cursor position between two ticks/events, beyondy shall keep |
||
74 | * track of the relative change in cursor position from the |
||
75 | * point where the user hits a scrolling limit. This is ugly. |
||
76 | * Used in pdfapp.c:pdfapp_onmouse. |
||
77 | */ |
||
78 | int beyondy; |
||
79 | fz_bbox selr; |
||
80 | |||
81 | /* search state */ |
||
82 | int isediting; |
||
83 | char search[512]; |
||
84 | int hit; |
||
85 | int hitlen; |
||
86 | |||
87 | /* client context storage */ |
||
88 | void *userdata; |
||
89 | }; |
||
90 | |||
91 | void pdfapp_init(pdfapp_t *app); |
||
92 | void pdfapp_open(pdfapp_t *app, char *filename, int fd, int reload); |
||
93 | void pdfapp_close(pdfapp_t *app); |
||
94 | |||
95 | char *pdfapp_version(pdfapp_t *app); |
||
96 | char *pdfapp_usage(pdfapp_t *app); |
||
97 | |||
98 | void pdfapp_onkey(pdfapp_t *app, int c); |
||
99 | void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int state); |
||
100 | void pdfapp_oncopy(pdfapp_t *app, unsigned short *ucsbuf, int ucslen); |
||
101 | void pdfapp_onresize(pdfapp_t *app, int w, int h); |
||
102 | |||
103 | void pdfapp_invert(pdfapp_t *app, fz_bbox rect); |
||
104 | void pdfapp_inverthit(pdfapp_t *app); |