]> www.fi.muni.cz Git - evince.git/commitdiff
Remove get_dimensions() from EvDocumentThumbnails interface
authorCarlos Garcia Campos <carlosgc@gnome.org>
Thu, 19 Aug 2010 12:52:25 +0000 (14:52 +0200)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Thu, 19 Aug 2010 12:52:25 +0000 (14:52 +0200)
It was the same implementation in every backend.

backend/comics/comics-document.c
backend/djvu/djvu-document.c
backend/dvi/dvi-document.c
backend/pdf/ev-poppler.cc
backend/pixbuf/pixbuf-document.c
backend/ps/ev-spectre.c
backend/tiff/tiff-document.c
libdocument/ev-document-thumbnails.c
libdocument/ev-document-thumbnails.h
shell/ev-sidebar-thumbnails.c

index 4d74385a9ecb43061340c8a0047454bb5d00fac0..9205b974c8c214adf5f119bb7cd6e8980c488a20 100644 (file)
@@ -870,31 +870,10 @@ comics_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
        return thumbnail;
 }
 
-static void
-comics_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                          EvRenderContext      *rc,
-                                          gint                 *width,
-                                          gint                 *height)
-{
-       gdouble page_width, page_height;
-       
-       comics_document_get_page_size (EV_DOCUMENT (document), rc->page,
-                                      &page_width, &page_height);
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               *width = (gint) (page_height * rc->scale);
-               *height = (gint) (page_width * rc->scale);
-       } else {
-               *width = (gint) (page_width * rc->scale);
-               *height = (gint) (page_height * rc->scale);
-       }
-}
-
 static void
 comics_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = comics_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = comics_document_thumbnails_get_dimensions;
 }
 
 static char**
index aa0e595d78b3e1d9919798fde5186bf7e08d6427..ae4fb01a6c0723f3566a6eb8348a8bfe6f75f98a 100644 (file)
@@ -473,27 +473,6 @@ djvu_selection_iface_init (EvSelectionInterface *iface)
        iface->get_selected_text = djvu_selection_get_selected_text;
 }
 
-static void
-djvu_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                        EvRenderContext      *rc, 
-                                        gint                 *width,
-                                        gint                 *height)
-{
-       DjvuDocument *djvu_document = DJVU_DOCUMENT (document); 
-       gdouble page_width, page_height;
-       
-       djvu_document_get_page_size (EV_DOCUMENT(djvu_document), rc->page,
-                                    &page_width, &page_height);
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               *width = (gint) (page_height * rc->scale);
-               *height = (gint) (page_width * rc->scale);
-       } else {
-               *width = (gint) (page_width * rc->scale);
-               *height = (gint) (page_height * rc->scale);
-       }
-}
-
 static GdkPixbuf *
 djvu_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
                                        EvRenderContext      *rc,
@@ -544,7 +523,6 @@ static void
 djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = djvu_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = djvu_document_thumbnails_get_dimensions;
 }
 
 /* EvFileExporterIface */
index a4a3dc6d92b7a9fd4a437d4c4e908ad5d7fbec86..84870365a6741d192d29b90d1d4fd0434bba87dc 100644 (file)
@@ -267,25 +267,6 @@ dvi_document_class_init (DviDocumentClass *klass)
        ev_document_class->support_synctex = dvi_document_support_synctex;
 }
 
-static void
-dvi_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                       EvRenderContext      *rc, 
-                                       gint                 *width,
-                                       gint                 *height)
-{      
-       DviDocument *dvi_document = DVI_DOCUMENT (document);
-       gdouble page_width = dvi_document->base_width;
-       gdouble page_height = dvi_document->base_height;
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               *width = (gint) (page_height * rc->scale);
-               *height = (gint) (page_width * rc->scale);
-       } else {
-               *width = (gint) (page_width * rc->scale);
-               *height = (gint) (page_height * rc->scale);
-       }
-}
-
 static GdkPixbuf *
 dvi_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
                                       EvRenderContext      *rc,   
