From 6dd7e0f9073e366cb7420e8b61eacbc6c05faae5 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Thu, 27 Dec 2012 20:47:45 +0100 Subject: jpeg-utils: Tidy up get_exif_data_fixed() a bit And change g_str_has_prefix() for key name comparison to g_str_equal() to prevent potential prefix clashes. --- src/jpeg-utils.cpp | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp index d68bf59..bee9562 100644 --- a/src/jpeg-utils.cpp +++ b/src/jpeg-utils.cpp @@ -135,18 +135,18 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) try { - if (g_str_has_prefix (key, EXIF_APERTURE)) { + if (g_str_has_prefix (key, "Exif.")) { Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (exifData.empty()) + return NULL; + + if (g_str_equal (key, EXIF_APERTURE)) { float val = exifData["Exif.Photo.FNumber"].toFloat(); if (val >= 0) return g_strdup_printf ("f/%.1f", val); } - } - if (g_str_has_prefix (key, EXIF_DATETIME)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_DATETIME)) { const char *val = NULL; try { val = exifData["Exif.Photo.DateTimeOriginal"].toString().c_str(); @@ -173,11 +173,8 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) } } } - } - if (g_str_has_prefix (key, EXIF_EXPOSURE)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_EXPOSURE)) { float val = exifData["Exif.Photo.ExposureTime"].toFloat(); if (val > 0) { if (val < 0.5) @@ -186,40 +183,28 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) return g_strdup_printf ("%.1f s", val); } } - } - if (g_str_has_prefix (key, EXIF_FLASH)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_FLASH)) { long int val = exifData["Exif.Photo.Flash"].toLong(); if (val > 0 && (val & 1) == 1) return g_strdup ("Flash fired"); else return g_strdup ("--"); } - } - if (g_str_has_prefix (key, EXIF_FOCAL_LENGTH)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_FOCAL_LENGTH)) { float val = exifData["Exif.Photo.FocalLength"].toFloat(); if (val >= 0) return g_strdup_printf ("%.0f mm", val); } - } - if (g_str_has_prefix (key, EXIF_ISO)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_ISO)) { long int val = exifData["Exif.Photo.ISOSpeedRatings"].toLong(); if (val > 0) return g_strdup_printf ("%ld", val); } - } - if (g_str_has_prefix (key, EXIF_CANON_CAMERA_TEMP)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_CANON_CAMERA_TEMP)) { if (exifData["Exif.CanonSi.0x000c"].count() > 0) { int long val = exifData["Exif.CanonSi.0x000c"].toLong(); if (val > 0) @@ -227,6 +212,12 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) } } } + + if (g_str_has_prefix (key, "Iptc.")) { + Exiv2::IptcData &iptcData = exif->image->iptcData(); + if (iptcData.empty()) + return NULL; + } } catch (...) { return NULL; -- cgit v1.2.3