]> www.fi.muni.cz Git - evince.git/commitdiff
Really make use of the orientation bit of the render context. Use the
authorMarco Pesenti Gritti <mpg@redhat.com>
Fri, 29 Jul 2005 14:17:57 +0000 (14:17 +0000)
committerMarco Pesenti Gritti <marco@src.gnome.org>
Fri, 29 Jul 2005 14:17:57 +0000 (14:17 +0000)
2005-07-29  Marco Pesenti Gritti  <mpg@redhat.com>

        * backend/ev-document-thumbnails.c:
        (ev_document_thumbnails_get_thumbnail):
        * backend/ev-document-thumbnails.h:
        * backend/ev-document.c:
        * backend/ev-document.h:
        * backend/ev-ps-exporter.c: (ev_ps_exporter_do_page):
        * backend/ev-ps-exporter.h:
        * pdf/ev-poppler.cc:
        * ps/ps-document.c: (ps_document_document_iface_init),
        (ps_document_ps_export_do_page):
        * shell/ev-jobs.c: (ev_job_thumbnail_new), (ev_job_thumbnail_run):
        * shell/ev-jobs.h:
        * shell/ev-page-cache.c: (ev_page_cache_get_size),
        (ev_page_cache_get):
        * shell/ev-page-cache.h:
        * shell/ev-pixbuf-cache.c: (check_job_size_and_unref),
        (add_job_if_needed), (ev_pixbuf_cache_add_jobs_if_needed),
        (ev_pixbuf_cache_set_page_range), (new_selection_pixbuf_needed):
        * shell/ev-pixbuf-cache.h:
        * shell/ev-print-job.c: (idle_print_handler):
        * shell/ev-sidebar-thumbnails.c: (add_range):
        * shell/ev-view.c: (view_update_range_and_current_page),
        (get_page_extents), (ev_view_size_request_dual_page),
        (ev_view_size_request_single_page), (draw_one_page),
        (clear_caches), (ev_view_set_orientation), (ev_view_rotate_right),
        (ev_view_rotate_left), (ev_view_zoom_for_size_presentation),
        (ev_view_zoom_for_size_dual_page),
        (ev_view_zoom_for_size_single_page), (compute_new_selection_text),
        (ev_view_select_all):
        * thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):
        * tiff/tiff-document.c: (tiff_document_get_page_size),
        (tiff_document_get_orientation), (rotate_pixbuf),
        (tiff_document_render_pixbuf), (tiff_document_document_iface_init),
        (tiff_document_thumbnails_get_thumbnail),
        (tiff_document_ps_export_do_page), (tiff_document_init):

        Really make use of the orientation bit of the render context.
        Use the render context in a few more places in the backend API.
        This regress orientation, but now it's done right. Will try to
        fix it up asap...

19 files changed:
ChangeLog
backend/ev-document-thumbnails.c
backend/ev-document-thumbnails.h
backend/ev-document.c
backend/ev-ps-exporter.c
backend/ev-ps-exporter.h
pdf/ev-poppler.cc
ps/ps-document.c
shell/ev-jobs.c
shell/ev-jobs.h
shell/ev-page-cache.c
shell/ev-page-cache.h
shell/ev-pixbuf-cache.c
shell/ev-pixbuf-cache.h
shell/ev-print-job.c
shell/ev-sidebar-thumbnails.c
shell/ev-view.c
thumbnailer/evince-thumbnailer.c
tiff/tiff-document.c

index 779e564109baff48ea706deb9b8e7b9823729f22..b6d26dccca32c21438ced49d8dc9b786eae2da69 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+2005-07-29  Marco Pesenti Gritti  <mpg@redhat.com>
+
+       * backend/ev-document-thumbnails.c:
+       (ev_document_thumbnails_get_thumbnail):
+       * backend/ev-document-thumbnails.h:
+       * backend/ev-document.c:
+       * backend/ev-document.h:
+       * backend/ev-ps-exporter.c: (ev_ps_exporter_do_page):
+       * backend/ev-ps-exporter.h:
+       * pdf/ev-poppler.cc:
+       * ps/ps-document.c: (ps_document_document_iface_init),
+       (ps_document_ps_export_do_page):
+       * shell/ev-jobs.c: (ev_job_thumbnail_new), (ev_job_thumbnail_run):
+       * shell/ev-jobs.h:
+       * shell/ev-page-cache.c: (ev_page_cache_get_size),
+       (ev_page_cache_get):
+       * shell/ev-page-cache.h:
+       * shell/ev-pixbuf-cache.c: (check_job_size_and_unref),
+       (add_job_if_needed), (ev_pixbuf_cache_add_jobs_if_needed),
+       (ev_pixbuf_cache_set_page_range), (new_selection_pixbuf_needed):
+       * shell/ev-pixbuf-cache.h:
+       * shell/ev-print-job.c: (idle_print_handler):
+       * shell/ev-sidebar-thumbnails.c: (add_range):
+       * shell/ev-view.c: (view_update_range_and_current_page),
+       (get_page_extents), (ev_view_size_request_dual_page),
+       (ev_view_size_request_single_page), (draw_one_page),
+       (clear_caches), (ev_view_set_orientation), (ev_view_rotate_right),
+       (ev_view_rotate_left), (ev_view_zoom_for_size_presentation),
+       (ev_view_zoom_for_size_dual_page),
+       (ev_view_zoom_for_size_single_page), (compute_new_selection_text),
+       (ev_view_select_all):
+       * thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):
+       * tiff/tiff-document.c: (tiff_document_get_page_size),
+       (tiff_document_get_orientation), (rotate_pixbuf),
+       (tiff_document_render_pixbuf), (tiff_document_document_iface_init),
+       (tiff_document_thumbnails_get_thumbnail),
+       (tiff_document_ps_export_do_page), (tiff_document_init):
+
+       Really make use of the orientation bit of the render context.
+       Use the render context in a few more places in the backend API.
+       This regress orientation, but now it's done right. Will try to
+       fix it up asap...
+
 2005-07-29  Marco Pesenti Gritti  <mpg@redhat.com>
 
        * shell/ev-view.c: (ensure_rectangle_is_visible):
