summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2012-12-27 20:47:45 +0100
committerTomas Bzatek <tbzatek@users.sourceforge.net>2012-12-27 20:47:45 +0100
commit6dd7e0f9073e366cb7420e8b61eacbc6c05faae5 (patch)
tree887ff467fd905c7396d4e68cca9144374ad6aa23 /src
parentd62fcfd6579a90eaa2bd9cb237291105d682e44e (diff)
downloadcataract-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.cpp43
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;