[gtk+] Bring GtkPrintContext hard margin aware



commit be686e2badb5cdfdaed7df2cac9ff3b3fb793056
Author: ecyrbe <ecyrbe gmail com>
Date:   Sat Dec 5 13:23:44 2009 +0100

    Bring GtkPrintContext hard margin aware
    
    See bug #468989.

 gtk/gtk.symbols       |    1 +
 gtk/gtkprintcontext.c |   64 +++++++++++++++++++++++++++++++++++++++++++++++++
 gtk/gtkprintcontext.h |    5 ++++
 3 files changed, 70 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index 40f3261..1b61ca7 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -2918,6 +2918,7 @@ gtk_print_context_get_width
 gtk_print_context_get_height
 gtk_print_context_get_dpi_x
 gtk_print_context_get_dpi_y
+gtk_print_context_get_hard_margins
 gtk_print_context_get_pango_fontmap
 gtk_print_context_create_pango_context
 gtk_print_context_create_pango_layout
diff --git a/gtk/gtkprintcontext.c b/gtk/gtkprintcontext.c
index 80eac79..cdf04d7 100644
--- a/gtk/gtkprintcontext.c
+++ b/gtk/gtkprintcontext.c
@@ -44,6 +44,13 @@ struct _GtkPrintContext
   
   gdouble pixels_per_unit_x;
   gdouble pixels_per_unit_y;
+
+  gboolean has_hard_margins;
+  gdouble hard_margin_top;
+  gdouble hard_margin_bottom;
+  gdouble hard_margin_left;
+  gdouble hard_margin_right;
+
 };
 
 struct _GtkPrintContextClass
@@ -90,6 +97,7 @@ _gtk_print_context_new (GtkPrintOperation *op)
 
   context->op = op;
   context->cr = NULL;
+  context->has_hard_margins = FALSE;
   
   return context;
 }
@@ -374,6 +382,62 @@ gtk_print_context_get_dpi_y (GtkPrintContext *context)
 }
 
 /**
+ * gtk_print_context_get_hard_margins:
+ * @context: a #GtkPrintContext
+ * @top: top hardware printer margin
+ * @bottom: bottom hardware printer margin
+ * @left: left hardware printer margin
+ * @right: right hardware printer margin
+ *
+ * Obtains the hardware printer margins of the #GtkPrintContext, in units.
+ *
+ * Return value: %TRUE if the hard margins were retrieved
+ *
+ * Since: 2.20
+ */
+gboolean
+gtk_print_context_get_hard_margins (GtkPrintContext *context,
+				    gdouble         *top,
+				    gdouble         *bottom,
+				    gdouble         *left,
+				    gdouble         *right)
+{
+  if (context->has_hard_margins)
+    {
+      *top    = context->hard_margin_top / context->pixels_per_unit_y;
+      *bottom = context->hard_margin_bottom / context->pixels_per_unit_y;
+      *left   = context->hard_margin_left / context->pixels_per_unit_x;
+      *right  = context->hard_margin_right / context->pixels_per_unit_x;
+    }
+
+  return context->has_hard_margins;
+}
+
+/**
+ * gtk_print_context_set_hard_margins:
+ * @context: a #GtkPrintContext
+ * @top: top hardware printer margin
+ * @bottom: bottom hardware printer margin
+ * @left: left hardware printer margin
+ * @right: right hardware printer margin
+ *
+ * set the hard margins in pixel coordinates
+ */
+void
+_gtk_print_context_set_hard_margins (GtkPrintContext *context,
+				     gdouble          top,
+				     gdouble          bottom,
+				     gdouble          left,
+				     gdouble          right)
+{
+  context->hard_margin_top    = top;
+  context->hard_margin_bottom = bottom;
+  context->hard_margin_left   = left;
+  context->hard_margin_right  = right;
+  context->has_hard_margins   = TRUE;
+}
+
+/**
  * gtk_print_context_get_pango_fontmap:
  * @context: a #GtkPrintContext
  *
diff --git a/gtk/gtkprintcontext.h b/gtk/gtkprintcontext.h
index 9bd1334..30572d6 100644
--- a/gtk/gtkprintcontext.h
+++ b/gtk/gtkprintcontext.h
@@ -49,6 +49,11 @@ gdouble       gtk_print_context_get_width            (GtkPrintContext *context);
 gdouble       gtk_print_context_get_height           (GtkPrintContext *context);
 gdouble       gtk_print_context_get_dpi_x            (GtkPrintContext *context);
 gdouble       gtk_print_context_get_dpi_y            (GtkPrintContext *context);
+gboolean      gtk_print_context_get_hard_margins     (GtkPrintContext *context,
+						      gdouble         *top,
+						      gdouble         *bottom,
+						      gdouble         *left,
+						      gdouble         *right);
 
 /* Fonts */
 PangoFontMap *gtk_print_context_get_pango_fontmap    (GtkPrintContext *context);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]