Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/backend/pdf
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2007-08-25 15:55:07 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2007-08-25 15:55:07 (GMT)
commita50e3f1032fe4e868c92668477aea37bb86052d6 (patch)
tree47134389e1f81c406894d11eb731ed60ebd8acbe /backend/pdf
parentaa5d60b07e188daa855d269e7e9b2da4388ed070 (diff)
Adjust number of pages per row according to page orientation when printing
2007-08-25 Carlos Garcia Campos <carlosgc@gnome.org> * 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
Diffstat (limited to 'backend/pdf')
-rw-r--r--backend/pdf/ev-poppler.cc22
1 files changed, 17 insertions, 5 deletions
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;