diff -r a3f0a5e08b28 -r dce65f056356 gexiv2/gexiv2-metadata-xmp.cpp --- a/gexiv2/gexiv2-metadata-xmp.cpp Mon Jul 19 23:48:41 2010 +0000 +++ b/gexiv2/gexiv2-metadata-xmp.cpp Sat Jul 24 09:58:15 2010 +1000 @@ -30,6 +30,19 @@ self->priv->image->xmpData().clear(); } +gchar *gexiv2_metadata_get_xmp_packet(GExiv2Metadata *self) { + g_return_val_if_fail(GEXIV2_IS_METADATA (self), NULL); + g_return_val_if_fail(self->priv->image.get() != NULL, NULL); + + try { + return g_strdup(self->priv->image->xmpPacket().c_str()); + } catch (Exiv2::Error& e) { + LOG_ERROR(e); + } + + return NULL; +} + gboolean gexiv2_metadata_has_xmp_tag(GExiv2Metadata *self, const gchar* tag) { g_return_val_if_fail(GEXIV2_IS_METADATA(self), FALSE); g_return_val_if_fail(tag != NULL, FALSE); diff -r a3f0a5e08b28 -r dce65f056356 gexiv2/gexiv2-metadata.h --- a/gexiv2/gexiv2-metadata.h Mon Jul 19 23:48:41 2010 +0000 +++ b/gexiv2/gexiv2-metadata.h Sat Jul 24 09:58:15 2010 +1000 @@ -194,6 +194,8 @@ gboolean gexiv2_metadata_clear_xmp_tag (GExiv2Metadata *self, const gchar* tag); void gexiv2_metadata_clear_xmp (GExiv2Metadata *self); +gchar* gexiv2_metadata_get_xmp_packet (GExiv2Metadata *self); + gboolean gexiv2_metadata_has_xmp_tag (GExiv2Metadata *self, const gchar* tag); gchar** gexiv2_metadata_get_xmp_tags (GExiv2Metadata *self); diff -r a3f0a5e08b28 -r dce65f056356 vapi/gexiv2.metadata --- a/vapi/gexiv2.metadata Mon Jul 19 23:48:41 2010 +0000 +++ b/vapi/gexiv2.metadata Sat Jul 24 09:58:15 2010 +1000 @@ -44,6 +44,7 @@ gexiv2_metadata_get_exif_tag_label nullable="1" gexiv2_metadata_get_exif_tag_description nullable="1" +gexiv2_metadata_get_xmp_packet transfer_ownership="1" nullable="1" gexiv2_metadata_get_xmp_tags is_array="1" array_null_terminated="1" transfer_ownership="1" gexiv2_metadata_get_xmp_tag_string transfer_ownership="1" nullable="1" gexiv2_metadata_get_xmp_tag_interpreted_string transfer_ownership="1" nullable="1" diff -r a3f0a5e08b28 -r dce65f056356 gexiv2.vapi --- a/gexiv2.vapi Mon Jul 19 23:48:41 2010 +0000 +++ b/gexiv2.vapi Sat Jul 24 09:58:15 2010 +1000 @@ -97,6 +97,7 @@ [CCode (array_length = false, array_null_terminated = true)] public string[]? get_tag_multiple (string tag); public string? get_tag_string (string tag); + public string? get_xmp_packet (); public static unowned string? get_xmp_tag_description (string tag); public string? get_xmp_tag_interpreted_string (string tag); public static unowned string? get_xmp_tag_label (string tag); diff -r a3f0a5e08b28 -r dce65f056356 gexiv2/gexiv2.h --- a/gexiv2/gexiv2.h Mon Jul 19 23:48:41 2010 +0000 +++ b/gexiv2/gexiv2.h Sat Jul 24 09:58:15 2010 +1000 @@ -1,5 +1,5 @@ /* - * gexiv2-metadata.h + * gexiv2.h * * Author(s) * Jim Nelson @@ -10,9 +10,9 @@ #ifndef __GEXIV2_H__ #define __GEXIV2_H__ -#include -#include -#include -#include +#include +#include +#include +#include #endif /* __GEXIV2_H__ */