fix build with recent changes/gcc 6.3.0
[AROS-Contrib.git] / arospdf / xpdf / XPDFViewer.h
blob5e6602db15a91613faa236f8fbee14fee2942eb1
1 //========================================================================
2 //
3 // XPDFViewer.h
4 //
5 // Copyright 2002-2003 Glyph & Cog, LLC
6 //
7 //========================================================================
9 #ifndef XPDFVIEWER_H
10 #define XPDFVIEWER_H
12 #include <aconf.h>
14 #ifdef USE_GCC_PRAGMAS
15 #pragma interface
16 #endif
18 #include "gtypes.h"
19 #include "XPDFCore.h"
21 #define DISABLE_OUTLINE
22 #undef USE_COMBO_BOX
24 class GString;
25 class GList;
26 class UnicodeMap;
27 class LinkDest;
28 class XPDFApp;
29 class XPDFViewer;
31 //------------------------------------------------------------------------
33 // NB: this must match the defn of zoomMenuBtnInfo in XPDFViewer.cc
34 #define nZoomMenuItems 10
36 //------------------------------------------------------------------------
38 struct XPDFViewerCmd {
39 char *name;
40 int nArgs;
41 GBool requiresDoc;
42 GBool requiresEvent;
43 void (XPDFViewer::*func)(GString *args[], int nArgs, XEvent *event);
46 //------------------------------------------------------------------------
47 // XPDFViewer
48 //------------------------------------------------------------------------
50 class XPDFViewer {
51 public:
53 XPDFViewer(XPDFApp *appA, GString *fileName,
54 int pageA, GString *destName, GBool fullScreen,
55 GString *ownerPassword, GString *userPassword);
56 XPDFViewer(XPDFApp *appA, PDFDoc *doc, int pageA,
57 GString *destName, GBool fullScreen);
58 GBool isOk() { return ok; }
59 ~XPDFViewer();
61 void open(GString *fileName, int pageA, GString *destName);
62 void clear();
63 void reloadFile();
65 void execCmd(GString *cmd, XEvent *event);
67 //Widget getWindow() { return win; }
69 private:
71 //----- load / display
72 GBool loadFile(GString *fileName, GString *ownerPassword = NULL,
73 GString *userPassword = NULL);
74 void displayPage(int pageA, double zoomA, int rotateA,
75 GBool scrollToTop, GBool addToHist);
76 void displayDest(LinkDest *dest, double zoomA, int rotateA,
77 GBool addToHist);
78 void getPageAndDest(int pageA, GString *destName,
79 int *pageOut, LinkDest **destOut);
81 //----- hyperlinks / actions
82 void doLink(int wx, int wy, GBool onlyIfNoSelection, GBool newWin);
83 static void actionCbk(void *data, char *action);
85 //----- keyboard/mouse input
86 static void keyPressCbk(void *data, KeySym key, Guint modifiers,
87 XEvent *event);
88 static void mouseCbk(void *data, XEvent *event);
89 int getModifiers(Guint modifiers);
90 int getContext(Guint modifiers);
92 //----- command functions
93 void cmdAbout(GString *args[], int nArgs, XEvent *event);
94 void cmdCloseOutline(GString *args[], int nArgs, XEvent *event);
95 void cmdCloseWindow(GString *args[], int nArgs, XEvent *event);
96 void cmdContinuousMode(GString *args[], int nArgs, XEvent *event);
97 void cmdEndPan(GString *args[], int nArgs, XEvent *event);
98 void cmdEndSelection(GString *args[], int nArgs, XEvent *event);
99 void cmdFind(GString *args[], int nArgs, XEvent *event);
100 void cmdFindNext(GString *args[], int nArgs, XEvent *event);
101 void cmdFocusToDocWin(GString *args[], int nArgs, XEvent *event);
102 void cmdFocusToPageNum(GString *args[], int nArgs, XEvent *event);
103 void cmdFollowLink(GString *args[], int nArgs, XEvent *event);
104 void cmdFollowLinkInNewWin(GString *args[], int nArgs, XEvent *event);
105 void cmdFollowLinkInNewWinNoSel(GString *args[], int nArgs, XEvent *event);
106 void cmdFollowLinkNoSel(GString *args[], int nArgs, XEvent *event);
107 void cmdFullScreenMode(GString *args[], int nArgs, XEvent *event);
108 void cmdGoBackward(GString *args[], int nArgs, XEvent *event);
109 void cmdGoForward(GString *args[], int nArgs, XEvent *event);
110 void cmdGotoDest(GString *args[], int nArgs, XEvent *event);
111 void cmdGotoLastPage(GString *args[], int nArgs, XEvent *event);
112 void cmdGotoLastPageNoScroll(GString *args[], int nArgs, XEvent *event);
113 void cmdGotoPage(GString *args[], int nArgs, XEvent *event);
114 void cmdGotoPageNoScroll(GString *args[], int nArgs, XEvent *event);
115 void cmdNextPage(GString *args[], int nArgs, XEvent *event);
116 void cmdNextPageNoScroll(GString *args[], int nArgs, XEvent *event);
117 void cmdOpen(GString *args[], int nArgs, XEvent *event);
118 void cmdOpenFile(GString *args[], int nArgs, XEvent *event);
119 void cmdOpenFileAtDest(GString *args[], int nArgs, XEvent *event);
120 void cmdOpenFileAtDestInNewWin(GString *args[], int nArgs, XEvent *event);
121 void cmdOpenFileAtPage(GString *args[], int nArgs, XEvent *event);
122 void cmdOpenFileAtPageInNewWin(GString *args[], int nArgs, XEvent *event);
123 void cmdOpenFileInNewWin(GString *args[], int nArgs, XEvent *event);
124 void cmdOpenInNewWin(GString *args[], int nArgs, XEvent *event);
125 void cmdOpenOutline(GString *args[], int nArgs, XEvent *event);
126 void cmdPageDown(GString *args[], int nArgs, XEvent *event);
127 void cmdPageUp(GString *args[], int nArgs, XEvent *event);
128 void cmdPostPopupMenu(GString *args[], int nArgs, XEvent *event);
129 void cmdPrevPage(GString *args[], int nArgs, XEvent *event);
130 void cmdPrevPageNoScroll(GString *args[], int nArgs, XEvent *event);
131 void cmdPrint(GString *args[], int nArgs, XEvent *event);
132 void cmdQuit(GString *args[], int nArgs, XEvent *event);
133 void cmdRaise(GString *args[], int nArgs, XEvent *event);
134 void cmdRedraw(GString *args[], int nArgs, XEvent *event);
135 void cmdReload(GString *args[], int nArgs, XEvent *event);
136 void cmdRun(GString *args[], int nArgs, XEvent *event);
137 void cmdScrollDown(GString *args[], int nArgs, XEvent *event);
138 void cmdScrollDownNextPage(GString *args[], int nArgs, XEvent *event);
139 void cmdScrollLeft(GString *args[], int nArgs, XEvent *event);
140 void cmdScrollOutlineDown(GString *args[], int nArgs, XEvent *event);
141 void cmdScrollOutlineUp(GString *args[], int nArgs, XEvent *event);
142 void cmdScrollRight(GString *args[], int nArgs, XEvent *event);
143 void cmdScrollToBottomEdge(GString *args[], int nArgs, XEvent *event);
144 void cmdScrollToBottomRight(GString *args[], int nArgs, XEvent *event);
145 void cmdScrollToLeftEdge(GString *args[], int nArgs, XEvent *event);
146 void cmdScrollToRightEdge(GString *args[], int nArgs, XEvent *event);
147 void cmdScrollToTopEdge(GString *args[], int nArgs, XEvent *event);
148 void cmdScrollToTopLeft(GString *args[], int nArgs, XEvent *event);
149 void cmdScrollUp(GString *args[], int nArgs, XEvent *event);
150 void cmdScrollUpPrevPage(GString *args[], int nArgs, XEvent *event);
151 void cmdSinglePageMode(GString *args[], int nArgs, XEvent *event);
152 void cmdStartPan(GString *args[], int nArgs, XEvent *event);
153 void cmdStartSelection(GString *args[], int nArgs, XEvent *event);
154 void cmdToggleContinuousMode(GString *args[], int nArgs, XEvent *event);
155 void cmdToggleFullScreenMode(GString *args[], int nArgs, XEvent *event);
156 void cmdToggleOutline(GString *args[], int nArgs, XEvent *event);
157 void cmdWindowMode(GString *args[], int nArgs, XEvent *event);
158 void cmdZoomFitPage(GString *args[], int nArgs, XEvent *event);
159 void cmdZoomFitWidth(GString *args[], int nArgs, XEvent *event);
160 void cmdZoomIn(GString *args[], int nArgs, XEvent *event);
161 void cmdZoomOut(GString *args[], int nArgs, XEvent *event);
162 void cmdZoomPercent(GString *args[], int nArgs, XEvent *event);
163 void cmdZoomToSelection(GString *args[], int nArgs, XEvent *event);
165 //----- GUI code: main window
166 void initWindow(GBool fullScreen);
167 //void initToolbar(Widget parent);
169 //void initCore(Widget parent, GBool fullScreen);
170 void initPopupMenu();
171 //void addToolTip(Widget widget, char *text);
172 void mapWindow();
173 void closeWindow();
174 int getZoomIdx();
175 void setZoomIdx(int idx);
176 void setZoomVal(double z);
177 static void prevPageCbk(Widget widget, XtPointer ptr,
178 XtPointer callData);
179 static void prevTenPageCbk(Widget widget, XtPointer ptr,
180 XtPointer callData);
181 static void nextPageCbk(Widget widget, XtPointer ptr,
182 XtPointer callData);
183 static void nextTenPageCbk(Widget widget, XtPointer ptr,
184 XtPointer callData);
185 static void backCbk(Widget widget, XtPointer ptr,
186 XtPointer callData);
187 static void forwardCbk(Widget widget, XtPointer ptr,
188 XtPointer callData);
189 #if USE_COMBO_BOX
190 static void zoomComboBoxCbk(Widget widget, XtPointer ptr,
191 XtPointer callData);
192 #else
193 static void zoomMenuCbk(Widget widget, XtPointer ptr,
194 XtPointer callData);
195 #endif
196 static void findCbk(Widget widget, XtPointer ptr,
197 XtPointer callData);
198 static void printCbk(Widget widget, XtPointer ptr,
199 XtPointer callData);
200 static void aboutCbk(Widget widget, XtPointer ptr,
201 XtPointer callData);
202 static void quitCbk(Widget widget, XtPointer ptr,
203 XtPointer callData);
204 static void openCbk(Widget widget, XtPointer ptr,
205 XtPointer callData);
206 static void openInNewWindowCbk(Widget widget, XtPointer ptr,
207 XtPointer callData);
208 static void reloadCbk(Widget widget, XtPointer ptr,
209 XtPointer callData);
210 static void saveAsCbk(Widget widget, XtPointer ptr,
211 XtPointer callData);
212 static void continuousModeToggleCbk(Widget widget, XtPointer ptr,
213 XtPointer callData);
214 static void fullScreenToggleCbk(Widget widget, XtPointer ptr,
215 XtPointer callData);
216 static void rotateCCWCbk(Widget widget, XtPointer ptr,
217 XtPointer callData);
218 static void rotateCWCbk(Widget widget, XtPointer ptr,
219 XtPointer callData);
220 static void zoomToSelectionCbk(Widget widget, XtPointer ptr,
221 XtPointer callData);
222 static void closeCbk(Widget widget, XtPointer ptr,
223 XtPointer callData);
224 static void closeMsgCbk(Widget widget, XtPointer ptr,
225 XtPointer callData);
226 static void pageNumCbk(Widget widget, XtPointer ptr,
227 XtPointer callData);
228 static void updateCbk(void *data, GString *fileName,
229 int pageNum, int numPages, char *linkString);
231 //----- GUI code: outline
232 #ifndef DISABLE_OUTLINE
233 void setupOutline();
234 void setupOutlineItems(GList *items, Widget parent, UnicodeMap *uMap);
235 static void outlineSelectCbk(Widget widget, XtPointer ptr,
236 XtPointer callData);
237 #endif
239 //----- GUI code: "about" dialog
240 void initAboutDialog();
242 //----- GUI code: "open" dialog
243 void initOpenDialog();
244 void mapOpenDialog(GBool openInNewWindowA);
245 static void openOkCbk(Widget widget, XtPointer ptr,
246 XtPointer callData);
248 //----- GUI code: "find" dialog
249 void initFindDialog();
250 static void findFindCbk(Widget widget, XtPointer ptr,
251 XtPointer callData);
252 void mapFindDialog();
253 void doFind(GBool next);
254 static void findCloseCbk(Widget widget, XtPointer ptr,
255 XtPointer callData);
257 //----- GUI code: "save as" dialog
258 void initSaveAsDialog();
259 void mapSaveAsDialog();
260 static void saveAsOkCbk(Widget widget, XtPointer ptr,
261 XtPointer callData);
263 //----- GUI code: "print" dialog
264 void initPrintDialog();
265 void setupPrintDialog();
266 static void printWithCmdBtnCbk(Widget widget, XtPointer ptr,
267 XtPointer callData);
268 static void printToFileBtnCbk(Widget widget, XtPointer ptr,
269 XtPointer callData);
270 static void printPrintCbk(Widget widget, XtPointer ptr,
271 XtPointer callData);
273 //----- Motif support
274 XmFontList createFontList(char *xlfd);
276 static XPDFViewerCmd cmdTab[];
278 XPDFApp *app;
279 GBool ok;
281 Display *display;
282 int screenNum;
283 Widget win; // top-level window
284 Widget form;
285 Widget panedWin;
286 #ifndef DISABLE_OUTLINE
287 Widget outlineScroll;
288 Widget outlineTree;
289 Widget *outlineLabels;
290 int outlineLabelsLength;
291 int outlineLabelsSize;
292 Dimension outlinePaneWidth;
293 #endif
294 XPDFCore *core;
295 Widget toolBar;
296 Widget backBtn;
297 Widget prevTenPageBtn;
298 Widget prevPageBtn;
299 Widget nextPageBtn;
300 Widget nextTenPageBtn;
301 Widget forwardBtn;
302 Widget pageNumText;
303 Widget pageCountLabel;
304 #if USE_COMBO_BOX
305 Widget zoomComboBox;
306 #else
307 Widget zoomMenu;
308 Widget zoomMenuBtns[nZoomMenuItems];
309 #endif
310 Widget zoomWidget;
311 Widget findBtn;
312 Widget printBtn;
313 Widget aboutBtn;
314 Widget linkLabel;
315 Widget quitBtn;
316 Widget popupMenu;
318 Widget aboutDialog;
319 XmFontList aboutBigFont, aboutVersionFont, aboutFixedFont;
321 Widget openDialog;
322 GBool openInNewWindow;
324 Widget findDialog;
325 Widget findText;
326 Widget findBackwardToggle;
327 Widget findCaseSensitiveToggle;
329 Widget saveAsDialog;
331 Widget printDialog;
332 Widget printWithCmdBtn;
333 Widget printToFileBtn;
334 Widget printCmdText;
335 Widget printFileText;
336 Widget printFirstPage;
337 Widget printLastPage;
340 #endif