[gimp/gimp-attributes-wip: 70/73] restore old metadata api function calls



commit 2ad628d1d870a48c00a07b90672de4d670e69b03
Author: Hartmut Kuhse <hk_priv gmx de>
Date:   Sat Nov 12 11:21:43 2016 +0100

    restore old metadata api function calls

 libgimp/gimp.def             |    2 +
 libgimp/gimpimage.c          |   63 ++++++++++++++++++++++++++++++++++++++++++
 libgimp/gimpimagemetadata.c  |   13 ++++++--
 libgimp/gimpimagemetadata.h  |    4 +-
 libgimpbase/gimpattributes.c |    7 ++--
 5 files changed, 80 insertions(+), 9 deletions(-)
---
diff --git a/libgimp/gimp.def b/libgimp/gimp.def
index a9171e5..fb0da8c 100644
--- a/libgimp/gimp.def
+++ b/libgimp/gimp.def
@@ -447,6 +447,7 @@ EXPORTS
        gimp_image_get_layer_by_tattoo
        gimp_image_get_layer_position
        gimp_image_get_layers
+       gimp_image_get_metadata
        gimp_image_get_name
        gimp_image_get_parasite
        gimp_image_get_parasite_list
@@ -532,6 +533,7 @@ EXPORTS
        gimp_image_set_component_active
        gimp_image_set_component_visible
        gimp_image_set_filename
+       gimp_image_set_metadata
        gimp_image_set_resolution
        gimp_image_set_tattoo_state
        gimp_image_set_unit
diff --git a/libgimp/gimpimage.c b/libgimp/gimpimage.c
index f9687d7..8c8c07a 100644
--- a/libgimp/gimpimage.c
+++ b/libgimp/gimpimage.c
@@ -99,6 +99,36 @@ gimp_image_get_thumbnail_data (gint32  image_ID,
 
   return image_data;
 }
+/**
+ * gimp_image_get_metadata:
+ * @image_ID: The image.
+ *
+ * Returns the image's metadata.
+ *
+ * Returns exif/iptc/xmp metadata from the image.
+ *
+ * Returns: The exif/ptc/xmp metadata, or %NULL if there is none.
+ *
+ * Since: 2.10
+ **/
+GimpMetadata *
+gimp_image_get_metadata (gint32 image_ID)
+{
+  GimpMetadata            *metadata          = NULL;
+  GimpAttributes          *attributes        = NULL;
+  gchar                   *attributes_string = NULL;
+
+  metadata = gimp_metadata_new ();
+  attributes_string = _gimp_image_get_attributes (image_ID);
+  if (attributes_string)
+    {
+      attributes = gimp_attributes_deserialize (attributes_string);
+      g_free (attributes_string);
+      gimp_attributes_to_metadata (attributes, metadata, "image/any");
+    }
+
+  return metadata;
+}
 
 /**
  * gimp_image_get_attributes:
@@ -129,6 +159,39 @@ gimp_image_get_attributes (gint32 image_ID)
 }
 
 /**
+ * gimp_image_set_metadata:
+ * @image_ID: The image.
+ * @metadata: The exif/ptc/xmp metadata.
+ *
+ * Set the image's metadata.
+ *
+ * Sets exif/iptc/xmp metadata on the image, or deletes it if
+ * @metadata is %NULL.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: 2.10
+ **/
+gboolean
+gimp_image_set_metadata (gint32        image_ID,
+                         GimpMetadata *metadata)
+{
+  GimpAttributes *attributes = NULL;
+  gchar    *attributes_string = NULL;
+  gboolean  success;
+
+  attributes = gimp_attributes_from_metadata (attributes, metadata);
+  if (attributes)
+    attributes_string = gimp_attributes_serialize (attributes);
+
+  success = _gimp_image_set_attributes (image_ID, attributes_string);
+  if (attributes_string)
+    g_free (attributes_string);
+
+  return success;
+}
+
+/**
  * gimp_image_set_attributes:
  * @image_ID: The image.
  * @metadata: The GimpAttributes object.
diff --git a/libgimp/gimpimagemetadata.c b/libgimp/gimpimagemetadata.c
index 0707015..b6aa38c 100644
--- a/libgimp/gimpimagemetadata.c
+++ b/libgimp/gimpimagemetadata.c
@@ -247,12 +247,13 @@ gimp_image_metadata_load_finish (gint32                 image_ID,
  *
  * Since: 2.10
  */
