1 /* GTK - The GIMP Toolkit 2 * gtkprintoperation.h: Print Operation 3 * Copyright (C) 2006, Red Hat, Inc. 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef __GTK_PRINT_OPERATION_PRIVATE_H__ 20 #define __GTK_PRINT_OPERATION_PRIVATE_H__ 21 22 #include "gtkprintoperation.h" 23 24 G_BEGIN_DECLS 25 26 /* Page drawing states */ 27 typedef enum 28 { 29 GTK_PAGE_DRAWING_STATE_READY, 30 GTK_PAGE_DRAWING_STATE_DRAWING, 31 GTK_PAGE_DRAWING_STATE_DEFERRED_DRAWING 32 } GtkPageDrawingState; 33 34 struct _GtkPrintOperationPrivate 35 { 36 GtkPrintOperationAction action; 37 GtkPrintStatus status; 38 GError *error; 39 gchar *status_string; 40 GtkPageSetup *default_page_setup; 41 GtkPrintSettings *print_settings; 42 gchar *job_name; 43 gint nr_of_pages; 44 gint nr_of_pages_to_print; 45 gint page_position; 46 gint current_page; 47 GtkUnit unit; 48 gchar *export_filename; 49 guint use_full_page : 1; 50 guint track_print_status : 1; 51 guint show_progress : 1; 52 guint cancelled : 1; 53 guint allow_async : 1; 54 guint is_sync : 1; 55 guint support_selection : 1; 56 guint has_selection : 1; 57 guint embed_page_setup : 1; 58 59 GtkPageDrawingState page_drawing_state; 60 61 guint print_pages_idle_id; 62 guint show_progress_timeout_id; 63 64 GtkPrintContext *print_context; 65 66 GtkPrintPages print_pages; 67 GtkPageRange *page_ranges; 68 gint num_page_ranges; 69 70 gint manual_num_copies; 71 guint manual_collation : 1; 72 guint manual_reverse : 1; 73 guint manual_orientation : 1; 74 double manual_scale; 75 GtkPageSet manual_page_set; 76 guint manual_number_up; 77 GtkNumberUpLayout manual_number_up_layout; 78 79 GtkWidget *custom_widget; 80 gchar *custom_tab_label; 81 82 gpointer platform_data; 83 GDestroyNotify free_platform_data; 84 85 GMainLoop *rloop; /* recursive mainloop */ 86 87 void (*start_page) (GtkPrintOperation *operation, 88 GtkPrintContext *print_context, 89 GtkPageSetup *page_setup); 90 void (*end_page) (GtkPrintOperation *operation, 91 GtkPrintContext *print_context); 92 void (*end_run) (GtkPrintOperation *operation, 93 gboolean wait, 94 gboolean cancelled); 95 }; 96 97 98 typedef void (* GtkPrintOperationPrintFunc) (GtkPrintOperation *op, 99 GtkWindow *parent, 100 gboolean do_print, 101 GtkPrintOperationResult result); 102 103 GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog (GtkPrintOperation *operation, 104 gboolean show_dialog, 105 GtkWindow *parent, 106 gboolean *do_print); 107 void _gtk_print_operation_platform_backend_run_dialog_async (GtkPrintOperation *op, 108 gboolean show_dialog, 109 GtkWindow *parent, 110 GtkPrintOperationPrintFunc print_cb); 111 void _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, 112 cairo_surface_t *surface, 113 GtkWindow *parent, 114 const char *filename); 115 cairo_surface_t * _gtk_print_operation_platform_backend_create_preview_surface (GtkPrintOperation *op, 116 GtkPageSetup *page_setup, 117 gdouble *dpi_x, 118 gdouble *dpi_y, 119 gchar **target); 120 void _gtk_print_operation_platform_backend_resize_preview_surface (GtkPrintOperation *op, 121 GtkPageSetup *page_setup, 122 cairo_surface_t *surface); 123 void _gtk_print_operation_platform_backend_preview_start_page (GtkPrintOperation *op, 124 cairo_surface_t *surface, 125 cairo_t *cr); 126 void _gtk_print_operation_platform_backend_preview_end_page (GtkPrintOperation *op, 127 cairo_surface_t *surface, 128 cairo_t *cr); 129 130 void _gtk_print_operation_set_status (GtkPrintOperation *op, 131 GtkPrintStatus status, 132 const gchar *string); 133 134 /* GtkPrintContext private functions: */ 135 136 GtkPrintContext *_gtk_print_context_new (GtkPrintOperation *op); 137 void _gtk_print_context_set_page_setup (GtkPrintContext *context, 138 GtkPageSetup *page_setup); 139 void _gtk_print_context_translate_into_margin (GtkPrintContext *context); 140 void _gtk_print_context_rotate_according_to_orientation (GtkPrintContext *context); 141 void _gtk_print_context_reverse_according_to_orientation (GtkPrintContext *context); 142 void _gtk_print_context_set_hard_margins (GtkPrintContext *context, 143 gdouble top, 144 gdouble bottom, 145 gdouble left, 146 gdouble right); 147 148 G_END_DECLS 149 150 #endif /* __GTK_PRINT_OPERATION_PRIVATE_H__ */ 151