From 4cd79453c07adefb912a4dbd0afb2e7c2722bd90 Mon Sep 17 00:00:00 2001 From: johnce Date: Wed, 5 Aug 2009 06:38:07 +0000 Subject: SPDocument->Document (bzr r8408) --- src/ui/dialog/print.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/dialog/print.cpp') diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index d15773ecb..198495f74 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -148,7 +148,7 @@ namespace Inkscape { namespace UI { namespace Dialog { -Print::Print(SPDocument *doc, SPItem *base) : +Print::Print(Document *doc, SPItem *base) : _doc (doc), _base (base) { -- cgit v1.2.3 From 51c2905fd3e99955db2d823b79abb763d8097028 Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Thu, 6 Aug 2009 14:17:17 +0000 Subject: Revert recent refactoring changes by johnce because they break the build, which cannot be fixed easily. (bzr r8422) --- src/ui/dialog/print.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/dialog/print.cpp') diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index 198495f74..d15773ecb 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -148,7 +148,7 @@ namespace Inkscape { namespace UI { namespace Dialog { -Print::Print(Document *doc, SPItem *base) : +Print::Print(SPDocument *doc, SPItem *base) : _doc (doc), _base (base) { -- cgit v1.2.3 From a36ae9f53eb376e246ff02d295796a6fead04eab Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Wed, 12 Aug 2009 06:45:56 +0000 Subject: Fix for Bug #373309 (Print has offset on page), by Adrian Johnson. (bzr r8469) --- src/ui/dialog/print.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/ui/dialog/print.cpp') diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index d15773ecb..214b1a6db 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -13,6 +13,7 @@ #endif #ifdef WIN32 #include +#include #endif #include @@ -31,7 +32,7 @@ static void -draw_page (GtkPrintOperation */*operation*/, +draw_page (GtkPrintOperation *operation, GtkPrintContext *context, gint /*page_nr*/, gpointer user_data) @@ -106,6 +107,24 @@ draw_page (GtkPrintOperation */*operation*/, cairo_surface_t *surface = cairo_get_target(cr); cairo_matrix_t ctm; cairo_get_matrix(cr, &ctm); +#ifdef WIN32 + //Gtk+ does not take the non printable area into account + //http://bugzilla.gnome.org/show_bug.cgi?id=381371 + // + // This workaround translates the origin from the top left of the + // printable area to the top left of the page. + GtkPrintSettings *settings = gtk_print_operation_get_print_settings(operation); + const gchar *printerName = gtk_print_settings_get_printer(settings); + HDC hdc = CreateDC("WINSPOOL", printerName, NULL, NULL); + if (hdc) { + cairo_matrix_t mat; + int x_off = GetDeviceCaps (hdc, PHYSICALOFFSETX); + int y_off = GetDeviceCaps (hdc, PHYSICALOFFSETY); + cairo_matrix_init_translate(&mat, -x_off, -y_off); + cairo_matrix_multiply (&ctm, &ctm, &mat); + DeleteDC(hdc); + } +#endif bool ret = ctx->setSurfaceTarget (surface, true, &ctm); if (ret) { ret = renderer.setupDocument (ctx, junk->_doc, TRUE, NULL); -- cgit v1.2.3 From 3c5b9a5d0a9df79c757435ad63514287cd5b211b Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Wed, 12 Aug 2009 14:00:19 +0000 Subject: Fix for Bug #166678 (Paper size or orientation are not used when printing) by Adrian Johnson. (bzr r8473) --- src/ui/dialog/print.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/ui/dialog/print.cpp') diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index 214b1a6db..d98d6a49e 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -188,12 +188,19 @@ Print::Print(SPDocument *doc, SPItem *base) : GtkPageSetup *page_setup = gtk_page_setup_new(); gdouble doc_width = sp_document_width(_doc) * PT_PER_PX; gdouble doc_height = sp_document_height(_doc) * PT_PER_PX; - GtkPaperSize *paper_size = gtk_paper_size_new_custom("custom", "custom", - doc_width, doc_height, GTK_UNIT_POINTS); + GtkPaperSize *paper_size; + if (sp_document_landscape(_doc)) { + gtk_page_setup_set_orientation (page_setup, GTK_PAGE_ORIENTATION_LANDSCAPE); + paper_size = gtk_paper_size_new_custom("custom", "custom", + doc_height, doc_width, GTK_UNIT_POINTS); + } else { + gtk_page_setup_set_orientation (page_setup, GTK_PAGE_ORIENTATION_PORTRAIT); + paper_size = gtk_paper_size_new_custom("custom", "custom", + doc_width, doc_height, GTK_UNIT_POINTS); + } + gtk_page_setup_set_paper_size (page_setup, paper_size); -#ifndef WIN32 gtk_print_operation_set_default_page_setup (_printop, page_setup); -#endif gtk_print_operation_set_use_full_page (_printop, TRUE); // set up signals -- cgit v1.2.3 From 9f4c787cd772c585ffa7be104bffc8ee62114728 Mon Sep 17 00:00:00 2001 From: bulia byak Date: Sat, 5 Sep 2009 22:01:24 +0000 Subject: patch by Adrian Johnson for 166678 (bzr r8561) --- src/ui/dialog/print.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/dialog/print.cpp') diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index d98d6a49e..f9db265d6 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -189,7 +189,7 @@ Print::Print(SPDocument *doc, SPItem *base) : gdouble doc_width = sp_document_width(_doc) * PT_PER_PX; gdouble doc_height = sp_document_height(_doc) * PT_PER_PX; GtkPaperSize *paper_size; - if (sp_document_landscape(_doc)) { + if (doc_width > doc_height) { gtk_page_setup_set_orientation (page_setup, GTK_PAGE_ORIENTATION_LANDSCAPE); paper_size = gtk_paper_size_new_custom("custom", "custom", doc_height, doc_width, GTK_UNIT_POINTS); -- cgit v1.2.3