@@ -347,7 +328,6 @@ static void
 dvi_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = dvi_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = dvi_document_thumbnails_get_dimensions;
 }
 
 /* EvFileExporterIface */
index 03931a6d468e206a345ba2443e88a3589ceb6cc8..dc253c70d142b80d7202c70e8cc86f96d78f7c79 100644 (file)
@@ -129,10 +129,6 @@ static void pdf_document_file_exporter_iface_init        (EvFileExporterInterfac
 static void pdf_selection_iface_init                     (EvSelectionInterface           *iface);
 static void pdf_document_page_transition_iface_init      (EvDocumentTransitionInterface  *iface);
 static void pdf_document_text_iface_init                 (EvDocumentTextInterface        *iface);
-static void pdf_document_thumbnails_get_dimensions       (EvDocumentThumbnails           *document_thumbnails,
-                                                         EvRenderContext                *rc,
-                                                         gint                           *width,
-                                                         gint                           *height);
 static int  pdf_document_get_n_pages                    (EvDocument                     *document);
 
 static EvLinkDest *ev_link_dest_from_dest    (PdfDocument       *pdf_document,
@@ -1426,13 +1422,25 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
        PopplerPage *poppler_page;
        GdkPixbuf *pixbuf = NULL;
        GdkPixbuf *border_pixbuf;
+       double page_width, page_height;
        gint width, height;
 
        poppler_page = POPPLER_PAGE (rc->page->backend_page);
 
-       pdf_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (pdf_document),
-                                               rc, &width, &height);
-       
+       poppler_page_get_size (poppler_page,
+                              &page_width, &page_height);
+
+       width = MAX ((gint)(page_width * rc->scale + 0.5), 1);
+       height = MAX ((gint)(page_height * rc->scale + 0.5), 1);
+
+       if (rc->rotation == 90 || rc->rotation == 270) {
+               gint  temp;
+
+               temp = width;
+               width = height;
+               height = temp;
+       }
+
 #ifdef POPPLER_WITH_GDK
        pixbuf = poppler_page_get_thumbnail_pixbuf (poppler_page);
 #else
@@ -1476,34 +1484,10 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
        return pixbuf;
 }
 
-static void
-pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnails,
-                                       EvRenderContext      *rc,
-                                       gint                 *width,
-                                       gint                 *height)
-{
-       double page_width, page_height;
-       
-       poppler_page_get_size (POPPLER_PAGE (rc->page->backend_page),
-                              &page_width, &page_height);
-       
-       *width = MAX ((gint)(page_width * rc->scale + 0.5), 1);
-       *height = MAX ((gint)(page_height * rc->scale + 0.5), 1);
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               gint  temp;
-
-               temp = *width;
-               *width = *height;
-               *height = temp;
-       }
-}
-
 static void
 pdf_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = pdf_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = pdf_document_thumbnails_get_dimensions;
 }
 
 
index 065fe4987f08b08a3e714158077bab695ec700a2..978970ddbf6ee3f0116575e2d8be55c69b1b1d6c 100644 (file)
@@ -175,30 +175,10 @@ pixbuf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
         return rotated_pixbuf;
 }
 
-static void
-pixbuf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                          EvRenderContext      *rc, 
-                                          gint                 *width,
-                                          gint                 *height)
-{
-       PixbufDocument *pixbuf_document = PIXBUF_DOCUMENT (document);
-       gint p_width = gdk_pixbuf_get_width (pixbuf_document->pixbuf);
-       gint p_height = gdk_pixbuf_get_height (pixbuf_document->pixbuf);
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               *width = (gint) (p_height * rc->scale);
-               *height = (gint) (p_width * rc->scale);
-       } else {
-               *width = (gint) (p_width * rc->scale);
-               *height = (gint) (p_height * rc->scale);
-       }
-}
-
 static void
 pixbuf_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = pixbuf_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = pixbuf_document_thumbnails_get_dimensions;
 }
 
 
