[evince] Remove get_dimensions() from EvDocumentThumbnails interface
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] Remove get_dimensions() from EvDocumentThumbnails interface
- Date: Thu, 19 Aug 2010 13:44:31 +0000 (UTC)
commit e3ef2dccab9e03cd510a37ba7e64b681be38f65c
Author: Carlos Garcia Campos <carlosgc gnome org>
Date: Thu Aug 19 14:52:25 2010 +0200
Remove get_dimensions() from EvDocumentThumbnails interface
It was the same implementation in every backend.
backend/comics/comics-document.c | 21 --------
backend/djvu/djvu-document.c | 22 ---------
backend/dvi/dvi-document.c | 20 --------
backend/pdf/ev-poppler.cc | 46 ++++++------------
backend/pixbuf/pixbuf-document.c | 20 --------
backend/ps/ev-spectre.c | 23 ---------
backend/tiff/tiff-document.c | 22 ---------
libdocument/ev-document-thumbnails.c | 17 -------
libdocument/ev-document-thumbnails.h | 8 ---
shell/ev-sidebar-thumbnails.c | 87 ++++++++++++----------------------
10 files changed, 46 insertions(+), 240 deletions(-)
---
diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c
index 4d74385..9205b97 100644
--- a/backend/comics/comics-document.c
+++ b/backend/comics/comics-document.c
@@ -871,30 +871,9 @@ comics_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
}
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 aa0e595..ae4fb01 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 a4a3dc6..8487036 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 03931a6..dc253c7 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
@@ -1477,33 +1485,9 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
}
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 065fe49..978970d 100644
--- a/backend/pixbuf/pixbuf-document.c
+++ b/backend/pixbuf/pixbuf-document.c
@@ -176,29 +176,9 @@ pixbuf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
}
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 54807f0..256d9be 100644
--- a/backend/ps/ev-spectre.c
+++ b/backend/ps/ev-spectre.c
@@ -379,32 +379,9 @@ ps_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails,
}
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 9c113b4..80aec9b 100644
--- a/backend/tiff/tiff-document.c
+++ b/backend/tiff/tiff-document.c
@@ -447,31 +447,9 @@ tiff_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document,
}
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 9482e09..9ff10f8 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 bf663ee..b2779fc 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 4aaeeba..ef0e3a9 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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]