Reverted some Exif keys changed recently back to the original names, updated easy-access functions to include recently added Sony and Minolta tags.

This commit is contained in:
Andreas Huggel 2010-06-18 19:52:56 +00:00
parent 053651f97e
commit 482cd93977
7 changed files with 96 additions and 41 deletions

View File

@ -37,7 +37,8 @@ static const EasyAccess easyAccess[] = {
{ "Exposure time", Exiv2::exposureTime },
{ "FNumber", Exiv2::fNumber },
{ "Subject distance", Exiv2::subjectDistance },
{ "Camera serial number", Exiv2::serialNumber }
{ "Camera serial number", Exiv2::serialNumber },
{ "Focal length", Exiv2::focalLength }
};
int main(int argc, char **argv)
@ -54,11 +55,14 @@ try {
for (unsigned int i = 0; i < EXV_COUNTOF(easyAccess); ++i) {
Exiv2::ExifData::const_iterator pos = easyAccess[i].findFct_(ed);
std::cout << std::setw(20) << std::left << easyAccess[i].label_;
if (pos != ed.end()) {
std::cout << std::setw(13) << std::left << easyAccess[i].label_ << " ("
<< std::setw(30) << pos->key() << ") : "
std::cout << " (" << std::setw(35) << pos->key() << ") : "
<< pos->print(&ed) << "\n";
}
else {
std::cout << " (" << std::setw(35) << " " << ") : \n";
}
}
return 0;

View File

@ -70,7 +70,13 @@ namespace Exiv2 {
"Exif.Image.Orientation",
"Exif.Panasonic.Rotation",
"Exif.MinoltaCs5D.Rotation",
"Exif.MinoltaCs7D.Rotation"
"Exif.MinoltaCs5D.Rotation2",
"Exif.MinoltaCs7D.Rotation",
"Exif.Sony1MltCsA100.Rotation",
"Exif.Sony1Cs.Rotation",
"Exif.Sony2Cs.Rotation",
"Exif.Sony1Cs2.Rotation",
"Exif.Sony2Cs2.Rotation"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}
@ -91,6 +97,10 @@ namespace Exiv2 {
"Exif.MinoltaCsOld.ISOSetting",
"Exif.MinoltaCs5D.ISOSpeed",
"Exif.MinoltaCs7D.ISOSpeed",
"Exif.Sony1Cs.ISOSetting",
"Exif.Sony2Cs.ISOSetting",
"Exif.Sony1Cs2.ISOSetting",
"Exif.Sony2Cs2.ISOSetting",
"Exif.Pentax.ISO",
"Exif.Olympus.ISOSpeed"
};
@ -119,7 +129,11 @@ namespace Exiv2 {
"Exif.CanonSi.FlashBias",
"Exif.Panasonic.FlashBias",
"Exif.Olympus.FlashBias",
"Exif.OlympusCs.FlashExposureComp"
"Exif.OlympusCs.FlashExposureComp",
"Exif.Minolta.FlashExposureComp",
"Exif.SonyMinolta.FlashExposureComp",
"Exif.Sony1.FlashExposureComp",
"Exif.Sony2.FlashExposureComp"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}
@ -134,6 +148,9 @@ namespace Exiv2 {
"Exif.MinoltaCs5D.ExposureMode",
"Exif.MinoltaCsNew.ExposureMode",
"Exif.MinoltaCsOld.ExposureMode",
"Exif.Sony1MltCsA100.ExposureMode",
"Exif.Sony1Cs.ExposureProgram",
"Exif.Sony2Cs.ExposureProgram",
"Exif.Sigma.ExposureMode"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
@ -145,10 +162,16 @@ namespace Exiv2 {
"Exif.CanonCs.EasyMode",
"Exif.Fujifilm.PictureMode",
"Exif.MinoltaCsNew.SubjectProgram",
"Exif.MinoltaCsOld.SubjectProgram",
"Exif.Minolta.SceneMode",
"Exif.SonyMinolta.SceneMode",
"Exif.Sony1.SceneMode",
"Exif.Sony2.SceneMode",
"Exif.OlympusCs.SceneMode",
"Exif.Panasonic.ShootingMode",
"Exif.Panasonic.SceneMode",
"Exif.Pentax.PictureMode"
"Exif.Pentax.PictureMode",
"Exif.Photo.SceneCaptureType"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}
@ -162,7 +185,9 @@ namespace Exiv2 {
"Exif.OlympusCs.MacroMode",
"Exif.Panasonic.Macro",
"Exif.MinoltaCsNew.MacroMode",
"Exif.MinoltaCsOld.MacroMode"
"Exif.MinoltaCsOld.MacroMode",
"Exif.Sony1.Macro",
"Exif.Sony2.Macro"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}
@ -184,10 +209,13 @@ namespace Exiv2 {
"Exif.MinoltaCsOld.Quality",
"Exif.MinoltaCs5D.Quality",
"Exif.MinoltaCs7D.Quality",
"Exif.Sony1MltCsA100.Quality",
"Exif.Sony1.JPEGQuality",
"Exif.Sony1.Quality",
"Exif.Sony1Cs.Quality",
"Exif.Sony2.JPEGQuality",
"Exif.Sony2.Quality"
"Exif.Sony2.Quality",
"Exif.Sony2Cs.Quality"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}
@ -208,6 +236,13 @@ namespace Exiv2 {
"Exif.MinoltaCs7D.WhiteBalance",
"Exif.MinoltaCsNew.WhiteBalance",
"Exif.MinoltaCsOld.WhiteBalance",
"Exif.Minolta.WhiteBalance",
"Exif.Sony1MltCsA100.WhiteBalance",
"Exif.SonyMinolta.WhiteBalance",
"Exif.Sony1.WhiteBalance",
"Exif.Sony2.WhiteBalance",
"Exif.Sony1.WhiteBalance2",
"Exif.Sony2.WhiteBalance2",
"Exif.Photo.WhiteBalance"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
@ -220,8 +255,11 @@ namespace Exiv2 {
"Exif.NikonLd1.LensIDNumber",
"Exif.NikonLd2.LensIDNumber",
"Exif.NikonLd3.LensIDNumber",
"Exif.Pentax.LensType",
"Exif.Minolta.LensID",
"Exif.Pentax.LensType"
"Exif.SonyMinolta.LensID",
"Exif.Sony1.LensID",
"Exif.Sony2.LensID"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}
@ -294,7 +332,8 @@ namespace Exiv2 {
static const char* keys[] = {
"Exif.Photo.MeteringMode",
"Exif.Image.MeteringMode",
"Exif.CanonCs.MeteringMode"
"Exif.CanonCs.MeteringMode",
"Exif.Sony1MltCsA100.MeteringMode"
};
return findMetadatum(ed, keys, EXV_COUNTOF(keys));
}

View File

@ -78,7 +78,7 @@ namespace Exiv2 {
EXIV2API ExifData::const_iterator subjectDistance(const ExifData& ed);
//! Return the camera serial number
EXIV2API ExifData::const_iterator serialNumber(const ExifData& ed);
//! Return the focal lenght setting
//! Return the focal length setting
EXIV2API ExifData::const_iterator focalLength(const ExifData& ed);
} // namespace Exiv2

View File

@ -138,7 +138,7 @@ namespace Exiv2 {
TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"),
N_("Flash exposure compensation in EV"),
minoltaIfdId, makerTags, signedRational, printValue),
minoltaIfdId, makerTags, signedRational, printMinoltaSonyFlashExposureComp),
TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"),
N_("Teleconverter Model"),
minoltaIfdId, makerTags, unsignedLong, printMinoltaSonyTeleconverterModel),
@ -494,11 +494,11 @@ namespace Exiv2 {
TagInfo(0x0003, "WhiteBalance", N_("White Balance"),
N_("White balance"),
minoltaCsNewIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(minoltaWhiteBalanceStd)),
TagInfo(0x0004, "MinoltaImageSize", N_("Minolta Image Size"),
N_("Minolta Image size"),
TagInfo(0x0004, "ImageSize", N_("Image Size"),
N_("Image size"),
minoltaCsNewIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(minoltaImageSizeStd)),
TagInfo(0x0005, "MinoltaQuality", N_("Minolta Image Quality"),
N_("Minolta Image quality"),
TagInfo(0x0005, "Quality", N_("Image Quality"),
N_("Image quality"),
minoltaCsNewIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(minoltaImageQualityStd)),
TagInfo(0x0006, "DriveMode", N_("Drive Mode"),
N_("Drive mode"),
@ -739,11 +739,11 @@ namespace Exiv2 {
TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"),
N_("Exposure mode"),
minoltaCs7DIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(minoltaExposureMode7D)),
TagInfo(0x0002, "MinoltaImageSize", N_("Minolta Image Size"),
N_("Minolta Image size"),
TagInfo(0x0002, "ImageSize", N_("Image Size"),
N_("Image size"),
minoltaCs7DIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(minoltaImageSize7D)),
TagInfo(0x0003, "MinoltaQuality", N_("Minolta Image Quality"),
N_("Minolta Image quality"),
TagInfo(0x0003, "Quality", N_("Image Quality"),
N_("Image quality"),
minoltaCs7DIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(minoltaImageQuality7D)),
TagInfo(0x0004, "WhiteBalance", N_("White Balance"),
N_("White balance"),
@ -983,11 +983,11 @@ namespace Exiv2 {
TagInfo(0x000A, "ExposureMode", N_("Exposure Mode"),
N_("Exposure mode"),
minoltaCs5DIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(minoltaExposureMode5D)),
TagInfo(0x000C, "MinoltaImageSize", N_("Minolta Image Size"),
N_("Minolta Image size"),
TagInfo(0x000C, "ImageSize", N_("Image Size"),
N_("Image size"),
minoltaCs5DIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(minoltaImageSize5D)),
TagInfo(0x000D, "MinoltaQuality", N_("Minolta Image Quality"),
N_("Minolta Image quality"),
TagInfo(0x000D, "Quality", N_("Image Quality"),
N_("Image quality"),
minoltaCs5DIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(minoltaImageQuality5D)),
TagInfo(0x000E, "WhiteBalance", N_("White Balance"),
N_("White balance"),
@ -1480,9 +1480,9 @@ namespace Exiv2 {
TagInfo(0x003B, "SonyImageSize", N_("Sony Image Size"),
N_("Sony Image Size"),
sony1MltCsA100IfdId, makerTags, unsignedShort, EXV_PRINT_TAG(sonyImageSizeA100)),
TagInfo(0x003C, "SonyQuality", N_("SonyQuality"),
N_("SonyQuality"),
sony1MltCsA100IfdId, makerTags, unsignedShort, printMinoltaSonyQualityCS),
TagInfo(0x003C, "Quality", N_("Quality"),
N_("Quality"),
sony1MltCsA100IfdId, makerTags, unsignedShort, printMinoltaSonyQualityCs),
TagInfo(0x003D, "InstantPlaybackTime", N_("Instant Playback Time"),
N_("Instant playback time"),
sony1MltCsA100IfdId, makerTags, unsignedShort, printValue),
@ -1997,7 +1997,7 @@ namespace Exiv2 {
// ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony camera settings quality values to readable labels
extern const TagDetails minoltaSonyQualityCS[] = {
extern const TagDetails minoltaSonyQualityCs[] = {
{ 0, N_("RAW ") },
{ 2, N_("CRAW ") },
{ 16, N_("Extra Fine") },
@ -2007,9 +2007,9 @@ namespace Exiv2 {
{ 48, N_("Standard") }
};
std::ostream& printMinoltaSonyQualityCS(std::ostream& os, const Value& value, const ExifData* metadata)
std::ostream& printMinoltaSonyQualityCs(std::ostream& os, const Value& value, const ExifData* metadata)
{
return EXV_PRINT_TAG(minoltaSonyQualityCS)(os, value, metadata);
return EXV_PRINT_TAG(minoltaSonyQualityCs)(os, value, metadata);
}
// ----------------------------------------------------------------------------------------------------
@ -2116,4 +2116,13 @@ namespace Exiv2 {
{
return EXV_PRINT_TAG(minoltaSonyZoneMatching)(os, value, metadata);
}
std::ostream& printMinoltaSonyFlashExposureComp(std::ostream& os, const Value& value, const ExifData*)
{
if (value.count() != 1 || value.typeId() != signedRational) {
return os << "(" << value << ")";
}
return os << std::fixed << std::setprecision(2) << value.toFloat(0) << " EV";
}
} // namespace Exiv2

View File

@ -131,7 +131,7 @@ namespace Exiv2 {
EXIV2API std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream&, const Value&, const ExifData*);
//! Print Minolta/Sony Quality values to readable labels.
EXIV2API std::ostream& printMinoltaSonyQualityCS(std::ostream&, const Value&, const ExifData*);
EXIV2API std::ostream& printMinoltaSonyQualityCs(std::ostream&, const Value&, const ExifData*);
//! Print Minolta/Sony Rotation values to readable labels.
EXIV2API std::ostream& printMinoltaSonyRotation(std::ostream&, const Value&, const ExifData*);
@ -151,6 +151,9 @@ namespace Exiv2 {
//! Print Minolta/Sony ZoneMatching values to readable labels.
EXIV2API std::ostream& printMinoltaSonyZoneMatching(std::ostream&, const Value&, const ExifData*);
//! Print Minolta/Sony Flash Exposure Compensation values to readable labels.
EXIV2API std::ostream& printMinoltaSonyFlashExposureComp(std::ostream&, const Value&, const ExifData*);
// TODO: Added shared methods here.
} // namespace Exiv2

View File

@ -274,7 +274,7 @@ namespace Exiv2 {
sony1IfdId, makerTags, unsignedLong, printMinoltaSonyImageQuality),
TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"),
N_("Flash exposure compensation in EV"),
sony1IfdId, makerTags, signedRational, printValue),
sony1IfdId, makerTags, signedRational, printMinoltaSonyFlashExposureComp),
TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"),
N_("Teleconverter Model"),
sony1IfdId, makerTags, unsignedLong, printMinoltaSonyTeleconverterModel),
@ -309,8 +309,8 @@ namespace Exiv2 {
TagInfo(0x2000, "0x2000", "0x2000",
N_("Unknown"),
sony1IfdId, makerTags, undefined, printValue),
TagInfo(0x2001, "ThumbnailImage", N_("Thumbnail Image"),
N_("Jpeg Thumbnail Image"),
TagInfo(0x2001, "PreviewImage", N_("Preview Image"),
N_("JPEG preview image"),
sony1IfdId, makerTags, undefined, printValue),
TagInfo(0x2002, "0x2002", "0x2002",
N_("Unknown"),
@ -336,7 +336,7 @@ namespace Exiv2 {
TagInfo(0x2009, "0x2009", "0x2009",
N_("Unknown"),
sony1IfdId, makerTags, unsignedShort, printValue),
TagInfo(0x200A, "HDR", N_("HDR"),
TagInfo(0x200A, "AutoHDR", N_("Auto HDR"),
N_("High Definition Range Mode"),
sony1IfdId, makerTags, unsignedLong, EXV_PRINT_TAG(sonyHDRMode)),
// TODO : Implement Shot Info tags decoding.
@ -382,8 +382,8 @@ namespace Exiv2 {
TagInfo(0xB02B, "FullImageSize", N_("Full Image Size"),
N_("Full Image Size"),
sony1IfdId, makerTags, unsignedLong, printImageSize),
TagInfo(0xB02C, "ThumbnailImageSize", N_("Thumbnail Image Size"),
N_("Thumbnail Image Size"),
TagInfo(0xB02C, "PreviewImageSize", N_("Preview Image Size"),
N_("Preview image size"),
sony1IfdId, makerTags, unsignedLong, printImageSize),
TagInfo(0xB040, "Macro", N_("Macro"),
N_("Macro"),
@ -424,8 +424,8 @@ namespace Exiv2 {
TagInfo(0xB052, "IntelligentAuto", N_("Intelligent Auto"),
N_("Intelligent Auto"),
sony1IfdId, makerTags, unsignedShort, EXV_PRINT_TAG(sonyIntelligentAuto)),
TagInfo(0xB054, "WhiteBalance", N_("White Balance"),
N_("White Balance"),
TagInfo(0xB054, "WhiteBalance2", N_("White Balance 2"),
N_("White balance 2"),
sony1IfdId, makerTags, unsignedShort, EXV_PRINT_TAG(sonyWhiteBalance)),
// End of list marker
@ -644,7 +644,7 @@ namespace Exiv2 {
sony1CsIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(sonyAspectRatio)),
TagInfo(0x0056, "Quality", N_("Quality"),
N_("Quality"),
sony1CsIfdId, makerTags, unsignedShort, printMinoltaSonyQualityCS),
sony1CsIfdId, makerTags, unsignedShort, printMinoltaSonyQualityCs),
TagInfo(0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"),
N_("Exposure Level Increments"),
sony1CsIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(sonyExposureLevelIncrements)),

View File

@ -188,7 +188,7 @@ Exif.MinoltaCs5D.0x002b 0x002b Makernote Short 1
Exif.MinoltaCs5D.0x002c 0x002c Makernote Short 1 0
Exif.MinoltaCs5D.0x002d 0x002d Makernote Short 1 0
Exif.MinoltaCs5D.0x002e 0x002e Makernote Short 1 0
Exif.MinoltaCs5D.0x002f 0x002f Makernote Short 1 0
Exif.MinoltaCs5D.ColorSpace 0x002f Makernote Short 1 0
Exif.MinoltaCs5D.Sharpness 0x0030 Makernote Short 1 0
Exif.MinoltaCs5D.Contrast 0x0031 Makernote Short 1 0
Exif.MinoltaCs5D.Saturation 0x0032 Makernote Short 1 0