From 1d6150237848b4c1fede94ce23baa4fd8870fd93 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Fri, 16 Feb 2007 17:27:12 +0000 Subject: Use an EvRenderContext for rendering thumbnails instead of a suggested 2007-02-16 Carlos Garcia Campos * 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 --- (limited to 'libdocument') diff --git a/libdocument/ev-document-misc.c b/libdocument/ev-document-misc.c index fd6f449..89ff5fa 100644 --- a/libdocument/ev-document-misc.c +++ b/libdocument/ev-document-misc.c @@ -12,7 +12,6 @@ GdkPixbuf * ev_document_misc_get_thumbnail_frame (int width, int height, - int rotation, GdkPixbuf *source_pixbuf) { GdkPixbuf *retval; @@ -21,9 +20,6 @@ ev_document_misc_get_thumbnail_frame (int width, int i; int width_r, height_r; - rotation = rotation % 360; - - if (source_pixbuf) g_return_val_if_fail (GDK_IS_PIXBUF (source_pixbuf), NULL); @@ -31,15 +27,8 @@ ev_document_misc_get_thumbnail_frame (int width, width_r = gdk_pixbuf_get_width (source_pixbuf); height_r = gdk_pixbuf_get_height (source_pixbuf); } else { - if (rotation == 0 || rotation == 180) { - width_r = width; - height_r = height; - } else if (rotation == 90 || rotation == 270) { - width_r = height; - height_r = width; - } else { - g_assert_not_reached (); - } + width_r = width; + height_r = height; } /* make sure no one is passing us garbage */ diff --git a/libdocument/ev-document-misc.h b/libdocument/ev-document-misc.h index 41f1cae..5d84671 100644 --- a/libdocument/ev-document-misc.h +++ b/libdocument/ev-document-misc.h @@ -31,7 +31,6 @@ G_BEGIN_DECLS GdkPixbuf *ev_document_misc_get_thumbnail_frame (int width, int height, - int rotation, GdkPixbuf *source_pixbuf); void ev_document_misc_get_page_border_size (gint page_width, gint page_height, diff --git a/libdocument/ev-document-thumbnails.c b/libdocument/ev-document-thumbnails.c index c560cec..1ed1974 100644 --- a/libdocument/ev-document-thumbnails.c +++ b/libdocument/ev-document-thumbnails.c @@ -18,8 +18,6 @@ * */ -#include "config.h" - #include "ev-document-thumbnails.h" GType @@ -45,35 +43,34 @@ ev_document_thumbnails_get_type (void) } GdkPixbuf * -ev_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document, - gint page, - int rotation, - gint size, - gboolean border) +ev_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document, + EvRenderContext *rc, + gboolean border) { EvDocumentThumbnailsIface *iface; g_return_val_if_fail (EV_IS_DOCUMENT_THUMBNAILS (document), NULL); + g_return_val_if_fail (EV_IS_RENDER_CONTEXT (rc), NULL); iface = EV_DOCUMENT_THUMBNAILS_GET_IFACE (document); - return iface->get_thumbnail (document, page, rotation, size, border); + return iface->get_thumbnail (document, rc, border); } void ev_document_thumbnails_get_dimensions (EvDocumentThumbnails *document, - gint page, - gint suggested_width, + EvRenderContext *rc, gint *width, gint *height) { EvDocumentThumbnailsIface *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, page, suggested_width, width, height); + iface->get_dimensions (document, rc, width, height); } diff --git a/libdocument/ev-document-thumbnails.h b/libdocument/ev-document-thumbnails.h index 6e15a32..648c0eb 100644 --- a/libdocument/ev-document-thumbnails.h +++ b/libdocument/ev-document-thumbnails.h @@ -27,51 +27,39 @@ G_BEGIN_DECLS -#define EV_TYPE_DOCUMENT_THUMBNAILS (ev_document_thumbnails_get_type ()) -#define EV_DOCUMENT_THUMBNAILS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EV_TYPE_DOCUMENT_THUMBNAILS, EvDocumentThumbnails)) -#define EV_DOCUMENT_THUMBNAILS_IFACE(k) (G_TYPE_CHECK_CLASS_CAST((k), EV_TYPE_DOCUMENT_THUMBNAILS, EvDocumentThumbnailsIface)) -#define EV_IS_DOCUMENT_THUMBNAILS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EV_TYPE_DOCUMENT_THUMBNAILS)) -#define EV_IS_DOCUMENT_THUMBNAILS_IFACE(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_DOCUMENT_THUMBNAILS)) +#define EV_TYPE_DOCUMENT_THUMBNAILS (ev_document_thumbnails_get_type ()) +#define EV_DOCUMENT_THUMBNAILS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EV_TYPE_DOCUMENT_THUMBNAILS, EvDocumentThumbnails)) +#define EV_DOCUMENT_THUMBNAILS_IFACE(k) (G_TYPE_CHECK_CLASS_CAST((k), EV_TYPE_DOCUMENT_THUMBNAILS, EvDocumentThumbnailsIface)) +#define EV_IS_DOCUMENT_THUMBNAILS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EV_TYPE_DOCUMENT_THUMBNAILS)) +#define EV_IS_DOCUMENT_THUMBNAILS_IFACE(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_DOCUMENT_THUMBNAILS)) #define EV_DOCUMENT_THUMBNAILS_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EV_TYPE_DOCUMENT_THUMBNAILS, EvDocumentThumbnailsIface)) -typedef struct _EvDocumentThumbnails EvDocumentThumbnails; -typedef struct _EvDocumentThumbnailsIface EvDocumentThumbnailsIface; +typedef struct _EvDocumentThumbnails EvDocumentThumbnails; +typedef struct _EvDocumentThumbnailsIface EvDocumentThumbnailsIface; -struct _EvDocumentThumbnailsIface -{ +struct _EvDocumentThumbnailsIface { GTypeInterface base_iface; /* Methods */ GdkPixbuf * (* get_thumbnail) (EvDocumentThumbnails *document, - gint page, - gint rotation, - gint size, - gboolean border); + EvRenderContext *rc, + gboolean border); void (* get_dimensions) (EvDocumentThumbnails *document, - gint page, - gint suggested_width, - gint *width, - gint *height); + EvRenderContext *rc, + gint *width, + gint *height); }; -GType ev_document_thumbnails_get_type (void); - -/* FIXME: This is a little bit busted. We call get_thumbnail w/ a suggested - * width, but we should call it with a scale so that different sized pages get - * sized proportionally. - */ +GType ev_document_thumbnails_get_type (void) G_GNUC_CONST; GdkPixbuf *ev_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document, - gint page, - gint rotation, - gint size, + EvRenderContext *rc, gboolean border); void ev_document_thumbnails_get_dimensions (EvDocumentThumbnails *document, - gint page, - gint size, + EvRenderContext *rc, gint *width, gint *height); G_END_DECLS -#endif +#endif /* EV_DOCUMENT_THUMBNAILS_H */ -- cgit v0.9.1