diff src/exiv2.cc @ 182:8a417f10ba09

more exiv2 fixes
author nadvornik
date Wed, 13 Feb 2008 23:02:48 +0000
parents e6c8cf017d68
children 3962c9d3d6fd
line wrap: on
line diff
--- a/src/exiv2.cc	Wed Feb 13 19:31:50 2008 +0000
+++ b/src/exiv2.cc	Wed Feb 13 23:02:48 2008 +0000
@@ -24,8 +24,9 @@
 
 ExifData *exif_read(gchar *path, gint parse_color_profile)
 {
+	printf("exif %s\n", path);
 	try {
-		ExifData *exif = g_new0(ExifData, 1);
+		ExifData *exif = new ExifData;
 	
 		Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
 		g_assert (image.get() != 0);
@@ -42,11 +43,17 @@
 
 void exif_free(ExifData *exif)
 {
+	
+	delete exif;
 }
 
 
 gchar *exif_get_data_as_text(ExifData *exif, const gchar *key)
 {
+	gint key_valid;
+	gchar *text = exif_get_formatted_by_key(exif, key, &key_valid);
+	if (key_valid) return text;
+
 	return g_strdup(exif->exifData[key].toString().c_str());
 }
 
@@ -68,14 +75,6 @@
 */
 }
 
-double exif_rational_to_double(ExifRational *r, gint sign)
-{
-	if (!r || r->den == 0.0) return 0.0;
-
-	if (sign) return (double)((int)r->num) / (double)((int)r->den);
-	return (double)r->num / r->den;
-}
-
 ExifItem *exif_get_item(ExifData *exif, const gchar *key)
 {
 	Exiv2::Exifdatum *item = &exif->exifData[key];
@@ -117,9 +116,9 @@
 {
 }
 
-const char *exif_item_get_description(ExifItem *item)
+char *exif_item_get_description(ExifItem *item)
 {
-	return ((Exiv2::Exifdatum *)item)->tagLabel().c_str();
+	return g_strdup(((Exiv2::Exifdatum *)item)->tagLabel().c_str());
 }
 
 /*
@@ -170,8 +169,10 @@
 {
 }
 
-const gchar *exif_get_description_by_key(const gchar *key)
+const gchar *exif_get_tag_description_by_key(const gchar *key)
 {
+	Exiv2::ExifKey ekey(key);
+	return Exiv2::ExifTags::tagLabel(ekey.tag(), ekey.ifdId ());
 }
 
 gint format_raw_img_exif_offsets_fd(int fd, const gchar *path,