summaryrefslogtreecommitdiff
path: root/src/jpeg-utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jpeg-utils.cpp')
-rw-r--r--src/jpeg-utils.cpp23
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;