From 1038e62a42af811af8f24a47e1b50c1d9f74f22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Thu, 5 Nov 2020 12:10:36 +0100 Subject: [PATCH] actions: simplify print summary using easyaccess --- src/actions.cpp | 62 ++++++++++++++++++++++++------------------------- src/actions.hpp | 3 ++- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/actions.cpp b/src/actions.cpp index 4fb93cf5..a890e29f 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -331,37 +331,26 @@ namespace Action { } std::cout << std::endl; - printTag(exifData, Exiv2::make , _("Camera make")); - printTag(exifData, Exiv2::model , _("Camera model")); - printTag(exifData, Exiv2::dateTimeOriginal , _("Image timestamp")); - printTag(exifData, "Exif.Canon.FileNumber" , _("File number")); - // From ExposureTime, failing that, try ShutterSpeedValue - printLabel(_("Exposure time")); - bool done = 0 != printTag(exifData, Exiv2::exposureTime); - if (!done) { - done = 0 != printTag(exifData, Exiv2::shutterSpeedValue); - } - std::cout << std::endl; - // Get if from FNumber and, failing that, try ApertureValue - printLabel(_("Aperture")); - done = 0 != printTag(exifData, Exiv2::fNumber); - if (!done) { - done = 0 != printTag(exifData, Exiv2::apertureValue); - } - std::cout << std::endl; - printTag(exifData, Exiv2::exposureBiasValue , _("Exposure bias")); - printTag(exifData, Exiv2::flash , _("Flash")); - printTag(exifData, Exiv2::flashBias , _("Flash bias")); - printTag(exifData, Exiv2::focalLength , _("Focal length")); - printTag(exifData, Exiv2::subjectDistance , _("Subject distance")); - printTag(exifData, Exiv2::isoSpeed , _("ISO speed")); - printTag(exifData, Exiv2::exposureMode , _("Exposure mode")); - printTag(exifData, Exiv2::meteringMode , _("Metering mode")); - printTag(exifData, Exiv2::macroMode , _("Macro mode")); - printTag(exifData, Exiv2::imageQuality , _("Image quality")); - printTag(exifData, Exiv2::whiteBalance , _("White balance")); - printTag(exifData, "Exif.Image.Copyright" , _("Copyright")); - printTag(exifData, "Exif.Photo.UserComment" , _("Exif comment")); + printTag(exifData, Exiv2::make , _("Camera make") ); + printTag(exifData, Exiv2::model , _("Camera model") ); + printTag(exifData, Exiv2::dateTimeOriginal , _("Image timestamp") ); + printTag(exifData, "Exif.Canon.FileNumber" , _("File number") ); + printTag(exifData, Exiv2::exposureTime , _("Exposure time") , Exiv2::shutterSpeedValue ); + printTag(exifData, Exiv2::fNumber , _("Aperture") , Exiv2::apertureValue ); + printTag(exifData, Exiv2::exposureBiasValue , _("Exposure bias") ); + printTag(exifData, Exiv2::flash , _("Flash") ); + printTag(exifData, Exiv2::flashBias , _("Flash bias") ); + printTag(exifData, Exiv2::focalLength , _("Focal length") ); + printTag(exifData, Exiv2::subjectDistance , _("Subject distance") ); + printTag(exifData, Exiv2::isoSpeed , _("ISO speed") ); + printTag(exifData, Exiv2::exposureMode , _("Exposure mode") ); + printTag(exifData, Exiv2::meteringMode , _("Metering mode") ); + printTag(exifData, Exiv2::macroMode , _("Macro mode") ); + printTag(exifData, Exiv2::imageQuality , _("Image quality") ); + printTag(exifData, Exiv2::whiteBalance , _("White balance") ); + printTag(exifData, "Exif.Image.Copyright" , _("Copyright") ); + printTag(exifData, "Exif.Photo.UserComment" , _("Exif comment") ); + std::cout << std::endl; return 0; @@ -397,7 +386,8 @@ namespace Action { int Print::printTag(const Exiv2::ExifData& exifData, EasyAccessFct easyAccessFct, - const std::string& label) const + const std::string& label, + EasyAccessFct easyAccessFctFallback) const { int rc = 0; if (!label.empty()) { @@ -408,6 +398,14 @@ namespace Action { md->write(std::cout, &exifData); rc = 1; } + else if (NULL != easyAccessFctFallback) + { + md = easyAccessFctFallback(exifData); + if (md != exifData.end()) { + md->write(std::cout, &exifData); + rc = 1; + } + } if (!label.empty()) std::cout << std::endl; return rc; } // Print::printTag diff --git a/src/actions.hpp b/src/actions.hpp index cc070a1f..e63613cd 100644 --- a/src/actions.hpp +++ b/src/actions.hpp @@ -187,7 +187,8 @@ namespace Action { */ int printTag(const Exiv2::ExifData& exifData, EasyAccessFct easyAccessFct, - const std::string& label ="") const; + const std::string& label ="", + EasyAccessFct easyAccessFctFallback =NULL) const; private: virtual Print* clone_() const;