diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/jpeg-utils.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp index 5a32a3a..e2d0871 100644 --- a/src/jpeg-utils.cpp +++ b/src/jpeg-utils.cpp @@ -346,24 +346,35 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) gboolean exif_has_key (ExifData *exif, const gchar *key) { + const gchar *rkey; + g_return_val_if_fail (exif != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE); - key = get_real_key_name (key); + rkey = get_real_key_name (key); try { - if (g_strcmp0 (key, JPEG_COMMENT) == 0) { + if (g_strcmp0 (rkey, JPEG_COMMENT) == 0) { return (! exif->priv->image->comment().empty()); } - if (g_str_has_prefix (key, "Exif.")) { + if (g_str_has_prefix (rkey, "Exif.")) { Exiv2::ExifData &exifData = exif->priv->image->exifData(); - return !exifData.empty() && exifData[key].count() > 0; + if (exifData.empty() || exifData[rkey].count() <= 0) + return FALSE; + + /* Special case for some keys */ + if (g_str_equal (key, EXIF_CANON_CAMERA_TEMP)) { + int long val = exifData["Exif.CanonSi.0x000c"].toLong(); + return val > 0; + } + + return TRUE; } - if (g_str_has_prefix (key, "Iptc.")) { + if (g_str_has_prefix (rkey, "Iptc.")) { Exiv2::IptcData &iptcData = exif->priv->image->iptcData(); - return iptc_has_key (iptcData, key); + return iptc_has_key (iptcData, rkey); } return FALSE; |
