diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2012-12-27 20:47:45 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2012-12-27 20:47:45 +0100 |
| commit | 6dd7e0f9073e366cb7420e8b61eacbc6c05faae5 (patch) | |
| tree | 887ff467fd905c7396d4e68cca9144374ad6aa23 /src | |
| parent | d62fcfd6579a90eaa2bd9cb237291105d682e44e (diff) | |
| download | cataract-6dd7e0f9073e366cb7420e8b61eacbc6c05faae5.tar.xz | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/jpeg-utils.cpp | 43 |
1 files changed, 17 insertions, 26 deletions
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; |