index 260d623864edd7bbaa481ea5c8e4190855bd7761..9bf1695e24d31f0ffb4557f7e549388c5c808f17 100644 (file)
@@ -47,6 +47,7 @@ ev_document_thumbnails_get_type (void)
 GdkPixbuf *
 ev_document_thumbnails_get_thumbnail (EvDocumentThumbnails   *document,
                                      gint                    page,
+                                     EvOrientation           orientation,
                                      gint                    size,
                                      gboolean                border)
 {
@@ -55,7 +56,8 @@ ev_document_thumbnails_get_thumbnail (EvDocumentThumbnails   *document,
        g_return_val_if_fail (EV_IS_DOCUMENT_THUMBNAILS (document), NULL);
 
        iface = EV_DOCUMENT_THUMBNAILS_GET_IFACE (document);
-       return iface->get_thumbnail (document, page, size, border);
+
+       return iface->get_thumbnail (document, page, orientation, size, border);
 }
 
 void
index c84e4268bcdbd0abff7b9d843e476061d98168d4..ea77629b44572bbee2ab3bbdc26dbf23cc1c127f 100644 (file)
@@ -23,6 +23,8 @@
 
 #include <gdk-pixbuf/gdk-pixbuf.h>
 
+#include "ev-render-context.h"
+
 G_BEGIN_DECLS
 
 #define EV_TYPE_DOCUMENT_THUMBNAILS         (ev_document_thumbnails_get_type ())
@@ -42,6 +44,7 @@ struct _EvDocumentThumbnailsIface
         /* Methods  */
         GdkPixbuf *  (* get_thumbnail)  (EvDocumentThumbnails *document,
                                          gint                  page,
+                                        EvOrientation         orientation,
                                          gint                  size,
                                         gboolean              border);
         void         (* get_dimensions) (EvDocumentThumbnails *document,
@@ -60,6 +63,7 @@ GType      ev_document_thumbnails_get_type       (void);
 
 GdkPixbuf *ev_document_thumbnails_get_thumbnail  (EvDocumentThumbnails *document,
                                                   gint                  page,
+                                                 EvOrientation         orientation,
                                                   gint                  size,
                                                   gboolean              border);
 void       ev_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
index 3395bf7c4ac40173364190840fb53483db9fbeab..2778f7796c872fb58d93c820f770fe046d6f9201 100644 (file)
@@ -225,15 +225,6 @@ ev_document_get_orientation (EvDocument *document)
        return iface->get_orientation (document);
 }
 
-void
-ev_document_set_orientation (EvDocument     *document,
-                            EvOrientation   orientation)
-{
-       EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document);
-
-       iface->set_orientation (document, orientation);
-}
-
 void
 ev_document_info_free (EvDocumentInfo *info)
 {
index 09ed17c681d14e04df74195863521b9b76b9b814..56944a648261bc46bd33bf0295994b196bd00d70 100644 (file)
@@ -58,11 +58,11 @@ ev_ps_exporter_begin (EvPSExporter *exporter, const char *filename,
 }
 
 void
-ev_ps_exporter_do_page (EvPSExporter *exporter, int page)
+ev_ps_exporter_do_page (EvPSExporter *exporter, EvRenderContext *rc)
 {
        EvPSExporterIface *iface = EV_PS_EXPORTER_GET_IFACE (exporter);
 
-       iface->do_page (exporter, page);
+       iface->do_page (exporter, rc);
 }
 
 void
index 36d2613ac0c6d242da66d525f91afb02df561fd8..4115e3a813bde71d47113b1d4c2774817231c58b 100644 (file)
@@ -25,6 +25,8 @@
 
 #include <glib-object.h>
 
+#include "ev-render-context.h"
+
 G_BEGIN_DECLS
 
 #define EV_TYPE_PS_EXPORTER           (ev_ps_exporter_get_type ())
@@ -41,16 +43,16 @@ struct _EvPSExporterIface {
        GTypeInterface base_iface;
 
        /* Methods  */
-       void            (* begin)       (EvPSExporter *exporter,
-                                        const char   *filename,
-                                        int           first_page,
-                                        int           last_page,
-                                         double        paper_width,
-                                         double        paper_height,
-                                         gboolean      duplex);
-       void            (* do_page)     (EvPSExporter *exporter,
-                                        int           page);
-       void            (* end)         (EvPSExporter *exporter);
+       void            (* begin)       (EvPSExporter    *exporter,
+                                        const char      *filename,
+                                        int              first_page,
+                                        int              last_page,
+                                         double           paper_width,
+                                         double           paper_height,
+                                         gboolean         duplex);
+       void            (* do_page)     (EvPSExporter    *exporter,
+                                        EvRenderContext *rc);
+       void            (* end)         (EvPSExporter    *exporter);
 };
 
 GType  ev_ps_exporter_get_type (void);
@@ -58,7 +60,7 @@ void  ev_ps_exporter_begin    (EvPSExporter *exporter, const char *filename,
                                 int first_page, int last_page,
                                  double paper_width, double paper_height,
                                  gboolean duplex);
-void   ev_ps_exporter_do_page  (EvPSExporter *exporter, int page);
+void   ev_ps_exporter_do_page  (EvPSExporter *exporter, EvRenderContext *rc);
 void   ev_ps_exporter_end      (EvPSExporter *exporter);
 
 G_END_DECLS
index 2695e863a76ee63a6f2dd87b2b710e08c2818f25..08b811b3418079d2526b8ef40dc9428dc49c5b8b 100644 (file)
@@ -57,9 +57,6 @@ struct _PdfDocument
        PopplerPSFile *ps_file;
        gchar *password;
 
-       PopplerOrientation orientation;
-       gboolean orientation_set;
-
        PopplerFontInfo *font_info;
        PopplerFontsIter *fonts_iter;
        int fonts_scanned_pages;
@@ -252,11 +249,28 @@ pdf_document_get_n_pages (EvDocument *document)
 
 /* FIXME This should not be necessary, poppler should rember it */
 static void
-set_page_orientation (PdfDocument *pdf_document, PopplerPage *page)
+set_page_orientation (PdfDocument *pdf_document, PopplerPage *page, EvOrientation orientation)
 {
-       if (pdf_document->orientation_set) {
-               poppler_page_set_orientation (page, pdf_document->orientation);
+       PopplerOrientation poppler_orientation;
+
+       switch (orientation) {
+               case EV_ORIENTATION_PORTRAIT:
+                       poppler_orientation = POPPLER_ORIENTATION_PORTRAIT;
+                       break;
+               case EV_ORIENTATION_LANDSCAPE:
+                       poppler_orientation = POPPLER_ORIENTATION_LANDSCAPE;
+                       break;
+               case EV_ORIENTATION_UPSIDEDOWN:
+                       poppler_orientation = POPPLER_ORIENTATION_UPSIDEDOWN;
+                       break;
+               case EV_ORIENTATION_SEASCAPE:
+                       poppler_orientation = POPPLER_ORIENTATION_SEASCAPE;
+                       break;
+               default:
+                       g_assert_not_reached ();
        }
+
+       poppler_page_set_orientation (page, poppler_orientation);
 }
 
 static void
@@ -269,7 +283,6 @@ pdf_document_get_page_size (EvDocument   *document,
        PopplerPage *poppler_page;
 
        poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
        poppler_page_get_size (poppler_page, width, height);
        g_object_unref (poppler_page);
 }
@@ -345,7 +358,7 @@ pdf_document_render_pixbuf (EvDocument   *document,
        pdf_document = PDF_DOCUMENT (document);
        poppler_page = poppler_document_get_page (pdf_document->document,
                                                  rc->page);
-       set_page_orientation (pdf_document, poppler_page);
+       set_page_orientation (pdf_document, poppler_page, rc->orientation);
 
        poppler_page_get_size (poppler_page, &width_points, &height_points);
        width = (int) ((width_points * rc->scale) + 0.5);
@@ -540,7 +553,6 @@ pdf_document_get_text (EvDocument *document, int page, EvRectangle *rect)
        char *text;
        
        poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
        g_return_val_if_fail (poppler_page != NULL, NULL);
 
        poppler_page_get_size (poppler_page, NULL, &height);
@@ -562,11 +574,7 @@ pdf_document_get_orientation (EvDocument *document)
        EvOrientation result;
        PdfDocument *pdf_document = PDF_DOCUMENT (document);
 
-       if (!pdf_document->orientation_set) {
-               pdf_document->orientation = get_document_orientation (pdf_document);
-       }
-       
-       switch (pdf_document->orientation) {
+       switch (get_document_orientation (pdf_document)) {
        case POPPLER_ORIENTATION_PORTRAIT:
                result = EV_ORIENTATION_PORTRAIT;
                break;
@@ -586,33 +594,6 @@ pdf_document_get_orientation (EvDocument *document)
        return result;
 }
 
-static void
-pdf_document_set_orientation (EvDocument *document, EvOrientation orientation)
-{
-       PdfDocument *pdf_document = PDF_DOCUMENT (document);
-       PopplerOrientation poppler_orientation;
-
-       switch (orientation) {
-       case EV_ORIENTATION_PORTRAIT:
-               poppler_orientation = POPPLER_ORIENTATION_PORTRAIT;
-               break;
-       case EV_ORIENTATION_LANDSCAPE:
-               poppler_orientation = POPPLER_ORIENTATION_LANDSCAPE;
-               break;
-       case EV_ORIENTATION_UPSIDEDOWN:
-               poppler_orientation = POPPLER_ORIENTATION_UPSIDEDOWN;
-               break;
-       case EV_ORIENTATION_SEASCAPE:
-               poppler_orientation = POPPLER_ORIENTATION_SEASCAPE;
-               break;
-       default:
-               g_assert_not_reached ();
-       }
-
-       pdf_document->orientation = poppler_orientation;
-       pdf_document->orientation_set = TRUE;
-}
-
 static void
 pdf_document_document_iface_init (EvDocumentIface *iface)
 {
@@ -626,7 +607,6 @@ pdf_document_document_iface_init (EvDocumentIface *iface)
        iface->get_text = pdf_document_get_text;
        iface->can_get_text = pdf_document_can_get_text;
        iface->get_info = pdf_document_get_info;
-       iface->set_orientation = pdf_document_set_orientation;
        iface->get_orientation = pdf_document_get_orientation;
 };
 
@@ -861,10 +841,11 @@ pdf_document_document_links_iface_init (EvDocumentLinksIface *iface)
 }
 
 static GdkPixbuf *
-make_thumbnail_for_size (PdfDocument *pdf_document,
-                        gint         page,
-                        gint         size,
-                        gboolean     border)
+make_thumbnail_for_size (PdfDocument   *pdf_document,
+                        gint           page,
+                        EvOrientation  orientation,
+                        gint           size,
+                        gboolean       border)
 {
        PopplerPage *poppler_page;
        GdkPixbuf *pixbuf, *sub_pixbuf;
@@ -873,10 +854,11 @@ make_thumbnail_for_size (PdfDocument *pdf_document,
        gdouble unscaled_width, unscaled_height;
 
        poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
+       set_page_orientation (pdf_document, poppler_page, orientation);
        g_return_val_if_fail (poppler_page != NULL, NULL);
 
-       pdf_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (pdf_document), page, size, &width, &height);
+       pdf_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (pdf_document), page,
+                                               size, &width, &height);
        poppler_page_get_size (poppler_page, &unscaled_width, &unscaled_height);
        scale = width / unscaled_width;
 
@@ -908,6 +890,7 @@ make_thumbnail_for_size (PdfDocument *pdf_document,
 static GdkPixbuf *
 pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails,
                                       gint                  page,
+                                      EvOrientation         orientation,
                                       gint                  size,
                                       gboolean              border)
 {
@@ -918,7 +901,7 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
        pdf_document = PDF_DOCUMENT (document_thumbnails);
 
        poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
+       set_page_orientation (pdf_document, poppler_page, orientation);
        g_return_val_if_fail (poppler_page != NULL, NULL);
 
        pixbuf = poppler_page_get_thumbnail (poppler_page);
@@ -934,7 +917,7 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
                }
        } else {
                /* There is no provided thumbnail.  We need to make one. */
-               pixbuf = make_thumbnail_for_size (pdf_document, page, size, border);
+               pixbuf = make_thumbnail_for_size (pdf_document, page, orientation, size, border);
        }
 
        g_object_unref (poppler_page);
@@ -955,7 +938,6 @@ pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnail
        
        pdf_document = PDF_DOCUMENT (document_thumbnails);
        poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
 
        g_return_if_fail (width != NULL);
        g_return_if_fail (height != NULL);
@@ -997,7 +979,6 @@ pdf_document_search_idle_callback (void *data)
 
        page = poppler_document_get_page (search->document->document,
                                          search->search_page);
-       set_page_orientation (pdf_document, page);
 
        ev_document_doc_mutex_lock ();
        matches = poppler_page_find_text (page, search->text);
@@ -1117,7 +1098,6 @@ pdf_document_find_get_result (EvDocumentFind *document_find,
                return FALSE;
 
        poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
        poppler_page_get_size (poppler_page, NULL, &height);
        rectangle->x1 = r->x1;
        rectangle->y1 = height - r->y2;
@@ -1200,15 +1180,15 @@ pdf_document_ps_exporter_begin (EvPSExporter *exporter, const char *filename,
 }
 
 static void
-pdf_document_ps_exporter_do_page (EvPSExporter *exporter, int page)
+pdf_document_ps_exporter_do_page (EvPSExporter *exporter, EvRenderContext *rc)
 {
        PdfDocument *pdf_document = PDF_DOCUMENT (exporter);
        PopplerPage *poppler_page;
 
        g_return_if_fail (pdf_document->ps_file != NULL);
 
-       poppler_page = poppler_document_get_page (pdf_document->document, page);
-       set_page_orientation (pdf_document, poppler_page);
+       poppler_page = poppler_document_get_page (pdf_document->document, rc->page);
+       set_page_orientation (pdf_document, poppler_page, rc->orientation);
        poppler_page_render_to_ps (poppler_page, pdf_document->ps_file);
        g_object_unref (poppler_page);
 }
@@ -1246,7 +1226,7 @@ pdf_selection_render_selection (EvSelection      *selection,
        pdf_document = PDF_DOCUMENT (selection);
        poppler_page = poppler_document_get_page (pdf_document->document,
                                                  rc->page);
-       set_page_orientation (pdf_document, poppler_page);
+       set_page_orientation (pdf_document, poppler_page, rc->orientation);
 
        poppler_page_get_size (poppler_page, &width_points, &height_points);
        width = (int) ((width_points * rc->scale) + 0.5);
@@ -1279,7 +1259,7 @@ pdf_selection_get_selection_region (EvSelection     *selection,
        pdf_document = PDF_DOCUMENT (selection);
        poppler_page = poppler_document_get_page (pdf_document->document,
                                                  rc->page);
-       set_page_orientation (pdf_document, poppler_page);
+       set_page_orientation (pdf_document, poppler_page, rc->orientation);
 
        retval = poppler_page_get_selection_region (poppler_page, rc->scale, (PopplerRectangle *) points);
        g_object_unref (poppler_page);
@@ -1299,7 +1279,7 @@ pdf_selection_get_selection_map (EvSelection     *selection,
        pdf_document = PDF_DOCUMENT (selection);
        poppler_page = poppler_document_get_page (pdf_document->document,
                                                  rc->page);
-       set_page_orientation (pdf_document, poppler_page);
+       set_page_orientation (pdf_document, poppler_page, rc->orientation);
 
        points.x1 = 0.0;
        points.y1 = 0.0;
index 4f38e6b02763d9121d98d9abf19fc8afc10d8886..28c43745359485eaaf5202c4322942bffeebc748 100644 (file)
@@ -1269,29 +1269,6 @@ ps_document_get_orientation (EvDocument *document)
        return orientation;
 }
 
-static void
-ps_document_set_orientation (EvDocument *document, EvOrientation orientation)
-{
-       PSDocument *ps = PS_DOCUMENT (document);
-
-       g_return_if_fail (ps != NULL);
-
-       switch (orientation) {
-               case EV_ORIENTATION_PORTRAIT:
-                       ps->orientation = GTK_GS_ORIENTATION_PORTRAIT;
-                       break;
-               case EV_ORIENTATION_LANDSCAPE:
-                       ps->orientation = GTK_GS_ORIENTATION_LANDSCAPE;
-                       break;
-               case EV_ORIENTATION_UPSIDEDOWN:
-                       ps->orientation = GTK_GS_ORIENTATION_UPSIDEDOWN;
-                       break;
-               case EV_ORIENTATION_SEASCAPE:
-                       ps->orientation = GTK_GS_ORIENTATION_SEASCAPE;
-                       break;
-       }
-}
-
 static void
 ps_document_document_iface_init (EvDocumentIface *iface)
 {
@@ -1301,7 +1278,6 @@ ps_document_document_iface_init (EvDocumentIface *iface)
        iface->get_n_pages = ps_document_get_n_pages;
        iface->get_page_size = ps_document_get_page_size;
        iface->get_info = ps_document_get_info;
-       iface->set_orientation = ps_document_set_orientation;
        iface->get_orientation = ps_document_get_orientation;
 }
 
@@ -1325,11 +1301,11 @@ ps_document_ps_export_begin (EvPSExporter *exporter, const char *filename,
 }
 
 static void
-ps_document_ps_export_do_page (EvPSExporter *exporter, int page)
+ps_document_ps_export_do_page (EvPSExporter *exporter, EvRenderContext *rc)
 {
        PSDocument *document = PS_DOCUMENT (exporter);
        
-       document->ps_export_pagelist[page] = 1;
+       document->ps_export_pagelist[rc->page] = 1;
 }
 
 static void
index 4cc0c258c017bf3d17a0b13ee261b3b01c233c1a..677b39f046961a8bee2e77e338227cbd526359b3 100644 (file)
@@ -299,9 +299,10 @@ ev_job_render_run (EvJobRender *job)
 }
 
 EvJob *
-ev_job_thumbnail_new (EvDocument *document,
-                     gint        page,
-                     gint        requested_width)
+ev_job_thumbnail_new (EvDocument   *document,
+                     gint          page,
+                     EvOrientation orientation,
+                     gint          requested_width)
 {
        EvJobThumbnail *job;
 
@@ -309,6 +310,7 @@ ev_job_thumbnail_new (EvDocument *document,
 
        EV_JOB (job)->document = g_object_ref (document);
        job->page = page;
+       job->orientation = orientation;
        job->requested_width = requested_width;
 
        return EV_JOB (job);
@@ -324,6 +326,7 @@ ev_job_thumbnail_run (EvJobThumbnail *job)
        job->thumbnail =
                ev_document_thumbnails_get_thumbnail (EV_DOCUMENT_THUMBNAILS (EV_JOB (job)->document),
                                                      job->page,
+                                                     job->orientation,
                                                      job->requested_width,
                                                      TRUE);
        EV_JOB (job)->finished = TRUE;
index 263f9a15f4194320f6e175c3f57bc00577d1094f..070fd4d5a768fe555e4c8133ae84a04e7b61b9fe 100644 (file)
@@ -135,6 +135,7 @@ struct _EvJobThumbnail
        EvJob parent;
 
        gint page;
+       EvOrientation orientation;
        gint requested_width;
        GdkPixbuf *thumbnail;
 };
@@ -192,6 +193,7 @@ void            ev_job_render_run         (EvJobRender     *thumbnail);
 GType           ev_job_thumbnail_get_type (void);
 EvJob          *ev_job_thumbnail_new      (EvDocument     *document,
                                           gint            page,
+                                          EvOrientation   orientation,
                                           gint            requested_width);
 void            ev_job_thumbnail_run      (EvJobThumbnail *thumbnail);
 
index 936328ffc9e90ab4be42ac53062ea4a4e960da6e..41acecfc30bd0be36c9f8c13c1d55cc17c749477 100644 (file)
@@ -322,11 +322,12 @@ ev_page_cache_get_title (EvPageCache *page_cache)
 }
 
 void
-ev_page_cache_get_size (EvPageCache *page_cache,
-                       gint         page,
-                       gfloat       scale,
-                       gint        *width,
-                       gint        *height)
+ev_page_cache_get_size (EvPageCache  *page_cache,
+                       gint          page,
+                       EvOrientation orientation,
+                       gfloat        scale,
+                       gint         *width,
+                       gint         *height)
 {
        g_return_if_fail (EV_IS_PAGE_CACHE (page_cache));
        g_return_if_fail (page >= 0 && page < page_cache->n_pages);
@@ -481,11 +482,3 @@ ev_page_cache_get (EvDocument *document)
 
        return page_cache;
 }
-
-void
-ev_page_cache_clear (EvDocument *document)
-{
-       g_return_if_fail (EV_IS_DOCUMENT (document));
-
-       g_object_set_data (G_OBJECT (document), PAGE_CACHE_STRING, NULL);
-}
index 2b270b0487eb7f3d451031be9f6730cf5156dba0..af8532e4aa83a87a3c575c64fac0c5fdb7f5a98d 100644 (file)
@@ -31,28 +31,29 @@ G_BEGIN_DECLS
 GType          ev_page_cache_get_type            (void) G_GNUC_CONST;
 
 /* Used by ev-document.c only */
-EvPageCache   *ev_page_cache_new                (EvDocument  *document);
-gint           ev_page_cache_get_n_pages         (EvPageCache *page_cache);
-const char    *ev_page_cache_get_title           (EvPageCache *page_cache);
-void           ev_page_cache_get_size            (EvPageCache *page_cache,
-                                                 gint         page,
-                                                 gfloat       scale,
-                                                 gint        *width,
-                                                 gint        *height);
-void           ev_page_cache_get_max_width      (EvPageCache *page_cache,
-                                                 gfloat       scale,
-                                                 gint        *width);
-void           ev_page_cache_get_max_height      (EvPageCache *page_cache,
-                                                 gfloat       scale,
-                                                 gint        *height);
-void           ev_page_cache_get_height_to_page (EvPageCache *page_cache,
-                                                 gint page,
-                                                 gfloat       scale,
-                                                 gint        *height,
-                                                 gint        *dual_height);
-gint           ev_page_cache_get_max_label_chars (EvPageCache *page_cache);
-char          *ev_page_cache_get_page_label      (EvPageCache *page_cache,
-                                                 gint         page);
+EvPageCache   *ev_page_cache_new                 (EvDocument   *document);
+gint           ev_page_cache_get_n_pages         (EvPageCache  *page_cache);
+const char    *ev_page_cache_get_title           (EvPageCache  *page_cache);
+void           ev_page_cache_get_size            (EvPageCache  *page_cache,
+                                                 gint          page,
+                                                 EvOrientation orientation,
+                                                 gfloat        scale,
+                                                 gint         *width,
+                                                 gint         *height);
+void           ev_page_cache_get_max_width      (EvPageCache   *page_cache,
+                                                 gfloat        scale,
+                                                 gint         *width);
+void           ev_page_cache_get_max_height      (EvPageCache  *page_cache,
+                                                 gfloat        scale,
+                                                 gint         *height);
+void           ev_page_cache_get_height_to_page  (EvPageCache   *page_cache,
+                                                                gint page,
+                                                 gfloat         scale,
+                                                 gint          *height,
+                                                 gint          *dual_height);
+gint           ev_page_cache_get_max_label_chars (EvPageCache   *page_cache);
+char          *ev_page_cache_get_page_label      (EvPageCache   *page_cache,
+                                                 gint           page);
 gboolean       ev_page_cache_has_nonnumeric_page_labels (EvPageCache *page_cache);
 const EvDocumentInfo *ev_page_cache_get_info            (EvPageCache *page_cache);
 
@@ -68,7 +69,6 @@ gboolean       ev_page_cache_next_page           (EvPageCache *page_cache);
 gboolean       ev_page_cache_prev_page           (EvPageCache *page_cache);
 
 EvPageCache   *ev_page_cache_get                (EvDocument *document);
-void          ev_page_cache_clear               (EvDocument *document);  
 
 G_END_DECLS
 
index 0d1507d8663d3d60711b48ec605f72dd012730fb..00d71d434e6b2c326c0c5471dc38f0e34f0d9545 100644 (file)
@@ -255,6 +255,7 @@ check_job_size_and_unref (CacheJobInfo *job_info,
 
        ev_page_cache_get_size (page_cache,
                                EV_JOB_RENDER (job_info->job)->rc->page,
+                               EV_JOB_RENDER (job_info->job)->rc->orientation,
                                scale,
                                &width, &height);
                                
@@ -478,6 +479,7 @@ add_job_if_needed (EvPixbufCache *pixbuf_cache,
                   CacheJobInfo  *job_info,
                   EvPageCache   *page_cache,
                   gint           page,
+                  EvOrientation  orientation,
                   gfloat         scale,
                   EvJobPriority  priority)
 {
@@ -489,9 +491,8 @@ add_job_if_needed (EvPixbufCache *pixbuf_cache,
        if (job_info->job)
                return;
 
-       ev_page_cache_get_size (page_cache,
-                               page, scale,
-                               &width, &height);
+       ev_page_cache_get_size (page_cache, page, orientation,
+                               scale, &width, &height);
 
        if (job_info->pixbuf &&
            gdk_pixbuf_get_width (job_info->pixbuf) == width &&
@@ -500,11 +501,11 @@ add_job_if_needed (EvPixbufCache *pixbuf_cache,
 
        /* make a new job now */
        if (job_info->rc == NULL) {
-               job_info->rc = ev_render_context_new (EV_ORIENTATION_PORTRAIT,
-                                                     page, scale);
+               job_info->rc = ev_render_context_new (orientation, page, scale);
        } else {
                ev_render_context_set_page (job_info->rc, page);
                ev_render_context_set_scale (job_info->rc, scale);
+               ev_render_context_set_orientation (job_info->rc, orientation);
        }
 
        /* Figure out what else we need for this job */
@@ -530,6 +531,7 @@ add_job_if_needed (EvPixbufCache *pixbuf_cache,
 
 static void
 ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
+                                   EvOrientation  orientation,
                                    gfloat         scale)
 {
        EvPageCache *page_cache;
@@ -544,7 +546,7 @@ ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
                page = pixbuf_cache->start_page + i;
 
                add_job_if_needed (pixbuf_cache, job_info,
-                                  page_cache, page, scale,
+                                  page_cache, page, orientation, scale,
                                   EV_JOB_PRIORITY_HIGH);
        }
 
@@ -553,7 +555,7 @@ ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
                page = pixbuf_cache->start_page - pixbuf_cache->preload_cache_size + i;
 
                add_job_if_needed (pixbuf_cache, job_info,
-                                  page_cache, page, scale,
+                                  page_cache, page, orientation, scale,
                                   EV_JOB_PRIORITY_LOW);
        }
 
@@ -562,7 +564,7 @@ ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
                page = pixbuf_cache->end_page + 1 + i;
 
                add_job_if_needed (pixbuf_cache, job_info,
-                                  page_cache, page, scale,
+                                  page_cache, page, orientation, scale,
                                   EV_JOB_PRIORITY_LOW);
        }
 
@@ -572,6 +574,7 @@ void
 ev_pixbuf_cache_set_page_range (EvPixbufCache *pixbuf_cache,
                                gint           start_page,
                                gint           end_page,
+                               EvOrientation  orientation,
                                gfloat         scale,
                                GList          *selection_list)
 {
@@ -598,7 +601,7 @@ ev_pixbuf_cache_set_page_range (EvPixbufCache *pixbuf_cache,
 
        /* Finally, we add the new jobs for all the sizes that don't have a
         * pixbuf */
-       ev_pixbuf_cache_add_jobs_if_needed (pixbuf_cache, scale);
+       ev_pixbuf_cache_add_jobs_if_needed (pixbuf_cache, orientation, scale);
 }
 
 GdkPixbuf *
@@ -651,8 +654,8 @@ new_selection_pixbuf_needed (EvPixbufCache *pixbuf_cache,
 
        if (job_info->selection) {
                page_cache = ev_page_cache_get (pixbuf_cache->document);
-               ev_page_cache_get_size (page_cache, page, scale,
-                                       &width, &height);
+               ev_page_cache_get_size (page_cache, page, job_info->rc->orientation,
+                                       scale, &width, &height);
                
                if (width != gdk_pixbuf_get_width (job_info->selection) ||
                    height != gdk_pixbuf_get_height (job_info->selection))
index 3081c3b15de222303fe11bb0b4201d959185592d..7af72436d8c1ec45442445a3e513cb0940f533b2 100644 (file)
@@ -52,6 +52,7 @@ EvPixbufCache *ev_pixbuf_cache_new                  (EvDocument    *document);
 void           ev_pixbuf_cache_set_page_range       (EvPixbufCache *pixbuf_cache,
                                                     gint           start_page,
                                                     gint           end_page,
+                                                    EvOrientation  orientation,
                                                     gfloat         scale,
                                                     GList          *selection_list);
 GdkPixbuf     *ev_pixbuf_cache_get_pixbuf           (EvPixbufCache *pixbuf_cache,
index 1f215c77c817b4b235c0a55a1e52ce03a529e9fd..b9aded8b539f7f3e01dac17cc612724a7db1fc3f 100644 (file)
@@ -269,13 +269,19 @@ idle_print_handler (EvPrintJob *job)
        }
 
        if (job->next_page <= job->last_page) {
+               EvRenderContext *rc;
 #if 0
                g_printerr ("Printing page %d\n", job->next_page);
 #endif
+               rc = ev_render_context_new (EV_ORIENTATION_PORTRAIT,
+                                           job->next_page, 1.0);
+
                ev_document_doc_mutex_lock ();
-               ev_ps_exporter_do_page (EV_PS_EXPORTER (job->document),
-                                       job->next_page);
+               ev_ps_exporter_do_page (EV_PS_EXPORTER (job->document), rc);
                ev_document_doc_mutex_unlock ();
+
+               g_object_unref (rc);
+
                job->next_page++;
                return TRUE;
        } else { /* no more pages */
index c2c07c84f51a285d263b392effb394744168e90f..f992d87e1873f852b864ba46d66d66983fcf521e 100644 (file)
@@ -229,7 +229,8 @@ add_range (EvSidebarThumbnails *sidebar_thumbnails,
                                    -1);
 
                if (job == NULL && !thumbnail_set) {
-                       job = (EvJobThumbnail *)ev_job_thumbnail_new (priv->document, page, THUMBNAIL_WIDTH);
+                       job = (EvJobThumbnail *)ev_job_thumbnail_new (priv->document, page, THUMBNAIL_WIDTH,
+                                                                     EV_ORIENTATION_PORTRAIT);
                        ev_job_queue_add_job (EV_JOB (job), EV_JOB_PRIORITY_HIGH);
                        g_object_set_data_full (G_OBJECT (job), "tree_iter",
                                                gtk_tree_iter_copy (&iter),
index 9ddabf7105cf6ed0a261656cb85c77cc426ef8a3..3d24c5028a95101f5d558b0f17318fc2c9fcf2c4 100644 (file)
@@ -149,6 +149,7 @@ struct _EvView {
        int find_result;
        int spacing;
 
+       EvOrientation orientation;
        double scale;
 
        gboolean continuous;
@@ -531,6 +532,7 @@ view_update_range_and_current_page (EvView *view)
        ev_pixbuf_cache_set_page_range (view->pixbuf_cache,
                                        view->start_page,
                                        view->end_page,
+                                       view->orientation,
                                        view->scale,
                                        view->selection_info.selections);
 }
@@ -786,6 +788,7 @@ get_page_extents (EvView       *view,
 
        /* Get the size of the page */
        ev_page_cache_get_size (view->page_cache, page,
+                               view->orientation,
                                view->scale,
                                &width, &height);
        compute_border (view, width, height, border);
@@ -831,6 +834,7 @@ get_page_extents (EvView       *view,
                        if (other_page < ev_page_cache_get_n_pages (view->page_cache)) {
                                ev_page_cache_get_size (view->page_cache,
                                                        other_page,
+                                                       view->orientation,
                                                        view->scale,
                                                        &width_2, &height_2);
                                if (width_2 > width)
@@ -1116,12 +1120,14 @@ ev_view_size_request_dual_page (EvView         *view,
        /* Find the largest of the two. */
        ev_page_cache_get_size (view->page_cache,
                                view->current_page,
+                               view->orientation,
                                view->scale,
                                &width, &height);
        if (view->current_page + 1 < ev_page_cache_get_n_pages (view->page_cache)) {
                gint width_2, height_2;
                ev_page_cache_get_size (view->page_cache,
                                        view->current_page + 1,
+                                       view->orientation,
                                        view->scale,
                                        &width_2, &height_2);
                if (width_2 > width) {
@@ -1153,6 +1159,7 @@ ev_view_size_request_single_page (EvView         *view,
 
        ev_page_cache_get_size (view->page_cache,
                                view->current_page,
+                               view->orientation,
                                view->scale,
                                &width, &height);
        compute_border (view, width, height, &border);
@@ -1605,7 +1612,8 @@ draw_one_page (EvView          *view,
 
        selection = find_selection_for_page (view, page);
        ev_page_cache_get_size (view->page_cache,
-                               page, view->scale,
+                               page, view->orientation,
+                               view->scale,
                                &width, &height);
        /* Render the document itself */
        real_page_area = *page_area;
@@ -2041,8 +2049,9 @@ clear_caches (EvView *view)
                view->pixbuf_cache = NULL;
        }
 
-       if (view->document) {
-               ev_page_cache_clear (view->document);
+       if (view->page_cache) {
+               g_object_unref (view->page_cache);
+               view->page_cache = NULL;
        }
 }
 
@@ -2290,10 +2299,7 @@ static void
 ev_view_set_orientation (EvView         *view,
                         EvOrientation   orientation)
 {
-       ev_document_set_orientation (view->document, orientation);
-
-       clear_caches (view);
-       setup_caches (view);
+       view->orientation = orientation;
 
        gtk_widget_queue_resize (GTK_WIDGET (view));
 }
@@ -2301,37 +2307,37 @@ ev_view_set_orientation (EvView         *view,
 void
 ev_view_rotate_right (EvView *view)
 {
-       EvOrientation orientation, new_orientation;
+       EvOrientation orientation;
 
-       orientation = ev_document_get_orientation (view->document);
-       if (orientation == EV_ORIENTATION_PORTRAIT) {
-               new_orientation = EV_ORIENTATION_LANDSCAPE;
-       } else if (orientation == EV_ORIENTATION_LANDSCAPE) {
-               new_orientation = EV_ORIENTATION_UPSIDEDOWN;
-       } else if (orientation == EV_ORIENTATION_UPSIDEDOWN) {
-               new_orientation = EV_ORIENTATION_SEASCAPE;
+       if (view->orientation == EV_ORIENTATION_PORTRAIT) {
+               orientation = EV_ORIENTATION_LANDSCAPE;
+       } else if (view->orientation == EV_ORIENTATION_LANDSCAPE) {
+               orientation = EV_ORIENTATION_UPSIDEDOWN;
+       } else if (view->orientation == EV_ORIENTATION_UPSIDEDOWN) {
+               orientation = EV_ORIENTATION_SEASCAPE;
        } else {
-               new_orientation = EV_ORIENTATION_PORTRAIT;
+               orientation = EV_ORIENTATION_PORTRAIT;
        }
-       ev_view_set_orientation (view, new_orientation);
+
+       ev_view_set_orientation (view, orientation);
 }
 
 void
 ev_view_rotate_left (EvView *view)
 {
-       EvOrientation orientation, new_orientation;
+       EvOrientation orientation;
 
-       orientation = ev_document_get_orientation (view->document);
-       if (orientation == EV_ORIENTATION_PORTRAIT) {
-               new_orientation = EV_ORIENTATION_SEASCAPE;
-       } else if (orientation == EV_ORIENTATION_SEASCAPE) {
-               new_orientation = EV_ORIENTATION_UPSIDEDOWN;
-       } else if (orientation == EV_ORIENTATION_UPSIDEDOWN) {
-               new_orientation = EV_ORIENTATION_LANDSCAPE;
+       if (view->orientation == EV_ORIENTATION_PORTRAIT) {
+               orientation = EV_ORIENTATION_SEASCAPE;
+       } else if (view->orientation == EV_ORIENTATION_SEASCAPE) {
+               orientation = EV_ORIENTATION_UPSIDEDOWN;
+       } else if (view->orientation == EV_ORIENTATION_UPSIDEDOWN) {
+               orientation = EV_ORIENTATION_LANDSCAPE;
        } else {
-               new_orientation = EV_ORIENTATION_PORTRAIT;
+               orientation = EV_ORIENTATION_PORTRAIT;
        }
-       ev_view_set_orientation (view, new_orientation);
+
+       ev_view_set_orientation (view, orientation);
 }
 
 static double
@@ -2384,6 +2390,7 @@ ev_view_zoom_for_size_presentation (EvView *view,
 
        ev_page_cache_get_size (view->page_cache,
                                view->current_page,
+                               view->orientation,
                                1.0,
                                &doc_width,
                                &doc_height);
@@ -2479,6 +2486,7 @@ ev_view_zoom_for_size_dual_page (EvView *view,
        /* Find the largest of the two. */
        ev_page_cache_get_size (view->page_cache,
                                view->current_page,
+                               view->orientation,
                                1.0,
                                &doc_width, &doc_height);
 
@@ -2486,6 +2494,7 @@ ev_view_zoom_for_size_dual_page (EvView *view,
                gint width_2, height_2;
                ev_page_cache_get_size (view->page_cache,
                                        other_page,
+                                       view->orientation,
                                        1.0,
                                        &width_2, &height_2);
                if (width_2 > doc_width)
@@ -2522,6 +2531,7 @@ ev_view_zoom_for_size_single_page (EvView *view,
 
        ev_page_cache_get_size (view->page_cache,
                                view->current_page,
+                               view->orientation,
                                1.0,
                                &doc_width,
                                &doc_height);
@@ -2866,6 +2876,7 @@ compute_new_selection_text (EvView   *view,
                GdkPoint *point;
 
                ev_page_cache_get_size (view->page_cache, i,
+                                       view->orientation,
                                        1.0, &width, &height);
 
                selection = g_new0 (EvViewSelection, 1);
@@ -2963,6 +2974,7 @@ ev_view_select_all (EvView *view)
                EvViewSelection *selection;
 
                ev_page_cache_get_size (view->page_cache,
+                                       view->orientation,
                                        i, 1.0, &width, &height);
 
                selection = g_new0 (EvViewSelection, 1);
index 4e9f3000db9283241503a035e883aa3cb286d898..9c9bff26e253c514b378179ed1adf073987391ea 100644 (file)
@@ -86,7 +86,8 @@ evince_thumbnail_pngenc_get (const char *uri, const char *thumbnail, int size)
        }
 
        pixbuf = ev_document_thumbnails_get_thumbnail
-                       (EV_DOCUMENT_THUMBNAILS (document), 0, size, FALSE);
+                       (EV_DOCUMENT_THUMBNAILS (document), 0,
+                        EV_ORIENTATION_PORTRAIT, size, FALSE);
        
        if (pixbuf != NULL) {
                const char *overlaid_icon_name = NULL;
index aef7aaac3bf82b6fb9f9bfc70d2ac697c40c3574..aba885112d1e3a798cc144f2ec88c409fc8dcdbc 100644 (file)
@@ -41,7 +41,6 @@ struct _TiffDocument
 
   TIFF *tiff;
   gint n_pages;
-  EvOrientation orientation;
   TIFF2PSContext *ps_export_ctx;
 };
 
@@ -171,40 +170,24 @@ tiff_document_get_page_size (EvDocument   *document,
   TIFFGetField (tiff_document->tiff, TIFFTAG_YRESOLUTION, &y_res);
   h = h * (x_res / y_res);
 
-  if (tiff_document->orientation == EV_ORIENTATION_PORTRAIT ||
-      tiff_document->orientation ==  EV_ORIENTATION_UPSIDEDOWN) {
-    *width = w;
-    *height = h;
-  } else {
-    *width = h;
-    *height = w;
-  }
+  *width = w;
+  *height = h;
+
   pop_handlers ();
 }
 
 static EvOrientation
 tiff_document_get_orientation (EvDocument *document)
 {
-       TiffDocument *tiff_document = TIFF_DOCUMENT (document);
-
-       return tiff_document->orientation;
-}
-
-static void
-tiff_document_set_orientation (EvDocument *document,
-                            EvOrientation   orientation)
-{
-       TiffDocument *tiff_document = TIFF_DOCUMENT (document);
-
-       tiff_document->orientation = orientation;
+       return EV_ORIENTATION_PORTRAIT;
 }
 
 static GdkPixbuf *
-rotate_pixbuf (EvDocument *document, GdkPixbuf *pixbuf)
+rotate_pixbuf (EvDocument *document, EvOrientation orientation, GdkPixbuf *pixbuf)
 {
        TiffDocument *tiff_document = TIFF_DOCUMENT (document);
 
-       switch (tiff_document->orientation)
+       switch (orientation)
        {
                case EV_ORIENTATION_LANDSCAPE:
                        return gdk_pixbuf_rotate_simple (pixbuf, 90);
@@ -298,7 +281,7 @@ tiff_document_render_pixbuf (EvDocument      *document,
                                           GDK_INTERP_BILINEAR);
   g_object_unref (pixbuf);
 
-  rotated_pixbuf = rotate_pixbuf (document, scaled_pixbuf);
+  rotated_pixbuf = rotate_pixbuf (document, rc->orientation, scaled_pixbuf);
   g_object_unref (scaled_pixbuf);
 
   return rotated_pixbuf;
@@ -350,12 +333,12 @@ tiff_document_document_iface_init (EvDocumentIface *iface)
        iface->render_pixbuf = tiff_document_render_pixbuf;
        iface->get_info = tiff_document_get_info;
        iface->get_orientation = tiff_document_get_orientation;
-       iface->set_orientation = tiff_document_set_orientation;
 }
 
 static GdkPixbuf *
 tiff_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
                                        gint                  page,
+                                       EvOrientation         orientation,
                                        gint                  size,
                                        gboolean              border)
 {
@@ -420,13 +403,13 @@ tiff_document_ps_export_begin (EvPSExporter *exporter, const char *filename,
 }
 
 static void
-tiff_document_ps_export_do_page (EvPSExporter *exporter, int page)
+tiff_document_ps_export_do_page (EvPSExporter *exporter, EvRenderContext *rc)
 {
        TiffDocument *document = TIFF_DOCUMENT (exporter);
 
        if (document->ps_export_ctx == NULL)
                return;
-       if (TIFFSetDirectory (document->tiff, page) != 1)
+       if (TIFFSetDirectory (document->tiff, rc->page) != 1)
                return;
        tiff2ps_process_page (document->ps_export_ctx, document->tiff,
                              0, 0, 0, 0, 0);
@@ -454,5 +437,4 @@ static void
 tiff_document_init (TiffDocument *tiff_document)
 {
   tiff_document->n_pages = -1;
-  tiff_document->orientation = EV_ORIENTATION_PORTRAIT;
 }