]> www.fi.muni.cz Git - evince.git/blobdiff - backend/ev-document.h
merge evince-threads branch
[evince.git] / backend / ev-document.h
index ebf60af636d13b0c9bb7d5a7060343f28ced84a5..be0d1dbfedb70d2e6e912e9f674f79d5b2a51b8b 100644 (file)
@@ -26,6 +26,8 @@
 #include <glib.h>
 #include <gdk/gdk.h>
 
+#include "ev-link.h"
+
 G_BEGIN_DECLS
 
 #define EV_TYPE_DOCUMENT           (ev_document_get_type ())
@@ -35,15 +37,30 @@ G_BEGIN_DECLS
 #define EV_IS_DOCUMENT_IFACE(k)            (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_DOCUMENT))
 #define EV_DOCUMENT_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EV_TYPE_DOCUMENT, EvDocumentIface))
 
-typedef struct _EvDocument     EvDocument;
-typedef struct _EvDocumentIface        EvDocumentIface;
+typedef struct _EvDocument       EvDocument;
+typedef struct _EvDocumentIface   EvDocumentIface;
+typedef struct _EvPageCache       EvPageCache;
+typedef struct _EvPageCacheClass  EvPageCacheClass;
+
+#include "ev-page-cache.h"
+
+
+#define EV_DOCUMENT_ERROR ev_document_error_quark ()
+#define EV_DOC_MUTEX (ev_document_get_doc_mutex ())
+
+typedef enum
+{
+       EV_DOCUMENT_ERROR_INVALID,
+       EV_DOCUMENT_ERROR_ENCRYPTED
+} EvDocumentError;
 
 struct _EvDocumentIface
 {
        GTypeInterface base_iface;
 
        /* Signals */
-       void        (* changed)         (EvDocument *document);
+       void        (* page_changed)    (EvDocument *document);
+       void        (* scale_changed)    (EvDocument *document);
 
        /* Methods  */
        gboolean    (* load)            (EvDocument   *document,
@@ -64,18 +81,30 @@ struct _EvDocumentIface
                                         int           x,
                                         int           y);
        void        (* get_page_size)   (EvDocument   *document,
+                                        int           page,
                                         int          *width,
                                         int          *height);
        char      * (* get_text)        (EvDocument   *document,
                                         GdkRectangle *rect);
+       EvLink    * (* get_link)        (EvDocument   *document,
+                                        int           x,
+                                        int           y);
        void        (* render)          (EvDocument   *document,
                                         int           clip_x,
                                         int           clip_y,
                                         int           clip_width,
                                         int           clip_height);
+       GdkPixbuf *(* render_pixbuf)    (EvDocument   *document);
+
+
+
 };
 
-GType ev_document_get_type (void);
+GType        ev_document_get_type       (void);
+GQuark       ev_document_error_quark    (void);
+EvPageCache *ev_document_get_page_cache (EvDocument *document);
+GMutex      *ev_document_get_doc_mutex  (void);
+
 
 gboolean ev_document_load            (EvDocument   *document,
                                      const char   *uri,
@@ -96,16 +125,23 @@ void     ev_document_set_page_offset (EvDocument   *document,
                                      int           x,
                                      int           y);
 void     ev_document_get_page_size   (EvDocument   *document,
+                                     int           page,
                                      int          *width,
                                      int          *height);
 char    *ev_document_get_text       (EvDocument   *document,
                                      GdkRectangle *rect);
+EvLink  *ev_document_get_link       (EvDocument   *document,
+                                     int           x,
+                                     int           y);
 void     ev_document_render          (EvDocument   *document,
                                      int           clip_x,
                                      int           clip_y,
                                      int           clip_width,
                                      int           clip_height);
-void    ev_document_changed         (EvDocument *document);
+/* Quick hack to test threaded rendering */
+GdkPixbuf *ev_document_render_pixbuf   (EvDocument   *document);
+void    ev_document_page_changed    (EvDocument *document);
+void    ev_document_scale_changed   (EvDocument *document);
 
 G_END_DECLS