-GimpAttributes *
+GimpMetadata *
 gimp_image_metadata_save_prepare (gint32                 image_ID,
                                   const gchar           *mime_type,
                                   GimpMetadataSaveFlags *suggested_flags)
 {
   GimpAttributes *attributes = NULL;
+  GimpMetadata   *metadata   = NULL;
 
   g_return_val_if_fail (image_ID > 0, NULL);
   g_return_val_if_fail (mime_type != NULL, NULL);
@@ -261,6 +262,7 @@ gimp_image_metadata_save_prepare (gint32                 image_ID,
   *suggested_flags = GIMP_METADATA_SAVE_ALL;
 
   attributes = gimp_image_get_attributes (image_ID);
+  metadata = gimp_metadata_new ();
 
   if (attributes)
     {
@@ -286,9 +288,11 @@ gimp_image_metadata_save_prepare (gint32                 image_ID,
 
       if (FALSE /* FIXME if (original image had a thumbnail) */)
         *suggested_flags &= ~GIMP_METADATA_SAVE_THUMBNAIL;
+        
+        gimp_attributes_to_metadata (attributes, metadata, mime_type);
     }
 
-  return attributes;
+  return metadata;
 }
 
 /**
@@ -311,12 +315,13 @@ gimp_image_metadata_save_prepare (gint32                 image_ID,
 gboolean
 gimp_image_metadata_save_finish (gint32                  image_ID,
                                  const gchar            *mime_type,
-                                 GimpAttributes         *attributes,
+                                 GimpMetadata           *metadata,
                                  GimpMetadataSaveFlags   flags,
                                  GFile                  *file,
                                  GError                **error)
 {
   GExiv2Metadata *new_metadata;
+  GimpAttributes *attributes;
   gboolean        success = FALSE;
   gchar               buffer[32];
   GDateTime          *datetime;
@@ -333,6 +338,8 @@ gimp_image_metadata_save_finish (gint32                  image_ID,
   g_return_val_if_fail (G_IS_FILE (file), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
+  attributes = gimp_attributes_from_metadata (attributes, metadata);
+
   if (! (flags & (GIMP_METADATA_SAVE_EXIF |
                   GIMP_METADATA_SAVE_XMP  |
                   GIMP_METADATA_SAVE_IPTC |
diff --git a/libgimp/gimpimagemetadata.h b/libgimp/gimpimagemetadata.h
index 2517fec..1771ec2 100644
--- a/libgimp/gimpimagemetadata.h
+++ b/libgimp/gimpimagemetadata.h
@@ -41,12 +41,12 @@ void           gimp_image_metadata_load_finish  (gint32                 image_ID
                                                  GimpMetadataLoadFlags  flags,
                                                  gboolean               interactive);
 
-GimpAttributes * gimp_image_metadata_save_prepare (gint32                 image_ID,
+GimpMetadata * gimp_image_metadata_save_prepare (gint32                 image_ID,
                                                  const gchar           *mime_type,
                                                  GimpMetadataSaveFlags *suggested_flags);
 gboolean       gimp_image_metadata_save_finish  (gint32                 image_ID,
                                                  const gchar           *mime_type,
-                                                 GimpAttributes        *attributes,
+                                                 GimpMetadata          *metadata,
                                                  GimpMetadataSaveFlags  flags,
                                                  GFile                 *file,
                                                  GError               **error);
diff --git a/libgimpbase/gimpattributes.c b/libgimpbase/gimpattributes.c
index 5329391..6746aa7 100644
--- a/libgimpbase/gimpattributes.c
+++ b/libgimpbase/gimpattributes.c
@@ -87,10 +87,9 @@ struct Namespaces namespaces_table[] = {
   {"lr",      "http://ns.adobe.com/lr/1.0/";   }
 };
 
-
-static   gpointer                  gimp_attributes_parent_class = NULL;
-static   GimpAttribute            *current_attribute            = NULL;
-static   gboolean                  iter_initialized           = FALSE;
+static gpointer                  gimp_attributes_parent_class = NULL;
+static GimpAttribute            *current_attribute            = NULL;
+static gboolean                  iter_initialized             = FALSE;
 
 
 static GimpAttributes*         gimp_attributes_construct                   (GType                
object_type);


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