[gimp/gimp-attributes-wip: 70/73] restore old metadata api function calls
- From: Hartmut Kuhse <hartmutkuhse src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-attributes-wip: 70/73] restore old metadata api function calls
- Date: Sat, 12 Nov 2016 13:03:04 +0000 (UTC)
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]