From: Carlos Garcia Campos Date: Thu, 19 Aug 2010 12:52:25 +0000 (+0200) Subject: Remove get_dimensions() from EvDocumentThumbnails interface X-Git-Tag: EVINCE_2_91_0~84 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=e3ef2dccab9e03cd510a37ba7e64b681be38f65c;p=evince.git Remove get_dimensions() from EvDocumentThumbnails interface It was the same implementation in every backend. --- diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c index 4d74385a..9205b974 100644 --- a/backend/comics/comics-document.c +++ b/backend/comics/comics-document.c @@ -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** diff --git a/backend/djvu/djvu-document.c b/backend/djvu/djvu-document.c index aa0e595d..ae4fb01a 100644 --- a/backend/djvu/djvu-document.c +++ b/backend/djvu/djvu-document.c @@ -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 */ diff --git a/backend/dvi/dvi-document.c b/backend/dvi/dvi-document.c index a4a3dc6d..84870365 100644 --- a/backend/dvi/dvi-document.c +++ b/backend/dvi/dvi-document.c @@ -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 */ diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 03931a6d..dc253c70 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -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; } diff --git a/backend/pixbuf/pixbuf-document.c b/backend/pixbuf/pixbuf-document.c index 065fe498..978970dd 100644 --- a/backend/pixbuf/pixbuf-document.c +++ b/backend/pixbuf/pixbuf-document.c @@ -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; } diff --git a/backend/ps/ev-spectre.c b/backend/ps/ev-spectre.c index 54807f07..256d9bef 100644 --- a/backend/ps/ev-spectre.c +++ b/backend/ps/ev-spectre.c @@ -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 */ diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index 9c113b49..80aec9b2 100644 --- a/backend/tiff/tiff-document.c +++ b/backend/tiff/tiff-document.c @@ -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 */ diff --git a/libdocument/ev-document-thumbnails.c b/libdocument/ev-document-thumbnails.c index 9482e09e..9ff10f8f 100644 --- a/libdocument/ev-document-thumbnails.c +++ b/libdocument/ev-document-thumbnails.c @@ -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); -} - diff --git a/libdocument/ev-document-thumbnails.h b/libdocument/ev-document-thumbnails.h index bf663eed..b2779fc3 100644 --- a/libdocument/ev-document-thumbnails.h +++ b/libdocument/ev-document-thumbnails.h @@ -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 diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c index 4aaeebab..ef0e3a91 100644 --- a/shell/ev-sidebar-thumbnails.c +++ b/shell/ev-sidebar-thumbnails.c @@ -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;