[gthumb] Erase existing XMP tags, but not exif or iptc tags - bug 547620
- From: Michael J. Chudobiak <mjc src gnome org>
- To: svn-commits-list gnome org
- Subject: [gthumb] Erase existing XMP tags, but not exif or iptc tags - bug 547620
- Date: Mon, 11 May 2009 12:19:12 -0400 (EDT)
commit e4664fbfef826396fef27afed690dc76227c270b
Author: Michael J. Chudobiak <mjc avtechpulse com>
Date: Mon May 11 12:16:54 2009 -0400
Erase existing XMP tags, but not exif or iptc tags - bug 547620
---
libgthumb/gth-exiv2-utils.cpp | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/libgthumb/gth-exiv2-utils.cpp b/libgthumb/gth-exiv2-utils.cpp
index 8282db4..9d5fb08 100644
--- a/libgthumb/gth-exiv2-utils.cpp
+++ b/libgthumb/gth-exiv2-utils.cpp
@@ -597,14 +597,20 @@ write_metadata (const char *from_file,
GthMetadata *metadatum = (GthMetadata *) scan->data;
if (metadatum->full_name != NULL
&& metadatum->raw_value != NULL) {
- if (g_str_has_prefix (metadatum->full_name, "Exif"))
+ if (g_str_has_prefix (metadatum->full_name, "Exif")) {
ed[metadatum->full_name] = metadatum->raw_value;
-
- else if (g_str_has_prefix (metadatum->full_name, "Iptc"))
+ } else if (g_str_has_prefix (metadatum->full_name, "Iptc")) {
id[metadatum->full_name] = metadatum->raw_value;
-
- else if (g_str_has_prefix (metadatum->full_name, "Xmp"))
+ } else if (g_str_has_prefix (metadatum->full_name, "Xmp")) {
+ // Remove existing tags of the same type.
+ // Seems to be needed for storing category keywords.
+ // Not exactly sure why!
+ Exiv2::XmpData::iterator iter = xd.findKey (Exiv2::XmpKey (metadatum->full_name));
+ if (iter != xd.end ())
+ xd.erase (iter);
+ // Add tag
xd[metadatum->full_name] = metadatum->raw_value;
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]