index 54807f07043de3340f7dcda2333e32bc64a1d495..256d9bef24ac456ea1ff3636a0aefcc910ae0c8a 100644 (file)
@@ -378,33 +378,10 @@ ps_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails,
        return pixbuf;
 }
 
-static void
-ps_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnails,
-                                      EvRenderContext      *rc, 
-                                      gint                 *width,
-                                      gint                 *height)
-{
-       PSDocument *ps = PS_DOCUMENT (document_thumbnails);
-       gdouble     page_width, page_height;
-
-       ps_document_get_page_size (EV_DOCUMENT (ps),
-                                  rc->page,
-                                  &page_width, &page_height);
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               *width = (gint) (page_height * rc->scale);
-               *height = (gint) (page_width * rc->scale);
-       } else {
-               *width = (gint) (page_width * rc->scale);
-               *height = (gint) (page_height * rc->scale);
-       }
-}
-
 static void
 ps_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = ps_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = ps_document_thumbnails_get_dimensions;
 }
        
 /* EvFileExporterIface */
index 9c113b49638591c04fdd830eab64e278e4d1110b..80aec9b240442d49d252edc7285821c098ea4789 100644 (file)
@@ -446,32 +446,10 @@ tiff_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
        return pixbuf;
 }
 
-static void
-tiff_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                        EvRenderContext      *rc, 
-                                        gint                 *width,
-                                        gint                 *height)
-{
-       gdouble page_width, page_height;
-
-       tiff_document_get_page_size (EV_DOCUMENT (document),
-                                    rc->page,
-                                    &page_width, &page_height);
-
-       if (rc->rotation == 90 || rc->rotation == 270) {
-               *width = (gint) (page_height * rc->scale);
-               *height = (gint) (page_width * rc->scale);
-       } else {
-               *width = (gint) (page_width * rc->scale);
-               *height = (gint) (page_height * rc->scale);
-       }
-}
-
 static void
 tiff_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = tiff_document_thumbnails_get_thumbnail;
-       iface->get_dimensions = tiff_document_thumbnails_get_dimensions;
 }
 
 /* postscript exporter implementation */
index 9482e09eb85fd9d98e2126a4e4f787c5933bbdb4..9ff10f8f265c5707db457ccebf12b38d05e46a67 100644 (file)
@@ -44,20 +44,3 @@ ev_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
        return iface->get_thumbnail (document, rc, border);
 }
 
-void
-ev_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                      EvRenderContext      *rc,
-                                      gint                 *width,
-                                      gint                 *height)
-{
-       EvDocumentThumbnailsInterface *iface;
-
-       g_return_if_fail (EV_IS_DOCUMENT_THUMBNAILS (document));
-       g_return_if_fail (EV_IS_RENDER_CONTEXT (rc));
-       g_return_if_fail (width != NULL);
-       g_return_if_fail (height != NULL);
-
-       iface = EV_DOCUMENT_THUMBNAILS_GET_IFACE (document);
-       iface->get_dimensions (document, rc, width, height);
-}
-
index bf663eed0b97b74e8c6225bafc2208ece288f7a8..b2779fc325aa5ec398dd858df22f955b91a7687f 100644 (file)
@@ -48,10 +48,6 @@ struct _EvDocumentThumbnailsInterface {
         GdkPixbuf *  (* get_thumbnail)  (EvDocumentThumbnails *document,
                                          EvRenderContext      *rc, 
                                          gboolean              border);
-        void         (* get_dimensions) (EvDocumentThumbnails *document,
-                                         EvRenderContext      *rc,
-                                         gint                 *width,
-                                         gint                 *height);
 };
 
 GType      ev_document_thumbnails_get_type       (void) G_GNUC_CONST;
@@ -59,10 +55,6 @@ GType      ev_document_thumbnails_get_type       (void) G_GNUC_CONST;
 GdkPixbuf *ev_document_thumbnails_get_thumbnail  (EvDocumentThumbnails *document,
                                                   EvRenderContext      *rc, 
                                                   gboolean              border);
