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
This commit is contained in:
Marek Kasik 2014-12-18 16:26:29 +01:00
parent 9ac9769f36
commit 779faafa22

View File

@ -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