]> Pileus Git - ~andy/gtk/commitdiff
Allow getting the printer's hard margins
authorChristian Persch <chpe@gnome.org>
Wed, 6 Feb 2008 22:58:47 +0000 (23:58 +0100)
committerChristian Persch <chpe@gnome.org>
Tue, 1 Dec 2009 16:39:01 +0000 (17:39 +0100)
Adds a way to get the unprintable area of the printer. Bug #468989.

docs/reference/gtk/gtk-sections.txt
gtk/gtk.symbols
gtk/gtkcustompaperunixdialog.c
gtk/gtkprintbackend.c
gtk/gtkprintbackend.h
gtk/gtkprinter-private.h
gtk/gtkprinter.c
gtk/gtkprinter.h
modules/printbackends/cups/gtkprintbackendcups.c

index 1672e5f3d6cf2e4fdc93dada4f07a17f6d0e6cda..93ec24e73fa9bbb53c5cd80df737f112c3d68f2d 100644 (file)
@@ -6864,6 +6864,7 @@ gtk_printer_has_details
 gtk_printer_request_details
 gtk_printer_get_capabilities
 gtk_printer_get_default_page_size
+gtk_printer_get_hard_margins
 GtkPrinterFunc
 gtk_enumerate_printers
 
index 05e20fea649f93ffc9dc6ab3f99e235251fe9f45..40f3261c66fac55c011cac3bef01029be351b196 100644 (file)
@@ -2945,6 +2945,7 @@ gtk_printer_compare
 gtk_printer_has_details
 gtk_printer_request_details
 gtk_printer_get_capabilities
+gtk_printer_get_hard_margins
 gtk_enumerate_printers
 gtk_print_capabilities_get_type G_GNUC_CONST
 #endif
index 9006eaba230af4dc5970fbfa8f0f6449ca9bc718..a5c9bc915205e5fe573b8d26d60f0e2935d4609e 100644 (file)
@@ -802,7 +802,8 @@ set_margins_from_printer (GtkCustomPaperUnixDialog *dialog,
   gdouble top, bottom, left, right;
 
   top = bottom = left = right = 0;
-  _gtk_printer_get_hard_margins (printer, &top, &bottom, &left, &right);
+  if (!gtk_printer_get_hard_margins (printer, &top, &bottom, &left, &right))
+    return;
 
   priv->non_user_change = TRUE;
   unit_widget_set (priv->top_widget, _gtk_print_convert_to_mm (top, GTK_UNIT_POINTS));
index 3c64823ebec71d30e80efa3535f1a3ecb6e0d6d9..4b8b0dedf3ddf566ce10f911d3100f2543886f7c 100644 (file)
@@ -349,11 +349,11 @@ G_DEFINE_TYPE (GtkPrintBackend, gtk_print_backend, G_TYPE_OBJECT)
 static void                 fallback_printer_request_details       (GtkPrinter          *printer);
 static gboolean             fallback_printer_mark_conflicts        (GtkPrinter          *printer,
                                                                    GtkPrinterOptionSet *options);
-static void                 fallback_printer_get_hard_margins      (GtkPrinter          *printer,
-                                                                   gdouble             *top,
-                                                                   gdouble             *bottom,
-                                                                   gdouble             *left,
-                                                                   gdouble             *right);
+static gboolean             fallback_printer_get_hard_margins      (GtkPrinter          *printer,
+                                                                    gdouble             *top,
+                                                                    gdouble             *bottom,
+                                                                    gdouble             *left,
+                                                                    gdouble             *right);
 static GList *              fallback_printer_list_papers           (GtkPrinter          *printer);
 static GtkPageSetup *       fallback_printer_get_default_page_size (GtkPrinter          *printer);
 static GtkPrintCapabilities fallback_printer_get_capabilities      (GtkPrinter          *printer);
@@ -494,7 +494,7 @@ fallback_printer_mark_conflicts (GtkPrinter          *printer,
   return FALSE;
 }
 
-static void
+static gboolean
 fallback_printer_get_hard_margins (GtkPrinter *printer,
                                   gdouble    *top,
                                   gdouble    *bottom,
@@ -505,6 +505,8 @@ fallback_printer_get_hard_margins (GtkPrinter *printer,
   *bottom = 0;
   *left = 0;
   *right = 0;
+
+  return TRUE;
 }
 
 static GList *
index c4b43b10d203ff9213af72941267276d909c7817..e19193ffdd717bceeb03a972d140a1c27ec6d3ca 100644 (file)
@@ -104,11 +104,11 @@ struct _GtkPrintBackendClass
                                                              GtkPageSetup        *page_setup);
   GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
   GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
-  void                  (*printer_get_hard_margins)          (GtkPrinter          *printer,
-                                                             double              *top,
-                                                             double              *bottom,
-                                                             double              *left,
-                                                             double              *right);
+  gboolean              (*printer_get_hard_margins)          (GtkPrinter          *printer,
+                                                             gdouble             *top,
+                                                             gdouble             *bottom,
+                                                             gdouble             *left,
+                                                             gdouble             *right);
   GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
 
   /* Signals */
index 39165bd9b50d5bb810f3859090dbd994bd80f341..a5786d0162f3055024890e388fdb0cf40e4251db 100644 (file)
@@ -45,11 +45,6 @@ cairo_surface_t *    _gtk_printer_create_cairo_surface      (GtkPrinter
                                                             gdouble              width,
                                                             gdouble              height,
                                                             GIOChannel          *cache_io);
-void                 _gtk_printer_get_hard_margins          (GtkPrinter          *printer,
-                                                            gdouble             *top,
-                                                            gdouble             *bottom,
-                                                            gdouble             *left,
-                                                            gdouble             *right);
 GHashTable *         _gtk_printer_get_custom_widgets        (GtkPrinter          *printer);
 
 /* GtkPrintJob private methods: */
index 0e9fd77fc86a7de2bf9779abfc6827841229af0a..20cbfe2d25ad844cdddd61b86b0aebc897c3338d 100644 (file)
@@ -951,12 +951,12 @@ gtk_printer_list_papers (GtkPrinter *printer)
 /**
  * gtk_printer_get_default_page_size:
  * @printer: a #GtkPrinter
- * 
+ *
  * Returns default page size of @printer.
  * 
  * Return value: a newly allocated #GtkPageSetup with default page size of the printer.
  *
- * Since: 2.13
+ * Since: 2.14
  */
 GtkPageSetup  *
 gtk_printer_get_default_page_size (GtkPrinter *printer)
@@ -969,16 +969,34 @@ gtk_printer_get_default_page_size (GtkPrinter *printer)
   return backend_class->printer_get_default_page_size (printer);
 }
 
