X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=backend%2Fev-document.h;h=e95ce96f277c080ddc8191a37392ead2fe25a05d;hb=848665b157185945d190a7a746d054d7f5d5e6e0;hp=e4ff783305bf65de7e96ae772965968b79378ab3;hpb=7acd15e0881622f4423f01212c1694af4d2b3f07;p=evince.git diff --git a/backend/ev-document.h b/backend/ev-document.h index e4ff7833..e95ce96f 100644 --- a/backend/ev-document.h +++ b/backend/ev-document.h @@ -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 * @@ -25,6 +26,10 @@ #include #include +#include "ev-link.h" +#include "ev-document-info.h" +#include "ev-render-context.h" + G_BEGIN_DECLS #define EV_TYPE_DOCUMENT (ev_document_get_type ()) @@ -34,54 +39,98 @@ 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; + + + +#define EV_DOCUMENT_ERROR ev_document_error_quark () +#define EV_DOC_MUTEX_LOCK (ev_document_doc_mutex_lock ()) +#define EV_DOC_MUTEX_UNLOCK (ev_document_doc_mutex_unlock ()) + +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, + EvRenderContext *rc); + EvOrientation (* get_orientation) (EvDocument *document); + void (* set_orientation) (EvDocument *document, + EvOrientation orientation); + 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); +GMutex *ev_document_get_doc_mutex (void); +void ev_document_doc_mutex_lock (void); +void ev_document_doc_mutex_unlock (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, + EvRenderContext *rc); +EvOrientation ev_document_get_orientation (EvDocument *document); +void ev_document_set_orientation (EvDocument *document, + EvOrientation orientation); + + +gint ev_rect_cmp (EvRectangle *a, + EvRectangle *b); + G_END_DECLS