]> www.fi.muni.cz Git - evince.git/blobdiff - djvu/djvu-document.c
Add missing files. Here too. Updated Norwegian bokmål translation.
[evince.git] / djvu / djvu-document.c
index e50fb8f48b93a699f0f8291f997fca6c494def48..ad18555960a6332d7720dc2e686b4f9ceb495d64 100644 (file)
 
 #include "djvu-document.h"
 #include "djvu-text.h"
+#include "djvu-links.h"
 #include "djvu-document-private.h"
 #include "ev-document-thumbnails.h"
 #include "ev-document-misc.h"
 #include "ev-document-find.h"
+#include "ev-document-links.h"
 
 #include <libdjvu/ddjvuapi.h>
+#include <libdjvu/miniexp.h>
 #include <gtk/gtk.h>
 #include <gdk-pixbuf/gdk-pixbuf-core.h>
 #include <glib/gunicode.h>
@@ -47,6 +50,7 @@ typedef struct _DjvuDocumentClass DjvuDocumentClass;
 static void djvu_document_document_iface_init (EvDocumentIface *iface);
 static void djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface);
 static void djvu_document_find_iface_init (EvDocumentFindIface *iface);
+static void djvu_document_document_links_iface_init  (EvDocumentLinksIface *iface);
 
 G_DEFINE_TYPE_WITH_CODE 
     (DjvuDocument, djvu_document, G_TYPE_OBJECT, 
@@ -54,6 +58,7 @@ G_DEFINE_TYPE_WITH_CODE
       G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT, djvu_document_document_iface_init);    
       G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS, djvu_document_document_thumbnails_iface_init)
       G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_FIND, djvu_document_find_iface_init);
+      G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_LINKS, djvu_document_document_links_iface_init);
      });
 
 
@@ -142,10 +147,14 @@ djvu_document_get_page_size (EvDocument   *document,
 {
        DjvuDocument *djvu_document = DJVU_DOCUMENT (document);
         ddjvu_pageinfo_t info;
+       ddjvu_status_t r;
        
        g_return_if_fail (djvu_document->d_document);
        
-       while (ddjvu_document_get_pageinfo(djvu_document->d_document, page, &info) < DDJVU_JOB_OK)
+       while ((r = ddjvu_document_get_pageinfo(djvu_document->d_document, page, &info)) < DDJVU_JOB_OK)
+               djvu_handle_events(djvu_document, TRUE);
+
+       if (r >= DDJVU_JOB_FAILED)
                djvu_handle_events(djvu_document, TRUE);
 
         *width = info.width * SCALE_FACTOR; 
@@ -451,3 +460,19 @@ djvu_document_find_iface_init (EvDocumentFindIface *iface)
        iface->get_progress = djvu_document_find_get_progress;
         iface->cancel = djvu_document_find_cancel;
 }
+
+static GList *
+djvu_document_links_get_links (EvDocumentLinks *document_links,
+                              gint             page)
+{
+       return djvu_links_get_links (document_links, page, SCALE_FACTOR);
+}
+
+static void
+djvu_document_document_links_iface_init  (EvDocumentLinksIface *iface)
+{
+       iface->has_document_links = djvu_links_has_document_links;
+       iface->get_links_model = djvu_links_get_links_model;
+       iface->get_links = djvu_document_links_get_links;
+       iface->find_link_dest = djvu_links_find_link_dest;
+}