]> www.fi.muni.cz Git - evince.git/blobdiff - backend/ev-document.h
Cr 31 13:27:50 2005 Jonathan Blandford <jrb@redhat.com>
[evince.git] / backend / ev-document.h
index 083bd1ae5829cd4fe949e1356cc44d02b1e3c4cf..e5c91b713f7a156a7eb0f977f054a854f5054570 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,62 +37,92 @@ 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        (* page_changed)    (EvDocument *document);
+       void        (* scale_changed)    (EvDocument *document);
+
        /* Methods  */
-       gboolean    (* load)            (EvDocument *document,
-                                        const char *uri,
-                                        GError    **error);
-       int         (* get_n_pages)     (EvDocument *document);
-       void        (* set_page)        (EvDocument  *document,
-                                        int          page);
-       int         (* get_page)        (EvDocument  *document);
-       void        (* set_target)      (EvDocument  *document,
-                                        GdkDrawable *target);
-       void        (* set_scale)       (EvDocument  *document,
-                                        double       scale);
-       void        (* set_page_offset) (EvDocument  *document,
-                                        int          x,
-                                        int          y);
-       void        (* get_page_size)   (EvDocument  *document,
-                                        int         *width,
-                                        int         *height);
-       void        (* render)          (EvDocument  *document,
-                                        int          clip_x,
-                                        int          clip_y,
-                                        int          clip_width,
-                                        int          clip_height);
+       gboolean    (* load)            (EvDocument   *document,
+                                        const char   *uri,
+                                        GError      **error);
+       gboolean    (* save)            (EvDocument   *document,
+                                        const char   *uri,
+                                        GError      **error);
+       int         (* get_n_pages)     (EvDocument   *document);
+       void        (* set_page)        (EvDocument   *document,
+                                        int           page);
+       int         (* get_page)        (EvDocument   *document);
+       void        (* set_scale)       (EvDocument   *document,
+                                        double        scale);
+       void        (* get_page_size)   (EvDocument   *document,
+                                        int           page,
+                                        int          *width,
+                                        int          *height);
+       char      * (* get_page_label)  (EvDocument   *document,
+                                        int           page);
+       char      * (* get_text)        (EvDocument   *document,
+                                        GdkRectangle *rect);
+       EvLink    * (* get_link)        (EvDocument   *document,
+                                        int           x,
+                                        int           y);
+       GList     * (* get_links)       (EvDocument   *document);
+       GdkPixbuf * (* render_pixbuf)   (EvDocument   *document);
 };
 
-GType ev_document_get_type (void);
-
-gboolean ev_document_load            (EvDocument   *document,
-                                     const char   *uri,
-                                     GError      **error);
-int      ev_document_get_n_pages     (EvDocument   *document);
-void     ev_document_set_page        (EvDocument   *document,
-                                     int           page);
-int      ev_document_get_page        (EvDocument   *document);
-void     ev_document_set_target      (EvDocument   *document,
-                                     GdkDrawable  *target);
-void     ev_document_set_scale       (EvDocument   *document,
-                                     double        scale);
-void     ev_document_set_page_offset (EvDocument   *document,
-                                     int           x,
-                                     int           y);
-void     ev_document_get_page_size   (EvDocument   *document,
-                                     int          *width,
-                                     int          *height);
-void     ev_document_render          (EvDocument   *document,
-                                     int           clip_x,
-                                     int           clip_y,
-                                     int           clip_width,
-                                     int           clip_height);
+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,
+                                     GError       **error);
+gboolean   ev_document_save          (EvDocument    *document,
+                                     const char    *uri,
+                                     GError       **error);
+char      *ev_document_get_title     (EvDocument    *document);
+int        ev_document_get_n_pages   (EvDocument    *document);
+void       ev_document_set_page      (EvDocument    *document,
+                                     int            page);
+int        ev_document_get_page      (EvDocument    *document);
+void       ev_document_set_scale     (EvDocument    *document,
+                                     double         scale);
+void       ev_document_get_page_size (EvDocument    *document,
+                                     int            page,
+                                     int           *width,
+                                     int           *height);
+char      *ev_document_get_page_label(EvDocument    *document,
+                                    int             page);
+char      *ev_document_get_text      (EvDocument    *document,
+                                     GdkRectangle  *rect);
+EvLink    *ev_document_get_link      (EvDocument    *document,
+                                     int            x,
+                                     int            y);
+GList     *ev_document_get_links     (EvDocument    *document);
+GdkPixbuf *ev_document_render_pixbuf (EvDocument    *document);
+
 
 G_END_DECLS