[gthumb/ext] write exiv2 metadata on file-save for jpeg and png files only, bug 594795
- From: Michael J. Chudobiak <mjc src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gthumb/ext] write exiv2 metadata on file-save for jpeg and png files only, bug 594795
- Date: Fri, 11 Sep 2009 12:34:06 +0000 (UTC)
commit 8c697da200b1293f4b235e86a4635b441e37be67
Author: Michael J. Chudobiak <mjc avtechpulse com>
Date: Fri Sep 11 08:32:48 2009 -0400
write exiv2 metadata on file-save for jpeg and png files only, bug 594795
extensions/exiv2/exiv2-utils.cpp | 35 +++++++++++++++--------
extensions/exiv2/exiv2-utils.h | 1 +
extensions/exiv2/gth-metadata-provider-exiv2.c | 5 +---
3 files changed, 25 insertions(+), 16 deletions(-)
---
diff --git a/extensions/exiv2/exiv2-utils.cpp b/extensions/exiv2/exiv2-utils.cpp
index 656e559..74b0fa7 100644
--- a/extensions/exiv2/exiv2-utils.cpp
+++ b/extensions/exiv2/exiv2-utils.cpp
@@ -669,22 +669,33 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image,
extern "C"
gboolean
+exiv2_supports_writes (GthFileData *file_data)
+{
+ return (g_content_type_equals (gth_file_data_get_mime_type (file_data), "image/jpeg") ||
+ g_content_type_equals (gth_file_data_get_mime_type (file_data), "image/png"));
+}
+
+
+extern "C"
+gboolean
exiv2_write_metadata (SavePixbufData *data)
{
- try {
- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) data->buffer, data->buffer_size);
- g_assert (image.get() != 0);
+ if (exiv2_supports_writes (data->file_data)) {
+ try {
+ Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) data->buffer, data->buffer_size);
+ g_assert (image.get() != 0);
- Exiv2::DataBuf buf = exiv2_write_metadata_private (image, data->file_data->info, data->pixbuf);
+ Exiv2::DataBuf buf = exiv2_write_metadata_private (image, data->file_data->info, data->pixbuf);
- g_free (data->buffer);
- data->buffer = g_memdup (buf.pData_, buf.size_);
- data->buffer_size = buf.size_;
- }
- catch (Exiv2::AnyError& e) {
- if (data->error != NULL)
- *data->error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what());
- return FALSE;
+ g_free (data->buffer);
+ data->buffer = g_memdup (buf.pData_, buf.size_);
+ data->buffer_size = buf.size_;
+ }
+ catch (Exiv2::AnyError& e) {
+ if (data->error != NULL)
+ *data->error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what());
+ return FALSE;
+ }
}
return TRUE;
diff --git a/extensions/exiv2/exiv2-utils.h b/extensions/exiv2/exiv2-utils.h
index 4447de1..c21dbf5 100644
--- a/extensions/exiv2/exiv2-utils.h
+++ b/extensions/exiv2/exiv2-utils.h
@@ -44,6 +44,7 @@ gboolean exiv2_write_metadata_to_buffer (void **buffer,
GFileInfo *info,
GdkPixbuf *pixbuf, /* optional */
GError **error);
+gboolean exiv2_supports_writes (GthFileData *file_data);
G_END_DECLS
diff --git a/extensions/exiv2/gth-metadata-provider-exiv2.c b/extensions/exiv2/gth-metadata-provider-exiv2.c
index 68513c9..86c694f 100644
--- a/extensions/exiv2/gth-metadata-provider-exiv2.c
+++ b/extensions/exiv2/gth-metadata-provider-exiv2.c
@@ -87,11 +87,8 @@ gth_metadata_provider_exiv2_write (GthMetadataProvider *self,
GError *error = NULL;
GObject *metadata;
- if (! g_content_type_equals (gth_file_data_get_mime_type (file_data), "image/jpeg")
- && ! g_content_type_equals (gth_file_data_get_mime_type (file_data), "image/png"))
- {
+ if (! exiv2_supports_writes (file_data))
return;
- }
if (! g_load_file_in_buffer (file_data->file, &buffer, &size, &error))
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]