diff --git a/samples/easyaccess-test.cpp b/samples/easyaccess-test.cpp index 293ea0ef..658b2936 100644 --- a/samples/easyaccess-test.cpp +++ b/samples/easyaccess-test.cpp @@ -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; diff --git a/src/easyaccess.cpp b/src/easyaccess.cpp index 90349436..eebedb49 100644 --- a/src/easyaccess.cpp +++ b/src/easyaccess.cpp @@ -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)); } diff --git a/src/easyaccess.hpp b/src/easyaccess.hpp index 9c3460df..12aea642 100644 --- a/src/easyaccess.hpp +++ b/src/easyaccess.hpp @@ -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 diff --git a/src/minoltamn.cpp b/src/minoltamn.cpp index 5c04b9d0..73b4d56e 100644 --- a/src/minoltamn.cpp +++ b/src/minoltamn.cpp @@ -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 diff --git a/src/minoltamn.hpp b/src/minoltamn.hpp index 757f6d21..e2ca8292 100644 --- a/src/minoltamn.hpp +++ b/src/minoltamn.hpp @@ -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 diff --git a/src/sonymn.cpp b/src/sonymn.cpp index b3e296bd..f644ae8d 100644 --- a/src/sonymn.cpp +++ b/src/sonymn.cpp @@ -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)), diff --git a/test/data/write2-test.out b/test/data/write2-test.out index 62c9bdb0..716f359f 100644 --- a/test/data/write2-test.out +++ b/test/data/write2-test.out @@ -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