diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-07-05 16:03:47 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-07-05 16:03:47 (GMT) |
commit | ffd47fa767f69c0b534037a6e067534d7d2345c9 (patch) | |
tree | bf8be20d659684c4a3a0fd0f1f4dc1d80015db47 /thumbnailer | |
parent | 4684716c489657edf098565eb54bdf86bad1b45c (diff) |
Support all mime types
2005-07-05 Marco Pesenti Gritti <mpg@redhat.com>
* Makefile.am:
* properties/Makefile.am:
* properties/ev-properties-main.c: (ev_properties_get_pages):
Support all mime types
* shell/Makefile.am:
* thumbnailer/Makefile.am:
* thumbnailer/evince-thumbnailer.c: (get_document_from_uri),
(evince_thumbnail_pngenc_get):
Use the document factory
Diffstat (limited to 'thumbnailer')
-rw-r--r-- | thumbnailer/Makefile.am | 2 | ||||
-rw-r--r-- | thumbnailer/evince-thumbnailer.c | 37 |
2 files changed, 34 insertions, 5 deletions
diff --git a/thumbnailer/Makefile.am b/thumbnailer/Makefile.am index 8a4e933..a2f7909 100644 --- a/thumbnailer/Makefile.am +++ b/thumbnailer/Makefile.am @@ -5,9 +5,7 @@ NULL= INCLUDES= \ -DDATADIR=\"$(pkgdatadir)\" \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/pdf \ -I$(top_srcdir)/backend \ - -I$(top_srcdir)/shell \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DGNOMEICONDIR=\""$(datadir)/pixmaps"\" \ $(THUMBNAILER_CFLAGS) \ diff --git a/thumbnailer/evince-thumbnailer.c b/thumbnailer/evince-thumbnailer.c index 9c67246..4e9f300 100644 --- a/thumbnailer/evince-thumbnailer.c +++ b/thumbnailer/evince-thumbnailer.c @@ -20,15 +20,42 @@ #include <libgnomevfs/gnome-vfs-uri.h> #include <libgnomevfs/gnome-vfs-utils.h> #include <libgnomevfs/gnome-vfs-init.h> +#include <libgnomevfs/gnome-vfs-ops.h> #include <ev-document.h> -#include <ev-document-types.h> #include <ev-document-thumbnails.h> +#include <ev-document-factory.h> #include <string.h> #define THUMBNAIL_SIZE 128 +static EvDocument * +get_document_from_uri (const char *uri, gboolean slow, gchar **mime_type) +{ + EvDocument *document = NULL; + GnomeVFSFileInfo *info; + GnomeVFSResult result; + + info = gnome_vfs_file_info_new (); + result = gnome_vfs_get_file_info (uri, info, + GNOME_VFS_FILE_INFO_GET_MIME_TYPE | + GNOME_VFS_FILE_INFO_FOLLOW_LINKS | + (slow ? GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE : 0)); + if (result != GNOME_VFS_OK || info->mime_type == NULL) { + goto end; + } + + document = ev_document_factory_get_document (info->mime_type); + if (mime_type != NULL) { + *mime_type = info->mime_type ? g_strdup (info->mime_type) : NULL; + } + +end: + gnome_vfs_file_info_unref (info); + return document; +} + static gboolean evince_thumbnail_pngenc_get (const char *uri, const char *thumbnail, int size) { @@ -37,9 +64,13 @@ evince_thumbnail_pngenc_get (const char *uri, const char *thumbnail, int size) GdkPixbuf *pixbuf; char *mime_type = NULL; - document = ev_document_types_get_document (uri, &mime_type, &error); - if (document == NULL) + document = get_document_from_uri (uri, FALSE, &mime_type); + if (document == NULL) { + document = get_document_from_uri (uri, TRUE, &mime_type); + } + if (document == NULL) { return FALSE; + } if (!ev_document_load (document, uri, &error)) { if (error->domain == EV_DOCUMENT_ERROR && |