summaryrefslogtreecommitdiff
path: root/gtk/gtkprintoperation-win32.c
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2009-11-21 21:12:16 +1030
committerChristian Persch <chpe@gnome.org>2009-12-01 17:40:16 +0100
commita42107389f1ff4097b0671f2d74819bd531b3c29 (patch)
tree5fc28fa68e53b7bd4a2c161f0141f2576605787d /gtk/gtkprintoperation-win32.c
parent215eb8c9f1635551bbfb30dd4e010b6ea3d871b4 (diff)
downloadgtk+-a42107389f1ff4097b0671f2d74819bd531b3c29.tar.gz
Set win32 printer hard margins on print context
Diffstat (limited to 'gtk/gtkprintoperation-win32.c')
-rw-r--r--gtk/gtkprintoperation-win32.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk/gtkprintoperation-win32.c b/gtk/gtkprintoperation-win32.c
index b7210f0d8b..79f747f5da 100644
--- a/gtk/gtkprintoperation-win32.c
+++ b/gtk/gtkprintoperation-win32.c
@@ -436,6 +436,22 @@ get_default_printer (void)
return printer_name;
}
+static void
+set_hard_margins (GtkPrintOperation *op)
+{
+ double top, bottom, left, right;
+ GtkPrintOperationWin32 *op_win32 = op->priv->platform_data;
+
+ top = GetDeviceCaps (op_win32->hdc, PHYSICALOFFSETY);
+ bottom = GetDeviceCaps (op_win32->hdc, PHYSICALHEIGHT)
+ - GetDeviceCaps (op_win32->hdc, VERTRES) - top;
+ left = GetDeviceCaps (op_win32->hdc, PHYSICALOFFSETX);
+ right = GetDeviceCaps (op_win32->hdc, PHYSICALWIDTH)
+ - GetDeviceCaps (op_win32->hdc, HORZRES) - left;
+
+ _gtk_print_context_set_hard_margins (op->priv->print_context, top, bottom, left, right);
+}
+
void
win32_start_page (GtkPrintOperation *op,
GtkPrintContext *print_context,
@@ -470,6 +486,7 @@ win32_start_page (GtkPrintOperation *op,
GlobalUnlock (op_win32->devmode);
+ set_hard_margins (op);
x_off = GetDeviceCaps (op_win32->hdc, PHYSICALOFFSETX);
y_off = GetDeviceCaps (op_win32->hdc, PHYSICALOFFSETY);
cairo_surface_set_device_offset (op_win32->surface, -x_off, -y_off);
@@ -1565,6 +1582,8 @@ gtk_print_operation_run_without_dialog (GtkPrintOperation *op,
gtk_print_context_set_cairo_context (priv->print_context, cr, dpi_x, dpi_y);
cairo_destroy (cr);
+ set_hard_margins (op);
+
memset (&docinfo, 0, sizeof (DOCINFOW));
docinfo.cbSize = sizeof (DOCINFOW);
docinfo.lpszDocName = g_utf8_to_utf16 (op->priv->job_name, -1, NULL, NULL, NULL);
@@ -1789,7 +1808,9 @@ gtk_print_operation_run_with_dialog (GtkPrintOperation *op,
cr = cairo_create (op_win32->surface);
gtk_print_context_set_cairo_context (priv->print_context, cr, dpi_x, dpi_y);
cairo_destroy (cr);
-
+
+ set_hard_margins (op);
+
memset ( &docinfo, 0, sizeof (DOCINFOW));
docinfo.cbSize = sizeof (DOCINFOW);
docinfo.lpszDocName = g_utf8_to_utf16 (op->priv->job_name, -1, NULL, NULL, NULL);