summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sample/src/setup.xml6
-rw-r--r--src/generators.c1
-rw-r--r--src/items.c13
-rw-r--r--src/items.h1
-rw-r--r--src/jpeg-utils.cpp12
-rw-r--r--src/jpeg-utils.h1
-rw-r--r--src/setup.c2
-rw-r--r--src/setup.h1
8 files changed, 37 insertions, 0 deletions
diff --git a/sample/src/setup.xml b/sample/src/setup.xml
index a2bb2b2..e421438 100644
--- a/sample/src/setup.xml
+++ b/sample/src/setup.xml
@@ -72,6 +72,12 @@
<add_copyright>This is custom copyright string added to every picture.
And the second line.</add_copyright>
+ <!-- artist and camera owner name, stored in Exif.Image.Artist -->
+ <!-- (always added), Exif.Photo.CameraOwnerName (overriden when exists) -->
+ <!-- and Exif.Canon.OwnerName (overriden when exists). -->
+ <!-- ASCII encoding preferred. -->
+ <artist_name>John Doe</artist_name>
+
<!-- favicon support, the "type" attribute is optional, -->
<!-- please alter it to the right icon MIME type -->
<!-- http://www.w3.org/2005/10/howto-favicon -->
diff --git a/src/generators.c b/src/generators.c
index c1eaf5a..e08f0f5 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -297,6 +297,7 @@ metadata_apply_overrides (ExifData *exif_data,
g_free (exif_data->override_copyright);
exif_data->override_copyright = g_strdup (setup->add_copyright);
+ exif_data->override_artist_name = get_prop_string (items, item, PROP_METADATA_OVERRIDE_ARTIST_NAME, setup->meta_artist_name);
exif_data->timezone_shift = get_prop_int (items, item, PROP_METADATA_TZ_SHIFT, 0);
diff --git a/src/items.c b/src/items.c
index af36ab9..acd4373 100644
--- a/src/items.c
+++ b/src/items.c
@@ -187,6 +187,11 @@ parse_album_xml (TGallerySetup *setup, const gchar *filename, TPathInfo *path_in
}
prop_xml_attr_double (index->properties, PROP_METADATA_OVERRIDE_APERTURE, xml, "/gallery/general/metadata/override", "aperture");
prop_xml_attr_double (index->properties, PROP_METADATA_OVERRIDE_FOCAL_LENGTH, xml, "/gallery/general/metadata/override", "focal_length");
+ s = xml_file_get_node_value (xml, "/gallery/general/metadata/artist_name/text()");
+ if (s != NULL) {
+ properties_table_add_string (index->properties, PROP_METADATA_OVERRIDE_ARTIST_NAME, s);
+ g_free (s);
+ }
/* TODO: add support for lens name */
s = xml_file_get_node_attribute (xml, "/gallery/general/thumbnail", "crop");
@@ -352,6 +357,14 @@ parse_album_xml (TGallerySetup *setup, const gchar *filename, TPathInfo *path_in
/* TODO: add support for lens name */
g_free (s);
+ s = g_strdup_printf ("/gallery/items/*[%d]/metadata/artist_name/text()", i + 1);
+ s2 = xml_file_get_node_value (xml, s);
+ if (s2 != NULL) {
+ properties_table_add_string (item->properties, PROP_METADATA_OVERRIDE_ARTIST_NAME, s2);
+ g_free (s2);
+ }
+ g_free (s);
+
s = g_strdup_printf ("/gallery/items/*[%d]/thumbnail", i + 1);
s2 = xml_file_get_node_attribute (xml, s, "crop");
g_free (s);
diff --git a/src/items.h b/src/items.h
index b465a46..e62bc02 100644
--- a/src/items.h
+++ b/src/items.h
@@ -109,6 +109,7 @@ typedef enum {
PROP_METADATA_OVERRIDE_DATETIME,
PROP_METADATA_OVERRIDE_APERTURE,
PROP_METADATA_OVERRIDE_FOCAL_LENGTH,
+ PROP_METADATA_OVERRIDE_ARTIST_NAME,
} PropertyName;
/*
diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp
index 2d85d3b..ddac2c7 100644
--- a/src/jpeg-utils.cpp
+++ b/src/jpeg-utils.cpp
@@ -149,6 +149,7 @@ exif_data_free (ExifData *data)
if (data) {
g_free (data->override_copyright);
g_free (data->external_exif_data);
+ g_free (data->override_artist_name);
/* FIXME: free data->priv->image */
g_free (data->priv);
g_free (data);
@@ -914,6 +915,17 @@ modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail, gb
modified = TRUE;
}
}
+
+ if (exif->override_artist_name) {
+ if (! exifData.empty()) {
+ exifData["Exif.Image.Artist"] = exif->override_artist_name;
+ if (exifData["Exif.Photo.CameraOwnerName"].count() >= 1)
+ exifData["Exif.Photo.CameraOwnerName"] = exif->override_artist_name;
+ if (exifData["Exif.Canon.OwnerName"].count() >= 1)
+ exifData["Exif.Canon.OwnerName"] = exif->override_artist_name;
+ modified = TRUE;
+ }
+ }
}
diff --git a/src/jpeg-utils.h b/src/jpeg-utils.h
index bddb096..3c56eaf 100644
--- a/src/jpeg-utils.h
+++ b/src/jpeg-utils.h
@@ -56,6 +56,7 @@ typedef struct {
time_t override_datetime;
double override_aperture;
double override_focal_length;
+ gchar *override_artist_name;
gchar *external_exif_data;
TCropStyle thumbnail_crop_style;
TCropHint thumbnail_crop_hint;
diff --git a/src/setup.c b/src/setup.c
index 911a702..37a5382 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -113,6 +113,7 @@ parse_setup_xml (const gchar *filename)
setup->use_title_as_meta = xml_file_get_node_attribute_boolean_with_default (xml, "/gallery_setup/meta/use_title_as_meta", "value", TRUE);
setup->site_title = xml_file_get_node_attribute (xml, "/gallery_setup/meta/site", "title");
setup->add_copyright = xml_file_get_node_value (xml, "/gallery_setup/meta/add_copyright/text()");
+ setup->meta_artist_name = xml_file_get_node_value (xml, "/gallery_setup/meta/artist_name/text()");
setup->favicon_file = xml_file_get_node_value (xml, "/gallery_setup/meta/favicon/text()");
setup->favicon_type = xml_file_get_node_attribute (xml, "/gallery_setup/meta/favicon", "type");
@@ -586,6 +587,7 @@ free_setup_data (TGallerySetup *setup)
g_free (setup->meta_keywords);
g_free (setup->site_title);
g_free (setup->add_copyright);
+ g_free (setup->meta_artist_name);
g_free (setup->favicon_file);
g_free (setup->favicon_type);
g_free (setup->feed_filename);
diff --git a/src/setup.h b/src/setup.h
index 9459043..bf8f9a7 100644
--- a/src/setup.h
+++ b/src/setup.h
@@ -67,6 +67,7 @@ typedef struct {
gboolean use_title_as_meta;
gchar *site_title;
gchar *add_copyright;
+ gchar *meta_artist_name;
gchar *favicon_file;
gchar *favicon_type;