-void
-_gtk_printer_get_hard_margins (GtkPrinter *printer,
-                              gdouble    *top,
-                              gdouble    *bottom,
-                              gdouble    *left,
-                              gdouble    *right)
+/**
+ * gtk_printer_get_hard_margins:
+ * @printer: a #GtkPrinter
+ * @top: a location to store the top margin in
+ * @bottom: a location to store the bottom margin in
+ * @left: a location to store the left margin in
+ * @right: a location to store the right margin in
+ *
+ * Retrieve the hard margins of @printer, i.e. the margins that define
+ * the area at the borders of the paper that the printer cannot print to.
+ *
+ * Note: This will not succeed unless the printer's details are available,
+ * see gtk_printer_has_details() and gtk_printer_request_details().
+ *
+ * Return value: %TRUE iff the hard margins were retrieved
+ *
+ * Since: 2.18
+ */
+gboolean
+gtk_printer_get_hard_margins (GtkPrinter *printer,
+                             gdouble    *top,
+                             gdouble    *bottom,
+                             gdouble    *left,
+                             gdouble    *right)
 {
   GtkPrintBackendClass *backend_class = GTK_PRINT_BACKEND_GET_CLASS (printer->priv->backend);
 
-  backend_class->printer_get_hard_margins (printer, top, bottom, left, right);
+  return backend_class->printer_get_hard_margins (printer, top, bottom, left, right);
 }
 
 /**
@@ -993,7 +1011,7 @@ _gtk_printer_get_hard_margins (GtkPrinter *printer,
  *
  * This will return 0 unless the printer's details are available, see
  * gtk_printer_has_details() and gtk_printer_request_details().
- *  *
+ *
  * Return value: the printer's capabilities
  *
  * Since: 2.12
index a61cfc3fdedd7125af545646f8d30955c5e48d12..527582c95d2a9f6ab58a1e87a4f4eb86d48496b3 100644 (file)
@@ -113,6 +113,11 @@ gint                     gtk_printer_compare               (GtkPrinter *a,
 gboolean                 gtk_printer_has_details           (GtkPrinter       *printer);
 void                     gtk_printer_request_details       (GtkPrinter       *printer);
 GtkPrintCapabilities     gtk_printer_get_capabilities      (GtkPrinter       *printer);
+gboolean                 gtk_printer_get_hard_margins      (GtkPrinter       *printer,
+                                                            gdouble          *top,
+                                                            gdouble          *bottom,
+                                                            gdouble          *left,
+                                                            gdouble          *right);
 
 typedef gboolean (*GtkPrinterFunc) (GtkPrinter *printer,
                                    gpointer    data);
index 0bae98fac2e191f03b0869c029f88907d5783255..f98364aca927540d7f463422a2496d5cc54fdfab 100644 (file)
@@ -158,11 +158,11 @@ static GtkPageSetup *       cups_printer_get_default_page_size     (GtkPrinter
 static void                 cups_printer_request_details           (GtkPrinter                        *printer);
 static gboolean             cups_request_default_printer           (GtkPrintBackendCups               *print_backend);
 static gboolean             cups_request_ppd                       (GtkPrinter                        *printer);
-static void                 cups_printer_get_hard_margins          (GtkPrinter                        *printer,
-                                                                   double                            *top,
-                                                                   double                            *bottom,
-                                                                   double                            *left,
-                                                                   double                            *right);
+static gboolean             cups_printer_get_hard_margins          (GtkPrinter                        *printer,
+                                                                   gdouble                           *top,
+                                                                   gdouble                           *bottom,
+                                                                   gdouble                           *left,
+                                                                   gdouble                           *right);
 static GtkPrintCapabilities cups_printer_get_capabilities          (GtkPrinter                        *printer);
 static void                 set_option_from_settings               (GtkPrinterOption                  *option,
                                                                    GtkPrintSettings                  *setting);
@@ -4428,7 +4428,7 @@ cups_printer_get_default_page_size (GtkPrinter *printer)
   return create_page_setup (ppd_file, size);
 }
 
-static void
+static gboolean
 cups_printer_get_hard_margins (GtkPrinter *printer,
                               gdouble    *top,
                               gdouble    *bottom,
@@ -4439,12 +4439,14 @@ cups_printer_get_hard_margins (GtkPrinter *printer,
 
   ppd_file = gtk_printer_cups_get_ppd (GTK_PRINTER_CUPS (printer));
   if (ppd_file == NULL)
-    return;
+    return FALSE;
 
   *left = ppd_file->custom_margins[0];
   *bottom = ppd_file->custom_margins[1];
   *right = ppd_file->custom_margins[2];
   *top = ppd_file->custom_margins[3];
+
+  return TRUE;
 }
 
 static GtkPrintCapabilities