-void       ev_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
-                                                  EvRenderContext      *rc,
-                                                  gint                 *width,
-                                                  gint                 *height);
 
 G_END_DECLS
 
index 4aaeebab191409a8b5cc404b8527859b6fb64c9a..ef0e3a91a126c14ddf6eb8acbd80eb52999dad41 100644 (file)
@@ -113,72 +113,47 @@ G_DEFINE_TYPE_EXTENDED (EvSidebarThumbnails,
 /* Thumbnails dimensions cache */
 #define EV_THUMBNAILS_SIZE_CACHE_KEY "ev-thumbnails-size-cache"
 
+static void
+get_thumbnail_size_for_page (EvDocument *document,
+                            guint       page,
+                            gint       *width,
+                            gint       *height)
+{
+       gdouble scale;
+       gdouble w, h;
+
+       ev_document_get_page_size (document, page, &w, &h);
+       scale = (gdouble)THUMBNAIL_WIDTH / w;
+
+       *width = MAX ((gint)(w * scale + 0.5), 1);
+       *height = MAX ((gint)(h * scale + 0.5), 1);
+}
+
 static EvThumbsSizeCache *
 ev_thumbnails_size_cache_new (EvDocument *document)
 {
        EvThumbsSizeCache *cache;
-       EvRenderContext *rc = NULL;
-       gint i, n_pages;
-       EvThumbsSize *thumb_size;
+       gint               i, n_pages;
+       EvThumbsSize      *thumb_size;
 
        cache = g_new0 (EvThumbsSizeCache, 1);
 
-       n_pages = ev_document_get_n_pages (document);
+       if (ev_document_is_page_size_uniform (document)) {
+               cache->uniform = TRUE;
+               get_thumbnail_size_for_page (document, 0,
+                                            &cache->uniform_width,
+                                            &cache->uniform_height);
+               return cache;
+       }
 
-       /* Assume all pages are the same size until proven otherwise */
-       cache->uniform = TRUE;
+       n_pages = ev_document_get_n_pages (document);
+       cache->sizes = g_new0 (EvThumbsSize, n_pages);
 
        for (i = 0; i < n_pages; i++) {
-               EvPage *page;
-               gdouble page_width, page_height;
-               gint    thumb_width = 0;
-               gint    thumb_height = 0;
-
-               page = ev_document_get_page (document, i);
-
-               ev_document_get_page_size (document, i, &page_width, &page_height);
-
-               if (!rc) {
-                       rc = ev_render_context_new (page, 0, (gdouble)THUMBNAIL_WIDTH / page_width);
-               } else {
-                       ev_render_context_set_page (rc, page);
-                       ev_render_context_set_scale (rc, (gdouble)THUMBNAIL_WIDTH / page_width);
-               }
-
-               ev_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (document),
-                                                      rc, &thumb_width, &thumb_height);
-
-               if (i == 0) {
-                       cache->uniform_width = thumb_width;
-                       cache->uniform_height = thumb_height;
-               } else if (cache->uniform &&
-                          (cache->uniform_width != thumb_width ||
-                           cache->uniform_height != thumb_height)) {
-                       /* It's a different thumbnail size.  Backfill the array. */
-                       int j;
-
-                       cache->sizes = g_new0 (EvThumbsSize, n_pages);
-
-                       for (j = 0; j < i; j++) {
-                               thumb_size = &(cache->sizes[j]);
-                               thumb_size->width = cache->uniform_width;
-                               thumb_size->height = cache->uniform_height;
-                       }
-                       cache->uniform = FALSE;
-               }
-
-               if (! cache->uniform) {
-                       thumb_size = &(cache->sizes[i]);
-
-                       thumb_size->width = thumb_width;
-                       thumb_size->height = thumb_height;
-               }
-
-               g_object_unref (page);
-       }
-
-       if (rc) {
-               g_object_unref (rc);
+               thumb_size = &(cache->sizes[i]);
+               get_thumbnail_size_for_page (document, i,
+                                            &thumb_size->width,
+                                            &thumb_size->height);
        }
 
        return cache;