RE: GtkPrintOperation and margins
- From: "Ian Puleston" <ian underpressuredivers com>
- To: <gtk-list gnome org>
- Subject: RE: GtkPrintOperation and margins
- Date: Thu, 30 Nov 2006 14:42:36 -0800
Just in case anyone wants to crib that code to correct the GTK print margins
in Windows, note that there was a typo in it as I posted it. The first
PHYSICALOFFSETY should be PHYSICALOFFSETX. Sorry.
> -----Original Message-----
> From: gtk-list-bounces gnome org [mailto:gtk-list-bounces gnome org] On
> Behalf Of Ian Puleston
> Sent: Thursday, November 30, 2006 10:50 AM
>
> I added the function below into my code, called from the begin-print
> handler, to correct the margins in Windows, and with this they print at
> exactly 1" as they should
>
> /*
> * Sets the print margins.
> *
> * In Windows this needs to be called after the printer has been selected
> *
> * Margins are in inches
> */
> void
> setPrintMargins(GtkPrintOperation *operation, gdouble topMargin,
> gdouble btmMargin, gdouble leftMargin)
> {
> GtkPageSetup *pageSetup;
>
> #ifdef _WIN32
> gdouble offset_x, offset_y;
> POINT pt;
> HDC hDc;
> GtkPrintSettings *settings;
> const gchar *printerName;
>
> settings = gtk_print_operation_get_print_settings(operation);
> printerName = gtk_print_settings_get_printer(settings);
>
> hDc = CreateDC("WINSPOOL", printerName, NULL, NULL);
> if (hDc)
> {
> pt.x = GetDeviceCaps(hDc, PHYSICALOFFSETY);
> pt.y = GetDeviceCaps(hDc, PHYSICALOFFSETY);
> /* Convert Windows logical units -> pixels and then -> inches */
> LPtoDP(hDc, &pt, 1);
> offset_x = (gdouble)pt.x / (gdouble)GetDeviceCaps(hDc,
> LOGPIXELSX);
> offset_y = (gdouble)pt.y / (gdouble)GetDeviceCaps(hDc,
> LOGPIXELSY);
>
> topMargin -= offset_y;
> leftMargin -= offset_x;
> btmMargin -= offset_y;
> }
> #endif
>
> /* Set the margins */
> pageSetup = gtk_page_setup_new();
> gtk_page_setup_set_top_margin(pageSetup, topMargin, GTK_UNIT_INCH);
> gtk_page_setup_set_left_margin(pageSetup, leftMargin, GTK_UNIT_INCH);
> gtk_page_setup_set_bottom_margin(pageSetup, btmMargin, GTK_UNIT_INCH);
> gtk_print_operation_set_default_page_setup(operation, pageSetup);
> }
>
>
>
> _______________________________________________
> gtk-list mailing list
> gtk-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-list
[
Date Prev][Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]