Author: post
Date: 2011-02-26 18:34:13 +0100 (Sat, 26 Feb 2011)
New Revision: 3833

Modified:
   trunk/plugins/meta-exiv2/exiv2-metadata.cpp
Log:
Load more lens information from 8 bit images.

Modified: trunk/plugins/meta-exiv2/exiv2-metadata.cpp
===================================================================
--- trunk/plugins/meta-exiv2/exiv2-metadata.cpp 2011-02-26 16:04:18 UTC (rev 
3832)
+++ trunk/plugins/meta-exiv2/exiv2-metadata.cpp 2011-02-26 17:34:13 UTC (rev 
3833)
@@ -187,7 +187,76 @@
                        }
 #endif
 
-                       /* TODO: Add min/max focal on supported cameras */
+                       /* Canon*/
+                       i = exifData.findKey(ExifKey("Exif.CanonCs.Lens"));
+                       if (i != exifData.end()
+                                       && i->value().count() >= 3
+                                       && i->value().typeId() == 
unsignedShort) 
+                       {
+                               float fu = i->value().toFloat(2);
+                               if (fu != 0.0) 
+                               {
+                                       meta->lens_min_focal = i->toFloat(0) / 
fu;
+                                       meta->lens_max_focal = i->toFloat(1) 
/fu;
+                               }
+                       }
+                       i = 
exifData.findKey(ExifKey("Exif.CanonCs.MinAperture"));
+                       if (i != exifData.end())
+                               meta->lens_min_aperture = (gfloat) 
exp(CanonEv(i->toFloat())*log(2)/2);
+                       i = 
exifData.findKey(ExifKey("Exif.CanonCs.MaxAperture"));
+                       if (i != exifData.end())
+                               meta->lens_max_aperture = (gfloat) 
exp(CanonEv(i->toFloat())*log(2)/2);
+
+                       /* Olympus */
+                       i = 
exifData.findKey(ExifKey("Exif.OlympusEq.MinFocalLength"));
+                       if (i != exifData.end())
+                               meta->lens_min_focal = i->toFloat();
+                       i = 
exifData.findKey(ExifKey("Exif.OlympusEq.MaxFocalLength"));
+                       if (i != exifData.end())
+                               meta->lens_max_focal = i->toFloat();
+
+
+                       /* Nikon */
+                       i = 
exifData.findKey(ExifKey("Exif.NikonLd1.MinFocalLength"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd2.MinFocalLength"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd3.MinFocalLength"));
+                       if (i != exifData.end())
+                               meta->lens_min_focal = 5.0 * pow(2.0, 
i->toLong()/24.0);
+
+                       i = 
exifData.findKey(ExifKey("Exif.NikonLd1.MaxFocalLength"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd2.MaxFocalLength"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd3.MaxFocalLength"));
+                       if (i != exifData.end())
+                               meta->lens_max_focal = 5.0 * pow(2.0, 
i->toLong()/24.0);
+
+                       i = 
exifData.findKey(ExifKey("Exif.NikonLd1.MaxApertureAtMinFocal"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd2.MaxApertureAtMinFocal"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd3.MaxApertureAtMinFocal"));
+                       if (i != exifData.end())
+                               meta->lens_min_aperture = i->toLong()/12.0;
+                       
+                       i = 
exifData.findKey(ExifKey("Exif.NikonLd1.MaxApertureAtMaxFocal"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd2.MaxApertureAtMaxFocal"));
+                       if (i == exifData.end())
+                               i = 
exifData.findKey(ExifKey("Exif.NikonLd3.MaxApertureAtMaxFocal"));
+                       if (i != exifData.end())
+                               meta->lens_max_aperture = i->toLong()/12.0;
+                               
+                       /* Fuji */
+                       i = 
exifData.findKey(ExifKey("Exif.Fujifilm.MinFocalLength"));
+                       if (i != exifData.end())
+                               meta->lens_min_focal = i->toFloat();
+                       i = 
exifData.findKey(ExifKey("Exif.Fujifilm.MaxFocalLength"));
+                       if (i != exifData.end())
+                               meta->lens_max_focal = i->toFloat();
+
                        return TRUE;
                }
        } catch (Exiv2::Error& e) {


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to