[evince] [libdocument] Add EvDocumentLicense to store information about the document license



commit b0f71f598fe56d88c43110d1e7fe7b7b396bbdaa
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Sun Oct 25 19:28:33 2009 +0100

    [libdocument] Add EvDocumentLicense to store information about the document license
    
    See bgo#349173

 libdocument/ev-document-info.h |   21 ++++++++++++-
 libdocument/ev-document.c      |   65 +++++++++++++++++++++++++++++++++++++++-
 2 files changed, 84 insertions(+), 2 deletions(-)
---
diff --git a/libdocument/ev-document-info.h b/libdocument/ev-document-info.h
index a75f681..eee6178 100644
--- a/libdocument/ev-document-info.h
+++ b/libdocument/ev-document-info.h
@@ -31,6 +31,7 @@
 G_BEGIN_DECLS
 
 typedef struct _EvDocumentInfo    EvDocumentInfo;
+typedef struct _EvDocumentLicense EvDocumentLicense;
 
 #define EV_TYPE_DOCUMENT_INFO (ev_document_info_get_type())
 
@@ -98,7 +99,9 @@ typedef enum
 	EV_DOCUMENT_INFO_PERMISSIONS = 1 << 13,
 	EV_DOCUMENT_INFO_N_PAGES = 1 << 14,
 	EV_DOCUMENT_INFO_SECURITY = 1 << 15,
-	EV_DOCUMENT_INFO_PAPER_SIZE = 1 << 16
+	EV_DOCUMENT_INFO_PAPER_SIZE = 1 << 16,
+	EV_DOCUMENT_INFO_LICENSE = 1 << 17,
+
 } EvDocumentInfoFields;
 
 struct _EvDocumentInfo
@@ -121,6 +124,7 @@ struct _EvDocumentInfo
 	int   n_pages;
 	double paper_height;
 	double paper_width;
+	EvDocumentLicense *license;
 
 	/* Mask of all the valid fields */
 	guint fields_mask;
@@ -130,6 +134,21 @@ GType           ev_document_info_get_type (void) G_GNUC_CONST;
 EvDocumentInfo *ev_document_info_copy     (EvDocumentInfo *info);
 void            ev_document_info_free     (EvDocumentInfo *info);
 
+/* EvDocumentLicense */
+#define EV_TYPE_DOCUMENT_LICENSE (ev_document_license_get_type())
+struct _EvDocumentLicense {
+	gchar *text;
+	gchar *uri;
+	gchar *web_statement;
+};
+GType              ev_document_license_get_type          (void) G_GNUC_CONST;
+EvDocumentLicense *ev_document_license_new               (void);
+EvDocumentLicense *ev_document_license_copy              (EvDocumentLicense *license);
+void               ev_document_license_free              (EvDocumentLicense *license);
+const gchar       *ev_document_license_get_text          (EvDocumentLicense *license);
+const gchar       *ev_document_license_get_uri           (EvDocumentLicense *license);
+const gchar       *ev_document_license_get_web_statement (EvDocumentLicense *license);
+
 G_END_DECLS
 
 #endif /* EV_DOCUMENT_INFO_H */
diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c
index 985fe80..b770f10 100644
--- a/libdocument/ev-document.c
+++ b/libdocument/ev-document.c
@@ -578,6 +578,8 @@ ev_document_info_copy (EvDocumentInfo *info)
 	copy->ui_hints = info->ui_hints;
 	copy->permissions = info->permissions;
 	copy->n_pages = info->n_pages;
+	copy->license = ev_document_license_copy (info->license);
+
 	copy->fields_mask = info->fields_mask;
 
 	return copy;
@@ -598,10 +600,71 @@ ev_document_info_free (EvDocumentInfo *info)
 	g_free (info->producer);
 	g_free (info->linearized);
 	g_free (info->security);
-	
+	ev_document_license_free (info->license);
+
 	g_free (info);
 }
 
+/* EvDocumentLicense */
+EV_DEFINE_BOXED_TYPE (EvDocumentLicense, ev_document_license, ev_document_license_copy, ev_document_license_free)
+
+EvDocumentLicense *
+ev_document_license_new (void)
+{
+	return g_new0 (EvDocumentLicense, 1);
+}
+
+EvDocumentLicense *
+ev_document_license_copy (EvDocumentLicense *license)
+{
+	EvDocumentLicense *new_license;
+
+	if (!license)
+		return NULL;
+
+	new_license = ev_document_license_new ();
+
+	if (license->text)
+		new_license->text = g_strdup (license->text);
+	if (license->uri)
+		new_license->uri = g_strdup (license->uri);
+	if (license->web_statement)
+		new_license->web_statement = g_strdup (license->web_statement);
+
+	return new_license;
+}
+
+void
+ev_document_license_free (EvDocumentLicense *license)
+{
+	if (!license)
+		return;
+
+	g_free (license->text);
+	g_free (license->uri);
+	g_free (license->web_statement);
+
+	g_free (license);
+}
+
+const gchar *
+ev_document_license_get_text (EvDocumentLicense *license)
+{
+	return license->text;
+}
+
+const gchar *
+ev_document_license_get_uri (EvDocumentLicense *license)
+{
+	return license->uri;
+}
+
+const gchar *
+ev_document_license_get_web_statement (EvDocumentLicense *license)
+{
+	return license->web_statement;
+}
+
 /* EvRectangle */
 EV_DEFINE_BOXED_TYPE (EvRectangle, ev_rectangle, ev_rectangle_copy, ev_rectangle_free)
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]