[gexiv2] Add Function to save to XMP sidecar files



commit e28b1936b5bc77dc6d3534b748bb225e245be3e9
Author: Jens Georg <mail jensge org>
Date:   Mon Apr 10 22:30:37 2017 +0200

    Add Function to save to XMP sidecar files
    
    Signed-off-by: Jens Georg <mail jensge org>

 docs/reference/gexiv2-sections.txt |    1 +
 gexiv2/gexiv2-metadata.cpp         |   13 +++++++++++++
 gexiv2/gexiv2-metadata.h           |   15 +++++++++++++++
 3 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gexiv2-sections.txt b/docs/reference/gexiv2-sections.txt
index b84f450..6f6b198 100644
--- a/docs/reference/gexiv2-sections.txt
+++ b/docs/reference/gexiv2-sections.txt
@@ -23,6 +23,7 @@ gexiv2_metadata_open_path
 gexiv2_metadata_open_buf
 gexiv2_metadata_open_stream
 gexiv2_metadata_from_app1_segment
+gexiv2_metadata_save_external
 gexiv2_metadata_save_file
 gexiv2_metadata_save_stream
 gexiv2_metadata_has_tag
diff --git a/gexiv2/gexiv2-metadata.cpp b/gexiv2/gexiv2-metadata.cpp
index 13d685d..9f9b3cf 100644
--- a/gexiv2/gexiv2-metadata.cpp
+++ b/gexiv2/gexiv2-metadata.cpp
@@ -22,6 +22,7 @@
 #include <glib-object.h>
 #include <gio/gio.h>
 #include <exiv2/image.hpp>
+#include <exiv2/xmpsidecar.hpp>
 #include <exiv2/exif.hpp>
 #include <exiv2/iptc.hpp>
 #include <exiv2/xmp.hpp>
@@ -311,6 +312,18 @@ static gboolean gexiv2_metadata_save_internal (GExiv2Metadata *self, Exiv2::Imag
     return TRUE;
 }
 
+gboolean gexiv2_metadata_save_external (GExiv2Metadata *self, const gchar *path, GError **error) {
+    g_return_val_if_fail (GEXIV2_IS_METADATA (self), FALSE);
+
+    try {
+        return gexiv2_metadata_save_internal (self, Exiv2::ImageFactory::create(Exiv2::ImageType::xmp, 
path), error);
+    } catch (Exiv2::Error &e) {
+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
+    }
+
+    return FALSE;
+}
+
 gboolean gexiv2_metadata_save_file (GExiv2Metadata *self, const gchar *path, GError **error) {
     g_return_val_if_fail (GEXIV2_IS_METADATA (self), FALSE);
     
diff --git a/gexiv2/gexiv2-metadata.h b/gexiv2/gexiv2-metadata.h
index fd6b64b..768319b 100644
--- a/gexiv2/gexiv2-metadata.h
+++ b/gexiv2/gexiv2-metadata.h
@@ -267,6 +267,21 @@ gboolean           gexiv2_metadata_open_stream                     (GExiv2Metadata 
*self, ManagedStreamCall
 gboolean               gexiv2_metadata_from_app1_segment       (GExiv2Metadata *self, const guint8 *data, 
glong n_data, GError **error);
 
 /**
+ * gexiv2_metadata_save_external:
+ * @self: An instance of #GExiv2Metadata
+ * @path: Path to the file you want to save to.
+ * @error: (allow-none): A return location for a #GError or %NULL
+ *
+ * Saves the metadata to the specified using an XMP sidecar file.
+ *
+ * Returns: Boolean success indicator.
+ *
+ * Since: 0.10.6
+ */
+gboolean               gexiv2_metadata_save_external                   (GExiv2Metadata *self, const gchar 
*path, GError **error);
+
+
+/**
  * gexiv2_metadata_save_file:
  * @self: An instance of #GExiv2Metadata
  * @path: Path to the file you want to save to.


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