]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-document.h
Update news for 2.23.4 release.
[evince.git] / libdocument / ev-document.h
index 6e7232bb0d7686036cec931f476364ee76ace5d2..cfcccdbec72be67bbbc090aabf8e4ba8ac1c4358 100644 (file)
@@ -28,6 +28,7 @@
 #include <cairo.h>
 
 #include "ev-document-info.h"
+#include "ev-page.h"
 #include "ev-render-context.h"
 
 G_BEGIN_DECLS
@@ -78,12 +79,14 @@ struct _EvDocumentIface
                                                const char      *uri,
                                                GError         **error);
         int               (* get_n_pages)     (EvDocument      *document);
+       EvPage          * (* get_page)        (EvDocument      *document,
+                                              gint             index);
         void              (* get_page_size)   (EvDocument      *document,
-                                               int              page,
+                                               EvPage          *page,
                                                double          *width,
                                                double          *height);
         char            * (* get_page_label)  (EvDocument      *document,
-                                               int              page);
+                                               EvPage          *page);
         gboolean          (* has_attachments) (EvDocument      *document);
         GList           * (* get_attachments) (EvDocument      *document);
         cairo_surface_t * (* render)          (EvDocument      *document,
@@ -112,12 +115,14 @@ gboolean         ev_document_save             (EvDocument      *document,
                                                const char      *uri,
                                                GError         **error);
 int              ev_document_get_n_pages      (EvDocument      *document);
+EvPage          *ev_document_get_page         (EvDocument      *document,
+                                              gint             index);
 void             ev_document_get_page_size    (EvDocument      *document,
-                                               int              page,
+                                               EvPage          *page,
                                                double          *width,
                                                double          *height);
 char            *ev_document_get_page_label   (EvDocument      *document,
-                                               int              page);
+                                               EvPage          *page);
 gboolean         ev_document_has_attachments  (EvDocument      *document);
 GList           *ev_document_get_attachments  (EvDocument      *document);
 cairo_surface_t *ev_document_render           (EvDocument      *document,
@@ -126,6 +131,24 @@ cairo_surface_t *ev_document_render           (EvDocument      *document,
 gint            ev_rect_cmp                   (EvRectangle     *a,
                                                EvRectangle     *b);
 
+/* convenience macro to ease interface addition in the CODE
+ * section of EV_BACKEND_REGISTER_WITH_CODE (this macro relies on
+ * the g_define_type_id present within EV_BACKEND_REGISTER_WITH_CODE()).
+ * usage example:
+ * EV_BACKEND_REGISTER_WITH_CODE (PdfDocument, pdf_document,
+ *                          EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS,
+ *                                                 pdf_document_document_thumbnails_iface_init));
+ */
+#define EV_BACKEND_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) {                \
+       const GInterfaceInfo g_implement_interface_info = {                     \
+               (GInterfaceInitFunc) iface_init, NULL, NULL                     \
+       };                                                                      \
+       g_type_module_add_interface (module,                                    \
+                                    g_define_type_id,                          \
+                                    TYPE_IFACE,                                \
+                                    &g_implement_interface_info);              \
+}
+
 /*
  * Utility macro used to register backends
  *
@@ -174,8 +197,8 @@ register_evince_backend (GTypeModule *module)                                       \
                                            #BackendName,                       \
                                            &our_info,                          \
                                           (GTypeFlags)0);                      \
-                                                                               \
-       G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT,                                \
+                                                                               \
+       EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT,                       \
                                backend_name##_document_iface_init);             \
                                                                                \
        CODE                                                                    \