]> www.fi.muni.cz Git - evince.git/blobdiff - backend/ev-document.h
s/GDate */GDate so we can just use g_free
[evince.git] / backend / ev-document.h
index 9d8b662c2936a233c2673a3e0a2c99a48fd6b2f5..47a91eef79622cbe3f12bd7be4bf3c38620d84bf 100644 (file)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */
 /*
  *  Copyright (C) 2000-2003 Marco Pesenti Gritti
  *
 
 #include <glib-object.h>
 #include <glib.h>
+#include <gdk/gdk.h>
+
+#include "ev-link.h"
+#include "ev-document-info.h"
 
 G_BEGIN_DECLS
 
@@ -33,54 +38,87 @@ 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;
+
+typedef struct {
+       double x1;
+       double y1;
+       double x2;
+       double y2;
+} EvRectangle;
 
 struct _EvDocumentIface
 {
        GTypeInterface base_iface;
 
        /* Methods  */
-       void        (* load)            (EvDocument *document,
-                                        const char *uri,
-                                        GError     *error);
-       int         (* get_n_pages)     (EvDocument *document);
-       void        (* set_page)        (EvDocument  *document,
-                                        int          page);
-       void        (* set_target)      (EvDocument  *document,
-                                        GdkDrawable *target);
-       void        (* set_page_rect)   (EvDocument  *document,
-                                        int          x,
-                                        int          y,
-                                        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        (* get_page_size)   (EvDocument   *document,
+                                        int           page,
+                                        double       *width,
+                                        double       *height);
+       char      * (* get_page_label)  (EvDocument   *document,
+                                        int           page);
+       gboolean    (* can_get_text)    (EvDocument   *document);
+       char      * (* get_text)        (EvDocument   *document,
+                                        int           page,
+                                        EvRectangle  *rect);
+       GList     * (* get_links)       (EvDocument   *document,
+                                        int           page);
+       GdkPixbuf * (* render_pixbuf)   (EvDocument   *document,
+                                        int           page,
+                                        double        scale);
+       EvDocumentInfo *(* get_info)    (EvDocument   *document);
 };
 
-GType ev_document_get_type (void);
-
-void 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);
-void ev_document_set_target    (EvDocument  *document,
-                               GdkDrawable *target);
-void ev_document_set_page_rect (EvDocument  *document,
-                               int          x,
-                               int          y,
-                               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);
+EvDocumentInfo *ev_document_get_info      (EvDocument     *document);
+gboolean       ev_document_load           (EvDocument     *document,
+                                           const char     *uri,
+                                           GError        **error);
+gboolean       ev_document_save           (EvDocument     *document,
+                                           const char     *uri,
+                                           GError        **error);
+int            ev_document_get_n_pages    (EvDocument     *document);
+void           ev_document_get_page_size  (EvDocument     *document,
+                                           int             page,
+                                           double         *width,
+                                           double         *height);
+char          *ev_document_get_page_label (EvDocument     *document,
+                                           int             page);
+gboolean       ev_document_can_get_text   (EvDocument     *document);
+char          *ev_document_get_text       (EvDocument     *document,
+                                           int             page,
+                                           EvRectangle    *rect);
+GList         *ev_document_get_links      (EvDocument     *document,
+                                           int             page);
+GdkPixbuf      *ev_document_render_pixbuf  (EvDocument     *document,
+                                           int             page,
+                                           double          scale);
 
 G_END_DECLS