From: Carlos Garcia Campos Date: Sun, 25 Oct 2009 18:28:33 +0000 (+0100) Subject: [libdocument] Add EvDocumentLicense to store information about the document license X-Git-Tag: EVINCE_2_29_1~19 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=b0f71f598fe56d88c43110d1e7fe7b7b396bbdaa;p=evince.git [libdocument] Add EvDocumentLicense to store information about the document license See bgo#349173 --- diff --git a/libdocument/ev-document-info.h b/libdocument/ev-document-info.h index a75f6819..eee6178c 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 985fe803..b770f109 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)