easyaccess const changes

Signed-off-by: Rosen Penev <rosenp@gmail.com>
main
Rosen Penev 2 years ago
parent b92b121532
commit 2e33dad1d1

@ -16,7 +16,7 @@ using namespace Exiv2;
@param keys Array of keys to look for @param keys Array of keys to look for
@param count Number of elements in the array @param count Number of elements in the array
*/ */
ExifData::const_iterator findMetadatum(const ExifData& ed, const char* keys[], size_t count) { ExifData::const_iterator findMetadatum(const ExifData& ed, const char* const keys[], size_t count) {
for (size_t i = 0; i < count; ++i) { for (size_t i = 0; i < count; ++i) {
auto pos = ed.findKey(ExifKey(keys[i])); auto pos = ed.findKey(ExifKey(keys[i]));
if (pos != ed.end()) if (pos != ed.end())
@ -31,42 +31,45 @@ ExifData::const_iterator findMetadatum(const ExifData& ed, const char* keys[], s
// class member definitions // class member definitions
namespace Exiv2 { namespace Exiv2 {
ExifData::const_iterator orientation(const ExifData& ed) { ExifData::const_iterator orientation(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Image.Orientation", "Exif.Panasonic.Rotation", "Exif.PanasonicRaw.Orientation", "Exif.Image.Orientation", "Exif.Panasonic.Rotation", "Exif.PanasonicRaw.Orientation",
"Exif.MinoltaCs5D.Rotation", "Exif.MinoltaCs5D.Rotation2", "Exif.MinoltaCs7D.Rotation", "Exif.MinoltaCs5D.Rotation", "Exif.MinoltaCs5D.Rotation2", "Exif.MinoltaCs7D.Rotation",
"Exif.Sony1MltCsA100.Rotation", "Exif.Sony1Cs.Rotation", "Exif.Sony2Cs.Rotation", "Exif.Sony1MltCsA100.Rotation", "Exif.Sony1Cs.Rotation", "Exif.Sony2Cs.Rotation",
"Exif.Sony1Cs2.Rotation", "Exif.Sony2Cs2.Rotation", "Exif.Sony1MltCsA100.Rotation"}; "Exif.Sony1Cs2.Rotation", "Exif.Sony2Cs2.Rotation", "Exif.Sony1MltCsA100.Rotation",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator isoSpeed(const ExifData& ed) { ExifData::const_iterator isoSpeed(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.ISOSpeedRatings", static constexpr const char* keys[] = {
"Exif.Image.ISOSpeedRatings", "Exif.Photo.ISOSpeedRatings",
"Exif.CanonSi.ISOSpeed", "Exif.Image.ISOSpeedRatings",
"Exif.CanonCs.ISOSpeed", "Exif.CanonSi.ISOSpeed",
"Exif.Nikon1.ISOSpeed", "Exif.CanonCs.ISOSpeed",
"Exif.Nikon2.ISOSpeed", "Exif.Nikon1.ISOSpeed",
"Exif.Nikon3.ISOSettings", "Exif.Nikon2.ISOSpeed",
"Exif.Nikon3.ISOSpeed", "Exif.Nikon3.ISOSettings",
"Exif.NikonIi.ISO", "Exif.Nikon3.ISOSpeed",
"Exif.NikonIi.ISO2", "Exif.NikonIi.ISO",
"Exif.NikonSiD300a.ISO", "Exif.NikonIi.ISO2",
"Exif.MinoltaCsNew.ISOSetting", "Exif.NikonSiD300a.ISO",
"Exif.MinoltaCsOld.ISOSetting", "Exif.MinoltaCsNew.ISOSetting",
"Exif.MinoltaCs5D.ISOSpeed", "Exif.MinoltaCsOld.ISOSetting",
"Exif.MinoltaCs7D.ISOSpeed", "Exif.MinoltaCs5D.ISOSpeed",
"Exif.Sony1Cs.ISOSetting", "Exif.MinoltaCs7D.ISOSpeed",
"Exif.Sony2Cs.ISOSetting", "Exif.Sony1Cs.ISOSetting",
"Exif.Sony1Cs2.ISOSetting", "Exif.Sony2Cs.ISOSetting",
"Exif.Sony2Cs2.ISOSetting", "Exif.Sony1Cs2.ISOSetting",
"Exif.Sony1MltCsA100.ISOSetting", "Exif.Sony2Cs2.ISOSetting",
"Exif.Pentax.ISO", "Exif.Sony1MltCsA100.ISOSetting",
"Exif.PentaxDng.ISO", "Exif.Pentax.ISO",
"Exif.Olympus.ISOSpeed", "Exif.PentaxDng.ISO",
"Exif.Samsung2.ISO", "Exif.Olympus.ISOSpeed",
"Exif.Casio.ISO", "Exif.Samsung2.ISO",
"Exif.Casio2.ISO", "Exif.Casio.ISO",
"Exif.Casio2.ISOSpeed"}; "Exif.Casio2.ISO",
"Exif.Casio2.ISOSpeed",
};
struct SensKeyNameList { struct SensKeyNameList {
int count; int count;
@ -76,16 +79,19 @@ ExifData::const_iterator isoSpeed(const ExifData& ed) {
// covers Exif.Phot.SensitivityType values 1-7. Note that SOS, REI and // covers Exif.Phot.SensitivityType values 1-7. Note that SOS, REI and
// ISO do differ in their meaning. Values coming first in a list (and // ISO do differ in their meaning. Values coming first in a list (and
// existing as a tag) are picked up first and used as the "ISO" value. // existing as a tag) are picked up first and used as the "ISO" value.
static const SensKeyNameList sensitivityKey[] = { static constexpr SensKeyNameList sensitivityKey[] = {
{1, {"Exif.Photo.StandardOutputSensitivity"}}, {1, {"Exif.Photo.StandardOutputSensitivity"}},
{1, {"Exif.Photo.RecommendedExposureIndex"}}, {1, {"Exif.Photo.RecommendedExposureIndex"}},
{1, {"Exif.Photo.ISOSpeed"}}, {1, {"Exif.Photo.ISOSpeed"}},
{2, {"Exif.Photo.RecommendedExposureIndex", "Exif.Photo.StandardOutputSensitivity"}}, {2, {"Exif.Photo.RecommendedExposureIndex", "Exif.Photo.StandardOutputSensitivity"}},
{2, {"Exif.Photo.ISOSpeed", "Exif.Photo.StandardOutputSensitivity"}}, {2, {"Exif.Photo.ISOSpeed", "Exif.Photo.StandardOutputSensitivity"}},
{2, {"Exif.Photo.ISOSpeed", "Exif.Photo.RecommendedExposureIndex"}}, {2, {"Exif.Photo.ISOSpeed", "Exif.Photo.RecommendedExposureIndex"}},
{3, {"Exif.Photo.ISOSpeed", "Exif.Photo.RecommendedExposureIndex", "Exif.Photo.StandardOutputSensitivity"}}}; {3, {"Exif.Photo.ISOSpeed", "Exif.Photo.RecommendedExposureIndex", "Exif.Photo.StandardOutputSensitivity"}},
};
static const char* sensitivityType[] = {"Exif.Photo.SensitivityType"}; static constexpr const char* sensitivityType[] = {
"Exif.Photo.SensitivityType",
};
// Find the first ISO value which is not "0" // Find the first ISO value which is not "0"
const size_t cnt = std::size(keys); const size_t cnt = std::size(keys);
@ -113,7 +119,7 @@ ExifData::const_iterator isoSpeed(const ExifData& ed) {
// ISO value (see EXIF 2.3 Annex G) // ISO value (see EXIF 2.3 Annex G)
int64_t iso_tmp_val = -1; int64_t iso_tmp_val = -1;
while (iso_tmp_val == -1 && (iso_val == 65535 || md == ed.end())) { while (iso_tmp_val == -1 && (iso_val == 65535 || md == ed.end())) {
auto md_st = findMetadatum(ed, sensitivityType, 1); auto md_st = findMetadatum(ed, sensitivityType, std::size(sensitivityType));
// no SensitivityType? exit with existing data // no SensitivityType? exit with existing data
if (md_st == ed.end()) if (md_st == ed.end())
break; break;
@ -130,7 +136,7 @@ ExifData::const_iterator isoSpeed(const ExifData& ed) {
const SensKeyNameList* sensKeys = &sensitivityKey[st_val - 1]; const SensKeyNameList* sensKeys = &sensitivityKey[st_val - 1];
md_st = ed.end(); md_st = ed.end();
for (int idx = 0; idx < sensKeys->count; md_st = ed.end()) { for (int idx = 0; idx < sensKeys->count; md_st = ed.end()) {
md_st = findMetadatum(ed, const_cast<const char**>(sensKeys->keys), sensKeys->count); md_st = findMetadatum(ed, sensKeys->keys, sensKeys->count);
if (md_st == ed.end()) if (md_st == ed.end())
break; break;
std::ostringstream os_iso; std::ostringstream os_iso;
@ -152,72 +158,82 @@ ExifData::const_iterator isoSpeed(const ExifData& ed) {
} }
ExifData::const_iterator dateTimeOriginal(const ExifData& ed) { ExifData::const_iterator dateTimeOriginal(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.DateTimeOriginal", "Exif.Image.DateTimeOriginal"}; static constexpr const char* keys[] = {
"Exif.Photo.DateTimeOriginal",
"Exif.Image.DateTimeOriginal",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator flashBias(const ExifData& ed) { ExifData::const_iterator flashBias(const ExifData& ed) {
static const char* keys[] = {"Exif.CanonSi.FlashBias", "Exif.Panasonic.FlashBias", static constexpr const char* keys[] = {
"Exif.Olympus.FlashBias", "Exif.OlympusCs.FlashExposureComp", "Exif.CanonSi.FlashBias", "Exif.Panasonic.FlashBias", "Exif.Olympus.FlashBias",
"Exif.Minolta.FlashExposureComp", "Exif.SonyMinolta.FlashExposureComp", "Exif.OlympusCs.FlashExposureComp", "Exif.Minolta.FlashExposureComp", "Exif.SonyMinolta.FlashExposureComp",
"Exif.Sony1.FlashExposureComp", "Exif.Sony2.FlashExposureComp"}; "Exif.Sony1.FlashExposureComp", "Exif.Sony2.FlashExposureComp",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator exposureMode(const ExifData& ed) { ExifData::const_iterator exposureMode(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Photo.ExposureProgram", "Exif.Image.ExposureProgram", "Exif.CanonCs.ExposureProgram", "Exif.Photo.ExposureProgram", "Exif.Image.ExposureProgram", "Exif.CanonCs.ExposureProgram",
"Exif.MinoltaCs7D.ExposureMode", "Exif.MinoltaCs5D.ExposureMode", "Exif.MinoltaCsNew.ExposureMode", "Exif.MinoltaCs7D.ExposureMode", "Exif.MinoltaCs5D.ExposureMode", "Exif.MinoltaCsNew.ExposureMode",
"Exif.MinoltaCsOld.ExposureMode", "Exif.OlympusCs.ExposureMode", "Exif.Sony1.ExposureMode", "Exif.MinoltaCsOld.ExposureMode", "Exif.OlympusCs.ExposureMode", "Exif.Sony1.ExposureMode",
"Exif.Sony2.ExposureMode", "Exif.Sony1Cs.ExposureProgram", "Exif.Sony1Cs2.ExposureProgram", "Exif.Sony2.ExposureMode", "Exif.Sony1Cs.ExposureProgram", "Exif.Sony1Cs2.ExposureProgram",
"Exif.Sony2Cs.ExposureProgram", "Exif.Sony1MltCsA100.ExposureMode", "Exif.SonyMisc2b.ExposureProgram", "Exif.Sony2Cs.ExposureProgram", "Exif.Sony1MltCsA100.ExposureMode", "Exif.SonyMisc2b.ExposureProgram",
"Exif.Sigma.ExposureMode"}; "Exif.Sigma.ExposureMode",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator sceneMode(const ExifData& ed) { ExifData::const_iterator sceneMode(const ExifData& ed) {
static const char* keys[] = {"Exif.CanonCs.EasyMode", static constexpr const char* keys[] = {
"Exif.Fujifilm.PictureMode", "Exif.CanonCs.EasyMode",
"Exif.MinoltaCsNew.SubjectProgram", "Exif.Fujifilm.PictureMode",
"Exif.MinoltaCsOld.SubjectProgram", "Exif.MinoltaCsNew.SubjectProgram",
"Exif.Minolta.SceneMode", "Exif.MinoltaCsOld.SubjectProgram",
"Exif.SonyMinolta.SceneMode", "Exif.Minolta.SceneMode",
"Exif.Sony1.SceneMode", "Exif.SonyMinolta.SceneMode",
"Exif.Sony2.SceneMode", "Exif.Sony1.SceneMode",
"Exif.OlympusCs.SceneMode", "Exif.Sony2.SceneMode",
"Exif.Panasonic.ShootingMode", "Exif.OlympusCs.SceneMode",
"Exif.Panasonic.SceneMode", "Exif.Panasonic.ShootingMode",
"Exif.Pentax.PictureMode", "Exif.Panasonic.SceneMode",
"Exif.PentaxDng.PictureMode", "Exif.Pentax.PictureMode",
"Exif.Photo.SceneCaptureType"}; "Exif.PentaxDng.PictureMode",
"Exif.Photo.SceneCaptureType",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator macroMode(const ExifData& ed) { ExifData::const_iterator macroMode(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.CanonCs.Macro", "Exif.Fujifilm.Macro", "Exif.Olympus.Macro", "Exif.Olympus2.Macro", "Exif.CanonCs.Macro", "Exif.Fujifilm.Macro", "Exif.Olympus.Macro", "Exif.Olympus2.Macro",
"Exif.OlympusCs.MacroMode", "Exif.Panasonic.Macro", "Exif.MinoltaCsNew.MacroMode", "Exif.MinoltaCsOld.MacroMode", "Exif.OlympusCs.MacroMode", "Exif.Panasonic.Macro", "Exif.MinoltaCsNew.MacroMode", "Exif.MinoltaCsOld.MacroMode",
"Exif.Sony1.Macro", "Exif.Sony2.Macro"}; "Exif.Sony1.Macro", "Exif.Sony2.Macro",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator imageQuality(const ExifData& ed) { ExifData::const_iterator imageQuality(const ExifData& ed) {
static const char* keys[] = {"Exif.CanonCs.Quality", "Exif.Fujifilm.Quality", "Exif.Sigma.Quality", static constexpr const char* keys[] = {
"Exif.Nikon1.Quality", "Exif.Nikon2.Quality", "Exif.Nikon3.Quality", "Exif.CanonCs.Quality", "Exif.Fujifilm.Quality", "Exif.Sigma.Quality",
"Exif.Olympus.Quality", "Exif.Olympus2.Quality", "Exif.OlympusCs.Quality", "Exif.Nikon1.Quality", "Exif.Nikon2.Quality", "Exif.Nikon3.Quality",
"Exif.Panasonic.Quality", "Exif.Pentax.Quality", "Exif.PentaxDng.Quality", "Exif.Olympus.Quality", "Exif.Olympus2.Quality", "Exif.OlympusCs.Quality",
"Exif.Sony1.JPEGQuality", "Exif.Sony1.Quality", "Exif.Sony1.Quality2", "Exif.Panasonic.Quality", "Exif.Pentax.Quality", "Exif.PentaxDng.Quality",
"Exif.Sony1Cs.Quality", "Exif.Sony2.JPEGQuality", "Exif.Sony2.Quality", "Exif.Sony1.JPEGQuality", "Exif.Sony1.Quality", "Exif.Sony1.Quality2",
"Exif.Sony2.Quality2", "Exif.Sony2Cs.Quality", "Exif.SonyMinolta.Quality", "Exif.Sony1Cs.Quality", "Exif.Sony2.JPEGQuality", "Exif.Sony2.Quality",
"Exif.SonyMisc3c.Quality2", "Exif.Minolta.Quality", "Exif.MinoltaCsNew.Quality", "Exif.Sony2.Quality2", "Exif.Sony2Cs.Quality", "Exif.SonyMinolta.Quality",
"Exif.MinoltaCsOld.Quality", "Exif.MinoltaCs5D.Quality", "Exif.MinoltaCs7D.Quality", "Exif.SonyMisc3c.Quality2", "Exif.Minolta.Quality", "Exif.MinoltaCsNew.Quality",
"Exif.Sony1MltCsA100.Quality", "Exif.Casio.Quality", "Exif.Casio2.QualityMode", "Exif.MinoltaCsOld.Quality", "Exif.MinoltaCs5D.Quality", "Exif.MinoltaCs7D.Quality",
"Exif.Casio2.Quality"}; "Exif.Sony1MltCsA100.Quality", "Exif.Casio.Quality", "Exif.Casio2.QualityMode",
"Exif.Casio2.Quality",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator whiteBalance(const ExifData& ed) { ExifData::const_iterator whiteBalance(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.CanonSi.WhiteBalance", "Exif.Fujifilm.WhiteBalance", "Exif.Sigma.WhiteBalance", "Exif.CanonSi.WhiteBalance", "Exif.Fujifilm.WhiteBalance", "Exif.Sigma.WhiteBalance",
"Exif.Nikon1.WhiteBalance", "Exif.Nikon2.WhiteBalance", "Exif.Nikon3.WhiteBalance", "Exif.Nikon1.WhiteBalance", "Exif.Nikon2.WhiteBalance", "Exif.Nikon3.WhiteBalance",
"Exif.Olympus.WhiteBalance", "Exif.OlympusCs.WhiteBalance", "Exif.Panasonic.WhiteBalance", "Exif.Olympus.WhiteBalance", "Exif.OlympusCs.WhiteBalance", "Exif.Panasonic.WhiteBalance",
@ -226,43 +242,33 @@ ExifData::const_iterator whiteBalance(const ExifData& ed) {
"Exif.PentaxDng.WhiteBalance", "Exif.Sony1.WhiteBalance", "Exif.Sony2.WhiteBalance", "Exif.PentaxDng.WhiteBalance", "Exif.Sony1.WhiteBalance", "Exif.Sony2.WhiteBalance",
"Exif.Sony1.WhiteBalance2", "Exif.Sony2.WhiteBalance2", "Exif.Sony1MltCsA100.WhiteBalance", "Exif.Sony1.WhiteBalance2", "Exif.Sony2.WhiteBalance2", "Exif.Sony1MltCsA100.WhiteBalance",
"Exif.SonyMinolta.WhiteBalance", "Exif.Casio.WhiteBalance", "Exif.Casio2.WhiteBalance", "Exif.SonyMinolta.WhiteBalance", "Exif.Casio.WhiteBalance", "Exif.Casio2.WhiteBalance",
"Exif.Casio2.WhiteBalance2", "Exif.Photo.WhiteBalance"}; "Exif.Casio2.WhiteBalance2", "Exif.Photo.WhiteBalance",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator lensName(const ExifData& ed) { ExifData::const_iterator lensName(const ExifData& ed) {
static const char* keys[] = {// Try Exif.CanonCs.LensType first. static constexpr const char* keys[] = {
"Exif.CanonCs.LensType", // Try Exif.CanonCs.LensType first.
"Exif.Photo.LensModel", "Exif.CanonCs.LensType", "Exif.Photo.LensModel",
"Exif.Canon.LensModel", "Exif.Canon.LensModel", "Exif.NikonLd1.LensIDNumber",
"Exif.NikonLd1.LensIDNumber", "Exif.NikonLd2.LensIDNumber", "Exif.NikonLd3.LensIDNumber",
"Exif.NikonLd2.LensIDNumber", "Exif.NikonLd4.LensID", "Exif.NikonLd4.LensIDNumber",
"Exif.NikonLd3.LensIDNumber", "Exif.Pentax.LensType", "Exif.PentaxDng.LensType",
"Exif.NikonLd4.LensID", "Exif.Minolta.LensID", "Exif.SonyMinolta.LensID",
"Exif.NikonLd4.LensIDNumber", "Exif.Sony1.LensID", "Exif.Sony2.LensID",
"Exif.Pentax.LensType", "Exif.Sony1.LensSpec", "Exif.Sony2.LensSpec",
"Exif.PentaxDng.LensType", "Exif.OlympusEq.LensType", "Exif.Panasonic.LensType",
"Exif.Minolta.LensID", "Exif.Samsung2.LensType", "Exif.Photo.LensSpecification",
"Exif.SonyMinolta.LensID", "Exif.Nikon3.Lens",
"Exif.Sony1.LensID", };
"Exif.Sony2.LensID",
"Exif.Sony1.LensSpec", for (const auto& key : keys) {
"Exif.Sony2.LensSpec",
"Exif.OlympusEq.LensType",
"Exif.Panasonic.LensType",
"Exif.Samsung2.LensType",
"Exif.Photo.LensSpecification",
"Exif.Nikon3.Lens"};
for (auto& key : keys) {
auto pos = ed.findKey(ExifKey(key)); auto pos = ed.findKey(ExifKey(key));
if (pos != ed.end()) { if (pos != ed.end()) {
// Exif.NikonLd4.LensID and Exif.NikonLd4.LensIDNumber are usually together included, // Exif.NikonLd4.LensID and Exif.NikonLd4.LensIDNumber are usually together included,
// one of them has value 0 (which means undefined), so skip tag with value 0 // one of them has value 0 (which means undefined), so skip tag with value 0
if (strncmp(key, "Exif.NikonLd4", 13) == 0) { if (strncmp(key, "Exif.NikonLd4", 13) != 0 || pos->getValue()->toInt64(0) > 0)
if (pos->getValue()->toInt64(0) > 0)
return pos;
} else
return pos; return pos;
} }
} }
@ -270,196 +276,249 @@ ExifData::const_iterator lensName(const ExifData& ed) {
} }
ExifData::const_iterator saturation(const ExifData& ed) { ExifData::const_iterator saturation(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Photo.Saturation", "Exif.CanonCs.Saturation", "Exif.MinoltaCsNew.Saturation", "Exif.Photo.Saturation", "Exif.CanonCs.Saturation", "Exif.MinoltaCsNew.Saturation",
"Exif.MinoltaCsOld.Saturation", "Exif.MinoltaCs7D.Saturation", "Exif.MinoltaCs5D.Saturation", "Exif.MinoltaCsOld.Saturation", "Exif.MinoltaCs7D.Saturation", "Exif.MinoltaCs5D.Saturation",
"Exif.Fujifilm.Color", "Exif.Nikon3.Saturation", "Exif.NikonPc.Saturation", "Exif.Fujifilm.Color", "Exif.Nikon3.Saturation", "Exif.NikonPc.Saturation",
"Exif.Panasonic.Saturation", "Exif.Pentax.Saturation", "Exif.PentaxDng.Saturation", "Exif.Panasonic.Saturation", "Exif.Pentax.Saturation", "Exif.PentaxDng.Saturation",
"Exif.Sigma.Saturation", "Exif.Sony1.Saturation", "Exif.Sony2.Saturation", "Exif.Sigma.Saturation", "Exif.Sony1.Saturation", "Exif.Sony2.Saturation",
"Exif.Casio.Saturation", "Exif.Casio2.Saturation", "Exif.Casio2.Saturation2"}; "Exif.Casio.Saturation", "Exif.Casio2.Saturation", "Exif.Casio2.Saturation2",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator sharpness(const ExifData& ed) { ExifData::const_iterator sharpness(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Photo.Sharpness", "Exif.CanonCs.Sharpness", "Exif.Fujifilm.Sharpness", "Exif.Photo.Sharpness", "Exif.CanonCs.Sharpness", "Exif.Fujifilm.Sharpness",
"Exif.MinoltaCsNew.Sharpness", "Exif.MinoltaCsOld.Sharpness", "Exif.MinoltaCs7D.Sharpness", "Exif.MinoltaCsNew.Sharpness", "Exif.MinoltaCsOld.Sharpness", "Exif.MinoltaCs7D.Sharpness",
"Exif.MinoltaCs5D.Sharpness", "Exif.Olympus.SharpnessFactor", "Exif.Panasonic.Sharpness", "Exif.MinoltaCs5D.Sharpness", "Exif.Olympus.SharpnessFactor", "Exif.Panasonic.Sharpness",
"Exif.Pentax.Sharpness", "Exif.PentaxDng.Sharpness", "Exif.Sigma.Sharpness", "Exif.Pentax.Sharpness", "Exif.PentaxDng.Sharpness", "Exif.Sigma.Sharpness",
"Exif.Sony1.Sharpness", "Exif.Sony2.Sharpness", "Exif.Casio.Sharpness", "Exif.Sony1.Sharpness", "Exif.Sony2.Sharpness", "Exif.Casio.Sharpness",
"Exif.Casio2.Sharpness", "Exif.Casio2.Sharpness2"}; "Exif.Casio2.Sharpness", "Exif.Casio2.Sharpness2",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator contrast(const ExifData& ed) { ExifData::const_iterator contrast(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.Contrast", "Exif.CanonCs.Contrast", "Exif.Fujifilm.Tone", static constexpr const char* keys[] = {
"Exif.MinoltaCsNew.Contrast", "Exif.MinoltaCsOld.Contrast", "Exif.MinoltaCs7D.Contrast", "Exif.Photo.Contrast", "Exif.CanonCs.Contrast", "Exif.Fujifilm.Tone",
"Exif.MinoltaCs5D.Contrast", "Exif.Olympus.Contrast", "Exif.Panasonic.Contrast", "Exif.MinoltaCsNew.Contrast", "Exif.MinoltaCsOld.Contrast", "Exif.MinoltaCs7D.Contrast",
"Exif.Pentax.Contrast", "Exif.PentaxDng.Contrast", "Exif.Sigma.Contrast", "Exif.MinoltaCs5D.Contrast", "Exif.Olympus.Contrast", "Exif.Panasonic.Contrast",
"Exif.Sony1.Contrast", "Exif.Sony2.Contrast", "Exif.Casio.Contrast", "Exif.Pentax.Contrast", "Exif.PentaxDng.Contrast", "Exif.Sigma.Contrast",
"Exif.Casio2.Contrast", "Exif.Casio2.Contrast2" "Exif.Sony1.Contrast", "Exif.Sony2.Contrast", "Exif.Casio.Contrast",
"Exif.Casio2.Contrast", "Exif.Casio2.Contrast2",
}; };
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator sceneCaptureType(const ExifData& ed) { ExifData::const_iterator sceneCaptureType(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.SceneCaptureType", "Exif.Olympus.SpecialMode"}; static constexpr const char* keys[] = {
"Exif.Photo.SceneCaptureType",
"Exif.Olympus.SpecialMode",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator meteringMode(const ExifData& ed) { ExifData::const_iterator meteringMode(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Photo.MeteringMode", "Exif.Image.MeteringMode", "Exif.CanonCs.MeteringMode", "Exif.Photo.MeteringMode", "Exif.Image.MeteringMode", "Exif.CanonCs.MeteringMode",
"Exif.MinoltaCs5D.MeteringMode", "Exif.MinoltaCsOld.MeteringMode", "Exif.OlympusCs.MeteringMode", "Exif.MinoltaCs5D.MeteringMode", "Exif.MinoltaCsOld.MeteringMode", "Exif.OlympusCs.MeteringMode",
"Exif.Pentax.MeteringMode", "Exif.PentaxDng.MeteringMode", "Exif.Sigma.MeteringMode", "Exif.Pentax.MeteringMode", "Exif.PentaxDng.MeteringMode", "Exif.Sigma.MeteringMode",
"Exif.Sony1.MeteringMode2", "Exif.Sony1Cs.MeteringMode", "Exif.Sony1Cs2.MeteringMode", "Exif.Sony1.MeteringMode2", "Exif.Sony1Cs.MeteringMode", "Exif.Sony1Cs2.MeteringMode",
"Exif.Sony2.MeteringMode2", "Exif.Sony2Cs.MeteringMode", "Exif.Sony1MltCsA100.MeteringMode"}; "Exif.Sony2.MeteringMode2", "Exif.Sony2Cs.MeteringMode", "Exif.Sony1MltCsA100.MeteringMode",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator make(const ExifData& ed) { ExifData::const_iterator make(const ExifData& ed) {
static const char* keys[] = {"Exif.Image.Make", "Exif.PanasonicRaw.Make"}; static constexpr const char* keys[] = {
"Exif.Image.Make",
"Exif.PanasonicRaw.Make",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator model(const ExifData& ed) { ExifData::const_iterator model(const ExifData& ed) {
static const char* keys[] = {"Exif.Image.Model", static constexpr const char* keys[] = {
"Exif.MinoltaCsOld.MinoltaModel", "Exif.Image.Model",
"Exif.MinoltaCsNew.MinoltaModel", "Exif.MinoltaCsOld.MinoltaModel",
"Exif.PanasonicRaw.Model", "Exif.MinoltaCsNew.MinoltaModel",
"Exif.Pentax.ModelID", "Exif.PanasonicRaw.Model",
"Exif.PentaxDng.ModelID", "Exif.Pentax.ModelID",
"Exif.Sony1.SonyModelID", "Exif.PentaxDng.ModelID",
"Exif.Sony2.SonyModelID"}; "Exif.Sony1.SonyModelID",
"Exif.Sony2.SonyModelID",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator exposureTime(const ExifData& ed) { ExifData::const_iterator exposureTime(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.ExposureTime", "Exif.Image.ExposureTime", "Exif.Pentax.ExposureTime", static constexpr const char* keys[] = {
"Exif.PentaxDng.ExposureTime", "Exif.Samsung2.ExposureTime"}; "Exif.Photo.ExposureTime", "Exif.Image.ExposureTime", "Exif.Pentax.ExposureTime",
"Exif.PentaxDng.ExposureTime", "Exif.Samsung2.ExposureTime",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator fNumber(const ExifData& ed) { ExifData::const_iterator fNumber(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.FNumber", "Exif.Image.FNumber", "Exif.Pentax.FNumber", static constexpr const char* keys[] = {
"Exif.PentaxDng.FNumber", "Exif.Samsung2.FNumber"}; "Exif.Photo.FNumber", "Exif.Image.FNumber", "Exif.Pentax.FNumber",
"Exif.PentaxDng.FNumber", "Exif.Samsung2.FNumber",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator shutterSpeedValue(const ExifData& ed) { ExifData::const_iterator shutterSpeedValue(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.ShutterSpeedValue", "Exif.Image.ShutterSpeedValue"}; static constexpr const char* keys[] = {
"Exif.Photo.ShutterSpeedValue",
"Exif.Image.ShutterSpeedValue",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator apertureValue(const ExifData& ed) { ExifData::const_iterator apertureValue(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.ApertureValue", "Exif.Image.ApertureValue", "Exif.CanonSi.ApertureValue"}; static constexpr const char* keys[] = {
"Exif.Photo.ApertureValue",
"Exif.Image.ApertureValue",
"Exif.CanonSi.ApertureValue",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator brightnessValue(const ExifData& ed) { ExifData::const_iterator brightnessValue(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.BrightnessValue", "Exif.Image.BrightnessValue", "Exif.Sony1.Brightness", static constexpr const char* keys[] = {
"Exif.Sony2.Brightness"}; "Exif.Photo.BrightnessValue",
"Exif.Image.BrightnessValue",
"Exif.Sony1.Brightness",
"Exif.Sony2.Brightness",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator exposureBiasValue(const ExifData& ed) { ExifData::const_iterator exposureBiasValue(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.ExposureBiasValue", "Exif.Image.ExposureBiasValue", static constexpr const char* keys[] = {
"Exif.MinoltaCs5D.ExposureManualBias", "Exif.OlympusRd.ExposureBiasValue", "Exif.Photo.ExposureBiasValue", "Exif.Image.ExposureBiasValue", "Exif.MinoltaCs5D.ExposureManualBias",
"Exif.OlympusRd2.ExposureBiasValue"}; "Exif.OlympusRd.ExposureBiasValue", "Exif.OlympusRd2.ExposureBiasValue",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator maxApertureValue(const ExifData& ed) { ExifData::const_iterator maxApertureValue(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.MaxApertureValue", "Exif.Image.MaxApertureValue", "Exif.CanonCs.MaxAperture", static constexpr const char* keys[] = {
"Exif.NikonLd4.MaxAperture"}; "Exif.Photo.MaxApertureValue",
"Exif.Image.MaxApertureValue",
"Exif.CanonCs.MaxAperture",
"Exif.NikonLd4.MaxAperture",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator subjectDistance(const ExifData& ed) { ExifData::const_iterator subjectDistance(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Photo.SubjectDistance", "Exif.Image.SubjectDistance", "Exif.CanonSi.SubjectDistance", "Exif.Photo.SubjectDistance", "Exif.Image.SubjectDistance", "Exif.CanonSi.SubjectDistance",
"Exif.CanonFi.FocusDistanceUpper", "Exif.CanonFi.FocusDistanceLower", "Exif.MinoltaCsNew.FocusDistance", "Exif.CanonFi.FocusDistanceUpper", "Exif.CanonFi.FocusDistanceLower", "Exif.MinoltaCsNew.FocusDistance",
"Exif.Nikon1.FocusDistance", "Exif.Nikon3.FocusDistance", "Exif.NikonLd2.FocusDistance", "Exif.Nikon1.FocusDistance", "Exif.Nikon3.FocusDistance", "Exif.NikonLd2.FocusDistance",
"Exif.NikonLd3.FocusDistance", "Exif.NikonLd4.FocusDistance", "Exif.Olympus.FocusDistance", "Exif.NikonLd3.FocusDistance", "Exif.NikonLd4.FocusDistance", "Exif.Olympus.FocusDistance",
"Exif.OlympusFi.FocusDistance", "Exif.Casio.ObjectDistance", "Exif.Casio2.ObjectDistance"}; "Exif.OlympusFi.FocusDistance", "Exif.Casio.ObjectDistance", "Exif.Casio2.ObjectDistance",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator lightSource(const ExifData& ed) { ExifData::const_iterator lightSource(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.LightSource", "Exif.Image.LightSource"}; static constexpr const char* keys[] = {
"Exif.Photo.LightSource",
"Exif.Image.LightSource",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator flash(const ExifData& ed) { ExifData::const_iterator flash(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.Flash", "Exif.Image.Flash", "Exif.Pentax.Flash", static constexpr const char* keys[] = {
"Exif.PentaxDng.Flash", "Exif.Sony1.FlashAction", "Exif.Sony2.FlashAction"}; "Exif.Photo.Flash", "Exif.Image.Flash", "Exif.Pentax.Flash",
"Exif.PentaxDng.Flash", "Exif.Sony1.FlashAction", "Exif.Sony2.FlashAction",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator serialNumber(const ExifData& ed) { ExifData::const_iterator serialNumber(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Image.CameraSerialNumber", "Exif.Photo.BodySerialNumber", "Exif.Canon.SerialNumber", "Exif.Image.CameraSerialNumber", "Exif.Photo.BodySerialNumber", "Exif.Canon.SerialNumber",
"Exif.Nikon3.SerialNumber", "Exif.Nikon3.SerialNO", "Exif.Fujifilm.SerialNumber", "Exif.Nikon3.SerialNumber", "Exif.Nikon3.SerialNO", "Exif.Fujifilm.SerialNumber",
"Exif.Olympus.SerialNumber2", "Exif.OlympusEq.SerialNumber", "Exif.Pentax.SerialNumber", "Exif.Olympus.SerialNumber2", "Exif.OlympusEq.SerialNumber", "Exif.Pentax.SerialNumber",
"Exif.PentaxDng.SerialNumber", "Exif.Sigma.SerialNumber", "Exif.Sony1.SerialNumber", "Exif.PentaxDng.SerialNumber", "Exif.Sigma.SerialNumber", "Exif.Sony1.SerialNumber",
"Exif.Sony2.SerialNumber"}; "Exif.Sony2.SerialNumber",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator focalLength(const ExifData& ed) { ExifData::const_iterator focalLength(const ExifData& ed) {
static const char* keys[] = { static constexpr const char* keys[] = {
"Exif.Photo.FocalLength", "Exif.Image.FocalLength", "Exif.Canon.FocalLength", "Exif.Photo.FocalLength", "Exif.Image.FocalLength", "Exif.Canon.FocalLength",
"Exif.NikonLd2.FocalLength", "Exif.NikonLd3.FocalLength", "Exif.MinoltaCsNew.FocalLength", "Exif.NikonLd2.FocalLength", "Exif.NikonLd3.FocalLength", "Exif.MinoltaCsNew.FocalLength",
"Exif.Pentax.FocalLength", "Exif.PentaxDng.FocalLength", "Exif.Casio2.FocalLength"}; "Exif.Pentax.FocalLength", "Exif.PentaxDng.FocalLength", "Exif.Casio2.FocalLength",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator subjectArea(const ExifData& ed) { ExifData::const_iterator subjectArea(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.SubjectArea", "Exif.Image.SubjectLocation"}; static constexpr const char* keys[] = {
"Exif.Photo.SubjectArea",
"Exif.Image.SubjectLocation",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator flashEnergy(const ExifData& ed) { ExifData::const_iterator flashEnergy(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.FlashEnergy", "Exif.Image.FlashEnergy"}; static constexpr const char* keys[] = {
"Exif.Photo.FlashEnergy",
"Exif.Image.FlashEnergy",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator exposureIndex(const ExifData& ed) { ExifData::const_iterator exposureIndex(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.ExposureIndex", "Exif.Image.ExposureIndex"}; static constexpr const char* keys[] = {
"Exif.Photo.ExposureIndex",
"Exif.Image.ExposureIndex",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator sensingMethod(const ExifData& ed) { ExifData::const_iterator sensingMethod(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.SensingMethod", "Exif.Image.SensingMethod"}; static constexpr const char* keys[] = {
"Exif.Photo.SensingMethod",
"Exif.Image.SensingMethod",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator afPoint(const ExifData& ed) { ExifData::const_iterator afPoint(const ExifData& ed) {
static const char* keys[] = {"Exif.CanonPi.AFPointsUsed", static constexpr const char* keys[] = {
"Exif.CanonPi.AFPointsUsed20D", "Exif.CanonPi.AFPointsUsed",
"Exif.CanonSi.AFPointUsed", "Exif.CanonPi.AFPointsUsed20D",
"Exif.CanonCs.AFPoint", "Exif.CanonSi.AFPointUsed",
"Exif.MinoltaCs7D.AFPoints", "Exif.CanonCs.AFPoint",
"Exif.Nikon1.AFFocusPos", "Exif.MinoltaCs7D.AFPoints",
"Exif.NikonAf.AFPoint", "Exif.Nikon1.AFFocusPos",
"Exif.NikonAf.AFPointsInFocus", "Exif.NikonAf.AFPoint",
"Exif.NikonAf2.AFPointsUsed", "Exif.NikonAf.AFPointsInFocus",
"Exif.NikonAf2.PrimaryAFPoint", "Exif.NikonAf2.AFPointsUsed",
"Exif.OlympusFi.AFPoint", "Exif.NikonAf2.PrimaryAFPoint",
"Exif.Pentax.AFPoint", "Exif.OlympusFi.AFPoint",
"Exif.Pentax.AFPointInFocus", "Exif.Pentax.AFPoint",
"Exif.PentaxDng.AFPoint", "Exif.Pentax.AFPointInFocus",
"Exif.PentaxDng.AFPointInFocus", "Exif.PentaxDng.AFPoint",
"Exif.Sony1.AFPointSelected", "Exif.PentaxDng.AFPointInFocus",
"Exif.Sony2.AFPointSelected", "Exif.Sony1.AFPointSelected",
"Exif.Sony1Cs.LocalAFAreaPoint", "Exif.Sony2.AFPointSelected",
"Exif.Sony2Cs.LocalAFAreaPoint", "Exif.Sony1Cs.LocalAFAreaPoint",
"Exif.Sony1Cs2.LocalAFAreaPoint", "Exif.Sony2Cs.LocalAFAreaPoint",
"Exif.Sony2Cs2.LocalAFAreaPoint", "Exif.Sony1Cs2.LocalAFAreaPoint",
"Exif.Sony1MltCsA100.LocalAFAreaPoint", "Exif.Sony2Cs2.LocalAFAreaPoint",
"Exif.Casio.AFPoint", "Exif.Sony1MltCsA100.LocalAFAreaPoint",
"Exif.Casio2.AFPointPosition"}; "Exif.Casio.AFPoint",
"Exif.Casio2.AFPointPosition",
};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }

Loading…
Cancel
Save