Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pdf
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2005-03-07 13:51:12 (GMT)
committer Marco Pesenti Gritti <marco@src.gnome.org>2005-03-07 13:51:12 (GMT)
commitb006971d2c876b5ae62e2ed917496d370e90333c (patch)
tree911db733eee648633f2e8ff8f1bb575224870750 /pdf
parent6482ea76776dea4d146ba5af80e4241d6cf69808 (diff)
Rework API a bit. Add a border flag and change sizing logic (now the size
2005-03-07 Marco Pesenti Gritti <marco@gnome.org> * backend/ev-document-thumbnails.c: (ev_document_thumbnails_get_thumbnail): * backend/ev-document-thumbnails.h: Rework API a bit. Add a border flag and change sizing logic (now the size we specify applies to the bigger dimension). * pdf/pdf-document.cc: * pixbuf/pixbuf-document.c: (pixbuf_document_thumbnails_get_thumbnail): * shell/ev-sidebar-thumbnails.c: (do_one_iteration): * thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get): Adapt to the new API and do not draw a border for nautilus thumbnailer.
Diffstat (limited to 'pdf')
-rw-r--r--pdf/pdf-document.cc59
1 files changed, 37 insertions, 22 deletions
diff --git a/pdf/pdf-document.cc b/pdf/pdf-document.cc
index a749d36..2ed1f17 100644
--- a/pdf/pdf-document.cc
+++ b/pdf/pdf-document.cc
@@ -1240,7 +1240,8 @@ pdf_document_thumbnails_get_page_pixbuf (PdfDocument *pdf_document,
gdouble scale_factor,
gint page_num,
gint width,
- gint height)
+ gint height,
+ gboolean border)
{
SplashOutputDev *output;
GdkPixbuf *pixbuf;
@@ -1256,9 +1257,17 @@ pdf_document_thumbnails_get_page_pixbuf (PdfDocument *pdf_document,
72*scale_factor,
0, gTrue, gFalse);
- pixbuf = ev_document_misc_get_thumbnail_frame (output->getBitmap()->getWidth(),
- output->getBitmap()->getHeight(),
- NULL);
+ width = output->getBitmap()->getWidth();
+ height = output->getBitmap()->getHeight();
+
+ if (border) {
+ pixbuf = ev_document_misc_get_thumbnail_frame (width, height, NULL);
+ } else {
+ pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+ width + 4, height + 4);
+ gdk_pixbuf_fill (pixbuf, 0xffffffff);
+ }
+
bitmap_to_pixbuf (output->getBitmap(), pixbuf, 1, 1);
delete output;
@@ -1268,7 +1277,7 @@ pdf_document_thumbnails_get_page_pixbuf (PdfDocument *pdf_document,
static void
pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnails,
gint page,
- gint suggested_width,
+ gint size,
gint *width,
gint *height)
{
@@ -1276,9 +1285,8 @@ pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnail
Page *the_page;
Object the_thumb;
Thumb *thumb = NULL;
- gdouble page_ratio;
- the_page = pdf_document->doc->getCatalog ()->getPage (page);
+ the_page = pdf_document->doc->getCatalog ()->getPage (page + 1);
the_page->getThumb (&the_thumb);
if (!(the_thumb.isNull () || the_thumb.isNone())) {
@@ -1289,16 +1297,26 @@ pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnail
*width = thumb->getWidth ();
*height = thumb->getHeight ();
} else {
- page_ratio = the_page->getHeight () / the_page->getWidth ();
- *width = suggested_width;
- *height = (gint) (suggested_width * page_ratio);
+ double page_width, page_height;
+
+ page_width = the_page->getWidth ();
+ page_height = the_page->getHeight ();
+
+ if (page_width > page_height) {
+ *width = size;
+ *height = (int) (size * page_height / page_width);
+ } else {
+ *width = (int) (size * page_width / page_height);
+ *height = size;
+ }
}
}
static GdkPixbuf *
pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails,
gint page,
- gint width)
+ gint size,
+ gboolean border)
{
PdfDocument *pdf_document = PDF_DOCUMENT (document_thumbnails);
GdkPixbuf *thumbnail;
@@ -1306,17 +1324,11 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
Object the_thumb;
Thumb *thumb = NULL;
gboolean have_ethumbs = FALSE;
- gdouble page_ratio;
- gint dest_height;
/* getPage seems to want page + 1 for some reason; */
the_page = pdf_document->doc->getCatalog ()->getPage (page + 1);
the_page->getThumb(&the_thumb);
- page_ratio = the_page->getHeight () / the_page->getWidth ();
- dest_height = (gint) (width * page_ratio);
-
-
if (!(the_thumb.isNull () || the_thumb.isNone())) {
/* Build the thumbnail object */
thumb = new Thumb(pdf_document->doc->getXRef (),
@@ -1342,15 +1354,18 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
thumbnail = ev_document_misc_get_thumbnail_frame (-1, -1, tmp_pixbuf);
g_object_unref (tmp_pixbuf);
} else {
- gdouble scale_factor;
-
- scale_factor = (gdouble)width / the_page->getWidth ();
-
+ int width, height;
+ double scale_factor;
+
+ pdf_document_thumbnails_get_dimensions (document_thumbnails, page, size,
+ &width, &height);
+ scale_factor = width / the_page->getWidth ();
thumbnail = pdf_document_thumbnails_get_page_pixbuf (pdf_document,
scale_factor,
page,
width,
- dest_height);
+ height,
+ border);
}
return thumbnail;