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 | char *status_string; |
40 | GtkPageSetup *default_page_setup; |
41 | GtkPrintSettings *print_settings; |
42 | char *job_name; |
43 | int nr_of_pages; |
44 | int nr_of_pages_to_print; |
45 | int page_position; |
46 | int current_page; |
47 | GtkUnit unit; |
48 | char *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 | int num_page_ranges; |
69 | |
70 | int 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 | char *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 | double *dpi_x, |
118 | double *dpi_y, |
119 | char **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 char *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 | double top, |
144 | double bottom, |
145 | double left, |
146 | double right); |
147 | |
148 | G_END_DECLS |
149 | |
150 | #endif /* __GTK_PRINT_OPERATION_PRIVATE_H__ */ |
151 | |