1 /* 2 * Copyright (c) 2002-2004 Paul Vojta and the xdvik development team 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy 5 * of this software and associated documentation files (the "Software"), to 6 * deal in the Software without restriction, including without limitation the 7 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 8 * sell copies of the Software, and to permit persons to whom the Software is 9 * furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 * NONINFRINGEMENT. IN NO EVENT SHALL ANY AUTHO OF THIS SOFTWARE BE 18 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 * SOFTWARE. 22 */ 23 24 #ifndef PRINT_INTERNAL_H_ 25 #define PRINT_INTERNAL_H_ 26 27 #include "dvi-init.h" 28 29 typedef enum { FMT_PS, FMT_PS2PDF, FMT_DVI, FMT_ISO_8859_1, FMT_UTF8, FMT_NONE } outputFormatT; 30 31 /* collection of all file IOs used in printing/saving */ 32 struct file_info { 33 char *tmp_dvi_file; /* temporary DVI file */ 34 FILE *tmp_dvi_fp; /* FILE * for temporary DVI file */ 35 char *tmp_ps_file; /* temporary PS file */ 36 char *out_file; /* final output file */ 37 /* FILE *out_fp; */ /* FILE * for final output file */ 38 FILE *in_fp; /* FILE * for input file */ 39 }; 40 41 /* stacks for communication with selection routines */ 42 struct specials_stack_elem { 43 char *content; /* string content */ 44 }; 45 46 struct specials_stack { 47 size_t stack_len; 48 struct specials_stack_elem *items; 49 }; 50 51 typedef enum printRadioT_ { 52 NO_PRINT_VAL = -1, 53 TO_PRINTER = 1, 54 TO_FILE 55 } printRadioT; 56 57 58 typedef enum pageRadioT_ { 59 NO_PAGE_VAL = -1, 60 PAGE_ALL = 1, 61 PAGE_MARKED, 62 PAGE_RANGE 63 } pageRadioT; 64 65 struct save_or_print_info; /* forward declaration */ 66 67 /* wrapper struct which stores information about values the user has 68 selected in the dialog. 69 */ 70 struct select_pages_info { 71 int from; /* lower bound of page range to be selected */ 72 int to; /* upper bound of page range to be selected */ 73 /* struct file_info *finfo; \/\* additional file info pointer \*\/ */ 74 /* callback function that says whether a page should be selected or not; 75 will be passed a pointer to the current struct save_or_print_info, 76 and the current page */ 77 Boolean (*callback)(struct save_or_print_info *info, int page); 78 struct specials_stack warn_files; /* collect warnings about included files */ 79 dviErrFlagT errflag; /* collect all kinds of errors that can happen while copying */ 80 }; 81 82 typedef enum { FILE_PRINT = 0, FILE_SAVE = 1 } printOrSaveActionT; 83 84 85 struct callback_info { 86 XtCallbackProc cb_close; 87 XtCallbackProc cb_cancel; 88 XtCallbackProc cb_destroy; 89 XtCallbackProc cb_keep; 90 }; 91 92 struct save_or_print_info { 93 printOrSaveActionT act; /* whether we're printing or saving */ 94 outputFormatT fmt; /* DVI/PS/... */ 95 printRadioT print_target; /* to printer or to file */ 96 pageRadioT page_selection; /* which pages: all/marked/range */ 97 char *printer_options; /* printer name + options from text field */ 98 char *dvips_options; /* dvips options from text field */ 99 Widget shell; 100 Widget message_popup; 101 Widget printlog; 102 struct select_pages_info *pinfo; 103 struct callback_info *callbacks; 104 struct file_info *finfo; 105 }; 106 107 extern void internal_print(struct save_or_print_info *info); 108 extern void internal_save(struct save_or_print_info *info); 109 110 #endif /* PRINT_INTERNAL_H_ */ 111 112