1/* GtkPrinter
2 * Copyright (C) 2006 John (J5) Palmieri <johnp@redhat.com>
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __GTK_PRINTER_H__
19#define __GTK_PRINTER_H__
20
21#if !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
22#error "Only <gtk/gtkunixprint.h> can be included directly."
23#endif
24
25#include <cairo.h>
26#include <gtk/gtk.h>
27
28G_BEGIN_DECLS
29
30#define GTK_TYPE_PRINT_CAPABILITIES (gtk_print_capabilities_get_type ())
31
32/* Note, this type is manually registered with GObject in gtkprinter.c
33 * If you add any flags, update the registration as well!
34 */
35/**
36 * GtkPrintCapabilities:
37 * @GTK_PRINT_CAPABILITY_PAGE_SET: Print dialog will offer printing even/odd pages.
38 * @GTK_PRINT_CAPABILITY_COPIES: Print dialog will allow to print multiple copies.
39 * @GTK_PRINT_CAPABILITY_COLLATE: Print dialog will allow to collate multiple copies.
40 * @GTK_PRINT_CAPABILITY_REVERSE: Print dialog will allow to print pages in reverse order.
41 * @GTK_PRINT_CAPABILITY_SCALE: Print dialog will allow to scale the output.
42 * @GTK_PRINT_CAPABILITY_GENERATE_PDF: The program will send the document to
43 * the printer in PDF format
44 * @GTK_PRINT_CAPABILITY_GENERATE_PS: The program will send the document to
45 * the printer in Postscript format
46 * @GTK_PRINT_CAPABILITY_PREVIEW: Print dialog will offer a preview
47 * @GTK_PRINT_CAPABILITY_NUMBER_UP: Print dialog will offer printing multiple
48 * pages per sheet
49 * @GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT: Print dialog will allow to rearrange
50 * pages when printing multiple pages per sheet
51 *
52 * Specifies which features the print dialog should offer.
53 *
54 * If neither %GTK_PRINT_CAPABILITY_GENERATE_PDF nor
55 * %GTK_PRINT_CAPABILITY_GENERATE_PS is specified, GTK assumes that all
56 * formats are supported.
57 */
58typedef enum
59{
60 GTK_PRINT_CAPABILITY_PAGE_SET = 1 << 0,
61 GTK_PRINT_CAPABILITY_COPIES = 1 << 1,
62 GTK_PRINT_CAPABILITY_COLLATE = 1 << 2,
63 GTK_PRINT_CAPABILITY_REVERSE = 1 << 3,
64 GTK_PRINT_CAPABILITY_SCALE = 1 << 4,
65 GTK_PRINT_CAPABILITY_GENERATE_PDF = 1 << 5,
66 GTK_PRINT_CAPABILITY_GENERATE_PS = 1 << 6,
67 GTK_PRINT_CAPABILITY_PREVIEW = 1 << 7,
68 GTK_PRINT_CAPABILITY_NUMBER_UP = 1 << 8,
69 GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT = 1 << 9
70} GtkPrintCapabilities;
71
72GDK_AVAILABLE_IN_ALL
73GType gtk_print_capabilities_get_type (void) G_GNUC_CONST;
74
75#define GTK_TYPE_PRINTER (gtk_printer_get_type ())
76#define GTK_PRINTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINTER, GtkPrinter))
77#define GTK_IS_PRINTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINTER))
78
79typedef struct _GtkPrinter GtkPrinter;
80typedef struct _GtkPrintBackend GtkPrintBackend;
81
82GDK_AVAILABLE_IN_ALL
83GType gtk_printer_get_type (void) G_GNUC_CONST;
84GDK_AVAILABLE_IN_ALL
85GtkPrinter *gtk_printer_new (const char *name,
86 GtkPrintBackend *backend,
87 gboolean virtual_);
88GDK_AVAILABLE_IN_ALL
89GtkPrintBackend *gtk_printer_get_backend (GtkPrinter *printer);
90GDK_AVAILABLE_IN_ALL
91const char * gtk_printer_get_name (GtkPrinter *printer);
92GDK_AVAILABLE_IN_ALL
93const char * gtk_printer_get_state_message (GtkPrinter *printer);
94GDK_AVAILABLE_IN_ALL
95const char * gtk_printer_get_description (GtkPrinter *printer);
96GDK_AVAILABLE_IN_ALL
97const char * gtk_printer_get_location (GtkPrinter *printer);
98GDK_AVAILABLE_IN_ALL
99const char * gtk_printer_get_icon_name (GtkPrinter *printer);
100GDK_AVAILABLE_IN_ALL
101int gtk_printer_get_job_count (GtkPrinter *printer);
102GDK_AVAILABLE_IN_ALL
103gboolean gtk_printer_is_active (GtkPrinter *printer);
104GDK_AVAILABLE_IN_ALL
105gboolean gtk_printer_is_paused (GtkPrinter *printer);
106GDK_AVAILABLE_IN_ALL
107gboolean gtk_printer_is_accepting_jobs (GtkPrinter *printer);
108GDK_AVAILABLE_IN_ALL
109gboolean gtk_printer_is_virtual (GtkPrinter *printer);
110GDK_AVAILABLE_IN_ALL
111gboolean gtk_printer_is_default (GtkPrinter *printer);
112GDK_AVAILABLE_IN_ALL
113gboolean gtk_printer_accepts_pdf (GtkPrinter *printer);
114GDK_AVAILABLE_IN_ALL
115gboolean gtk_printer_accepts_ps (GtkPrinter *printer);
116GDK_AVAILABLE_IN_ALL
117GList *gtk_printer_list_papers (GtkPrinter *printer);
118GDK_AVAILABLE_IN_ALL
119GtkPageSetup *gtk_printer_get_default_page_size (GtkPrinter *printer);
120GDK_AVAILABLE_IN_ALL
121int gtk_printer_compare (GtkPrinter *a,
122 GtkPrinter *b);
123GDK_AVAILABLE_IN_ALL
124gboolean gtk_printer_has_details (GtkPrinter *printer);
125GDK_AVAILABLE_IN_ALL
126void gtk_printer_request_details (GtkPrinter *printer);
127GDK_AVAILABLE_IN_ALL
128GtkPrintCapabilities gtk_printer_get_capabilities (GtkPrinter *printer);
129GDK_AVAILABLE_IN_ALL
130gboolean gtk_printer_get_hard_margins (GtkPrinter *printer,
131 double *top,
132 double *bottom,
133 double *left,
134 double *right);
135GDK_AVAILABLE_IN_ALL
136gboolean gtk_printer_get_hard_margins_for_paper_size (GtkPrinter *printer,
137 GtkPaperSize *paper_size,
138 double *top,
139 double *bottom,
140 double *left,
141 double *right);
142
143/**
144 * GtkPrinterFunc:
145 * @printer: a `GtkPrinter`
146 * @data: (closure): user data passed to gtk_enumerate_printers()
147 *
148 * The type of function passed to gtk_enumerate_printers().
149 *
150 * Note that you need to ref @printer, if you want to keep
151 * a reference to it after the function has returned.
152 *
153 * Returns: %TRUE to stop the enumeration, %FALSE to continue
154 */
155typedef gboolean (*GtkPrinterFunc) (GtkPrinter *printer,
156 gpointer data);
157
158GDK_AVAILABLE_IN_ALL
159void gtk_enumerate_printers (GtkPrinterFunc func,
160 gpointer data,
161 GDestroyNotify destroy,
162 gboolean wait);
163
164G_END_DECLS
165
166#endif /* __GTK_PRINTER_H__ */
167

source code of gtk/gtk/gtkprinter.h