[evince/gnome-3-14] Revert "print-operation: Fix centering of documents when printing with a manual scale"



commit 8d2c74fe51e3bf3de9349b8fba309fe78cce3c19
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Wed Jan 28 09:27:17 2015 +0100

    Revert "print-operation: Fix centering of documents when printing with a manual scale"
    
    This reverts commit ae7a5715131613955a37419b5da1d6d9f3c1cb1d.
    
    Fixed the centering of documents when using a manual scale, but it broke
    landscape printing, so reverting until we find a proper fix in both
    Evince and GTK+.

 libview/ev-print-operation.c |   60 ++++++++++++-----------------------------
 1 files changed, 18 insertions(+), 42 deletions(-)
---
diff --git a/libview/ev-print-operation.c b/libview/ev-print-operation.c
index 4a268b4..8d5aa39 100644
--- a/libview/ev-print-operation.c
+++ b/libview/ev-print-operation.c
@@ -1825,27 +1825,6 @@ _print_context_get_hard_margins (GtkPrintContext *context,
 }
 
 static void
-ev_print_operation_print_get_scaled_page_size (EvPrintOperationPrint *print,
-                                               gint                   page,
-                                               gdouble               *width,
-                                               gdouble               *height)
-{
-        GtkPrintSettings *settings;
-        gdouble           manual_scale;
-
-        ev_document_get_page_size (EV_PRINT_OPERATION (print)->document,
-                                   page, width, height);
-
-        settings = gtk_print_operation_get_print_settings (print->op);
-        manual_scale = gtk_print_settings_get_scale (settings) / 100.0;
-        if (manual_scale == 1.0)
-                return;
-
-        *width *= manual_scale;
-        *height *= manual_scale;
-}
-
-static void
 ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
                                    GtkPrintContext       *context,
                                    gint                   page)
@@ -1855,7 +1834,6 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
        gdouble           cr_width, cr_height;
        gdouble           width, height, scale;
        gdouble           x_scale, y_scale;
-        gdouble           x_offset, y_offset;
        gdouble           top, bottom, left, right;
 
        gtk_print_operation_set_defer_drawing (print->op);
@@ -1879,16 +1857,12 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
        cr = gtk_print_context_get_cairo_context (context);
        cr_width = gtk_print_context_get_width (context);
        cr_height = gtk_print_context_get_height (context);
-        ev_print_operation_print_get_scaled_page_size (print, page, &width, &height);
+       ev_document_get_page_size (op->document, page, &width, &height);
 
        if (print->page_scale == EV_SCALE_NONE) {
                /* Center document page on the printed page */
-               if (print->autorotate) {
-                        x_offset = (cr_width - width) / 2;
-                        y_offset = (cr_height - height) / 2;
-                        cairo_device_to_user (cr, &x_offset, &y_offset);
-                        cairo_translate (cr, x_offset, y_offset);
-                }
+               if (print->autorotate)
+                       cairo_translate (cr, (cr_width - width) / 2, (cr_height - height) / 2);
        } else {
                _print_context_get_hard_margins (context, &top, &bottom, &left, &right);
 
@@ -1901,27 +1875,29 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
                         scale = 1.0;
 
                if (print->autorotate) {
-                        x_offset = (cr_width - scale * width) / 2;
-                        y_offset = (cr_height - scale * height) / 2;
-                        cairo_device_to_user (cr, &x_offset, &y_offset);
-                        cairo_translate (cr, x_offset, y_offset);
+                       double left_right_sides, top_bottom_sides;
+
+                       cairo_translate (cr, (cr_width - scale * width) / 2,
+                                        (cr_height - scale * height) / 2);
 
                        /* Ensure document page is within the margins. The
                         * scale guarantees the document will fit in the
                         * margins so we just need to check each side and
                         * if it overhangs the margin, translate it to the
-                         * margin. */
-                       if (x_offset < left)
-                               cairo_translate (cr, left - x_offset, 0);
+                        * margin. */
+                       left_right_sides = (cr_width - width*scale)/2;
+                       top_bottom_sides = (cr_height - height*scale)/2;
+                       if (left_right_sides < left)
+                               cairo_translate (cr, left - left_right_sides, 0);
 
-                       if (x_offset < right)
-                               cairo_translate (cr, -(right - x_offset), 0);
+                       if (left_right_sides < right)
+                               cairo_translate (cr, -(right - left_right_sides), 0);
 
-                       if (y_offset < top)
-                               cairo_translate (cr, 0, top - y_offset);
+                       if (top_bottom_sides < top)
+                               cairo_translate (cr, 0, top - top_bottom_sides);
 
-                       if (y_offset < bottom)
-                               cairo_translate (cr, 0, -(bottom - y_offset));
+                       if (top_bottom_sides < bottom)
+                               cairo_translate (cr, 0, -(bottom - top_bottom_sides));
                } else {
                        cairo_translate (cr, left, top);
                }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]