[gtk+] printing: Translate context to correct position
- From: Marek Kašík <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] printing: Translate context to correct position
- Date: Thu, 18 Dec 2014 15:30:02 +0000 (UTC)
commit 779faafa22af99614bb0f6a5526b4d901a7b095f
Author: Marek Kasik <mkasik redhat com>
Date: Thu Dec 18 16:26:29 2014 +0100
printing: Translate context to correct position
Use correct margins of given page setup when translating context
to imageable area.
https://bugzilla.gnome.org/show_bug.cgi?id=671895
gtk/gtkprintcontext.c | 28 +++++++++++++++++++++++-----
1 files changed, 23 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkprintcontext.c b/gtk/gtkprintcontext.c
index 4b27590..f65de53 100644
--- a/gtk/gtkprintcontext.c
+++ b/gtk/gtkprintcontext.c
@@ -317,17 +317,35 @@ _gtk_print_context_reverse_according_to_orientation (GtkPrintContext *context)
void
_gtk_print_context_translate_into_margin (GtkPrintContext *context)
{
- gdouble left, top;
+ gdouble dx, dy;
g_return_if_fail (GTK_IS_PRINT_CONTEXT (context));
/* We do it this way to also handle GTK_UNIT_NONE */
- left = gtk_page_setup_get_left_margin (context->page_setup, GTK_UNIT_INCH);
- top = gtk_page_setup_get_top_margin (context->page_setup, GTK_UNIT_INCH);
+ switch (gtk_page_setup_get_orientation (context->page_setup))
+ {
+ default:
+ case GTK_PAGE_ORIENTATION_PORTRAIT:
+ dx = gtk_page_setup_get_left_margin (context->page_setup, GTK_UNIT_INCH);
+ dy = gtk_page_setup_get_top_margin (context->page_setup, GTK_UNIT_INCH);
+ break;
+ case GTK_PAGE_ORIENTATION_LANDSCAPE:
+ dx = gtk_page_setup_get_bottom_margin (context->page_setup, GTK_UNIT_INCH);
+ dy = gtk_page_setup_get_left_margin (context->page_setup, GTK_UNIT_INCH);
+ break;
+ case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
+ dx = gtk_page_setup_get_right_margin (context->page_setup, GTK_UNIT_INCH);
+ dy = gtk_page_setup_get_bottom_margin (context->page_setup, GTK_UNIT_INCH);
+ break;
+ case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
+ dx = gtk_page_setup_get_top_margin (context->page_setup, GTK_UNIT_INCH);
+ dy = gtk_page_setup_get_right_margin (context->page_setup, GTK_UNIT_INCH);
+ break;
+ }
cairo_translate (context->cr,
- left * context->surface_dpi_x / context->pixels_per_unit_x,
- top * context->surface_dpi_y / context->pixels_per_unit_y);
+ dx * context->surface_dpi_x / context->pixels_per_unit_x,
+ dy * context->surface_dpi_y / context->pixels_per_unit_y);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]