]> www.fi.muni.cz Git - evince.git/commitdiff
[printing] Preserve aspect ratio when scaling page for printing
authorAdrian Johnson <ajohnson@redneon.com>
Sat, 24 Oct 2009 06:41:48 +0000 (17:11 +1030)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 25 Oct 2009 12:05:07 +0000 (13:05 +0100)
Fixes bgo#599468.

shell/ev-print-operation.c

index a6f8d53aecfeb818d9ac1ed0ea11cd0a6f0fcd99..60280b7ec3535eda01444c1a7b2f63e72374145f 100644 (file)
@@ -1651,6 +1651,7 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
        cairo_t          *cr;
        gdouble           cr_width, cr_height;
        gint              width, height;
+       gdouble           scale;
 
        gtk_print_operation_set_defer_drawing (print->op);
 
@@ -1672,7 +1673,11 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
        ev_page_cache_get_size (ev_page_cache_get (op->document),
                                page, 0, 1.0,
                                &width, &height);
-       cairo_scale (cr, cr_width / (gdouble)width, cr_height / (gdouble)height);
+       if (cr_width / (gdouble)width < cr_height / (gdouble)height)
+               scale = cr_width / (gdouble)width;
+       else
+               scale = cr_height / (gdouble)height;
+       cairo_scale (cr, scale, scale);
 
        ev_job_print_set_cairo (EV_JOB_PRINT (print->job_print), cr);
        ev_job_scheduler_push_job (print->job_print, EV_JOB_PRIORITY_NONE);