From a50e3f1032fe4e868c92668477aea37bb86052d6 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sat, 25 Aug 2007 15:55:07 +0000 Subject: Adjust number of pages per row according to page orientation when printing 2007-08-25 Carlos Garcia Campos * backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_begin): * libdocument/ev-file-exporter.[ch]: (ev_file_exporter_get_capabilities): * shell/ev-jobs.[ch]: (ev_job_print_new), (ev_job_print_run): * shell/ev-window.c: (ev_window_print_dialog_response_cb): Adjust number of pages per row according to page orientation when printing 2 or 6 pages per sheet. svn path=/trunk/; revision=2641 --- (limited to 'backend/pdf') diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 8af07fd..cc6137b 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -1579,7 +1579,7 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, PdfDocument *pdf_document = PDF_DOCUMENT (exporter); PdfPrintContext *ctx; gdouble width, height; - gboolean change_orient = FALSE; + gboolean landscape, change_orient = FALSE; #ifdef HAVE_CAIRO_PRINT cairo_surface_t *surface = NULL; #endif @@ -1591,6 +1591,8 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, ctx->format = fc->format; ctx->pages_per_sheet = fc->pages_per_sheet; + landscape = (fc->orientation == EV_FILE_EXPORTER_LANDSCAPE); + switch (fc->pages_per_sheet) { default: case 1: @@ -1599,8 +1601,9 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, break; case 2: change_orient = TRUE; - ctx->pages_x = 2; - ctx->pages_y = 1; + landscape = !landscape; + ctx->pages_x = 1; + ctx->pages_y = 2; break; case 4: ctx->pages_x = 2; @@ -1608,8 +1611,9 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, break; case 6: change_orient = TRUE; - ctx->pages_x = 3; - ctx->pages_y = 2; + landscape = !landscape; + ctx->pages_x = 2; + ctx->pages_y = 3; break; case 9: ctx->pages_x = 3; @@ -1628,7 +1632,15 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, width = fc->paper_width; height = fc->paper_height; } + + if (landscape) { + gint tmp; + tmp = ctx->pages_x; + ctx->pages_x = ctx->pages_y; + ctx->pages_y = tmp; + } + ctx->page_width = width / ctx->pages_x; ctx->page_height = height / ctx->pages_y; -- cgit v0.9.1