diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2007-02-16 17:27:12 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2007-02-16 17:27:12 (GMT) |
commit | 1d6150237848b4c1fede94ce23baa4fd8870fd93 (patch) | |
tree | 7a607e0263e6b40591b31885b561f2192b7b6695 /backend/ps | |
parent | 76f055907e4eab82025f28cd0e813eb39713bf5b (diff) |
Use an EvRenderContext for rendering thumbnails instead of a suggested
2007-02-16 Carlos Garcia Campos <carlosgc@gnome.org>
* backend/dvi/dvi-document.c:
(dvi_document_thumbnails_get_dimensions),
(dvi_document_thumbnails_get_thumbnail):
* backend/impress/impress-document.c:
(impress_document_thumbnails_get_thumbnail),
(impress_document_thumbnails_get_dimensions):
* backend/ps/ps-document.c: (ps_document_thumbnails_get_thumbnail),
(ps_document_thumbnails_get_dimensions):
* backend/djvu/djvu-document.c:
(djvu_document_thumbnails_get_dimensions),
(djvu_document_thumbnails_get_thumbnail):
* backend/tiff/tiff-document.c:
(tiff_document_thumbnails_get_thumbnail),
(tiff_document_thumbnails_get_dimensions):
* backend/pdf/ev-poppler.cc: (make_thumbnail_for_page),
(pdf_document_thumbnails_get_thumbnail),
(pdf_document_thumbnails_get_dimensions):
* backend/comics/comics-document.c:
(comics_document_thumbnails_get_thumbnail),
(comics_document_thumbnails_get_dimensions):
* backend/pixbuf/pixbuf-document.c:
(pixbuf_document_thumbnails_get_thumbnail),
(pixbuf_document_thumbnails_get_dimensions):
* libdocument/ev-document-thumbnails.[ch]:
(ev_document_thumbnails_get_thumbnail),
(ev_document_thumbnails_get_dimensions):
* libdocument/ev-document-misc.[ch]:
(ev_document_misc_get_thumbnail_frame):
* shell/ev-jobs.[ch]: (ev_job_thumbnail_dispose),
(ev_job_thumbnail_new), (ev_job_thumbnail_run):
* shell/ev-sidebar-thumbnails.c: (get_scale_for_page), (add_range),
(ev_sidebar_thumbnails_set_loading_icon), (refresh),
(ev_sidebar_thumbnails_refresh):
* shell/ev-window.c: (ev_window_setup_document):
* thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):
Use an EvRenderContext for rendering thumbnails instead of a suggested
width, so that different sized pages get sized proportionally.
svn path=/trunk/; revision=2332
Diffstat (limited to 'backend/ps')
-rw-r--r-- | backend/ps/ps-document.c | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/backend/ps/ps-document.c b/backend/ps/ps-document.c index d1b456d..0e79ec5 100644 --- a/backend/ps/ps-document.c +++ b/backend/ps/ps-document.c @@ -516,15 +516,11 @@ ps_document_render_thumbnail (PSDocument *ps_document) static GdkPixbuf * ps_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails, - gint page, - gint rotation, - gint size, + EvRenderContext *rc, gboolean border) { PSDocument *ps_document; GdkPixbuf *pixbuf = NULL; - gdouble page_width, page_height; - gdouble scale; ps_document = PS_DOCUMENT (document_thumbnails); @@ -543,19 +539,9 @@ ps_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails, ps_document->thumbs_mutex = g_mutex_new (); ps_document->thumbs_cond = g_cond_new (); - ps_document_get_page_size (EV_DOCUMENT (ps_document), page, - &page_width, &page_height); - scale = size / page_width; - - rotation = (rotation + ps_document_get_page_rotation (ps_document, page)) % 360; - - if (!ps_document->thumbs_rc) { - ps_document->thumbs_rc = ev_render_context_new (rotation, page, scale); - } else { - ev_render_context_set_page (ps_document->thumbs_rc, page); - ev_render_context_set_scale (ps_document->thumbs_rc, scale); - ev_render_context_set_rotation (ps_document->thumbs_rc, rotation); - } + if (ps_document->thumbs_rc) + g_object_unref (ps_document->thumbs_rc); + ps_document->thumbs_rc = g_object_ref (rc); ev_document_doc_mutex_unlock (); g_mutex_lock (ps_document->thumbs_mutex); @@ -572,7 +558,7 @@ ps_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails, if (border) { GdkPixbuf *border_pixbuf; - border_pixbuf = ev_document_misc_get_thumbnail_frame (-1, -1, rotation, pixbuf); + border_pixbuf = ev_document_misc_get_thumbnail_frame (-1, -1, pixbuf); g_object_unref (pixbuf); pixbuf = border_pixbuf; } @@ -582,8 +568,7 @@ ps_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails, static void ps_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnails, - gint page, - gint size, + EvRenderContext *rc, gint *width, gint *height) { @@ -593,10 +578,16 @@ ps_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnails ps_document = PS_DOCUMENT (document_thumbnails); ps_document_get_page_size (EV_DOCUMENT (ps_document), - page, + rc->page, &page_width, &page_height); - *width = size; - *height = (int) (size * page_height / page_width); + + 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 |