]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-document.c
Move metadata manager initialisation and shutdown into EvApplication.
[evince.git] / libdocument / ev-document.c
index 1171509a3587ec8c29d259671821079c73967bca..aa7d1d2e70ff362ed38ebaff0de0d5d96d2009d0 100644 (file)
 
 #include "ev-document.h"
 
-#include "ev-backend-marshalers.h"
-
-static void ev_document_class_init (gpointer g_class);
-
-
 GMutex *ev_doc_mutex = NULL;
 GMutex *ev_fc_mutex = NULL;
 
-GType
-ev_document_get_type (void)
-{
-       static GType type = 0;
-
-       if (G_UNLIKELY (type == 0))
-       {
-               const GTypeInfo our_info =
-               {
-                       sizeof (EvDocumentIface),
-                       NULL,
-                       NULL,
-                       (GClassInitFunc)ev_document_class_init
-               };
-
-               type = g_type_register_static (G_TYPE_INTERFACE,
-                                              "EvDocument",
-                                              &our_info, (GTypeFlags)0);
-       }
-
-       return type;
-}
+EV_DEFINE_INTERFACE (EvDocument, ev_document, G_TYPE_OBJECT)
 
 GQuark
 ev_document_error_quark (void)
@@ -64,7 +38,7 @@ ev_document_error_quark (void)
 }
 
 static void
-ev_document_class_init (gpointer g_class)
+ev_document_class_init (EvDocumentIface *klass)
 {
 }
 
@@ -243,6 +217,39 @@ ev_document_render (EvDocument      *document,
        return retval;
 }
 
+/* EvDocumentInfo */
+EV_DEFINE_BOXED_TYPE (EvDocumentInfo, ev_document_info, ev_document_info_copy, ev_document_info_free)
+
+EvDocumentInfo *
+ev_document_info_copy (EvDocumentInfo *info)
+{
+       EvDocumentInfo *copy;
+       
+       g_return_val_if_fail (info != NULL, NULL);
+
+       copy = g_new0 (EvDocumentInfo, 1);
+       copy->title = info->title ? g_strdup (info->title) : NULL;
+       copy->format = info->format ? g_strdup (info->format) : NULL;
+       copy->author = info->author ? g_strdup (info->author) : NULL;
+       copy->subject = info->subject ? g_strdup (info->subject) : NULL;
+       copy->keywords = info->keywords ? g_strdup (info->keywords) : NULL;
+       copy->security = info->security ? g_strdup (info->security) : NULL;
+       copy->creator = info->creator ? g_strdup (info->creator) : NULL;
+       copy->producer = info->producer ? g_strdup (info->producer) : NULL;
+       copy->linearized = info->linearized ? g_strdup (info->linearized) : NULL;
+       
+       copy->creation_date = info->creation_date;
+       copy->modified_date = info->modified_date;
+       copy->layout = info->layout;
+       copy->mode = info->mode;
+       copy->ui_hints = info->ui_hints;
+       copy->permissions = info->permissions;
+       copy->n_pages = info->n_pages;
+       copy->fields_mask = info->fields_mask;
+
+       return copy;
+}
+
 void
 ev_document_info_free (EvDocumentInfo *info)
 {