add missing commas

Formats the structs properly.

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

@ -190,7 +190,8 @@ const std::map<AsfVideo::GUIDTag, std::string> GUIDReferenceTags = {
{{0x6698B84E, 0x0AFA, 0x4330, {0xAE, 0xB2, 0x1C, 0x0A, 0x98, 0xD7, 0xA4, 0x4D}}, {{0x6698B84E, 0x0AFA, 0x4330, {0xAE, 0xB2, 0x1C, 0x0A, 0x98, 0xD7, 0xA4, 0x4D}},
"Payload_Extension_System_Encryption_Sample_ID"}, "Payload_Extension_System_Encryption_Sample_ID"},
{{0x00E1AF06, 0x7BEC, 0x11D1, {0xA5, 0x82, 0x00, 0xC0, 0x4F, 0xC2, 0x9C, 0xFB}}, {{0x00E1AF06, 0x7BEC, 0x11D1, {0xA5, 0x82, 0x00, 0xC0, 0x4F, 0xC2, 0x9C, 0xFB}},
"Payload_Extension_System_Degradable_JPEG"}}; "Payload_Extension_System_Degradable_JPEG"},
};
/*! /*!
@brief Function used to check if data stored in buf is equivalent to @brief Function used to check if data stored in buf is equivalent to

File diff suppressed because it is too large Load Diff

@ -21,62 +21,84 @@
// class member definitions // class member definitions
namespace Exiv2::Internal { namespace Exiv2::Internal {
//! RecordingMode, tag 0x0001 //! RecordingMode, tag 0x0001
constexpr TagDetails casioRecordingMode[] = {{1, N_("Single Shutter")}, {2, N_("Panorama")}, {3, N_("Night Scene")}, constexpr TagDetails casioRecordingMode[] = {
{4, N_("Portrait")}, {5, N_("Landscape")}, {7, N_("Panorama")}, {1, N_("Single Shutter")}, {2, N_("Panorama")}, {3, N_("Night Scene")},
{10, N_("Night Scene")}, {15, N_("Portrait")}, {16, N_("Landscape")}}; {4, N_("Portrait")}, {5, N_("Landscape")}, {7, N_("Panorama")},
{10, N_("Night Scene")}, {15, N_("Portrait")}, {16, N_("Landscape")},
};
//! Quality, tag 0x0002 //! Quality, tag 0x0002
constexpr TagDetails casioQuality[] = {{1, N_("Economy")}, {2, N_("Normal")}, {3, N_("Fine")}}; constexpr TagDetails casioQuality[] = {
{1, N_("Economy")},
{2, N_("Normal")},
{3, N_("Fine")},
};
//! Focus Mode, tag 0x0003 //! Focus Mode, tag 0x0003
constexpr TagDetails casioFocusMode[] = { constexpr TagDetails casioFocusMode[] = {
{2, N_("Macro")}, {3, N_("Auto")}, {4, N_("Manual")}, {5, N_("Infinity")}, {7, N_("Sport AF")}}; {2, N_("Macro")}, {3, N_("Auto")}, {4, N_("Manual")}, {5, N_("Infinity")}, {7, N_("Sport AF")},
};
//! FlashMode, tag 0x0004 //! FlashMode, tag 0x0004
constexpr TagDetails casioFlashMode[] = { constexpr TagDetails casioFlashMode[] = {
{1, N_("Auto")}, {2, N_("On")}, {3, N_("Off")}, {4, N_("Off")}, {5, N_("Red-eye Reduction")}}; {1, N_("Auto")}, {2, N_("On")}, {3, N_("Off")}, {4, N_("Off")}, {5, N_("Red-eye Reduction")},
};
//! Flash intensity, tag 0x0005 //! Flash intensity, tag 0x0005
constexpr TagDetails casioFlashIntensity[] = { constexpr TagDetails casioFlashIntensity[] = {
{11, N_("Weak")}, {12, N_("Low")}, {13, N_("Normal")}, {14, N_("High")}, {15, N_("Strong")}}; {11, N_("Weak")}, {12, N_("Low")}, {13, N_("Normal")}, {14, N_("High")}, {15, N_("Strong")},
};
//! white balance, tag 0x0007 //! white balance, tag 0x0007
constexpr TagDetails casioWhiteBalance[] = {{1, N_("Auto")}, {2, N_("Tungsten")}, {3, N_("Daylight")}, constexpr TagDetails casioWhiteBalance[] = {
{4, N_("Fluorescent")}, {5, N_("Shade")}, {129, N_("Manual")}}; {1, N_("Auto")}, {2, N_("Tungsten")}, {3, N_("Daylight")},
{4, N_("Fluorescent")}, {5, N_("Shade")}, {129, N_("Manual")},
};
//! Flash intensity, tag 0x0005 //! Flash intensity, tag 0x0005
constexpr TagDetails casioDigitalZoom[] = {{0x10000, N_("Off")}, {0x10001, N_("2x")}, {0x13333, N_("1.2x")}, constexpr TagDetails casioDigitalZoom[] = {
{0x13ae1, N_("1.23x")}, {0x19999, N_("1.6x")}, {0x20000, N_("2x")}, {0x10000, N_("Off")}, {0x10001, N_("2x")}, {0x13333, N_("1.2x")}, {0x13ae1, N_("1.23x")},
{0x33333, N_("3.2x")}, {0x40000, N_("4x")}}; {0x19999, N_("1.6x")}, {0x20000, N_("2x")}, {0x33333, N_("3.2x")}, {0x40000, N_("4x")},
};
//! Sharpness, tag 0x000b //! Sharpness, tag 0x000b
constexpr TagDetails casioSharpness[] = {{0, N_("Normal")}, {1, N_("Soft")}, {2, N_("Hard")}, constexpr TagDetails casioSharpness[] = {
{16, N_("Normal")}, {17, N_("+1")}, {18, N_("-1")}}; {0, N_("Normal")}, {1, N_("Soft")}, {2, N_("Hard")}, {16, N_("Normal")}, {17, N_("+1")}, {18, N_("-1")},
};
//! Contrast, tag 0x000c //! Contrast, tag 0x000c
constexpr TagDetails casioContrast[] = {{0, N_("Normal")}, {1, N_("Low")}, {2, N_("High")}, constexpr TagDetails casioContrast[] = {
{16, N_("Normal")}, {17, N_("+1")}, {18, N_("-1")}}; {0, N_("Normal")}, {1, N_("Low")}, {2, N_("High")}, {16, N_("Normal")}, {17, N_("+1")}, {18, N_("-1")},
};
//! Saturation, tag 0x000d //! Saturation, tag 0x000d
constexpr TagDetails casioSaturation[] = {{0, N_("Normal")}, {1, N_("Low")}, {2, N_("High")}, constexpr TagDetails casioSaturation[] = {
{16, N_("Normal")}, {17, N_("+1")}, {18, N_("-1")}}; {0, N_("Normal")}, {1, N_("Low")}, {2, N_("High")}, {16, N_("Normal")}, {17, N_("+1")}, {18, N_("-1")},
};
//! Enhancement, tag 0x0016 //! Enhancement, tag 0x0016
constexpr TagDetails casioEnhancement[] = { constexpr TagDetails casioEnhancement[] = {
{1, N_("Off")}, {2, N_("Red")}, {3, N_("Green")}, {4, N_("Blue")}, {5, N_("Flesh Tones")}}; {1, N_("Off")}, {2, N_("Red")}, {3, N_("Green")}, {4, N_("Blue")}, {5, N_("Flesh Tones")},
};
//! Color filter, tag 0x0017 //! Color filter, tag 0x0017
constexpr TagDetails casioColorFilter[] = {{1, N_("Off")}, {2, N_("Black & White")}, {3, N_("Sepia")}, constexpr TagDetails casioColorFilter[] = {
{4, N_("Red")}, {5, N_("Green")}, {6, N_("Blue")}, {1, N_("Off")}, {2, N_("Black & White")}, {3, N_("Sepia")}, {4, N_("Red")}, {5, N_("Green")},
{7, N_("Yellow")}, {8, N_("Pink")}, {9, N_("Purple")}}; {6, N_("Blue")}, {7, N_("Yellow")}, {8, N_("Pink")}, {9, N_("Purple")},
};
//! flash intensity 2, tag 0x0019 //! flash intensity 2, tag 0x0019
constexpr TagDetails casioFlashIntensity2[] = {{1, N_("Normal")}, {2, N_("Weak")}, {3, N_("Strong")}}; constexpr TagDetails casioFlashIntensity2[] = {
{1, N_("Normal")},
{2, N_("Weak")},
{3, N_("Strong")},
};
//! CCD Sensitivity intensity, tag 0x0020 //! CCD Sensitivity intensity, tag 0x0020
constexpr TagDetails casioCCDSensitivity[] = { constexpr TagDetails casioCCDSensitivity[] = {
{64, N_("Normal")}, {125, N_("+1.0")}, {250, N_("+2.0")}, {244, N_("+3.0")}, {80, N_("Normal (ISO 80 equivalent)")}, {64, N_("Normal")}, {125, N_("+1.0")}, {250, N_("+2.0")}, {244, N_("+3.0")}, {80, N_("Normal (ISO 80 equivalent)")},
{100, N_("High")}}; {100, N_("High")},
};
// Casio MakerNote Tag Info // Casio MakerNote Tag Info
constexpr TagInfo CasioMakerNote::tagInfo_[] = { constexpr TagInfo CasioMakerNote::tagInfo_[] = {
@ -167,66 +189,106 @@ std::ostream& CasioMakerNote::print0x0015(std::ostream& os, const Value& value,
// Casio Makernotes, Type 2 // Casio Makernotes, Type 2
//! Quality Mode, tag 0x0004 //! Quality Mode, tag 0x0004
constexpr TagDetails casio2QualityMode[] = {{0, N_("Economy")}, {1, N_("Normal")}, {2, N_("Fine")}}; constexpr TagDetails casio2QualityMode[] = {
{0, N_("Economy")},
{1, N_("Normal")},
{2, N_("Fine")},
};
//! Image Size, tag 0x0009 //! Image Size, tag 0x0009
constexpr TagDetails casio2ImageSize[] = {{0, "640x480"}, {4, "1600x1200"}, {5, "2048x1536"}, {20, "2288x1712"}, constexpr TagDetails casio2ImageSize[] = {
{21, "2592x1944"}, {22, "2304x1728"}, {36, "3008x2008"}}; {0, "640x480"}, {4, "1600x1200"}, {5, "2048x1536"}, {20, "2288x1712"},
{21, "2592x1944"}, {22, "2304x1728"}, {36, "3008x2008"},
};
//! Focus Mode, tag 0x000d //! Focus Mode, tag 0x000d
constexpr TagDetails casio2FocusMode[] = {{0, N_("Normal")}, {1, N_("Macro")}}; constexpr TagDetails casio2FocusMode[] = {
{0, N_("Normal")},
{1, N_("Macro")},
};
//! ISO Speed, tag 0x0014 //! ISO Speed, tag 0x0014
constexpr TagDetails casio2IsoSpeed[] = {{3, "50"}, {4, "64"}, {6, "100"}, {9, "200"}}; constexpr TagDetails casio2IsoSpeed[] = {
{3, "50"},
{4, "64"},
{6, "100"},
{9, "200"},
};
//! White Balance, tag 0x0019 //! White Balance, tag 0x0019
constexpr TagDetails casio2WhiteBalance[] = {{0, N_("Auto")}, {1, N_("Daylight")}, {2, N_("Shade")}, constexpr TagDetails casio2WhiteBalance[] = {
{3, N_("Tungsten")}, {4, N_("Fluorescent")}, {5, N_("Manual")}}; {0, N_("Auto")}, {1, N_("Daylight")}, {2, N_("Shade")},
{3, N_("Tungsten")}, {4, N_("Fluorescent")}, {5, N_("Manual")},
};
//! Saturation, tag 0x001f //! Saturation, tag 0x001f
constexpr TagDetails casio2Saturation[] = {{0, N_("Low")}, {1, N_("Normal")}, {2, N_("High")}}; constexpr TagDetails casio2Saturation[] = {
{0, N_("Low")},
{1, N_("Normal")},
{2, N_("High")},
};
//! Contrast, tag 0x0020 //! Contrast, tag 0x0020
constexpr TagDetails casio2Contrast[] = {{0, N_("Low")}, {1, N_("Normal")}, {2, N_("High")}}; constexpr TagDetails casio2Contrast[] = {
{0, N_("Low")},
{1, N_("Normal")},
{2, N_("High")},
};
//! Sharpness, tag 0x0021 //! Sharpness, tag 0x0021
constexpr TagDetails casio2Sharpness[] = {{0, N_("Soft")}, {1, N_("Normal")}, {2, N_("Hard")}}; constexpr TagDetails casio2Sharpness[] = {
{0, N_("Soft")},
{1, N_("Normal")},
{2, N_("Hard")},
};
//! White Balance2, tag 0x2012 //! White Balance2, tag 0x2012
constexpr TagDetails casio2WhiteBalance2[] = {{0, N_("Manual")}, {1, N_("Daylight")}, {2, N_("Cloudy")}, constexpr TagDetails casio2WhiteBalance2[] = {
{3, N_("Shade")}, {4, N_("Flash")}, {6, N_("Fluorescent")}, {0, N_("Manual")}, {1, N_("Daylight")}, {2, N_("Cloudy")}, {3, N_("Shade")}, {4, N_("Flash")},
{9, N_("Tungsten")}, {10, N_("Tungsten")}, {12, N_("Flash")}}; {6, N_("Fluorescent")}, {9, N_("Tungsten")}, {10, N_("Tungsten")}, {12, N_("Flash")},
};
//! Release Mode, tag 0x3001 //! Release Mode, tag 0x3001
constexpr TagDetails casio2ReleaseMode[] = {{1, N_("Normal")}, constexpr TagDetails casio2ReleaseMode[] = {
{3, N_("AE Bracketing")}, {1, N_("Normal")},
{11, N_("WB Bracketing")}, {3, N_("AE Bracketing")},
{13, N_("Contrast Bracketing")}, {11, N_("WB Bracketing")},
{19, N_("High Speed Burst")}}; {13, N_("Contrast Bracketing")},
{19, N_("High Speed Burst")},
};
//! Quality, tag 0x3002 //! Quality, tag 0x3002
constexpr TagDetails casio2Quality[] = {{1, N_("Economy")}, {2, N_("Normal")}, {3, N_("Fine")}}; constexpr TagDetails casio2Quality[] = {
{1, N_("Economy")},
{2, N_("Normal")},
{3, N_("Fine")},
};
//! Focus Mode 2, tag 0x3003 //! Focus Mode 2, tag 0x3003
constexpr TagDetails casio2FocusMode2[] = {{0, N_("Manual")}, {1, N_("Focus Lock")}, constexpr TagDetails casio2FocusMode2[] = {
{2, N_("Macro")}, {3, N_("Single-Area Auto Focus")}, {0, N_("Manual")}, {1, N_("Focus Lock")},
{5, N_("Infinity")}, {6, N_("Multi-Area Auto Focus")}, {2, N_("Macro")}, {3, N_("Single-Area Auto Focus")},
{8, N_("Super Macro")}}; {5, N_("Infinity")}, {6, N_("Multi-Area Auto Focus")},
{8, N_("Super Macro")},
};
//! AutoISO, tag 0x3008 //! AutoISO, tag 0x3008
constexpr TagDetails casio2AutoISO[] = {{1, N_("On")}, constexpr TagDetails casio2AutoISO[] = {
{2, N_("Off")}, {1, N_("On")}, {2, N_("Off")}, {7, N_("On (high sensitivity)")}, {8, N_("On (anti-shake)")}, {10, N_("High Speed")},
{7, N_("On (high sensitivity)")}, };
{8, N_("On (anti-shake)")},
{10, N_("High Speed")}};
//! AFMode, tag 0x3009 //! AFMode, tag 0x3009
constexpr TagDetails casio2AFMode[] = {{0, N_("Off")}, {1, N_("Spot")}, constexpr TagDetails casio2AFMode[] = {
{2, N_("Multi")}, {3, N_("Face Detection")}, {0, N_("Off")}, {1, N_("Spot")}, {2, N_("Multi")}, {3, N_("Face Detection")},
{4, N_("Tracking")}, {5, N_("Intelligent")}}; {4, N_("Tracking")}, {5, N_("Intelligent")},
};
//! ColorMode, tag 0x3015 //! ColorMode, tag 0x3015
constexpr TagDetails casio2ColorMode[] = {{0, N_("Off")}, {2, N_("Black & White")}, {3, N_("Sepia")}}; constexpr TagDetails casio2ColorMode[] = {
{0, N_("Off")},
{2, N_("Black & White")},
{3, N_("Sepia")},
};
//! Enhancement, tag 0x3016 //! Enhancement, tag 0x3016
constexpr TagDetails casio2Enhancement[] = { constexpr TagDetails casio2Enhancement[] = {
@ -235,8 +297,10 @@ constexpr TagDetails casio2Enhancement[] = {
}; };
//! Color Filter, tag 0x3017 //! Color Filter, tag 0x3017
constexpr TagDetails casio2ColorFilter[] = {{0, N_("Off")}, {1, N_("Blue")}, {3, N_("Green")}, {4, N_("Yellow")}, constexpr TagDetails casio2ColorFilter[] = {
{5, N_("Red")}, {6, N_("Purple")}, {7, N_("Pink")}}; {0, N_("Off")}, {1, N_("Blue")}, {3, N_("Green")}, {4, N_("Yellow")},
{5, N_("Red")}, {6, N_("Purple")}, {7, N_("Pink")},
};
//! Art Mode, tag 0x301b //! Art Mode, tag 0x301b
constexpr TagDetails casio2ArtMode[] = { constexpr TagDetails casio2ArtMode[] = {
@ -244,32 +308,48 @@ constexpr TagDetails casio2ArtMode[] = {
{45, N_("Premium Auto")}, {47, N_("Painting")}, {49, N_("Crayon Drawing")}, {45, N_("Premium Auto")}, {47, N_("Painting")}, {49, N_("Crayon Drawing")},
{51, N_("Panorama")}, {52, N_("Art HDR")}, {62, N_("High Speed Night Shot")}, {51, N_("Panorama")}, {52, N_("Art HDR")}, {62, N_("High Speed Night Shot")},
{64, N_("Monochrome")}, {67, N_("Toy Camera")}, {68, N_("Pop Art")}, {64, N_("Monochrome")}, {67, N_("Toy Camera")}, {68, N_("Pop Art")},
{69, N_("Light Tone")}}; {69, N_("Light Tone")},
};
//! Lighting Mode, tag 0x302a //! Lighting Mode, tag 0x302a
constexpr TagDetails casio2LightingMode[] = { constexpr TagDetails casio2LightingMode[] = {
{0, N_("Off")}, {1, N_("High Dynamic Range")}, {5, N_("Shadow Enhance Low")}, {6, N_("Shadow Enhance High")}}; {0, N_("Off")},
{1, N_("High Dynamic Range")},
{5, N_("Shadow Enhance Low")},
{6, N_("Shadow Enhance High")},
};
//! Portrait Refiner, tag 0x302b //! Portrait Refiner, tag 0x302b
constexpr TagDetails casio2PortraitRefiner[] = {{0, N_("Off")}, {1, N_("+1")}, {2, N_("+2")}}; constexpr TagDetails casio2PortraitRefiner[] = {
{0, N_("Off")},
{1, N_("+1")},
{2, N_("+2")},
};
//! Special Effect Setting, tag 0x3031 //! Special Effect Setting, tag 0x3031
constexpr TagDetails casio2SpecialEffectSetting[] = { constexpr TagDetails casio2SpecialEffectSetting[] = {
{0, N_("Off")}, {1, N_("Makeup")}, {2, N_("Mist Removal")}, {3, N_("Vivid Landscape")}, {16, N_("Art Shot")}}; {0, N_("Off")}, {1, N_("Makeup")}, {2, N_("Mist Removal")}, {3, N_("Vivid Landscape")}, {16, N_("Art Shot")},
};
//! Drive Mode, tag 0x3103 //! Drive Mode, tag 0x3103
constexpr TagDetails casio2DriveMode[] = {{0, N_("Single Shot")}, {1, N_("Continuous Shooting")}, constexpr TagDetails casio2DriveMode[] = {
{2, N_("Continuous (2 fps)")}, {3, N_("Continuous (3 fps)")}, {0, N_("Single Shot")}, {1, N_("Continuous Shooting")},
{4, N_("Continuous (4 fps)")}, {5, N_("Continuous (5 fps)")}, {2, N_("Continuous (2 fps)")}, {3, N_("Continuous (3 fps)")},
{6, N_("Continuous (6 fps)")}, {7, N_("Continuous (7 fps)")}, {4, N_("Continuous (4 fps)")}, {5, N_("Continuous (5 fps)")},
{10, N_("Continuous (10 fps)")}, {12, N_("Continuous (12 fps)")}, {6, N_("Continuous (6 fps)")}, {7, N_("Continuous (7 fps)")},
{15, N_("Continuous (15 fps)")}, {20, N_("Continuous (20 fps)")}, {10, N_("Continuous (10 fps)")}, {12, N_("Continuous (12 fps)")},
{30, N_("Continuous (30 fps)")}, {40, N_("Continuous (40 fps)")}, {15, N_("Continuous (15 fps)")}, {20, N_("Continuous (20 fps)")},
{60, N_("Continuous (60 fps)")}, {240, N_("Auto-N")}}; {30, N_("Continuous (30 fps)")}, {40, N_("Continuous (40 fps)")},
{60, N_("Continuous (60 fps)")}, {240, N_("Auto-N")},
};
//! Video Quality, tag 0x4003 //! Video Quality, tag 0x4003
constexpr TagDetails casio2VideoQuality[] = { constexpr TagDetails casio2VideoQuality[] = {
{1, N_("Standard")}, {3, N_("HD (720p)")}, {4, N_("Full HD (1080p)")}, {5, N_("Low")}}; {1, N_("Standard")},
{3, N_("HD (720p)")},
{4, N_("Full HD (1080p)")},
{5, N_("Low")},
};
// Casio2 MakerNote Tag Info // Casio2 MakerNote Tag Info
constexpr TagInfo Casio2MakerNote::tagInfo_[] = { constexpr TagInfo Casio2MakerNote::tagInfo_[] = {

@ -19,61 +19,75 @@
// class member definitions // class member definitions
namespace Exiv2::Internal { namespace Exiv2::Internal {
//! OffOn, multiple tags //! OffOn, multiple tags
constexpr TagDetails fujiOffOn[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails fujiOffOn[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! Sharpness, tag 0x1001 //! Sharpness, tag 0x1001
constexpr TagDetails fujiSharpness[] = { constexpr TagDetails fujiSharpness[] = {
{0, N_("-4 (softest)")}, {1, N_("-3 (very soft)")}, {2, N_("-2 (soft)")}, {0, N_("-4 (softest)")}, {1, N_("-3 (very soft)")}, {2, N_("-2 (soft)")},
{3, N_("0 (normal)")}, {4, N_("+2 (hard)")}, {5, N_("+3 (very hard)")}, {3, N_("0 (normal)")}, {4, N_("+2 (hard)")}, {5, N_("+3 (very hard)")},
{6, N_("+4 (hardest)")}, {130, N_("-1 (medium soft)")}, {132, N_("+1 (medium hard)")}}; {6, N_("+4 (hardest)")}, {130, N_("-1 (medium soft)")}, {132, N_("+1 (medium hard)")},
};
//! WhiteBalance, tag 0x1002 //! WhiteBalance, tag 0x1002
constexpr TagDetails fujiWhiteBalance[] = {{0, N_("Auto")}, constexpr TagDetails fujiWhiteBalance[] = {
{1, N_("Auto White Priority")}, {0, N_("Auto")},
{2, N_("Auto Ambience Priority")}, {1, N_("Auto White Priority")},
{256, N_("Daylight")}, {2, N_("Auto Ambience Priority")},
{512, N_("Cloudy")}, {256, N_("Daylight")},
{768, N_("Fluorescent (daylight)")}, {512, N_("Cloudy")},
{769, N_("Fluorescent (warm white)")}, {768, N_("Fluorescent (daylight)")},
{770, N_("Fluorescent (cool white)")}, {769, N_("Fluorescent (warm white)")},
{1024, N_("Incandescent")}, {770, N_("Fluorescent (cool white)")},
{1536, N_("Underwater")}, {1024, N_("Incandescent")},
{3480, N_("Custom")}, {1536, N_("Underwater")},
{3840, N_("Custom 1")}, {3480, N_("Custom")},
{3841, N_("Custom 2")}, {3840, N_("Custom 1")},
{3842, N_("Custom 3")}, {3841, N_("Custom 2")},
{3843, N_("Custom 4")}, {3842, N_("Custom 3")},
{3844, N_("Custom 5")}, {3843, N_("Custom 4")},
{4080, N_("Kelvin")}}; {3844, N_("Custom 5")},
{4080, N_("Kelvin")},
};
//! Color, tag 0x1003 //! Color, tag 0x1003
constexpr TagDetails fujiColor[] = {{0, N_("0 (normal)")}, constexpr TagDetails fujiColor[] = {
{128, N_("+1 (medium high)")}, {0, N_("0 (normal)")},
{192, N_("+3 (very high)")}, {128, N_("+1 (medium high)")},
{224, N_("+4 (highest)")}, {192, N_("+3 (very high)")},
{256, N_("+2 (high)")}, {224, N_("+4 (highest)")},
{384, N_("-1 (medium low)")}, {256, N_("+2 (high)")},
{512, N_("-2 (low)")}, // this is "Low" with exiftool {384, N_("-1 (medium low)")},
{768, N_("Monochrome")}, {512, N_("-2 (low)")}, // this is "Low" with exiftool
{769, N_("Monochrome + R Filter")}, {768, N_("Monochrome")},
{770, N_("Monochrome + Ye Filter")}, {769, N_("Monochrome + R Filter")},
{771, N_("Monochrome + G Filter")}, {770, N_("Monochrome + Ye Filter")},
{784, N_("Sepia")}, {771, N_("Monochrome + G Filter")},
{1024, N_("-2 (low)")}, {784, N_("Sepia")},
{1216, N_("-3 (very low)")}, {1024, N_("-2 (low)")},
{1248, N_("-4 (lowest)")}, {1216, N_("-3 (very low)")},
{1280, N_("ACROS")}, {1248, N_("-4 (lowest)")},
{1281, N_("ACROS + R Filter")}, {1280, N_("ACROS")},
{1282, N_("ACROS + Ye Filter")}, {1281, N_("ACROS + R Filter")},
{1283, N_("ACROS + G Filter")}, {1282, N_("ACROS + Ye Filter")},
{32768, N_("Film Simulation")}}; {1283, N_("ACROS + G Filter")},
{32768, N_("Film Simulation")},
};
//! Tone, tag 0x1004 //! Tone, tag 0x1004
constexpr TagDetails fujiTone[] = {{0, N_("Normal")}, {80, N_("Medium High")}, {256, N_("High")}, constexpr TagDetails fujiTone[] = {
{384, N_("Medium Low")}, {512, N_("Low")}, {32768, N_("Film Simulation")}}; {0, N_("Normal")}, {80, N_("Medium High")}, {256, N_("High")},
{384, N_("Medium Low")}, {512, N_("Low")}, {32768, N_("Film Simulation")},
};
//! Tone, tag 0x1006 //! Tone, tag 0x1006
constexpr TagDetails fujiContrast[] = {{0, N_("Normal")}, {256, N_("High")}, {768, N_("Low")}}; constexpr TagDetails fujiContrast[] = {
{0, N_("Normal")},
{256, N_("High")},
{768, N_("Low")},
};
//! WhiteBalanceFineTune, tag 0x100a //! WhiteBalanceFineTune, tag 0x100a
static std::ostream& printFujiWhiteBalanceFineTune(std::ostream& os, const Value& value, const ExifData*) { static std::ostream& printFujiWhiteBalanceFineTune(std::ostream& os, const Value& value, const ExifData*) {
@ -91,99 +105,120 @@ static std::ostream& printFujiWhiteBalanceFineTune(std::ostream& os, const Value
} }
//! NoiseReduction, tag 0x100b //! NoiseReduction, tag 0x100b
constexpr TagDetails fujiNoiseReduction[]{{64, N_("Low")}, {128, N_("Normal")}, {256, N_("n/a")}}; constexpr TagDetails fujiNoiseReduction[]{
{64, N_("Low")},
{128, N_("Normal")},
{256, N_("n/a")},
};
//! High ISO NR, tag 0x100e //! High ISO NR, tag 0x100e
constexpr TagDetails fujiHighIsoNR[] = { constexpr TagDetails fujiHighIsoNR[] = {
{0, N_("0 (normal)")}, {256, N_("+2 (strong)")}, {384, N_("+1 (medium strong)")}, {0, N_("0 (normal)")}, {256, N_("+2 (strong)")}, {384, N_("+1 (medium strong)")},
{448, N_("+3 (very strong)")}, {480, N_("+4 (strongest)")}, {512, N_("-2 (weak)")}, {448, N_("+3 (very strong)")}, {480, N_("+4 (strongest)")}, {512, N_("-2 (weak)")},
{640, N_("-1 (medium weak)")}, {704, N_("-3 (very weak)")}, {736, N_("-4 (weakest)")}}; {640, N_("-1 (medium weak)")}, {704, N_("-3 (very weak)")}, {736, N_("-4 (weakest)")},
};
//! Clarity, tag 0x100f //! Clarity, tag 0x100f
constexpr TagDetails fujiClarity[] = {{-5000, N_("-5")}, {-4000, N_("-4")}, {-3000, N_("-3")}, {-2000, N_("-2")}, constexpr TagDetails fujiClarity[] = {
{-1000, N_("-1")}, {0, N_("0")}, {1000, N_("+1")}, {2000, N_("+2")}, {-5000, N_("-5")}, {-4000, N_("-4")}, {-3000, N_("-3")}, {-2000, N_("-2")}, {-1000, N_("-1")}, {0, N_("0")},
{3000, N_("+3")}, {4000, N_("+4")}, {5000, N_("+5")}}; {1000, N_("+1")}, {2000, N_("+2")}, {3000, N_("+3")}, {4000, N_("+4")}, {5000, N_("+5")},
};
//! FlashMode, tag 0x1010 //! FlashMode, tag 0x1010
constexpr TagDetails fujiFlashMode[] = {{0x0000, N_("Auto")}, constexpr TagDetails fujiFlashMode[] = {
{0x0001, N_("On")}, {0x0000, N_("Auto")},
{0x0002, N_("Off")}, {0x0001, N_("On")},
{0x0003, N_("Red-eye reduction")}, {0x0002, N_("Off")},
{0x0004, N_("External")}, {0x0003, N_("Red-eye reduction")},
{0x0010, N_("Commander")}, {0x0004, N_("External")},
{0x8000, N_("No flash")}, {0x0010, N_("Commander")},
{0x8120, N_("TTL")}, {0x8000, N_("No flash")},
{0x8320, N_("TTL Auto - Did not fire")}, {0x8120, N_("TTL")},
{0x9840, N_("Manual")}, {0x8320, N_("TTL Auto - Did not fire")},
{0x9860, N_("Flash Commander")}, {0x9840, N_("Manual")},
{0x9880, N_("Multi-flash")}, {0x9860, N_("Flash Commander")},
{0xa920, N_("1st Curtain (front)")}, {0x9880, N_("Multi-flash")},
{0xaa20, N_("TTL Slow - 1st Curtain (front)")}, {0xa920, N_("1st Curtain (front)")},
{0xab20, N_("TTL Auto - 1st Curtain (front)")}, {0xaa20, N_("TTL Slow - 1st Curtain (front)")},
{0xad20, N_("TTL - Red-eye Flash - 1st Curtain (front)")}, {0xab20, N_("TTL Auto - 1st Curtain (front)")},
{0xae20, N_("TTL - Slow - Red-eye Flash - 1st Curtain (front)")}, {0xad20, N_("TTL - Red-eye Flash - 1st Curtain (front)")},
{0xaf20, N_("TTL - Auto - Red-eye Flash - 1st Curtain (front)")}, {0xae20, N_("TTL - Slow - Red-eye Flash - 1st Curtain (front)")},
{0xc920, N_("2nd Curtain (rear)")}, {0xaf20, N_("TTL - Auto - Red-eye Flash - 1st Curtain (front)")},
{0xca20, N_("TTL Slow - 2nd Curtain (rear)")}, {0xc920, N_("2nd Curtain (rear)")},
{0xcb20, N_("TTL Auto - 2nd Curtain (rear)")}, {0xca20, N_("TTL Slow - 2nd Curtain (rear)")},
{0xcd20, N_("TTL - Red-eye Flash - 2nd Curtain (rear)")}, {0xcb20, N_("TTL Auto - 2nd Curtain (rear)")},
{0xce20, N_("TTL Slow - Red-eye Flash - 2nd Curtain (rear)")}, {0xcd20, N_("TTL - Red-eye Flash - 2nd Curtain (rear)")},
{0xcf20, N_("TTL Auto - Red-eye Flash - 2nd Curtain (rear)")}, {0xce20, N_("TTL Slow - Red-eye Flash - 2nd Curtain (rear)")},
{0xe920, N_("High Speed Sync (HSS)")}}; {0xcf20, N_("TTL Auto - Red-eye Flash - 2nd Curtain (rear)")},
{0xe920, N_("High Speed Sync (HSS)")},
};
//! FocusMode, tag 0x1021 //! FocusMode, tag 0x1021
constexpr TagDetails fujiFocusMode[] = {{0, N_("Auto")}, {1, N_("Manual")}, {65535, N_("Movie")}}; constexpr TagDetails fujiFocusMode[] = {
{0, N_("Auto")},
{1, N_("Manual")},
{65535, N_("Movie")},
};
//! FocusArea, tag 0x1022 //! FocusArea, tag 0x1022
constexpr TagDetails fujiFocusArea[] = { constexpr TagDetails fujiFocusArea[] = {
{0, N_("Wide")}, {1, N_("Single Point")}, {256, N_("Zone")}, {512, N_("Tracking")}}; {0, N_("Wide")},
{1, N_("Single Point")},
{256, N_("Zone")},
{512, N_("Tracking")},
};
//! PictureMode, tag 0x1031 //! PictureMode, tag 0x1031
constexpr TagDetails fujiPictureMode[] = {{0, N_("Auto")}, constexpr TagDetails fujiPictureMode[] = {
{1, N_("Portrait")}, {0, N_("Auto")},
{2, N_("Landscape")}, {1, N_("Portrait")},
{3, N_("Macro")}, {2, N_("Landscape")},
{4, N_("Sports")}, {3, N_("Macro")},
{5, N_("Night scene")}, {4, N_("Sports")},
{6, N_("Program AE")}, {5, N_("Night scene")},
{7, N_("Natural light")}, {6, N_("Program AE")},
{8, N_("Anti-blur")}, {7, N_("Natural light")},
{9, N_("Beach & Snow")}, {8, N_("Anti-blur")},
{10, N_("Sunset")}, {9, N_("Beach & Snow")},
{11, N_("Museum")}, {10, N_("Sunset")},
{12, N_("Party")}, {11, N_("Museum")},
{13, N_("Flower")}, {12, N_("Party")},
{14, N_("Text")}, {13, N_("Flower")},
{15, N_("Natural Light & Flash")}, {14, N_("Text")},
{16, N_("Beach")}, {15, N_("Natural Light & Flash")},
{17, N_("Snow")}, {16, N_("Beach")},
{18, N_("Fireworks")}, {17, N_("Snow")},
{19, N_("Underwater")}, {18, N_("Fireworks")},
{20, N_("Portrait with Skin Correction")}, {19, N_("Underwater")},
{22, N_("Panorama")}, {20, N_("Portrait with Skin Correction")},
{23, N_("Night (tripod)")}, {22, N_("Panorama")},
{24, N_("Pro Low-light")}, {23, N_("Night (tripod)")},
{25, N_("Pro Focus")}, {24, N_("Pro Low-light")},
{26, N_("Portrait 2")}, {25, N_("Pro Focus")},
{27, N_("Dog Face Detection")}, {26, N_("Portrait 2")},
{28, N_("Cat Face Detection")}, {27, N_("Dog Face Detection")},
{48, N_("HDR")}, {28, N_("Cat Face Detection")},
{64, N_("Advanced Filter")}, {48, N_("HDR")},
{256, N_("Aperture-priority AE")}, {64, N_("Advanced Filter")},
{512, N_("Shutter speed priority AE")}, {256, N_("Aperture-priority AE")},
{768, N_("Manual")}}; {512, N_("Shutter speed priority AE")},
{768, N_("Manual")},
};
//! EXRMode, tag 0x1034 //! EXRMode, tag 0x1034
constexpr TagDetails fujiExrMode[] = {{0x100, N_("HR (High Resolution)")}, constexpr TagDetails fujiExrMode[] = {
{0x200, N_("SN (Signal to Noise priority)")}, {0x100, N_("HR (High Resolution)")},
{0x300, N_("DR (Dynamic Range priority)")}}; {0x200, N_("SN (Signal to Noise priority)")},
{0x300, N_("DR (Dynamic Range priority)")},
};
//! ShadowTone, tag 0x1040 //! ShadowTone, tag 0x1040
//! HighlightTone, tag 0x041 //! HighlightTone, tag 0x041
constexpr TagDetails fujiSHTone[] = {{-64, N_("+4")}, {-56, N_("+3.5")}, {-48, N_("+3")}, {-40, N_("+2.5")}, constexpr TagDetails fujiSHTone[] = {
{-32, N_("+2")}, {-24, N_("+1.5")}, {-16, N_("+1")}, {-8, N_("+0.5")}, {-64, N_("+4")}, {-56, N_("+3.5")}, {-48, N_("+3")}, {-40, N_("+2.5")}, {-32, N_("+2")},
{0, N_("0")}, {8, N_("-0.5")}, {16, N_("-1")}, {24, N_("-1.5")}, {-24, N_("+1.5")}, {-16, N_("+1")}, {-8, N_("+0.5")}, {0, N_("0")}, {8, N_("-0.5")},
{32, N_("-2")}}; {16, N_("-1")}, {24, N_("-1.5")}, {32, N_("-2")},
};
//! DigitalZoom, tag 0x1044 //! DigitalZoom, tag 0x1044
static std::ostream& printFujiDigitalZoom(std::ostream& os, const Value& value, const ExifData*) { static std::ostream& printFujiDigitalZoom(std::ostream& os, const Value& value, const ExifData*) {
@ -197,7 +232,11 @@ static std::ostream& printFujiDigitalZoom(std::ostream& os, const Value& value,
//! GrainEffectRoughness, tag 0x104c //! GrainEffectRoughness, tag 0x104c
//! ColorChromeEffect, tag 0x1048 //! ColorChromeEffect, tag 0x1048
//! ColorChromeFXBlue, tag 0x104e //! ColorChromeFXBlue, tag 0x104e
constexpr TagDetails fujiOff0Weak32Strong64[] = {{0, N_("Off")}, {32, N_("Weak")}, {64, N_("Strong")}}; constexpr TagDetails fujiOff0Weak32Strong64[] = {
{0, N_("Off")},
{32, N_("Weak")},
{64, N_("Strong")},
};
//! CropMode, tag 0x104d //! CropMode, tag 0x104d
constexpr TagDetails fujiCropMode[] = { constexpr TagDetails fujiCropMode[] = {
@ -219,20 +258,27 @@ static std::ostream& printFujiMonochromaticColor(std::ostream& os, const Value&
} }
//! ShutterType, tag 0x1050 //! ShutterType, tag 0x1050
constexpr TagDetails fujiShutterType[] = {{0, N_("Mechanical")}, constexpr TagDetails fujiShutterType[] = {
{1, N_("Electronic")}, {0, N_("Mechanical")},
{2, N_("Electronic (long shutter speed)")}, {1, N_("Electronic")},
{3, N_("Electronic Front Curtain")}}; {2, N_("Electronic (long shutter speed)")},
{3, N_("Electronic Front Curtain")},
};
//! Continuous, tag 0x1100 //! Continuous, tag 0x1100
constexpr TagDetails fujiContinuous[] = {{0, N_("Off")}, constexpr TagDetails fujiContinuous[] = {
{1, N_("On")}, {0, N_("Off")},
{2, N_("Pre-shot/No flash & flash")}, // TODO newer cameras: Pre-shot {1, N_("On")},
{6, N_("Pixel Shift")}}; {2, N_("Pre-shot/No flash & flash")}, // TODO newer cameras: Pre-shot
{6, N_("Pixel Shift")},
};
//! DriveSetting Byte 1, tag 0x1100 //! DriveSetting Byte 1, tag 0x1100
constexpr TagDetails fujiDriveSettingByte1[] = { constexpr TagDetails fujiDriveSettingByte1[] = {
{0, N_("Single")}, {1, N_("Continuous Low")}, {2, N_("Continuous High")}}; {0, N_("Single")},
{1, N_("Continuous Low")},
{2, N_("Continuous High")},
};
//! DriveSetting, tag 0x1103 //! DriveSetting, tag 0x1103
static std::ostream& printFujiDriveSetting(std::ostream& os, const Value& value, const ExifData*) { static std::ostream& printFujiDriveSetting(std::ostream& os, const Value& value, const ExifData*) {
@ -258,77 +304,110 @@ static std::ostream& printFujiDriveSetting(std::ostream& os, const Value& value,
} }
//! PanoramaDirection, tag 0x1154 //! PanoramaDirection, tag 0x1154
constexpr TagDetails fujiPanoramaDirection[] = {{1, N_("Right")}, {2, N_("Up")}, {3, N_("Left")}, {4, N_("Down")}}; constexpr TagDetails fujiPanoramaDirection[] = {
{1, N_("Right")},
{2, N_("Up")},
{3, N_("Left")},
{4, N_("Down")},
};
//! AdvancedFilter, tag 0x1201 //! AdvancedFilter, tag 0x1201
constexpr TagDetails fujiAdvancedFilter[] = {{0x10000, N_("Pop Color")}, constexpr TagDetails fujiAdvancedFilter[] = {
{0x20000, N_("Hi Key")}, {0x10000, N_("Pop Color")},
{0x30000, N_("Toy Camera")}, {0x20000, N_("Hi Key")},
{0x40000, N_("Miniature")}, {0x30000, N_("Toy Camera")},
{0x50000, N_("Dynamic Tone")}, {0x40000, N_("Miniature")},
{0x60001, N_("Partial Color Red")}, {0x50000, N_("Dynamic Tone")},
{0x60002, N_("Partial Color Yellow")}, {0x60001, N_("Partial Color Red")},
{0x60003, N_("Partial Color Green")}, {0x60002, N_("Partial Color Yellow")},
{0x60004, N_("Partial Color Blue")}, {0x60003, N_("Partial Color Green")},
{0x60005, N_("Partial Color Orange")}, {0x60004, N_("Partial Color Blue")},
{0x60006, N_("Partial Color Purple")}, {0x60005, N_("Partial Color Orange")},
{0x70000, N_("Soft Focus")}, {0x60006, N_("Partial Color Purple")},
{0x90000, N_("Low Key")}}; {0x70000, N_("Soft Focus")},
{0x90000, N_("Low Key")},
};
//! FinePixColor, tag 0x1210 //! FinePixColor, tag 0x1210
constexpr TagDetails fujiFinePixColor[] = {{0, N_("Standard")}, {16, N_("Chrome")}, {48, N_("Black & white")}}; constexpr TagDetails fujiFinePixColor[] = {
{0, N_("Standard")},
{16, N_("Chrome")},
{48, N_("Black & white")},
};
//! DynamicRange, tag 0x1400 //! DynamicRange, tag 0x1400
constexpr TagDetails fujiDynamicRange[] = {{1, N_("Standard")}, {3, N_("Wide")}}; constexpr TagDetails fujiDynamicRange[] = {
{1, N_("Standard")},
{3, N_("Wide")},
};
//! FilmMode, tag 0x1401 //! FilmMode, tag 0x1401
constexpr TagDetails fujiFilmMode[] = {{0, N_("PROVIA (F0/Standard)")}, constexpr TagDetails fujiFilmMode[] = {
{256, N_("F1/Studio Portrait")}, {0, N_("PROVIA (F0/Standard)")},
{272, N_("F1a/Studio Portrait Enhanced Saturation")}, {256, N_("F1/Studio Portrait")},
{288, N_("ASTIA (F1b/Studio Portrait Smooth Skin Tone)")}, {272, N_("F1a/Studio Portrait Enhanced Saturation")},
{304, N_("F1c/Studio Portrait Increased Sharpness")}, {288, N_("ASTIA (F1b/Studio Portrait Smooth Skin Tone)")},
{512, N_("Velvia (F2/Fujichrome)")}, {304, N_("F1c/Studio Portrait Increased Sharpness")},
{768, N_("F3/Studio Portrait Ex")}, {512, N_("Velvia (F2/Fujichrome)")},
{1024, N_("F4/Velvia")}, {768, N_("F3/Studio Portrait Ex")},
{1280, N_("PRO Neg. Std")}, {1024, N_("F4/Velvia")},
{1281, N_("PRO Neg. Hi")}, {1280, N_("PRO Neg. Std")},
{1536, N_("CLASSIC CHROME")}, {1281, N_("PRO Neg. Hi")},
{1792, N_("ETERNA")}, {1536, N_("CLASSIC CHROME")},
{2048, N_("CLASSIC Neg.")}, {1792, N_("ETERNA")},
{2304, N_("ETERNA Bleach Bypass")}, {2048, N_("CLASSIC Neg.")},
{2560, N_("Nostalgic Neg.")}}; {2304, N_("ETERNA Bleach Bypass")},
{2560, N_("Nostalgic Neg.")},
};
//! DynamicRange, tag 0x1402 //! DynamicRange, tag 0x1402
constexpr TagDetails fujiDynamicRangeSetting[] = {{0, N_("Auto")}, constexpr TagDetails fujiDynamicRangeSetting[] = {
{1, N_("Manual")}, {0, N_("Auto")},
{256, N_("Standard (100%)")}, {1, N_("Manual")},
{512, N_("Wide mode 1 (230%)")}, {256, N_("Standard (100%)")},
{513, N_("Wide mode 2 (400%)")}, {512, N_("Wide mode 1 (230%)")},
{32768, N_("Film simulation mode")}}; {513, N_("Wide mode 2 (400%)")},
{32768, N_("Film simulation mode")},
};
//! SceneRecognition, tag 0x1425 //! SceneRecognition, tag 0x1425
constexpr TagDetails fujiSceneRecognition[] = {{0x000, N_("Unrecognized")}, constexpr TagDetails fujiSceneRecognition[] = {
{0x100, N_("Portrait Image")}, {0x000, N_("Unrecognized")}, {0x100, N_("Portrait Image")},
{0x103, N_("Night Portrait")}, {0x103, N_("Night Portrait")}, {0x105, N_("Backlit Portrait")},
{0x105, N_("Backlit Portrait")}, {0x200, N_("Landscape Image")}, {0x300, N_("Night Scene")},
{0x200, N_("Landscape Image")}, {0x400, N_("Macro")},
{0x300, N_("Night Scene")}, };
{0x400, N_("Macro")}};
//! ImageGeneration, tag 0x1426 //! ImageGeneration, tag 0x1426
constexpr TagDetails fujiImageGeneration[] = {{0, N_("Original Image")}, {1, N_("Re-developed from RAW")}}; constexpr TagDetails fujiImageGeneration[] = {
{0, N_("Original Image")},
{1, N_("Re-developed from RAW")},
};
//! DRangePriority, tag 0x1443 //! DRangePriority, tag 0x1443
constexpr TagDetails fujiDRangePriority[] = {{0, N_("Auto")}, {1, N_("Fixed")}}; constexpr TagDetails fujiDRangePriority[] = {
{0, N_("Auto")},
{1, N_("Fixed")},
};
//! DRangePriorityAuto, tag 0x1444 //! DRangePriorityAuto, tag 0x1444
constexpr TagDetails fujiDRangePriorityAuto[] = {{1, N_("Weak")}, {2, N_("Strong")}}; constexpr TagDetails fujiDRangePriorityAuto[] = {
{1, N_("Weak")},
{2, N_("Strong")},
};
//! DRangePriorityFixed, tag 0x1445 //! DRangePriorityFixed, tag 0x1445
constexpr TagDetails fujiDRangePriorityFixed[] = {{1, N_("Weak")}, {2, N_("Strong")}}; constexpr TagDetails fujiDRangePriorityFixed[] = {
{1, N_("Weak")},
{2, N_("Strong")},
};
//! FaceElementType, every byte at tag 0x4201 //! FaceElementType, every byte at tag 0x4201
constexpr TagDetails fujiFaceElementType[] = {{1, N_("Face")}, {2, N_("Left Eye")}, {3, N_("Right Eye")}}; constexpr TagDetails fujiFaceElementType[] = {
{1, N_("Face")},
{2, N_("Left Eye")},
{3, N_("Right Eye")},
};
//! FaceElementType, tag 0x4203 //! FaceElementType, tag 0x4203
static std::ostream& printFujiFaceElementTypes(std::ostream& os, const Value& value, const ExifData*) { static std::ostream& printFujiFaceElementTypes(std::ostream& os, const Value& value, const ExifData*) {

@ -206,9 +206,10 @@ Protocol fileProtocol(const std::string& path) {
std::string name; std::string name;
Protocol prot; Protocol prot;
bool isUrl; // path.size() > name.size() bool isUrl; // path.size() > name.size()
} prots[] = {{"http://", pHttp, true}, {"https://", pHttps, true}, {"ftp://", pFtp, true}, } prots[] = {
{"sftp://", pSftp, true}, {"file://", pFileUri, true}, {"data://", pDataUri, true}, {"http://", pHttp, true}, {"https://", pHttps, true}, {"ftp://", pFtp, true}, {"sftp://", pSftp, true},
{"-", pStdin, false}}; {"file://", pFileUri, true}, {"data://", pDataUri, true}, {"-", pStdin, false},
};
for (const auto& prot : prots) { for (const auto& prot : prots) {
if (result != pFile) if (result != pFile)
break; break;

@ -1089,7 +1089,8 @@ void ncrypt(Exiv2::byte* pData, uint32_t size, uint32_t count, uint32_t serial)
0xbb, 0xd6, 0x59, 0x4d, 0xbf, 0x6a, 0x2e, 0xaa, 0x2b, 0xef, 0xe6, 0x78, 0xb6, 0x4e, 0xe0, 0x2f, 0xdc, 0x7c, 0xbe, 0xbb, 0xd6, 0x59, 0x4d, 0xbf, 0x6a, 0x2e, 0xaa, 0x2b, 0xef, 0xe6, 0x78, 0xb6, 0x4e, 0xe0, 0x2f, 0xdc, 0x7c, 0xbe,
0x57, 0x19, 0x32, 0x7e, 0x2a, 0xd0, 0xb8, 0xba, 0x29, 0x00, 0x3c, 0x52, 0x7d, 0xa8, 0x49, 0x3b, 0x2d, 0xeb, 0x25, 0x57, 0x19, 0x32, 0x7e, 0x2a, 0xd0, 0xb8, 0xba, 0x29, 0x00, 0x3c, 0x52, 0x7d, 0xa8, 0x49, 0x3b, 0x2d, 0xeb, 0x25,
0x49, 0xfa, 0xa3, 0xaa, 0x39, 0xa7, 0xc5, 0xa7, 0x50, 0x11, 0x36, 0xfb, 0xc6, 0x67, 0x4a, 0xf5, 0xa5, 0x12, 0x65, 0x49, 0xfa, 0xa3, 0xaa, 0x39, 0xa7, 0xc5, 0xa7, 0x50, 0x11, 0x36, 0xfb, 0xc6, 0x67, 0x4a, 0xf5, 0xa5, 0x12, 0x65,
0x7e, 0xb0, 0xdf, 0xaf, 0x4e, 0xb3, 0x61, 0x7f, 0x2f}}; 0x7e, 0xb0, 0xdf, 0xaf, 0x4e, 0xb3, 0x61, 0x7f, 0x2f},
};
Exiv2::byte key = 0; Exiv2::byte key = 0;
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
key ^= (count >> (i * 8)) & 0xff; key ^= (count >> (i * 8)) & 0xff;

@ -24,21 +24,28 @@ constexpr TagDetails minoltaWhiteBalanceStd0x0115[] = {
{0x10, N_("Daylight")}, {0x20, N_("Cloudy")}, {0x10, N_("Daylight")}, {0x20, N_("Cloudy")},
{0x30, N_("Shade")}, {0x40, N_("Tungsten")}, {0x30, N_("Shade")}, {0x40, N_("Tungsten")},
{0x50, N_("Flash")}, {0x60, N_("Fluorescent")}, {0x50, N_("Flash")}, {0x60, N_("Fluorescent")},
{0x70, N_("Custom")}}; {0x70, N_("Custom")},
};
//! Lookup table to translate Minolta color mode values to readable labels //! Lookup table to translate Minolta color mode values to readable labels
constexpr TagDetails minoltaColorMode[] = { constexpr TagDetails minoltaColorMode[] = {
{0, N_("Natural Color")}, {1, N_("Black & White")}, {2, N_("Vivid Color")}, {3, N_("Solarization")}, {0, N_("Natural Color")}, {1, N_("Black & White")}, {2, N_("Vivid Color")}, {3, N_("Solarization")},
{4, N_("AdobeRGB")}, {5, N_("Sepia")}, {9, N_("Natural")}, {12, N_("Portrait")}, {4, N_("AdobeRGB")}, {5, N_("Sepia")}, {9, N_("Natural")}, {12, N_("Portrait")},
{13, N_("Natural sRGB")}, {14, N_("Natural+ sRGB")}, {15, N_("Landscape")}, {16, N_("Evening")}, {13, N_("Natural sRGB")}, {14, N_("Natural+ sRGB")}, {15, N_("Landscape")}, {16, N_("Evening")},
{17, N_("Night Scene")}, {18, N_("Night Portrait")}}; {17, N_("Night Scene")}, {18, N_("Night Portrait")},
};
//! Lookup table to translate Minolta image quality values to readable labels //! Lookup table to translate Minolta image quality values to readable labels
constexpr TagDetails minoltaImageQuality[] = {{0, N_("Raw")}, {1, N_("Super Fine")}, {2, N_("Fine")}, constexpr TagDetails minoltaImageQuality[] = {
{3, N_("Standard")}, {4, N_("Economy")}, {5, N_("Extra Fine")}}; {0, N_("Raw")}, {1, N_("Super Fine")}, {2, N_("Fine")},
{3, N_("Standard")}, {4, N_("Economy")}, {5, N_("Extra Fine")},
};
//! Lookup table to translate Minolta image stabilization values //! Lookup table to translate Minolta image stabilization values
constexpr TagDetails minoltaImageStabilization[] = {{1, N_("Off")}, {5, N_("On")}}; constexpr TagDetails minoltaImageStabilization[] = {
{1, N_("Off")},
{5, N_("On")},
};
// Minolta Tag Info // Minolta Tag Info
constexpr TagInfo MinoltaMakerNote::tagInfo_[] = { constexpr TagInfo MinoltaMakerNote::tagInfo_[] = {
@ -126,62 +133,92 @@ const TagInfo* MinoltaMakerNote::tagList() {
//! Lookup table to translate Minolta Std camera settings exposure mode values to readable labels //! Lookup table to translate Minolta Std camera settings exposure mode values to readable labels
constexpr TagDetails minoltaExposureModeStd[] = { constexpr TagDetails minoltaExposureModeStd[] = {
{0, N_("Program")}, {1, N_("Aperture priority")}, {2, N_("Shutter priority")}, {3, N_("Manual")}}; {0, N_("Program")},
{1, N_("Aperture priority")},
{2, N_("Shutter priority")},
{3, N_("Manual")},
};
//! Lookup table to translate Minolta Std camera settings flash mode values to readable labels //! Lookup table to translate Minolta Std camera settings flash mode values to readable labels
constexpr TagDetails minoltaFlashModeStd[] = {{0, N_("Fill flash")}, constexpr TagDetails minoltaFlashModeStd[] = {
{1, N_("Red-eye reduction")}, {0, N_("Fill flash")}, {1, N_("Red-eye reduction")}, {2, N_("Rear flash sync")}, {3, N_("Wireless")},
{2, N_("Rear flash sync")}, {4, N_("Off")},
{3, N_("Wireless")}, };
{4, N_("Off")}};
//! Lookup table to translate Minolta Std camera settings white balance values to readable labels //! Lookup table to translate Minolta Std camera settings white balance values to readable labels
constexpr TagDetails minoltaWhiteBalanceStd[] = {{0, N_("Auto")}, {1, N_("Daylight")}, {2, N_("Cloudy")}, constexpr TagDetails minoltaWhiteBalanceStd[] = {
{3, N_("Tungsten")}, {5, N_("Custom")}, {7, N_("Fluorescent")}, {0, N_("Auto")}, {1, N_("Daylight")}, {2, N_("Cloudy")}, {3, N_("Tungsten")}, {5, N_("Custom")},
{8, N_("Fluorescent 2")}, {11, N_("Custom 2")}, {12, N_("Custom 3")}}; {7, N_("Fluorescent")}, {8, N_("Fluorescent 2")}, {11, N_("Custom 2")}, {12, N_("Custom 3")},
};
//! Lookup table to translate Minolta Std camera settings image size values to readable labels //! Lookup table to translate Minolta Std camera settings image size values to readable labels
constexpr TagDetails minoltaImageSizeStd[] = {{0, N_("Full size")}, {1, "1600x1200"}, {2, "1280x960"}, {3, "640x480"}, constexpr TagDetails minoltaImageSizeStd[] = {
{6, "2080x1560"}, {7, "2560x1920"}, {8, "3264x2176"}}; {0, N_("Full size")}, {1, "1600x1200"}, {2, "1280x960"}, {3, "640x480"},
{6, "2080x1560"}, {7, "2560x1920"}, {8, "3264x2176"},
};
//! Lookup table to translate Minolta Std camera settings image quality values to readable labels //! Lookup table to translate Minolta Std camera settings image quality values to readable labels
constexpr TagDetails minoltaImageQualityStd[] = {{0, N_("Raw")}, {1, N_("Super fine")}, {2, N_("Fine")}, constexpr TagDetails minoltaImageQualityStd[] = {
{3, N_("Standard")}, {4, N_("Economy")}, {5, N_("Extra fine")}}; {0, N_("Raw")}, {1, N_("Super fine")}, {2, N_("Fine")},
{3, N_("Standard")}, {4, N_("Economy")}, {5, N_("Extra fine")},
};
//! Lookup table to translate Minolta Std camera settings drive mode values to readable labels //! Lookup table to translate Minolta Std camera settings drive mode values to readable labels
constexpr TagDetails minoltaDriveModeStd[] = {{0, N_("Single Frame")}, {1, N_("Continuous")}, {2, N_("Self-timer")}, constexpr TagDetails minoltaDriveModeStd[] = {
{4, N_("Bracketing")}, {5, N_("Interval")}, {6, N_("UHS continuous")}, {0, N_("Single Frame")}, {1, N_("Continuous")}, {2, N_("Self-timer")}, {4, N_("Bracketing")},
{7, N_("HS continuous")}}; {5, N_("Interval")}, {6, N_("UHS continuous")}, {7, N_("HS continuous")},
};
//! Lookup table to translate Minolta Std camera settings metering mode values to readable labels //! Lookup table to translate Minolta Std camera settings metering mode values to readable labels
constexpr TagDetails minoltaMeteringModeStd[] = { constexpr TagDetails minoltaMeteringModeStd[] = {
{0, N_("Multi-segment")}, {1, N_("Center weighted average")}, {2, N_("Spot")}}; {0, N_("Multi-segment")},
{1, N_("Center weighted average")},
{2, N_("Spot")},
};
//! Lookup table to translate Minolta Std camera settings digital zoom values to readable labels //! Lookup table to translate Minolta Std camera settings digital zoom values to readable labels
constexpr TagDetails minoltaDigitalZoomStd[] = {{0, N_("Off")}, {1, N_("Electronic magnification")}, {2, "2x"}}; constexpr TagDetails minoltaDigitalZoomStd[] = {
{0, N_("Off")},
{1, N_("Electronic magnification")},
{2, "2x"},
};
//! Lookup table to translate Minolta Std camera bracket step mode values to readable labels //! Lookup table to translate Minolta Std camera bracket step mode values to readable labels
constexpr TagDetails minoltaBracketStepStd[] = {{0, "1/3 EV"}, {1, "2/3 EV"}, {2, "1 EV"}}; constexpr TagDetails minoltaBracketStepStd[] = {
{0, "1/3 EV"},
{1, "2/3 EV"},
{2, "1 EV"},
};
//! Lookup table to translate Minolta Std camera settings AF points values to readable labels //! Lookup table to translate Minolta Std camera settings AF points values to readable labels
[[maybe_unused]] constexpr TagDetails minoltaAFPointsStd[] = { [[maybe_unused]] constexpr TagDetails minoltaAFPointsStd[] = {
{0, N_("Center")}, {1, N_("Top")}, {2, N_("Top-right")}, {3, N_("Right")}, {4, N_("Bottom-right")}, {0, N_("Center")}, {1, N_("Top")}, {2, N_("Top-right")}, {3, N_("Right")}, {4, N_("Bottom-right")},
{5, N_("Bottom")}, {6, N_("Bottom-left")}, {7, N_("Left")}, {8, N_("Top-left")}}; {5, N_("Bottom")}, {6, N_("Bottom-left")}, {7, N_("Left")}, {8, N_("Top-left")},
};
//! Lookup table to translate Minolta Std camera settings flash fired values to readable labels //! Lookup table to translate Minolta Std camera settings flash fired values to readable labels
constexpr TagDetails minoltaFlashFired[] = {{0, N_("Did not fire")}, {1, N_("Fired")}}; constexpr TagDetails minoltaFlashFired[] = {
{0, N_("Did not fire")},
{1, N_("Fired")},
};
//! Lookup table to translate Minolta Std camera settings sharpness values to readable labels //! Lookup table to translate Minolta Std camera settings sharpness values to readable labels
constexpr TagDetails minoltaSharpnessStd[] = {{0, N_("Hard")}, {1, N_("Normal")}, {2, N_("Soft")}}; constexpr TagDetails minoltaSharpnessStd[] = {
{0, N_("Hard")},
{1, N_("Normal")},
{2, N_("Soft")},
};
//! Lookup table to translate Minolta Std camera settings subject program values to readable labels //! Lookup table to translate Minolta Std camera settings subject program values to readable labels
constexpr TagDetails minoltaSubjectProgramStd[] = {{0, N_("None")}, {1, N_("Portrait")}, constexpr TagDetails minoltaSubjectProgramStd[] = {
{2, N_("Text")}, {3, N_("Night portrait")}, {0, N_("None")}, {1, N_("Portrait")}, {2, N_("Text")},
{4, N_("Sunset")}, {5, N_("Sports action")}}; {3, N_("Night portrait")}, {4, N_("Sunset")}, {5, N_("Sports action")},
};
//! Lookup table to translate Minolta Std camera settings ISO settings values to readable labels //! Lookup table to translate Minolta Std camera settings ISO settings values to readable labels
constexpr TagDetails minoltaISOSettingStd[] = {{0, "100"}, {1, "200"}, {2, "400"}, constexpr TagDetails minoltaISOSettingStd[] = {
{3, "800"}, {4, N_("Auto")}, {5, "64"}}; {0, "100"}, {1, "200"}, {2, "400"}, {3, "800"}, {4, N_("Auto")}, {5, "64"},
};
//! Lookup table to translate Minolta Std camera settings model values to readable labels //! Lookup table to translate Minolta Std camera settings model values to readable labels
constexpr TagDetails minoltaModelStd[] = { constexpr TagDetails minoltaModelStd[] = {
@ -197,45 +234,69 @@ constexpr TagDetails minoltaModelStd[] = {
}; };
//! Lookup table to translate Minolta Std camera settings interval mode values to readable labels //! Lookup table to translate Minolta Std camera settings interval mode values to readable labels
constexpr TagDetails minoltaIntervalModeStd[] = {{0, N_("Still image")}, {1, N_("Time-lapse movie")}}; constexpr TagDetails minoltaIntervalModeStd[] = {
{0, N_("Still image")},
{1, N_("Time-lapse movie")},
};
//! Lookup table to translate Minolta Std camera settings folder name values to readable labels //! Lookup table to translate Minolta Std camera settings folder name values to readable labels
constexpr TagDetails minoltaFolderNameStd[] = {{0, N_("Standard form")}, {1, N_("Data form")}}; constexpr TagDetails minoltaFolderNameStd[] = {
{0, N_("Standard form")},
{1, N_("Data form")},
};
//! Lookup table to translate Minolta Std camera settings color mode values to readable labels //! Lookup table to translate Minolta Std camera settings color mode values to readable labels
constexpr TagDetails minoltaColorModeStd[] = {{0, N_("Natural color")}, constexpr TagDetails minoltaColorModeStd[] = {
{1, N_("Black and white")}, {0, N_("Natural color")}, {1, N_("Black and white")}, {2, N_("Vivid color")},
{2, N_("Vivid color")}, {3, N_("Solarization")}, {4, N_("Adobe RGB")},
{3, N_("Solarization")}, };
{4, N_("Adobe RGB")}};
//! Lookup table to translate Minolta Std camera settings wide focus zone values to readable labels //! Lookup table to translate Minolta Std camera settings wide focus zone values to readable labels
constexpr TagDetails minoltaWideFocusZoneStd[] = {{0, N_("No zone")}, constexpr TagDetails minoltaWideFocusZoneStd[] = {
{1, N_("Center zone (horizontal orientation)")}, {0, N_("No zone")},
{1, N_("Center zone (vertical orientation)")}, {1, N_("Center zone (horizontal orientation)")},
{1, N_("Left zone")}, {1, N_("Center zone (vertical orientation)")},
{4, N_("Right zone")}}; {1, N_("Left zone")},
{4, N_("Right zone")},
};
//! Lookup table to translate Minolta Std camera settings focus mode values to readable labels //! Lookup table to translate Minolta Std camera settings focus mode values to readable labels
constexpr TagDetails minoltaFocusModeStd[] = {{0, N_("Auto focus")}, {1, N_("Manual focus")}}; constexpr TagDetails minoltaFocusModeStd[] = {
{0, N_("Auto focus")},
{1, N_("Manual focus")},
};
//! Lookup table to translate Minolta Std camera settings focus area values to readable labels //! Lookup table to translate Minolta Std camera settings focus area values to readable labels
constexpr TagDetails minoltaFocusAreaStd[] = {{0, N_("Wide focus (normal)")}, {1, N_("Spot focus")}}; constexpr TagDetails minoltaFocusAreaStd[] = {
{0, N_("Wide focus (normal)")},
{1, N_("Spot focus")},
};
//! Lookup table to translate Minolta Std camera settings DEC switch position values to readable labels //! Lookup table to translate Minolta Std camera settings DEC switch position values to readable labels
constexpr TagDetails minoltaDECPositionStd[] = { constexpr TagDetails minoltaDECPositionStd[] = {
{0, N_("Exposure")}, {1, N_("Contrast")}, {2, N_("Saturation")}, {3, N_("Filter")}}; {0, N_("Exposure")},
{1, N_("Contrast")},
{2, N_("Saturation")},
{3, N_("Filter")},
};
//! Lookup table to translate Minolta Std camera settings color profile values to readable labels //! Lookup table to translate Minolta Std camera settings color profile values to readable labels
constexpr TagDetails minoltaColorProfileStd[] = {{0, N_("Not embedded")}, {1, N_("Embedded")}}; constexpr TagDetails minoltaColorProfileStd[] = {
{0, N_("Not embedded")},
{1, N_("Embedded")},
};
//! Lookup table to translate Minolta Std camera settings data Imprint values to readable labels //! Lookup table to translate Minolta Std camera settings data Imprint values to readable labels
constexpr TagDetails minoltaDataImprintStd[] = { constexpr TagDetails minoltaDataImprintStd[] = {
{0, N_("None")}, {1, "YYYY/MM/DD"}, {2, "MM/DD/HH:MM"}, {3, N_("Text")}, {4, N_("Text + ID#")}}; {0, N_("None")}, {1, "YYYY/MM/DD"}, {2, "MM/DD/HH:MM"}, {3, N_("Text")}, {4, N_("Text + ID#")},
};
//! Lookup table to translate Minolta Std camera settings flash metering values to readable labels //! Lookup table to translate Minolta Std camera settings flash metering values to readable labels
constexpr TagDetails minoltaFlashMeteringStd[] = { constexpr TagDetails minoltaFlashMeteringStd[] = {
{0, N_("ADI (Advanced Distance Integration)")}, {1, N_("Pre-flash TTl")}, {2, N_("Manual flash control")}}; {0, N_("ADI (Advanced Distance Integration)")},
{1, N_("Pre-flash TTl")},
{2, N_("Manual flash control")},
};
std::ostream& MinoltaMakerNote::printMinoltaExposureSpeedStd(std::ostream& os, const Value& value, const ExifData*) { std::ostream& MinoltaMakerNote::printMinoltaExposureSpeedStd(std::ostream& os, const Value& value, const ExifData*) {
// From the PHP JPEG Metadata Toolkit // From the PHP JPEG Metadata Toolkit
@ -419,14 +480,20 @@ const TagInfo* MinoltaMakerNote::tagListCsStd() {
//! Lookup table to translate Minolta Dynax 7D camera settings exposure mode values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings exposure mode values to readable labels
constexpr TagDetails minoltaExposureMode7D[] = { constexpr TagDetails minoltaExposureMode7D[] = {
{0, N_("Program")}, {1, N_("Aperture priority")}, {2, N_("Shutter priority")}, {3, N_("Manual")}, {0, N_("Program")}, {1, N_("Aperture priority")}, {2, N_("Shutter priority")}, {3, N_("Manual")},
{4, N_("Auto")}, {5, N_("Program-shift A")}, {6, N_("Program-shift S")}}; {4, N_("Auto")}, {5, N_("Program-shift A")}, {6, N_("Program-shift S")},
};
//! Lookup table to translate Minolta Dynax 7D camera settings image size values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings image size values to readable labels
constexpr TagDetails minoltaImageSize7D[] = {{0, N_("Large")}, {1, N_("Medium")}, {2, N_("Small")}}; constexpr TagDetails minoltaImageSize7D[] = {
{0, N_("Large")},
{1, N_("Medium")},
{2, N_("Small")},
};
//! Lookup table to translate Minolta Dynax 7D camera settings image quality values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings image quality values to readable labels
constexpr TagDetails minoltaImageQuality7D[] = { constexpr TagDetails minoltaImageQuality7D[] = {
{0, N_("Raw")}, {16, N_("Fine")}, {32, N_("Normal")}, {34, N_("Raw+Jpeg")}, {48, N_("Economy")}}; {0, N_("Raw")}, {16, N_("Fine")}, {32, N_("Normal")}, {34, N_("Raw+Jpeg")}, {48, N_("Economy")},
};
//! Lookup table to translate Minolta Dynax 7D camera settings white balance values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings white balance values to readable labels
constexpr TagDetails minoltaWhiteBalance7D[] = { constexpr TagDetails minoltaWhiteBalance7D[] = {
@ -437,24 +504,36 @@ constexpr TagDetails minoltaWhiteBalance7D[] = {
//! Lookup table to translate Minolta Dynax 7D camera settings focus mode values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings focus mode values to readable labels
constexpr TagDetails minoltaFocusMode7D[] = { constexpr TagDetails minoltaFocusMode7D[] = {
{0, N_("Single-shot AF")}, {1, N_("Continuous AF")}, {3, N_("Manual")}, {4, N_("Automatic AF")}}; {0, N_("Single-shot AF")},
{1, N_("Continuous AF")},
{3, N_("Manual")},
{4, N_("Automatic AF")},
};
//! Lookup table to translate Minolta Dynax 7D camera settings AF points values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings AF points values to readable labels
constexpr TagDetails minoltaAFPoints7D[] = {{1, N_("Center")}, {2, N_("Top")}, {4, N_("Top-right")}, constexpr TagDetails minoltaAFPoints7D[] = {
{8, N_("Right")}, {16, N_("Bottom-right")}, {32, N_("Bottom")}, {1, N_("Center")}, {2, N_("Top")}, {4, N_("Top-right")}, {8, N_("Right")}, {16, N_("Bottom-right")},
{64, N_("Bottom-left")}, {128, N_("Left")}, {256, N_("Top-left")}}; {32, N_("Bottom")}, {64, N_("Bottom-left")}, {128, N_("Left")}, {256, N_("Top-left")},
};
//! Lookup table to translate Minolta Dynax 7D camera settings ISO settings values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings ISO settings values to readable labels
constexpr TagDetails minoltaISOSetting7D[] = {{0, N_("Auto")}, {1, "100"}, {3, "200"}, {4, "400"}, constexpr TagDetails minoltaISOSetting7D[] = {
{5, "800"}, {6, "1600"}, {7, "3200"}}; {0, N_("Auto")}, {1, "100"}, {3, "200"}, {4, "400"}, {5, "800"}, {6, "1600"}, {7, "3200"},
};
//! Lookup table to translate Minolta Dynax 7D camera settings color space values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings color space values to readable labels
constexpr TagDetails minoltaColorSpace7D[] = { constexpr TagDetails minoltaColorSpace7D[] = {
{0, N_("sRGB (Natural)")}, {1, N_("sRGB (Natural+)")}, {4, N_("Adobe RGB")}}; {0, N_("sRGB (Natural)")},
{1, N_("sRGB (Natural+)")},
{4, N_("Adobe RGB")},
};
//! Lookup table to translate Minolta Dynax 7D camera settings rotation values to readable labels //! Lookup table to translate Minolta Dynax 7D camera settings rotation values to readable labels
constexpr TagDetails minoltaRotation7D[] = { constexpr TagDetails minoltaRotation7D[] = {
{72, N_("Horizontal (normal)")}, {76, N_("Rotate 90 CW")}, {82, N_("Rotate 270 CW")}}; {72, N_("Horizontal (normal)")},
{76, N_("Rotate 90 CW")},
{82, N_("Rotate 270 CW")},
};
// Minolta Dynax 7D Camera Settings Tag Info // Minolta Dynax 7D Camera Settings Tag Info
constexpr TagInfo MinoltaMakerNote::tagInfoCs7D_[] = { constexpr TagInfo MinoltaMakerNote::tagInfoCs7D_[] = {
@ -523,73 +602,100 @@ const TagInfo* MinoltaMakerNote::tagListCs7D() {
// -- Minolta Dynax 5D camera settings --------------------------------------------------------------- // -- Minolta Dynax 5D camera settings ---------------------------------------------------------------
//! Lookup table to translate Minolta Dynax 5D camera settings exposure mode values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings exposure mode values to readable labels
constexpr TagDetails minoltaExposureMode5D[] = {{0, N_("Program")}, constexpr TagDetails minoltaExposureMode5D[] = {
{1, N_("Aperture priority")}, {0, N_("Program")},
{2, N_("Shutter priority")}, {1, N_("Aperture priority")},
{3, N_("Manual")}, {2, N_("Shutter priority")},
{4, N_("Auto")}, {3, N_("Manual")},
{5, N_("Program Shift A")}, {4, N_("Auto")},
{6, N_("Program Shift S")}, {5, N_("Program Shift A")},
{0x1013, N_("Portrait")}, {6, N_("Program Shift S")},
{0x1023, N_("Sports")}, {0x1013, N_("Portrait")},
{0x1033, N_("Sunset")}, {0x1023, N_("Sports")},
{0x1043, N_("Night View/Portrait")}, {0x1033, N_("Sunset")},
{0x1053, N_("Landscape")}, {0x1043, N_("Night View/Portrait")},
{0x1083, N_("Macro")}}; {0x1053, N_("Landscape")},
{0x1083, N_("Macro")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings image size values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings image size values to readable labels
constexpr TagDetails minoltaImageSize5D[] = {{0, N_("Large")}, {1, N_("Medium")}, {2, N_("Small")}}; constexpr TagDetails minoltaImageSize5D[] = {
{0, N_("Large")},
{1, N_("Medium")},
{2, N_("Small")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings image quality values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings image quality values to readable labels
constexpr TagDetails minoltaImageQuality5D[] = { constexpr TagDetails minoltaImageQuality5D[] = {
{0, N_("Raw")}, {16, N_("Fine")}, {32, N_("Normal")}, {34, N_("Raw+Jpeg")}, {48, N_("Economy")}}; {0, N_("Raw")}, {16, N_("Fine")}, {32, N_("Normal")}, {34, N_("Raw+Jpeg")}, {48, N_("Economy")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings white balance values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings white balance values to readable labels
constexpr TagDetails minoltaWhiteBalance5D[] = {{0, N_("Auto")}, {1, N_("Daylight")}, {2, N_("Cloudy")}, constexpr TagDetails minoltaWhiteBalance5D[] = {
{3, N_("Shade")}, {4, N_("Tungsten")}, {5, N_("Fluorescent")}, {0, N_("Auto")}, {1, N_("Daylight")}, {2, N_("Cloudy")}, {3, N_("Shade")}, {4, N_("Tungsten")},
{6, N_("Flash")}, {256, N_("Kelvin")}, {512, N_("Manual")}}; {5, N_("Fluorescent")}, {6, N_("Flash")}, {256, N_("Kelvin")}, {512, N_("Manual")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings metering mode values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings metering mode values to readable labels
constexpr TagDetails minoltaMeteringMode5D[] = {{0, N_("Multi-segment")}, {1, N_("Center weighted")}, {2, N_("Spot")}}; constexpr TagDetails minoltaMeteringMode5D[] = {
{0, N_("Multi-segment")},
{1, N_("Center weighted")},
{2, N_("Spot")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings ISO settings values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings ISO settings values to readable labels
constexpr TagDetails minoltaISOSetting5D[] = {{0, N_("Auto")}, constexpr TagDetails minoltaISOSetting5D[] = {
{1, "100"}, {0, N_("Auto")},
{3, "200"}, {1, "100"},
{4, "400"}, {3, "200"},
{5, "800"}, {4, "400"},
{6, "1600"}, {5, "800"},
{7, "3200"}, {6, "1600"},
{8, N_("200 (Zone Matching High)")}, {7, "3200"},
{10, N_("80 (Zone Matching Low)")}}; {8, N_("200 (Zone Matching High)")},
{10, N_("80 (Zone Matching Low)")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings color space values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings color space values to readable labels
constexpr TagDetails minoltaColorSpace5D[] = {{0, N_("sRGB (Natural)")}, constexpr TagDetails minoltaColorSpace5D[] = {
{1, N_("sRGB (Natural+)")}, {0, N_("sRGB (Natural)")}, {1, N_("sRGB (Natural+)")}, {2, N_("Monochrome")},
{2, N_("Monochrome")}, {3, N_("Adobe RGB (ICC)")}, {4, N_("Adobe RGB")},
{3, N_("Adobe RGB (ICC)")}, };
{4, N_("Adobe RGB")}};
//! Lookup table to translate Minolta Dynax 5D camera settings rotation values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings rotation values to readable labels
constexpr TagDetails minoltaRotation5D[] = { constexpr TagDetails minoltaRotation5D[] = {
{72, N_("Horizontal (normal)")}, {76, N_("Rotate 90 CW")}, {82, N_("Rotate 270 CW")}}; {72, N_("Horizontal (normal)")},
{76, N_("Rotate 90 CW")},
{82, N_("Rotate 270 CW")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings focus position values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings focus position values to readable labels
constexpr TagDetails minoltaFocusPosition5D[] = { constexpr TagDetails minoltaFocusPosition5D[] = {
{0, N_("Wide")}, {1, N_("Central")}, {2, N_("Up")}, {3, N_("Up right")}, {4, N_("Right")}, {0, N_("Wide")}, {1, N_("Central")}, {2, N_("Up")}, {3, N_("Up right")}, {4, N_("Right")},
{5, N_("Down right")}, {6, N_("Down")}, {7, N_("Down left")}, {8, N_("Left")}, {9, N_("Up left")}}; {5, N_("Down right")}, {6, N_("Down")}, {7, N_("Down left")}, {8, N_("Left")}, {9, N_("Up left")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings focus area values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings focus area values to readable labels
constexpr TagDetails minoltaFocusArea5D[] = {{0, N_("Wide")}, {1, N_("Selection")}, {2, N_("Spot")}}; constexpr TagDetails minoltaFocusArea5D[] = {
{0, N_("Wide")},
{1, N_("Selection")},
{2, N_("Spot")},
};
//! Lookup table to translate Minolta Dynax 5D camera settings focus mode values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings focus mode values to readable labels
constexpr TagDetails minoltaAFMode5D[] = {{0, "AF-A"}, {1, "AF-S"}, {2, "AF-D"}, {3, "DMF"}}; constexpr TagDetails minoltaAFMode5D[] = {
{0, "AF-A"},
{1, "AF-S"},
{2, "AF-D"},
{3, "DMF"},
};
//! Lookup table to translate Minolta Dynax 5D camera settings picture finish values to readable labels //! Lookup table to translate Minolta Dynax 5D camera settings picture finish values to readable labels
constexpr TagDetails minoltaPictureFinish5D[] = { constexpr TagDetails minoltaPictureFinish5D[] = {
{0, N_("Natural")}, {1, N_("Natural+")}, {2, N_("Portrait")}, {3, N_("Wind Scene")}, {0, N_("Natural")}, {1, N_("Natural+")}, {2, N_("Portrait")}, {3, N_("Wind Scene")},
{4, N_("Evening Scene")}, {5, N_("Night Scene")}, {6, N_("Night Portrait")}, {7, N_("Monochrome")}, {4, N_("Evening Scene")}, {5, N_("Night Scene")}, {6, N_("Night Portrait")}, {7, N_("Monochrome")},
{8, N_("Adobe RGB")}, {9, N_("Adobe RGB (ICC)")}}; {8, N_("Adobe RGB")}, {9, N_("Adobe RGB (ICC)")},
};
//! Method to convert Minolta Dynax 5D exposure manual bias values. //! Method to convert Minolta Dynax 5D exposure manual bias values.
std::ostream& MinoltaMakerNote::printMinoltaExposureManualBias5D(std::ostream& os, const Value& value, std::ostream& MinoltaMakerNote::printMinoltaExposureManualBias5D(std::ostream& os, const Value& value,
@ -698,152 +804,252 @@ const TagInfo* MinoltaMakerNote::tagListCs5D() {
// -- Sony A100 camera settings --------------------------------------------------------------- // -- Sony A100 camera settings ---------------------------------------------------------------
//! Lookup table to translate Sony A100 camera settings drive mode 2 values to readable labels //! Lookup table to translate Sony A100 camera settings drive mode 2 values to readable labels
constexpr TagDetails sonyDriveMode2A100[] = {{0, N_("Self-timer 10 sec")}, constexpr TagDetails sonyDriveMode2A100[] = {
{1, N_("Continuous")}, {0, N_("Self-timer 10 sec")},
{4, N_("Self-timer 2 sec")}, {1, N_("Continuous")},
{5, N_("Single Frame")}, {4, N_("Self-timer 2 sec")},
{8, N_("White Balance Bracketing Low")}, {5, N_("Single Frame")},
{9, N_("White Balance Bracketing High")}, {8, N_("White Balance Bracketing Low")},
{770, N_("Single-frame Bracketing Low")}, {9, N_("White Balance Bracketing High")},
{771, N_("Continuous Bracketing Low")}, {770, N_("Single-frame Bracketing Low")},
{1794, N_("Single-frame Bracketing High")}, {771, N_("Continuous Bracketing Low")},
{1795, N_("Continuous Bracketing High")}}; {1794, N_("Single-frame Bracketing High")},
{1795, N_("Continuous Bracketing High")},
};
//! Lookup table to translate Sony A100 camera settings focus mode values to readable labels //! Lookup table to translate Sony A100 camera settings focus mode values to readable labels
constexpr TagDetails sonyFocusModeA100[] = {{0, "AF-S"}, {1, "AF-C"}, {4, "AF-A"}, {5, "Manual"}, {6, "DMF"}}; constexpr TagDetails sonyFocusModeA100[] = {
{0, "AF-S"}, {1, "AF-C"}, {4, "AF-A"}, {5, "Manual"}, {6, "DMF"},
};
//! Lookup table to translate Sony A100 camera settings flash mode values to readable labels //! Lookup table to translate Sony A100 camera settings flash mode values to readable labels
constexpr TagDetails sonyFlashModeA100[] = { constexpr TagDetails sonyFlashModeA100[] = {
{0, N_("Auto")}, {2, N_("Rear flash sync")}, {3, N_("Wireless")}, {4, N_("Fill flash")}}; {0, N_("Auto")},
{2, N_("Rear flash sync")},
{3, N_("Wireless")},
{4, N_("Fill flash")},
};
//! Lookup table to translate Sony A100 camera settings metering mode values to readable labels //! Lookup table to translate Sony A100 camera settings metering mode values to readable labels
constexpr TagDetails sonyMeteringModeA100[] = { constexpr TagDetails sonyMeteringModeA100[] = {
{0, N_("Multi-segment")}, {1, N_("Center weighted average")}, {2, N_("Spot")}}; {0, N_("Multi-segment")},
{1, N_("Center weighted average")},
{2, N_("Spot")},
};
//! Lookup table to translate Sony A100 camera settings zone matching mode values to readable labels //! Lookup table to translate Sony A100 camera settings zone matching mode values to readable labels
constexpr TagDetails sonyZoneMatchingModeA100[] = {{0, N_("Off")}, {1, N_("Standard")}, {2, N_("Advanced")}}; constexpr TagDetails sonyZoneMatchingModeA100[] = {
{0, N_("Off")},
{1, N_("Standard")},
{2, N_("Advanced")},
};
//! Lookup table to translate Sony A100 camera settings color space values to readable labels //! Lookup table to translate Sony A100 camera settings color space values to readable labels
constexpr TagDetails sonyColorSpaceA100[] = {{0, N_("sRGB")}, {5, N_("Adobe RGB")}}; constexpr TagDetails sonyColorSpaceA100[] = {
{0, N_("sRGB")},
{5, N_("Adobe RGB")},
};
//! Lookup table to translate Sony A100 camera settings drive mode values to readable labels //! Lookup table to translate Sony A100 camera settings drive mode values to readable labels
constexpr TagDetails sonyDriveModeA100[] = {{0, N_("Single Frame")}, constexpr TagDetails sonyDriveModeA100[] = {
{1, N_("Continuous")}, {0, N_("Single Frame")},
{2, N_("Self-timer")}, {1, N_("Continuous")},
{3, N_("Continuous Bracketing")}, {2, N_("Self-timer")},
{4, N_("Single-Frame Bracketing")}, {3, N_("Continuous Bracketing")},
{5, N_("White Balance Bracketing")}}; {4, N_("Single-Frame Bracketing")},
{5, N_("White Balance Bracketing")},
};
//! Lookup table to translate Sony A100 camera settings self timer time values to readable labels //! Lookup table to translate Sony A100 camera settings self timer time values to readable labels
constexpr TagDetails sonySelfTimerTimeA100[] = {{0, "10s"}, {4, "2s"}}; constexpr TagDetails sonySelfTimerTimeA100[] = {
{0, "10s"},
{4, "2s"},
};
//! Lookup table to translate Sony A100 camera settings continuous bracketing values to readable labels //! Lookup table to translate Sony A100 camera settings continuous bracketing values to readable labels
constexpr TagDetails sonyContinuousBracketingA100[] = {{0x303, N_("Low")}, {0x703, N_("High")}}; constexpr TagDetails sonyContinuousBracketingA100[] = {
{0x303, N_("Low")},
{0x703, N_("High")},
};
//! Lookup table to translate Sony A100 camera settings single frame bracketing values to readable labels //! Lookup table to translate Sony A100 camera settings single frame bracketing values to readable labels
constexpr TagDetails sonySingleFrameBracketingA100[] = {{0x302, N_("Low")}, {0x702, N_("High")}}; constexpr TagDetails sonySingleFrameBracketingA100[] = {
{0x302, N_("Low")},
{0x702, N_("High")},
};
//! Lookup table to translate Sony A100 camera settings white balance bracketing values to readable labels //! Lookup table to translate Sony A100 camera settings white balance bracketing values to readable labels
constexpr TagDetails sonyWhiteBalanceBracketingA100[] = {{0x8, N_("Low")}, {0x9, N_("High")}}; constexpr TagDetails sonyWhiteBalanceBracketingA100[] = {
{0x8, N_("Low")},
{0x9, N_("High")},
};
//! Lookup table to translate Sony A100 camera settings white balance setting values to readable labels //! Lookup table to translate Sony A100 camera settings white balance setting values to readable labels
constexpr TagDetails sonyWhiteBalanceSettingA100[] = {{0x0000, N_("Auto")}, constexpr TagDetails sonyWhiteBalanceSettingA100[] = {
{0x0001, N_("Preset")}, {0x0000, N_("Auto")},
{0x0002, N_("Custom")}, {0x0001, N_("Preset")},
{0x0003, N_("Color Temperature/Color Filter")}, {0x0002, N_("Custom")},
{0x8001, N_("Preset")}, {0x0003, N_("Color Temperature/Color Filter")},
{0x8002, N_("Custom")}, {0x8001, N_("Preset")},
{0x8003, N_("Color Temperature/Color Filter")}}; {0x8002, N_("Custom")},
{0x8003, N_("Color Temperature/Color Filter")},
};
//! Lookup table to translate Sony A100 camera settings preset white balance values to readable labels //! Lookup table to translate Sony A100 camera settings preset white balance values to readable labels
constexpr TagDetails sonyPresetWhiteBalanceA100[] = {{1, N_("Daylight")}, {2, N_("Cloudy")}, {3, N_("Shade")}, constexpr TagDetails sonyPresetWhiteBalanceA100[] = {
{4, N_("Tungsten")}, {5, N_("Fluorescent")}, {6, N_("Flash")}}; {1, N_("Daylight")}, {2, N_("Cloudy")}, {3, N_("Shade")},
{4, N_("Tungsten")}, {5, N_("Fluorescent")}, {6, N_("Flash")},
};
//! Lookup table to translate Sony A100 camera settings color temperature setting values to readable labels //! Lookup table to translate Sony A100 camera settings color temperature setting values to readable labels
constexpr TagDetails sonyColorTemperatureSettingA100[] = {{0, N_("Temperature")}, {2, N_("Color Filter")}}; constexpr TagDetails sonyColorTemperatureSettingA100[] = {
{0, N_("Temperature")},
{2, N_("Color Filter")},
};
//! Lookup table to translate Sony A100 camera settings custom WB setting values to readable labels //! Lookup table to translate Sony A100 camera settings custom WB setting values to readable labels
constexpr TagDetails sonyCustomWBSettingA100[] = {{0, N_("Setup")}, {2, N_("Recall")}}; constexpr TagDetails sonyCustomWBSettingA100[] = {
{0, N_("Setup")},
{2, N_("Recall")},
};
//! Lookup table to translate Sony A100 camera settings custom WB error values to readable labels //! Lookup table to translate Sony A100 camera settings custom WB error values to readable labels
constexpr TagDetails sonyCustomWBErrorA100[] = {{0, N_("Ok")}, {2, N_("Error")}}; constexpr TagDetails sonyCustomWBErrorA100[] = {
{0, N_("Ok")},
{2, N_("Error")},
};
//! Lookup table to translate Sony A100 camera settings image size values to readable labels //! Lookup table to translate Sony A100 camera settings image size values to readable labels
constexpr TagDetails sonyImageSizeA100[] = {{0, N_("Standard")}, {1, N_("Medium")}, {2, N_("Small")}}; constexpr TagDetails sonyImageSizeA100[] = {
{0, N_("Standard")},
{1, N_("Medium")},
{2, N_("Small")},
};
//! Lookup table to translate Sony A100 camera settings instant playback setup values to readable labels //! Lookup table to translate Sony A100 camera settings instant playback setup values to readable labels
constexpr TagDetails sonyInstantPlaybackSetupA100[] = { constexpr TagDetails sonyInstantPlaybackSetupA100[] = {
{0, N_("Image and Information")}, {1, N_("Image Only")}, {3, N_("Image and Histogram")}}; {0, N_("Image and Information")},
{1, N_("Image Only")},
{3, N_("Image and Histogram")},
};
//! Lookup table to translate Sony A100 camera settings flash default setup values to readable labels //! Lookup table to translate Sony A100 camera settings flash default setup values to readable labels
constexpr TagDetails sonyFlashDefaultA100[] = {{0, N_("Auto")}, {1, N_("Fill Flash")}}; constexpr TagDetails sonyFlashDefaultA100[] = {
{0, N_("Auto")},
{1, N_("Fill Flash")},
};
//! Lookup table to translate Sony A100 camera settings auto bracket order values to readable labels //! Lookup table to translate Sony A100 camera settings auto bracket order values to readable labels
constexpr TagDetails sonyAutoBracketOrderA100[] = {{0, "0-+"}, {1, "-0+"}}; constexpr TagDetails sonyAutoBracketOrderA100[] = {
{0, "0-+"},
{1, "-0+"},
};
//! Lookup table to translate Sony A100 camera settings focus hold button values to readable labels //! Lookup table to translate Sony A100 camera settings focus hold button values to readable labels
constexpr TagDetails sonyFocusHoldButtonA100[] = {{0, N_("Focus Hold")}, {1, N_("DOF Preview")}}; constexpr TagDetails sonyFocusHoldButtonA100[] = {
{0, N_("Focus Hold")},
{1, N_("DOF Preview")},
};
//! Lookup table to translate Sony A100 camera settings AEL button values to readable labels //! Lookup table to translate Sony A100 camera settings AEL button values to readable labels
constexpr TagDetails sonyAELButtonA100[] = { constexpr TagDetails sonyAELButtonA100[] = {
{0, N_("Hold")}, {1, N_("Toggle")}, {2, N_("Spot Hold")}, {3, N_("Spot Toggle")}}; {0, N_("Hold")},
{1, N_("Toggle")},
{2, N_("Spot Hold")},
{3, N_("Spot Toggle")},
};
//! Lookup table to translate Sony A100 camera settings control dial set values to readable labels //! Lookup table to translate Sony A100 camera settings control dial set values to readable labels
constexpr TagDetails sonyControlDialSetA100[] = {{0, N_("Shutter Speed")}, {1, N_("Aperture")}}; constexpr TagDetails sonyControlDialSetA100[] = {
{0, N_("Shutter Speed")},
{1, N_("Aperture")},
};
//! Lookup table to translate Sony A100 camera settings exposure compensation mode values to readable labels //! Lookup table to translate Sony A100 camera settings exposure compensation mode values to readable labels
constexpr TagDetails sonyExposureCompensationModeA100[] = {{0, N_("Ambient and Flash")}, {1, N_("Ambient Only")}}; constexpr TagDetails sonyExposureCompensationModeA100[] = {
{0, N_("Ambient and Flash")},
{1, N_("Ambient Only")},
};
//! Lookup table to translate Sony A100 camera settings sony AF area illumination values to readable labels //! Lookup table to translate Sony A100 camera settings sony AF area illumination values to readable labels
constexpr TagDetails sonyAFAreaIlluminationA100[] = {{0, N_("0.3 seconds")}, {1, N_("0.6 seconds")}, {2, N_("Off")}}; constexpr TagDetails sonyAFAreaIlluminationA100[] = {
{0, N_("0.3 seconds")},
{1, N_("0.6 seconds")},
{2, N_("Off")},
};
//! Lookup table to translate Sony A100 camera settings monitor display off values to readable labels //! Lookup table to translate Sony A100 camera settings monitor display off values to readable labels
constexpr TagDetails sonyMonitorDisplayOffA100[] = {{0, N_("Automatic")}, {1, N_("Manual")}}; constexpr TagDetails sonyMonitorDisplayOffA100[] = {
{0, N_("Automatic")},
{1, N_("Manual")},
};
//! Lookup table to translate Sony A100 camera settings record display values to readable labels //! Lookup table to translate Sony A100 camera settings record display values to readable labels
constexpr TagDetails sonyRecordDisplayA100[] = {{0, N_("Auto-rotate")}, {1, N_("Horizontal")}}; constexpr TagDetails sonyRecordDisplayA100[] = {
{0, N_("Auto-rotate")},
{1, N_("Horizontal")},
};
//! Lookup table to translate Sony A100 camera settings play display values to readable labels //! Lookup table to translate Sony A100 camera settings play display values to readable labels
constexpr TagDetails sonyPlayDisplayA100[] = {{0, N_("Auto-rotate")}, {1, N_("Manual Rotate")}}; constexpr TagDetails sonyPlayDisplayA100[] = {
{0, N_("Auto-rotate")},
{1, N_("Manual Rotate")},
};
//! Lookup table to translate Sony A100 camera settings metering off scale indicator values to readable labels //! Lookup table to translate Sony A100 camera settings metering off scale indicator values to readable labels
constexpr TagDetails sonyMeteringOffScaleIndicatorA100[] = { constexpr TagDetails sonyMeteringOffScaleIndicatorA100[] = {
{0, N_("Within Range")}, {1, N_("Under/Over Range")}, {255, N_("Out of Range")}}; {0, N_("Within Range")},
{1, N_("Under/Over Range")},
{255, N_("Out of Range")},
};
//! Lookup table to translate Sony A100 camera settings exposure indicator values to readable labels //! Lookup table to translate Sony A100 camera settings exposure indicator values to readable labels
constexpr TagDetails sonyExposureIndicatorA100[] = {{0, N_("Not Indicated")}, constexpr TagDetails sonyExposureIndicatorA100[] = {
{1, N_("Under Scale")}, {0, N_("Not Indicated")},
{119, N_("Bottom of Scale")}, {1, N_("Under Scale")},
{120, "-2.0"}, {119, N_("Bottom of Scale")},
{121, "-1.7"}, {120, "-2.0"},
{122, "-1.5"}, {121, "-1.7"},
{123, "-1.3"}, {122, "-1.5"},
{124, "-1.0"}, {123, "-1.3"},
{125, "-0.7"}, {124, "-1.0"},
{126, "-0.5"}, {125, "-0.7"},
{127, "-0.3"}, {126, "-0.5"},
{128, "-0.0"}, {127, "-0.3"},
{129, "+0.3"}, {128, "-0.0"},
{130, "+0.5"}, {129, "+0.3"},
{131, "+0.7"}, {130, "+0.5"},
{132, "+1.0"}, {131, "+0.7"},
{133, "+1.3"}, {132, "+1.0"},
{134, "+1.5"}, {133, "+1.3"},
{135, "+1.7"}, {134, "+1.5"},
{136, "+2.0"}, {135, "+1.7"},
{253, N_("Top of Scale")}, {136, "+2.0"},
{254, N_("Over Scale")}}; {253, N_("Top of Scale")},
{254, N_("Over Scale")},
};
//! Lookup table to translate Sony A100 camera settings focus mode switch values to readable labels //! Lookup table to translate Sony A100 camera settings focus mode switch values to readable labels
constexpr TagDetails sonyFocusModeSwitchA100[] = {{0, N_("AM")}, {1, N_("MF")}}; constexpr TagDetails sonyFocusModeSwitchA100[] = {
{0, N_("AM")},
{1, N_("MF")},
};
//! Lookup table to translate Sony A100 camera settings flash type switch values to readable labels //! Lookup table to translate Sony A100 camera settings flash type switch values to readable labels
constexpr TagDetails sonyFlashTypeA100[] = {{0, N_("Off")}, {1, N_("Built-in")}, {2, N_("External")}}; constexpr TagDetails sonyFlashTypeA100[] = {
{0, N_("Off")},
{1, N_("Built-in")},
{2, N_("External")},
};
//! Lookup table to translate Sony A100 camera settings battery level switch values to readable labels //! Lookup table to translate Sony A100 camera settings battery level switch values to readable labels
constexpr TagDetails sonyBatteryLevelA100[] = { constexpr TagDetails sonyBatteryLevelA100[] = {
{3, N_("Very Low")}, {4, N_("Low")}, {5, N_("Half Full")}, {6, N_("Sufficient Power Remaining")}}; {3, N_("Very Low")},
{4, N_("Low")},
{5, N_("Half Full")},
{6, N_("Sufficient Power Remaining")},
};
// Sony A100 Camera Settings Tag Info // Sony A100 Camera Settings Tag Info
constexpr TagInfo MinoltaMakerNote::tagInfoCsA100_[] = { constexpr TagInfo MinoltaMakerNote::tagInfoCsA100_[] = {
@ -1390,7 +1596,8 @@ static constexpr TagDetails minoltaSonyLensID[] = {
"Manual lens | " // 1 "Manual lens | " // 1
"Sony E 50mm F1.8 OSS | " // 2 "Sony E 50mm F1.8 OSS | " // 2
"E PZ 16-50mm F3.5-5.6 OSS" // 3 "E PZ 16-50mm F3.5-5.6 OSS" // 3
}}; },
};
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// #1145 begin - respect lenses with shared LensID // #1145 begin - respect lenses with shared LensID
@ -1689,10 +1896,11 @@ std::ostream& printMinoltaSonyLensID(std::ostream& os, const Value& value, const
//! Lookup table to translate Minolta A100 and all other Sony Alpha camera color mode values to readable labels //! Lookup table to translate Minolta A100 and all other Sony Alpha camera color mode values to readable labels
constexpr TagDetails minoltaSonyColorMode[] = { constexpr TagDetails minoltaSonyColorMode[] = {
{0, N_("Standard")}, {1, N_("Vivid Color")}, {2, N_("Portrait")}, {3, N_("Landscape")}, {0, N_("Standard")}, {1, N_("Vivid Color")}, {2, N_("Portrait")}, {3, N_("Landscape")},
{4, N_("Sunset")}, {5, N_("Night View/Portrait")}, {6, N_("Black & White")}, {7, N_("AdobeRGB")}, {4, N_("Sunset")}, {5, N_("Night View/Portrait")}, {6, N_("Black & White")}, {7, N_("AdobeRGB")},
{12, N_("Neutral")}, {100, N_("Neutral")}, {101, N_("Clear")}, {102, N_("Deep")}, {12, N_("Neutral")}, {100, N_("Neutral")}, {101, N_("Clear")}, {102, N_("Deep")},
{103, N_("Light")}, {104, N_("Night View")}, {105, N_("Autumn Leaves")}}; {103, N_("Light")}, {104, N_("Night View")}, {105, N_("Autumn Leaves")},
};
std::ostream& printMinoltaSonyColorMode(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyColorMode(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyColorMode)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyColorMode)(os, value, metadata);
@ -1701,7 +1909,10 @@ std::ostream& printMinoltaSonyColorMode(std::ostream& os, const Value& value, co
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Minolta/Sony bool function values to readable labels //! Lookup table to translate Minolta/Sony bool function values to readable labels
constexpr TagDetails minoltaSonyBoolFunction[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails minoltaSonyBoolFunction[] = {
{0, N_("Off")},
{1, N_("On")},
};
std::ostream& printMinoltaSonyBoolValue(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyBoolValue(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyBoolFunction)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyBoolFunction)(os, value, metadata);
@ -1710,7 +1921,10 @@ std::ostream& printMinoltaSonyBoolValue(std::ostream& os, const Value& value, co
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Minolta/Sony bool inverse function values to readable labels //! Lookup table to translate Minolta/Sony bool inverse function values to readable labels
constexpr TagDetails minoltaSonyBoolInverseFunction[] = {{0, N_("On")}, {1, N_("Off")}}; constexpr TagDetails minoltaSonyBoolInverseFunction[] = {
{0, N_("On")},
{1, N_("Off")},
};
std::ostream& printMinoltaSonyBoolInverseValue(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyBoolInverseValue(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyBoolInverseFunction)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyBoolInverseFunction)(os, value, metadata);
@ -1719,7 +1933,11 @@ std::ostream& printMinoltaSonyBoolInverseValue(std::ostream& os, const Value& va
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony camera settings focus mode values to readable labels //! Lookup table to translate Sony camera settings focus mode values to readable labels
constexpr TagDetails minoltaSonyAFAreaMode[] = {{0, N_("Wide")}, {1, N_("Local")}, {2, N_("Spot")}}; constexpr TagDetails minoltaSonyAFAreaMode[] = {
{0, N_("Wide")},
{1, N_("Local")},
{2, N_("Spot")},
};
std::ostream& printMinoltaSonyAFAreaMode(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyAFAreaMode(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyAFAreaMode)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyAFAreaMode)(os, value, metadata);
@ -1731,7 +1949,8 @@ std::ostream& printMinoltaSonyAFAreaMode(std::ostream& os, const Value& value, c
constexpr TagDetails minoltaSonyLocalAFAreaPoint[] = { constexpr TagDetails minoltaSonyLocalAFAreaPoint[] = {
{1, N_("Center")}, {2, N_("Top")}, {3, N_("Top-Right")}, {4, N_("Right")}, {1, N_("Center")}, {2, N_("Top")}, {3, N_("Top-Right")}, {4, N_("Right")},
{5, N_("Bottom-Right")}, {6, N_("Bottom")}, {7, N_("Bottom-Left")}, {8, N_("Left")}, {5, N_("Bottom-Right")}, {6, N_("Bottom")}, {7, N_("Bottom-Left")}, {8, N_("Left")},
{9, N_("Top-Left")}, {10, N_("Far-Right")}, {11, N_("Far-Left")}}; {9, N_("Top-Left")}, {10, N_("Far-Right")}, {11, N_("Far-Left")},
};
std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyLocalAFAreaPoint)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyLocalAFAreaPoint)(os, value, metadata);
@ -1741,7 +1960,8 @@ std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream& os, const Value& va
//! Lookup table to translate Sony camera settings dynamic range optimizer mode values to readable labels //! Lookup table to translate Sony camera settings dynamic range optimizer mode values to readable labels
constexpr TagDetails minoltaSonyDynamicRangeOptimizerMode[] = { constexpr TagDetails minoltaSonyDynamicRangeOptimizerMode[] = {
{0, N_("Off")}, {1, N_("Standard")}, {2, N_("Advanced Auto")}, {3, N_("Advanced Level")}, {4097, N_("Auto")}}; {0, N_("Off")}, {1, N_("Standard")}, {2, N_("Advanced Auto")}, {3, N_("Advanced Level")}, {4097, N_("Auto")},
};
std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream& os, const Value& value, std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream& os, const Value& value,
const ExifData* metadata) { const ExifData* metadata) {
@ -1751,7 +1971,10 @@ std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream& os, const
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony camera settings priority setup shutter release values to readable labels //! Lookup table to translate Sony camera settings priority setup shutter release values to readable labels
constexpr TagDetails minoltaSonyPrioritySetupShutterRelease[] = {{0, N_("AF")}, {1, N_("Release")}}; constexpr TagDetails minoltaSonyPrioritySetupShutterRelease[] = {
{0, N_("AF")},
{1, N_("Release")},
};
std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream& os, const Value& value, std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream& os, const Value& value,
const ExifData* metadata) { const ExifData* metadata) {
@ -1761,9 +1984,10 @@ std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream& os, cons
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony camera settings quality values to readable labels //! Lookup table to translate Sony camera settings quality values to readable labels
constexpr TagDetails minoltaSonyQualityCs[] = {{0, N_("RAW")}, {2, N_("CRAW")}, {16, N_("Extra Fine")}, constexpr TagDetails minoltaSonyQualityCs[] = {
{32, N_("Fine")}, {34, N_("RAW+JPEG")}, {35, N_("CRAW+JPEG")}, {0, N_("RAW")}, {2, N_("CRAW")}, {16, N_("Extra Fine")}, {32, N_("Fine")},
{48, N_("Standard")}}; {34, N_("RAW+JPEG")}, {35, N_("CRAW+JPEG")}, {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);
@ -1773,7 +1997,10 @@ std::ostream& printMinoltaSonyQualityCs(std::ostream& os, const Value& value, co
//! Lookup table to translate Sony camera settings rotation values to readable labels //! Lookup table to translate Sony camera settings rotation values to readable labels
constexpr TagDetails minoltaSonyRotation[] = { constexpr TagDetails minoltaSonyRotation[] = {
{0, N_("Horizontal (normal)")}, {1, N_("Rotate 90 CW")}, {2, N_("Rotate 270 CW")}}; {0, N_("Horizontal (normal)")},
{1, N_("Rotate 90 CW")},
{2, N_("Rotate 270 CW")},
};
std::ostream& printMinoltaSonyRotation(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyRotation(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyRotation)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyRotation)(os, value, metadata);
@ -1817,15 +2044,17 @@ std::ostream& printMinoltaSonySceneMode(std::ostream& os, const Value& value, co
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony/Minolta teleconverter model values to readable labels //! Lookup table to translate Sony/Minolta teleconverter model values to readable labels
constexpr TagDetails minoltaSonyTeleconverterModel[] = {{0x00, N_("None")}, constexpr TagDetails minoltaSonyTeleconverterModel[] = {
{0x04, N_("Minolta/Sony AF 1.4x APO (D) (0x04)")}, {0x00, N_("None")},
{0x05, N_("Minolta/Sony AF 2x APO (D) (0x05)")}, {0x04, N_("Minolta/Sony AF 1.4x APO (D) (0x04)")},
{0x48, N_("Minolta/Sony AF 2x APO (D)")}, {0x05, N_("Minolta/Sony AF 2x APO (D) (0x05)")},
{0x50, N_("Minolta AF 2x APO II")}, {0x48, N_("Minolta/Sony AF 2x APO (D)")},
{0x60, N_("Minolta AF 2x APO")}, {0x50, N_("Minolta AF 2x APO II")},
{0x88, N_("Minolta/Sony AF 1.4x APO (D)")}, {0x60, N_("Minolta AF 2x APO")},
{0x90, N_("Minolta AF 1.4x APO II")}, {0x88, N_("Minolta/Sony AF 1.4x APO (D)")},
{0xa0, N_("Minolta AF 1.4x APO")}}; {0x90, N_("Minolta AF 1.4x APO II")},
{0xa0, N_("Minolta AF 1.4x APO")},
};
std::ostream& printMinoltaSonyTeleconverterModel(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyTeleconverterModel(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyTeleconverterModel)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyTeleconverterModel)(os, value, metadata);
@ -1834,7 +2063,11 @@ std::ostream& printMinoltaSonyTeleconverterModel(std::ostream& os, const Value&
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony/Minolta zone matching values to readable labels //! Lookup table to translate Sony/Minolta zone matching values to readable labels
constexpr TagDetails minoltaSonyZoneMatching[] = {{0, N_("ISO Setting Used")}, {1, N_("High Key")}, {2, N_("Low Key")}}; constexpr TagDetails minoltaSonyZoneMatching[] = {
{0, N_("ISO Setting Used")},
{1, N_("High Key")},
{2, N_("Low Key")},
};
std::ostream& printMinoltaSonyZoneMatching(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonyZoneMatching(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyZoneMatching)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonyZoneMatching)(os, value, metadata);

@ -54,59 +54,79 @@ constexpr auto nikonFocuspoints = std::array{
//! Shutter Modes (credits to exiftool) //! Shutter Modes (credits to exiftool)
constexpr TagDetails nikonShutterModes[] = { constexpr TagDetails nikonShutterModes[] = {
{0, "Mechanical"}, {16, "Electronic"}, {48, "Electronic Front Curtain"}, {0, "Mechanical"}, {16, "Electronic"}, {48, "Electronic Front Curtain"},
{64, "Electronic (Movie)"}, {80, "Auto (Mechanical)"}, {81, "Auto (Electronic Front Curtain)"}}; {64, "Electronic (Movie)"}, {80, "Auto (Mechanical)"}, {81, "Auto (Electronic Front Curtain)"},
};
//! FlashComp, tag 0x0012 //! FlashComp, tag 0x0012
constexpr TagDetails nikonFlashComp[] = { constexpr TagDetails nikonFlashComp[] = {
// From the PHP JPEG Metadata Toolkit // From the PHP JPEG Metadata Toolkit
{0x06, "+1.0 EV"}, {0x04, "+0.7 EV"}, {0x03, "+0.5 EV"}, {0x02, "+0.3 EV"}, {0x00, "0.0 EV"}, {0xfe, "-0.3 EV"}, {0x06, "+1.0 EV"}, {0x04, "+0.7 EV"}, {0x03, "+0.5 EV"}, {0x02, "+0.3 EV"}, {0x00, "0.0 EV"}, {0xfe, "-0.3 EV"},
{0xfd, "-0.5 EV"}, {0xfc, "-0.7 EV"}, {0xfa, "-1.0 EV"}, {0xf8, "-1.3 EV"}, {0xf7, "-1.5 EV"}, {0xf6, "-1.7 EV"}, {0xfd, "-0.5 EV"}, {0xfc, "-0.7 EV"}, {0xfa, "-1.0 EV"}, {0xf8, "-1.3 EV"}, {0xf7, "-1.5 EV"}, {0xf6, "-1.7 EV"},
{0xf4, "-2.0 EV"}, {0xf2, "-2.3 EV"}, {0xf1, "-2.5 EV"}, {0xf0, "-2.7 EV"}, {0xee, "-3.0 EV"}}; {0xf4, "-2.0 EV"}, {0xf2, "-2.3 EV"}, {0xf1, "-2.5 EV"}, {0xf0, "-2.7 EV"}, {0xee, "-3.0 EV"},
};
//! ColorSpace, tag 0x001e //! ColorSpace, tag 0x001e
constexpr TagDetails nikonColorSpace[] = {{1, N_("sRGB")}, {2, N_("Adobe RGB")}}; constexpr TagDetails nikonColorSpace[] = {
{1, N_("sRGB")},
{2, N_("Adobe RGB")},
};
//! FlashMode, tag 0x0087 //! FlashMode, tag 0x0087
constexpr TagDetails nikonFlashMode[] = { constexpr TagDetails nikonFlashMode[] = {
{0, N_("Did not fire")}, {1, N_("Fire, manual")}, {3, N_("Not ready")}, {6, N_("Off")}, {0, N_("Did not fire")}, {1, N_("Fire, manual")}, {3, N_("Not ready")}, {6, N_("Off")},
{7, N_("Fire, external")}, {8, N_("Fire, commander mode")}, {9, N_("Fire, TTL mode")}, {18, N_("LED Light")}}; {7, N_("Fire, external")}, {8, N_("Fire, commander mode")}, {9, N_("Fire, TTL mode")}, {18, N_("LED Light")},
};
//! ShootingMode, tag 0x0089 //! ShootingMode, tag 0x0089
constexpr TagDetailsBitmask nikonShootingMode[] = {{0x0001, N_("Continuous")}, constexpr TagDetailsBitmask nikonShootingMode[] = {
{0x0002, N_("Delay")}, {0x0001, N_("Continuous")},
{0x0004, N_("PC Control")}, {0x0002, N_("Delay")},
{0x0008, N_("Self-timer")}, {0x0004, N_("PC Control")},
{0x0010, N_("Exposure Bracketing")}, {0x0008, N_("Self-timer")},
{0x0020, N_("Auto ISO")}, {0x0010, N_("Exposure Bracketing")},
{0x0040, N_("White-Balance Bracketing")}, {0x0020, N_("Auto ISO")},
{0x0080, N_("IR Control")}, {0x0040, N_("White-Balance Bracketing")},
{0x0100, N_("D-Lighting Bracketing")}}; {0x0080, N_("IR Control")},
{0x0100, N_("D-Lighting Bracketing")},
};
//! ShootingMode D70, tag 0x0089 //! ShootingMode D70, tag 0x0089
constexpr TagDetailsBitmask nikonShootingModeD70[] = {{0x0001, N_("Continuous")}, constexpr TagDetailsBitmask nikonShootingModeD70[] = {
{0x0002, N_("Delay")}, {0x0001, N_("Continuous")},
{0x0004, N_("PC control")}, {0x0002, N_("Delay")},
{0x0010, N_("Exposure bracketing")}, {0x0004, N_("PC control")},
{0x0020, N_("Unused LE-NR slowdown")}, {0x0010, N_("Exposure bracketing")},
{0x0040, N_("White balance bracketing")}, {0x0020, N_("Unused LE-NR slowdown")},
{0x0080, N_("IR control")}}; {0x0040, N_("White balance bracketing")},
{0x0080, N_("IR control")},
};
//! AutoBracketRelease, tag 0x008a //! AutoBracketRelease, tag 0x008a
constexpr TagDetails nikonAutoBracketRelease[] = {{0, N_("None")}, {1, N_("Auto release")}, {2, N_("Manual release")}}; constexpr TagDetails nikonAutoBracketRelease[] = {
{0, N_("None")},
{1, N_("Auto release")},
{2, N_("Manual release")},
};
//! NEFCompression, tag 0x0093 //! NEFCompression, tag 0x0093
constexpr TagDetails nikonNefCompression[] = { constexpr TagDetails nikonNefCompression[] = {
{1, N_("Lossy (type 1)")}, {2, N_("Uncompressed")}, {3, N_("Lossless")}, {4, N_("Lossy (type 2)")}}; {1, N_("Lossy (type 1)")},
{2, N_("Uncompressed")},
{3, N_("Lossless")},
{4, N_("Lossy (type 2)")},
};
//! RetouchHistory, tag 0x009e //! RetouchHistory, tag 0x009e
constexpr TagDetails nikonRetouchHistory[] = { constexpr TagDetails nikonRetouchHistory[] = {
{0, N_("None")}, {3, N_("B & W")}, {4, N_("Sepia")}, {5, N_("Trim")}, {0, N_("None")}, {3, N_("B & W")}, {4, N_("Sepia")}, {5, N_("Trim")},
{6, N_("Small picture")}, {7, N_("D-Lighting")}, {8, N_("Red eye")}, {9, N_("Cyanotype")}, {6, N_("Small picture")}, {7, N_("D-Lighting")}, {8, N_("Red eye")}, {9, N_("Cyanotype")},
{10, N_("Sky light")}, {11, N_("Warm tone")}, {12, N_("Color custom")}, {13, N_("Image overlay")}}; {10, N_("Sky light")}, {11, N_("Warm tone")}, {12, N_("Color custom")}, {13, N_("Image overlay")},
};
//! HighISONoiseReduction, tag 0x00b1 //! HighISONoiseReduction, tag 0x00b1
constexpr TagDetails nikonHighISONoiseReduction[] = { constexpr TagDetails nikonHighISONoiseReduction[] = {
{0, N_("Off")}, {1, N_("Minimal")}, {2, N_("Low")}, {4, N_("Normal")}, {6, N_("High")}}; {0, N_("Off")}, {1, N_("Minimal")}, {2, N_("Low")}, {4, N_("Normal")}, {6, N_("High")},
};
// Nikon1 MakerNote Tag Info // Nikon1 MakerNote Tag Info
constexpr TagInfo Nikon1MakerNote::tagInfo_[] = { constexpr TagInfo Nikon1MakerNote::tagInfo_[] = {
@ -292,23 +312,35 @@ std::ostream& Nikon1MakerNote::print0x0088(std::ostream& os, const Value& value,
} }
//! Quality, tag 0x0003 //! Quality, tag 0x0003
constexpr TagDetails nikon2Quality[] = {{1, N_("VGA Basic")}, {2, N_("VGA Normal")}, {3, N_("VGA Fine")}, constexpr TagDetails nikon2Quality[] = {
{4, N_("SXGA Basic")}, {5, N_("SXGA Normal")}, {6, N_("SXGA Fine")}}; {1, N_("VGA Basic")}, {2, N_("VGA Normal")}, {3, N_("VGA Fine")},
{4, N_("SXGA Basic")}, {5, N_("SXGA Normal")}, {6, N_("SXGA Fine")},
};
//! ColorMode, tag 0x0004 //! ColorMode, tag 0x0004
constexpr TagDetails nikon2ColorMode[] = {{1, N_("Color")}, {2, N_("Monochrome")}}; constexpr TagDetails nikon2ColorMode[] = {
{1, N_("Color")},
{2, N_("Monochrome")},
};
//! ImageAdjustment, tag 0x0005 //! ImageAdjustment, tag 0x0005
constexpr TagDetails nikon2ImageAdjustment[] = { constexpr TagDetails nikon2ImageAdjustment[] = {
{0, N_("Normal")}, {1, N_("Bright+")}, {2, N_("Bright-")}, {3, N_("Contrast+")}, {4, N_("Contrast-")}}; {0, N_("Normal")}, {1, N_("Bright+")}, {2, N_("Bright-")}, {3, N_("Contrast+")}, {4, N_("Contrast-")},
};
//! ISOSpeed, tag 0x0006 //! ISOSpeed, tag 0x0006
constexpr TagDetails nikon2IsoSpeed[] = {{0, "80"}, {2, "160"}, {4, "320"}, {5, "100"}}; constexpr TagDetails nikon2IsoSpeed[] = {
{0, "80"},
{2, "160"},
{4, "320"},
{5, "100"},
};
//! WhiteBalance, tag 0x0007 //! WhiteBalance, tag 0x0007
constexpr TagDetails nikon2WhiteBalance[] = {{0, N_("Auto")}, {1, N_("Preset")}, {2, N_("Daylight")}, constexpr TagDetails nikon2WhiteBalance[] = {
{3, N_("Incandescent")}, {4, N_("Fluorescent")}, {5, N_("Cloudy")}, {0, N_("Auto")}, {1, N_("Preset")}, {2, N_("Daylight")}, {3, N_("Incandescent")},
{6, N_("Speedlight")}}; {4, N_("Fluorescent")}, {5, N_("Cloudy")}, {6, N_("Speedlight")},
};
// Nikon2 MakerNote Tag Info // Nikon2 MakerNote Tag Info
constexpr TagInfo Nikon2MakerNote::tagInfo_[] = { constexpr TagInfo Nikon2MakerNote::tagInfo_[] = {
@ -551,13 +583,23 @@ const TagInfo* Nikon3MakerNote::tagList() {
} }
//! YesNo, used for DaylightSavings, tag index 2, et al. //! YesNo, used for DaylightSavings, tag index 2, et al.
constexpr TagDetails nikonYesNo[] = {{0, N_("No")}, {1, N_("Yes")}}; constexpr TagDetails nikonYesNo[] = {
{0, N_("No")},
{1, N_("Yes")},
};
//! DateDisplayFormat, tag index 3 //! DateDisplayFormat, tag index 3
constexpr TagDetails nikonDateDisplayFormat[] = {{0, N_("Y/M/D")}, {1, N_("M/D/Y")}, {2, N_("D/M/Y")}}; constexpr TagDetails nikonDateDisplayFormat[] = {
{0, N_("Y/M/D")},
{1, N_("M/D/Y")},
{2, N_("D/M/Y")},
};
//! OnOff //! OnOff
constexpr TagDetails nikonOnOff[] = {{1, N_("On")}, {2, N_("Off")}}; constexpr TagDetails nikonOnOff[] = {
{1, N_("On")},
{2, N_("Off")},
};
// Nikon3 Vibration Reduction Tag Info // Nikon3 Vibration Reduction Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoVr_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoVr_[] = {
@ -575,17 +617,24 @@ const TagInfo* Nikon3MakerNote::tagListVr() {
} }
//! Adjust //! Adjust
constexpr TagDetails nikonAdjust[] = {{0, N_("Default Settings")}, {1, N_("Quick Adjust")}, {2, N_("Full Control")}}; constexpr TagDetails nikonAdjust[] = {
{0, N_("Default Settings")},
{1, N_("Quick Adjust")},
{2, N_("Full Control")},
};
//! FilterEffect //! FilterEffect
constexpr TagDetails nikonFilterEffect[] = {{0x80, N_("Off")}, {0x81, N_("Yellow")}, {0x82, N_("Orange")}, constexpr TagDetails nikonFilterEffect[] = {
{0x83, N_("Red")}, {0x84, N_("Green")}, {0xff, N_("n/a")}}; {0x80, N_("Off")}, {0x81, N_("Yellow")}, {0x82, N_("Orange")},
{0x83, N_("Red")}, {0x84, N_("Green")}, {0xff, N_("n/a")},
};
//! ToningEffect //! ToningEffect
constexpr TagDetails nikonToningEffect[] = {{0x80, N_("B&W")}, {0x81, N_("Sepia")}, {0x82, N_("Cyanotype")}, constexpr TagDetails nikonToningEffect[] = {
{0x83, N_("Red")}, {0x84, N_("Yellow")}, {0x85, N_("Green")}, {0x80, N_("B&W")}, {0x81, N_("Sepia")}, {0x82, N_("Cyanotype")}, {0x83, N_("Red")},
{0x86, N_("Blue-green")}, {0x87, N_("Blue")}, {0x88, N_("Purple-blue")}, {0x84, N_("Yellow")}, {0x85, N_("Green")}, {0x86, N_("Blue-green")}, {0x87, N_("Blue")},
{0x89, N_("Red-purple")}, {0xff, N_("n/a")}}; {0x88, N_("Purple-blue")}, {0x89, N_("Red-purple")}, {0xff, N_("n/a")},
};
// Nikon3 Picture Control Tag Info // Nikon3 Picture Control Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoPc_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoPc_[] = {
@ -623,7 +672,11 @@ const TagInfo* Nikon3MakerNote::tagListPc() {
} }
//! OnOff //! OnOff
constexpr TagDetails aftOnOff[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("On")}}; constexpr TagDetails aftOnOff[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("On")},
};
// Nikon3 AF Fine Tune // Nikon3 AF Fine Tune
constexpr TagInfo Nikon3MakerNote::tagInfoAFT_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoAFT_[] = {
@ -665,7 +718,8 @@ constexpr TagDetails nikonIsoExpansion[] = {
{0x105, N_("Hi 1.3")}, {0x106, N_("Hi 1.5")}, {0x107, N_("Hi 1.7")}, {0x108, N_("Hi 2.0")}, {0x109, N_("Hi 2.3")}, {0x105, N_("Hi 1.3")}, {0x106, N_("Hi 1.5")}, {0x107, N_("Hi 1.7")}, {0x108, N_("Hi 2.0")}, {0x109, N_("Hi 2.3")},
{0x10a, N_("Hi 2.5")}, {0x10b, N_("Hi 2.7")}, {0x10c, N_("Hi 3.0")}, {0x10d, N_("Hi 3.3")}, {0x10e, N_("Hi 3.5")}, {0x10a, N_("Hi 2.5")}, {0x10b, N_("Hi 2.7")}, {0x10c, N_("Hi 3.0")}, {0x10d, N_("Hi 3.3")}, {0x10e, N_("Hi 3.5")},
{0x10f, N_("Hi 3.7")}, {0x110, N_("Hi 4.0")}, {0x111, N_("Hi 4.3")}, {0x112, N_("Hi 4.5")}, {0x113, N_("Hi 4.7")}, {0x10f, N_("Hi 3.7")}, {0x110, N_("Hi 4.0")}, {0x111, N_("Hi 4.3")}, {0x112, N_("Hi 4.5")}, {0x113, N_("Hi 4.7")},
{0x114, N_("Hi 5.0")}, {0x201, N_("Lo 0.3")}, {0x202, N_("Lo 0.5")}, {0x203, N_("Lo 0.7")}, {0x204, N_("Lo 1.0")}}; {0x114, N_("Hi 5.0")}, {0x201, N_("Lo 0.3")}, {0x202, N_("Lo 0.5")}, {0x203, N_("Lo 0.7")}, {0x204, N_("Lo 1.0")},
};
// Nikon3 ISO Info Tag Info // Nikon3 ISO Info Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoIi_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoIi_[] = {
@ -687,19 +741,22 @@ const TagInfo* Nikon3MakerNote::tagListIi() {
//! AfAreaMode //! AfAreaMode
constexpr TagDetails nikonAfAreaMode[] = { constexpr TagDetails nikonAfAreaMode[] = {
{0, N_("Single Area")}, {1, N_("Dynamic Area")}, {2, N_("Dynamic Area, Closest Subject")}, {0, N_("Single Area")}, {1, N_("Dynamic Area")}, {2, N_("Dynamic Area, Closest Subject")},
{3, N_("Group Dynamic")}, {4, N_("Single Area (wide)")}, {5, N_("Dynamic Area (wide)")}}; {3, N_("Group Dynamic")}, {4, N_("Single Area (wide)")}, {5, N_("Dynamic Area (wide)")},
};
//! AfPoint //! AfPoint
constexpr TagDetails nikonAfPoint[] = {{0, N_("Center")}, {1, N_("Top")}, {2, N_("Bottom")}, constexpr TagDetails nikonAfPoint[] = {
{3, N_("Mid-left")}, {4, N_("Mid-right")}, {5, N_("Upper-left")}, {0, N_("Center")}, {1, N_("Top")}, {2, N_("Bottom")}, {3, N_("Mid-left")},
{6, N_("Upper-right")}, {7, N_("Lower-left")}, {8, N_("Lower-right")}, {4, N_("Mid-right")}, {5, N_("Upper-left")}, {6, N_("Upper-right")}, {7, N_("Lower-left")},
{9, N_("Far Left")}, {10, N_("Far Right")}}; {8, N_("Lower-right")}, {9, N_("Far Left")}, {10, N_("Far Right")},
};
//! AfPointsInFocus //! AfPointsInFocus
constexpr TagDetailsBitmask nikonAfPointsInFocus[] = { constexpr TagDetailsBitmask nikonAfPointsInFocus[] = {
{0x0001, N_("Center")}, {0x0002, N_("Top")}, {0x0004, N_("Bottom")}, {0x0008, N_("Mid-left")}, {0x0001, N_("Center")}, {0x0002, N_("Top")}, {0x0004, N_("Bottom")}, {0x0008, N_("Mid-left")},
{0x0010, N_("Mid-right")}, {0x0020, N_("Upper-left")}, {0x0040, N_("Upper-right")}, {0x0080, N_("Lower-left")}, {0x0010, N_("Mid-right")}, {0x0020, N_("Upper-left")}, {0x0040, N_("Upper-right")}, {0x0080, N_("Lower-left")},
{0x0100, N_("Lower-right")}, {0x0200, N_("Far Left")}, {0x0400, N_("Far Right")}}; {0x0100, N_("Lower-right")}, {0x0200, N_("Far Left")}, {0x0400, N_("Far Right")},
};
// Nikon3 Auto Focus Tag Info // Nikon3 Auto Focus Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoAf_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoAf_[] = {
@ -817,7 +874,10 @@ const TagInfo* Nikon3MakerNote::tagListFi() {
//! MultiExposureMode //! MultiExposureMode
constexpr TagDetails nikonMultiExposureMode[] = { constexpr TagDetails nikonMultiExposureMode[] = {
{0, N_("Off")}, {1, N_("Multiple Exposure")}, {2, N_("Image Overlay")}}; {0, N_("Off")},
{1, N_("Multiple Exposure")},
{2, N_("Image Overlay")},
};
// Nikon3 Multi Exposure Tag Info // Nikon3 Multi Exposure Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoMe_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoMe_[] = {
@ -839,28 +899,34 @@ const TagInfo* Nikon3MakerNote::tagListMe() {
} }
//! FlashSource //! FlashSource
constexpr TagDetails nikonFlashSource[] = {{0, N_("None")}, {1, N_("External")}, {2, N_("Internal")}}; constexpr TagDetails nikonFlashSource[] = {
{0, N_("None")},
{1, N_("External")},
{2, N_("Internal")},
};
//! FlashFirmware //! FlashFirmware
constexpr TagDetails nikonFlashFirmware[] = {{0x0000, N_("n/a")}, constexpr TagDetails nikonFlashFirmware[] = {
{0x0101, N_("1.01 (SB-800 or Metz 58 AF-1)")}, {0x0000, N_("n/a")},
{0x0103, "1.03 (SB-800)"}, {0x0101, N_("1.01 (SB-800 or Metz 58 AF-1)")},
{0x0201, "2.01 (SB-800)"}, {0x0103, "1.03 (SB-800)"},
{0x0204, "2.04 (SB-600)"}, {0x0201, "2.01 (SB-800)"},
{0x0205, "2.05 (SB-600)"}, {0x0204, "2.04 (SB-600)"},
{0x0301, "3.01 (SU-800 Remote Commander)"}, {0x0205, "2.05 (SB-600)"},
{0x0401, "4.01 (SB-400)"}, {0x0301, "3.01 (SU-800 Remote Commander)"},
{0x0402, "4.02 (SB-400)"}, {0x0401, "4.01 (SB-400)"},
{0x0404, "4.04 (SB-400)"}, {0x0402, "4.02 (SB-400)"},
{0x0501, "5.01 (SB-900)"}, {0x0404, "4.04 (SB-400)"},
{0x0502, "5.02 (SB-900)"}, {0x0501, "5.01 (SB-900)"},
{0x0601, "6.01 (SB-700)"}, {0x0502, "5.02 (SB-900)"},
{0x0701, "7.01 (SB-910)"}, {0x0601, "6.01 (SB-700)"},
{0x0800, "8.01 (SB-N5)"}, {0x0701, "7.01 (SB-910)"},
{0x0a00, "10.00 (SB-N7)"}, {0x0800, "8.01 (SB-N5)"},
{0x0b00, "11.00 (SB-300)"}, {0x0a00, "10.00 (SB-N7)"},
{0x0d00, "13.00 (SB-500)"}, {0x0b00, "11.00 (SB-300)"},
{0x0e00, "14.00 (SB-5000)"}}; {0x0d00, "13.00 (SB-500)"},
{0x0e00, "14.00 (SB-5000)"},
};
//! FlashGNDistance //! FlashGNDistance
constexpr TagDetails nikonFlashGNDistance[] = { constexpr TagDetails nikonFlashGNDistance[] = {
@ -877,7 +943,8 @@ constexpr TagDetails nikonFlashGNDistance[] = {
{148, "10.0 ft"}, {149, "12.0 ft"}, {150, "13.0 ft"}, {151, "15.0 ft"}, {152, "17.0 ft"}, {153, "19.0 ft"}, {148, "10.0 ft"}, {149, "12.0 ft"}, {150, "13.0 ft"}, {151, "15.0 ft"}, {152, "17.0 ft"}, {153, "19.0 ft"},
{154, "21.0 ft"}, {155, "23.0 ft"}, {156, "26.0 ft"}, {157, "29.0 ft"}, {158, "33.0 ft"}, {159, "37.0 ft"}, {154, "21.0 ft"}, {155, "23.0 ft"}, {156, "26.0 ft"}, {157, "29.0 ft"}, {158, "33.0 ft"}, {159, "37.0 ft"},
{160, "42.0 ft"}, {161, "47.0 ft"}, {162, "52.0 ft"}, {163, "59.0 ft"}, {164, "66.0 ft"}, {165, "74.0 ft"}, {160, "42.0 ft"}, {161, "47.0 ft"}, {162, "52.0 ft"}, {163, "59.0 ft"}, {164, "66.0 ft"}, {165, "74.0 ft"},
{166, "83.0 ft"}, {167, "94.0 ft"}, {255, N_("n/a")}}; {166, "83.0 ft"}, {167, "94.0 ft"}, {255, N_("n/a")},
};
//! FlashControlMode //! FlashControlMode
constexpr TagDetails nikonFlashControlMode[] = { constexpr TagDetails nikonFlashControlMode[] = {
@ -896,36 +963,52 @@ static constexpr bool flashModeUsesManualScale(const int64_t mode) {
//! ExternalFlashFlags //! ExternalFlashFlags
constexpr TagDetails nikonExternalFlashFlags[] = { constexpr TagDetails nikonExternalFlashFlags[] = {
{0, N_("Fired")}, {2, N_("Bounce Flash")}, {4, N_("Wide Flash Adapter")}}; {0, N_("Fired")},
{2, N_("Bounce Flash")},
{4, N_("Wide Flash Adapter")},
};
//! FlashColorFilter //! FlashColorFilter
constexpr TagDetails nikonFlashColorFilter[] = {{0, N_("None")}, constexpr TagDetails nikonFlashColorFilter[] = {
{1, N_("FL-GL1 (for fluorescent light)")}, {0, N_("None")},
{2, N_("FL-GL2 (for fluorescent light)")}, {1, N_("FL-GL1 (for fluorescent light)")},
{9, N_("TN-A1 (for incandescent light)")}, {2, N_("FL-GL2 (for fluorescent light)")},
{10, N_("TN-A2 (for incandescent light)")}, {9, N_("TN-A1 (for incandescent light)")},
{65, N_("Red")}, {10, N_("TN-A2 (for incandescent light)")},
{66, N_("Blue")}, {65, N_("Red")},
{67, N_("Yellow")}, {66, N_("Blue")},
{68, N_("Amber")}, {67, N_("Yellow")},
{79, N_("Other")}}; {68, N_("Amber")},
{79, N_("Other")},
};
//! FlashWirelessOptions //! FlashWirelessOptions
constexpr TagDetails nikonFlashAWLMode[] = { constexpr TagDetails nikonFlashAWLMode[] = {
{0, N_("AWL Off")}, {1, N_("Optical AWL")}, {2, N_("Optical/Radio AWL")}, {3, N_("Radio AWL")}}; {0, N_("AWL Off")},
{1, N_("Optical AWL")},
{2, N_("Optical/Radio AWL")},
{3, N_("Radio AWL")},
};
//! FlashExposureComp //! FlashExposureComp
constexpr TagDetails nikonFlashExposureComp[] = {{0, N_("Exposure Comp.: Entire frame")}, constexpr TagDetails nikonFlashExposureComp[] = {
{4, N_("Exposure Comp.: Background Only")}}; {0, N_("Exposure Comp.: Entire frame")},
{4, N_("Exposure Comp.: Background Only")},
};
//! FlashIlluminationPattern //! FlashIlluminationPattern
constexpr TagDetails nikonFlashIlluminationPat[] = {{0, N_("Illumination Pat.: Standard")}, constexpr TagDetails nikonFlashIlluminationPat[] = {
{1, N_("Illumination Pat.: Center-weighted")}, {0, N_("Illumination Pat.: Standard")},
{2, N_("Illumination Pat.: Even")}}; {1, N_("Illumination Pat.: Center-weighted")},
{2, N_("Illumination Pat.: Even")},
};
//! FlashAdaptors //! FlashAdaptors
constexpr TagDetailsBitmask nikonFlashAdaptors[] = { constexpr TagDetailsBitmask nikonFlashAdaptors[] = {
{0x04, N_("Bounce Flash adaptor")}, {0x10, N_("Wide Flash adaptor")}, {0x20, N_("Nikon Diffusion Dome")}}; {0x04, N_("Bounce Flash adaptor")},
{0x10, N_("Wide Flash adaptor")},
{0x20, N_("Nikon Diffusion Dome")},
};
static void printFlashCompensationValue(std::ostream& os, const unsigned char value, const bool manualScale) { static void printFlashCompensationValue(std::ostream& os, const unsigned char value, const bool manualScale) {
std::ios::fmtflags f(os.flags()); std::ios::fmtflags f(os.flags());
@ -1309,7 +1392,8 @@ constexpr TagDetails nikonAfFineTuneAdj1[] = {
{0x30c2, "-19"}, {0x403c, "+5"}, {0x403d, "+10"}, {0x403e, "+20"}, {0x40c2, "-20"}, {0x40c3, "-10"}, {0x30c2, "-19"}, {0x403c, "+5"}, {0x403d, "+10"}, {0x403e, "+20"}, {0x40c2, "-20"}, {0x40c3, "-10"},
{0x40c4, "-5"}, {0x603d, "+11"}, {0x60c3, "-11"}, {0x803b, "+3"}, {0x803c, "+6"}, {0x803d, "+12"}, {0x40c4, "-5"}, {0x603d, "+11"}, {0x60c3, "-11"}, {0x803b, "+3"}, {0x803c, "+6"}, {0x803d, "+12"},
{0x80c3, "-12"}, {0x80c4, "-6"}, {0x80c5, "-3"}, {0xa03d, "+13"}, {0xa0c3, "-13"}, {0xc03c, "+7"}, {0x80c3, "-12"}, {0x80c4, "-6"}, {0x80c5, "-3"}, {0xa03d, "+13"}, {0xa0c3, "-13"}, {0xc03c, "+7"},
{0xc03d, "+14"}, {0xc0c3, "-14"}, {0xc0c4, "-7"}, {0xe03d, "+15"}, {0xe0c3, "-15"}}; {0xc03d, "+14"}, {0xc0c3, "-14"}, {0xc0c4, "-7"}, {0xe03d, "+15"}, {0xe0c3, "-15"},
};
// Nikon3 Shot Info D300 (a) Tag Info // Nikon3 Shot Info D300 (a) Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoSi3_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoSi3_[] = {
@ -1337,7 +1421,8 @@ constexpr TagDetails nikonAfFineTuneAdj2[] = {
{0x40c6, "-1"}, {0x543e, "+17"}, {0x54c2, "-17"}, {0x683d, "+9"}, {0x683e, "+18"}, {0x68c2, "-18"}, {0x40c6, "-1"}, {0x543e, "+17"}, {0x54c2, "-17"}, {0x683d, "+9"}, {0x683e, "+18"}, {0x68c2, "-18"},
{0x68c3, "-9"}, {0x7c3e, "+19"}, {0x7cc2, "-19"}, {0x903c, "+5"}, {0x903d, "+10"}, {0x903e, "+20"}, {0x68c3, "-9"}, {0x7c3e, "+19"}, {0x7cc2, "-19"}, {0x903c, "+5"}, {0x903d, "+10"}, {0x903e, "+20"},
{0x90c2, "-20"}, {0x90c3, "-10"}, {0x90c4, "-5"}, {0xb83d, "+11"}, {0xb8c3, "-11"}, {0xe03b, "+3"}, {0x90c2, "-20"}, {0x90c3, "-10"}, {0x90c4, "-5"}, {0xb83d, "+11"}, {0xb8c3, "-11"}, {0xe03b, "+3"},
{0xe03c, "+6"}, {0xe03d, "+12"}, {0xe0c3, "-12"}, {0xe0c4, "-6"}, {0xe0c5, "-3"}}; {0xe03c, "+6"}, {0xe03d, "+12"}, {0xe0c3, "-12"}, {0xe0c4, "-6"}, {0xe0c5, "-3"},
};
// Nikon3 Shot Info D300 (b) Tag Info // Nikon3 Shot Info D300 (b) Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoSi4_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoSi4_[] = {
@ -1358,10 +1443,19 @@ const TagInfo* Nikon3MakerNote::tagListSi4() {
} }
//! VibrationReduction //! VibrationReduction
constexpr TagDetails nikonOffOn2[] = {{0, N_("Off")}, {1, N_("On (1)")}, {2, N_("On (2)")}, {3, N_("On (3)")}}; constexpr TagDetails nikonOffOn2[] = {
{0, N_("Off")},
{1, N_("On (1)")},
{2, N_("On (2)")},
{3, N_("On (3)")},
};
//! VibrationReduction2 //! VibrationReduction2
constexpr TagDetails nikonOffOn3[] = {{0x0, N_("n/a")}, {0xc, N_("Off")}, {0xf, N_("On")}}; constexpr TagDetails nikonOffOn3[] = {
{0x0, N_("n/a")},
{0xc, N_("Off")},
{0xf, N_("On")},
};
// Nikon3 Shot Info Tag Info // Nikon3 Shot Info Tag Info
constexpr TagInfo Nikon3MakerNote::tagInfoSi5_[] = { constexpr TagInfo Nikon3MakerNote::tagInfoSi5_[] = {

@ -17,88 +17,127 @@
// class member definitions // class member definitions
namespace Exiv2::Internal { namespace Exiv2::Internal {
//! OffOn, multiple tags //! OffOn, multiple tags
constexpr TagDetails olympusOffOn[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails olympusOffOn[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! NoYes, multiple tags //! NoYes, multiple tags
constexpr TagDetails olympusNoYes[] = {{0, N_("No")}, {1, N_("Yes")}}; constexpr TagDetails olympusNoYes[] = {
{0, N_("No")},
{1, N_("Yes")},
};
//! Quality, tag 0x0201 //! Quality, tag 0x0201
constexpr TagDetails olympusQuality[] = {{1, N_("Standard Quality (SQ)")}, constexpr TagDetails olympusQuality[] = {
{2, N_("High Quality (HQ)")}, {1, N_("Standard Quality (SQ)")},
{3, N_("Super High Quality (SHQ)")}, {2, N_("High Quality (HQ)")},
{6, N_("Raw")}}; {3, N_("Super High Quality (SHQ)")},
{6, N_("Raw")},
};
//! Macro, tag 0x0202 //! Macro, tag 0x0202
constexpr TagDetails olympusMacro[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("Super macro")}}; constexpr TagDetails olympusMacro[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("Super macro")},
};
//! OneTouchWB, tag 0x0302 //! OneTouchWB, tag 0x0302
constexpr TagDetails olympusOneTouchWb[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("On (preset)")}}; constexpr TagDetails olympusOneTouchWb[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("On (preset)")},
};
//! SceneMode, tag 0x403 and CameraSettings tag 0x509 //! SceneMode, tag 0x403 and CameraSettings tag 0x509
constexpr TagDetails olympusSceneMode[] = {{0, N_("Standard")}, constexpr TagDetails olympusSceneMode[] = {
{6, N_("Auto")}, {0, N_("Standard")},
{7, N_("Sport")}, {6, N_("Auto")},
{8, N_("Portrait")}, {7, N_("Sport")},
{9, N_("Landscape+Portrait")}, {8, N_("Portrait")},
{10, N_("Landscape")}, {9, N_("Landscape+Portrait")},
{11, N_("Night Scene")}, {10, N_("Landscape")},
{12, N_("Self Portrait")}, {11, N_("Night Scene")},
{13, N_("Panorama")}, {12, N_("Self Portrait")},
{14, N_("2 in 1")}, {13, N_("Panorama")},
{15, N_("Movie")}, {14, N_("2 in 1")},
{16, N_("Landscape+Portrait")}, {15, N_("Movie")},
{17, N_("Night+Portrait")}, {16, N_("Landscape+Portrait")},
{18, N_("Indoor")}, {17, N_("Night+Portrait")},
{19, N_("Fireworks")}, {18, N_("Indoor")},
{20, N_("Sunset")}, {19, N_("Fireworks")},
{22, N_("Macro")}, {20, N_("Sunset")},
{23, N_("Super Macro")}, {22, N_("Macro")},
{24, N_("Food")}, {23, N_("Super Macro")},
{25, N_("Documents")}, {24, N_("Food")},
{26, N_("Museum")}, {25, N_("Documents")},
{27, N_("Shoot & Select")}, {26, N_("Museum")},
{28, N_("Beach & Snow")}, {27, N_("Shoot & Select")},
{29, N_("Self Portrait+Timer")}, {28, N_("Beach & Snow")},
{30, N_("Candle")}, {29, N_("Self Portrait+Timer")},
{31, N_("Available Light")}, {30, N_("Candle")},
{32, N_("Behind Glass")}, {31, N_("Available Light")},
{33, N_("My Mode")}, {32, N_("Behind Glass")},
{34, N_("Pet")}, {33, N_("My Mode")},
{35, N_("Underwater Wide1")}, {34, N_("Pet")},
{36, N_("Underwater Macro")}, {35, N_("Underwater Wide1")},
{37, N_("Shoot & Select1")}, {36, N_("Underwater Macro")},
{38, N_("Shoot & Select2")}, {37, N_("Shoot & Select1")},
{39, N_("High Key")}, {38, N_("Shoot & Select2")},
{40, N_("Digital Image Stabilization")}, {39, N_("High Key")},
{41, N_("Auction")}, {40, N_("Digital Image Stabilization")},
{42, N_("Beach")}, {41, N_("Auction")},
{43, N_("Snow")}, {42, N_("Beach")},
{44, N_("Underwater Wide2")}, {43, N_("Snow")},
{45, N_("Low Key")}, {44, N_("Underwater Wide2")},
{46, N_("Children")}, {45, N_("Low Key")},
{47, N_("Vivid")}, {46, N_("Children")},
{48, N_("Nature Macro")}, {47, N_("Vivid")},
{49, N_("Underwater Snapshot")}, {48, N_("Nature Macro")},
{50, N_("Shooting Guide")}}; {49, N_("Underwater Snapshot")},
{50, N_("Shooting Guide")},
};
//! FlashDevice, tag 0x1005 //! FlashDevice, tag 0x1005
constexpr TagDetails olympusFlashDevice[] = { constexpr TagDetails olympusFlashDevice[] = {
{0, N_("None")}, {1, N_("Internal")}, {4, N_("External")}, {5, N_("Internal + External")}}; {0, N_("None")},
{1, N_("Internal")},
{4, N_("External")},
{5, N_("Internal + External")},
};
//! FocusRange, tag 0x100a //! FocusRange, tag 0x100a
constexpr TagDetails olympusFocusRange[] = {{0, N_("Normal")}, {1, N_("Macro")}}; constexpr TagDetails olympusFocusRange[] = {
{0, N_("Normal")},
{1, N_("Macro")},
};
//! FocusMode, tag 0x100b //! FocusMode, tag 0x100b
constexpr TagDetails olympusFocusMode[] = {{0, N_("Auto")}, {1, N_("Manual")}}; constexpr TagDetails olympusFocusMode[] = {
{0, N_("Auto")},
{1, N_("Manual")},
};
//! Sharpness, tag 0x100f //! Sharpness, tag 0x100f
constexpr TagDetails olympusSharpness[] = {{0, N_("Normal")}, {1, N_("Hard")}, {2, N_("Soft")}}; constexpr TagDetails olympusSharpness[] = {
{0, N_("Normal")},
{1, N_("Hard")},
{2, N_("Soft")},
};
//! Contrast, tag 0x1029 //! Contrast, tag 0x1029
constexpr TagDetails olympusContrast[] = {{0, N_("High")}, {1, N_("Normal")}, {2, N_("Low")}}; constexpr TagDetails olympusContrast[] = {
{0, N_("High")},
{1, N_("Normal")},
{2, N_("Low")},
};
//! CCDScanMode, tag 0x1039 //! CCDScanMode, tag 0x1039
constexpr TagDetails olympusCCDScanMode[] = {{0, N_("Interlaced")}, {1, N_("Progressive")}}; constexpr TagDetails olympusCCDScanMode[] = {
{0, N_("Interlaced")},
{1, N_("Progressive")},
};
// Olympus Tag Info // Olympus Tag Info
constexpr TagInfo OlympusMakerNote::tagInfo_[] = { constexpr TagInfo OlympusMakerNote::tagInfo_[] = {
@ -287,124 +326,156 @@ const TagInfo* OlympusMakerNote::tagList() {
// Olympus CameraSettings Tags // Olympus CameraSettings Tags
//! ExposureMode, tag 0x0200 //! ExposureMode, tag 0x0200
constexpr TagDetails olympusExposureMode[] = {{1, N_("Manual")}, constexpr TagDetails olympusExposureMode[] = {
{2, N_("Program")}, {1, N_("Manual")}, {2, N_("Program")}, {3, N_("Aperture-priority AE")}, {4, N_("Shutter speed priority AE")},
{3, N_("Aperture-priority AE")}, {5, N_("Program-shift")},
{4, N_("Shutter speed priority AE")}, };
{5, N_("Program-shift")}};
//! MeteringMode, tag 0x0202 //! MeteringMode, tag 0x0202
constexpr TagDetails olympusMeteringMode[] = {{2, N_("Center-weighted average")}, constexpr TagDetails olympusMeteringMode[] = {
{3, N_("Spot")}, {2, N_("Center-weighted average")},
{5, N_("ESP")}, {3, N_("Spot")},
{261, N_("Pattern+AF")}, {5, N_("ESP")},
{515, N_("Spot+Highlight control")}, {261, N_("Pattern+AF")},
{1027, N_("Spot+Shadow control")}}; {515, N_("Spot+Highlight control")},
{1027, N_("Spot+Shadow control")},
};
//! MacroMode, tag 0x0300 //! MacroMode, tag 0x0300
constexpr TagDetails olympusMacroMode[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("Super Macro")}}; constexpr TagDetails olympusMacroMode[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("Super Macro")},
};
//! FocusMode, tag 0x0301 //! FocusMode, tag 0x0301
[[maybe_unused]] constexpr TagDetails olympusCsFocusMode[] = {{0, N_("Single AF")}, [[maybe_unused]] constexpr TagDetails olympusCsFocusMode[] = {
{1, N_("Sequential shooting AF")}, {0, N_("Single AF")}, {1, N_("Sequential shooting AF")}, {2, N_("Continuous AF")}, {3, N_("Multi AF")},
{2, N_("Continuous AF")}, {10, N_("MF")},
{3, N_("Multi AF")}, };
{10, N_("MF")}};
//! FocusProcess, tag 0x0302 //! FocusProcess, tag 0x0302
constexpr TagDetails olympusFocusProcess[] = {{0, N_("AF Not Used")}, {1, N_("AF Used")}}; constexpr TagDetails olympusFocusProcess[] = {
{0, N_("AF Not Used")},
{1, N_("AF Used")},
};
//! AFSearch, tag 0x0303 //! AFSearch, tag 0x0303
constexpr TagDetails olympusAFSearch[] = {{0, N_("Not Ready")}, {1, N_("Ready")}}; constexpr TagDetails olympusAFSearch[] = {
{0, N_("Not Ready")},
{1, N_("Ready")},
};
//! FlashMode, tag 0x0400 //! FlashMode, tag 0x0400
constexpr TagDetailsBitmask olympusFlashMode[] = { constexpr TagDetailsBitmask olympusFlashMode[] = {
{0x0000, N_("Off")}, {0x0001, N_("On")}, {0x0002, N_("Fill-in")}, {0x0004, N_("Red-eye")}, {0x0000, N_("Off")}, {0x0001, N_("On")}, {0x0002, N_("Fill-in")}, {0x0004, N_("Red-eye")},
{0x0008, N_("Slow-sync")}, {0x0010, N_("Forced On")}, {0x0020, N_("2nd Curtain")}}; {0x0008, N_("Slow-sync")}, {0x0010, N_("Forced On")}, {0x0020, N_("2nd Curtain")},
};
//! FlashRemoteControl, tag 0x0403 //! FlashRemoteControl, tag 0x0403
constexpr TagDetails olympusFlashRemoteControl[] = {{0x0, N_("Off")}, constexpr TagDetails olympusFlashRemoteControl[] = {
{0x1, N_("Channel 1, Low")}, {0x0, N_("Off")},
{0x2, N_("Channel 2, Low")}, {0x1, N_("Channel 1, Low")},
{0x3, N_("Channel 3, Low")}, {0x2, N_("Channel 2, Low")},
{0x4, N_("Channel 4, Low")}, {0x3, N_("Channel 3, Low")},
{0x9, N_("Channel 1, Mid")}, {0x4, N_("Channel 4, Low")},
{0xa, N_("Channel 2, Mid")}, {0x9, N_("Channel 1, Mid")},
{0xb, N_("Channel 3, Mid")}, {0xa, N_("Channel 2, Mid")},
{0xc, N_("Channel 4, Mid")}, {0xb, N_("Channel 3, Mid")},
{0x11, N_("Channel 1, High")}, {0xc, N_("Channel 4, Mid")},
{0x12, N_("Channel 2, High")}, {0x11, N_("Channel 1, High")},
{0x13, N_("Channel 3, High")}, {0x12, N_("Channel 2, High")},
{0x14, N_("Channel 4, High")}}; {0x13, N_("Channel 3, High")},
{0x14, N_("Channel 4, High")},
};
//! FlashControlMode, tag 0x0404 //! FlashControlMode, tag 0x0404
constexpr TagDetails olympusFlashControlMode[] = {{0, N_("Off")}, {3, N_("TTL")}, {4, N_("Auto")}, {5, N_("Manual")}}; constexpr TagDetails olympusFlashControlMode[] = {
{0, N_("Off")},
{3, N_("TTL")},
{4, N_("Auto")},
{5, N_("Manual")},
};
//! WhiteBalance, tag 0x0500 //! WhiteBalance, tag 0x0500
constexpr TagDetails olympusWhiteBalance[] = {{0, N_("Auto")}, constexpr TagDetails olympusWhiteBalance[] = {
{1, N_("Auto (Keep Warm Color Off)")}, {0, N_("Auto")},
{16, N_("7500K (Fine Weather with Shade)")}, {1, N_("Auto (Keep Warm Color Off)")},
{17, N_("6000K (Cloudy)")}, {16, N_("7500K (Fine Weather with Shade)")},
{18, N_("5300K (Fine Weather)")}, {17, N_("6000K (Cloudy)")},
{20, N_("3000K (Tungsten light)")}, {18, N_("5300K (Fine Weather)")},
{21, N_("3600K (Tungsten light-like)")}, {20, N_("3000K (Tungsten light)")},
{22, N_("Auto Setup")}, {21, N_("3600K (Tungsten light-like)")},
{23, N_("5500K (Flash)")}, {22, N_("Auto Setup")},
{33, N_("6600K (Daylight fluorescent)")}, {23, N_("5500K (Flash)")},
{34, N_("4500K (Neutral white fluorescent)")}, {33, N_("6600K (Daylight fluorescent)")},
{35, N_("4000K (Cool white fluorescent)")}, {34, N_("4500K (Neutral white fluorescent)")},
{36, N_("White Fluorescent")}, {35, N_("4000K (Cool white fluorescent)")},
{48, N_("3600K (Tungsten light-like)")}, {36, N_("White Fluorescent")},
{67, N_("Underwater")}, {48, N_("3600K (Tungsten light-like)")},
{256, N_("One Touch WB 1")}, {67, N_("Underwater")},
{257, N_("One Touch WB 2")}, {256, N_("One Touch WB 1")},
{258, N_("One Touch WB 3")}, {257, N_("One Touch WB 2")},
{259, N_("One Touch WB 4")}, {258, N_("One Touch WB 3")},
{512, N_("Custom WB 1")}, {259, N_("One Touch WB 4")},
{513, N_("Custom WB 2")}, {512, N_("Custom WB 1")},
{514, N_("Custom WB 3")}, {513, N_("Custom WB 2")},
{515, N_("Custom WB 4")}}; {514, N_("Custom WB 3")},
{515, N_("Custom WB 4")},
};
//! ModifiedSaturation, tag 0x0504 //! ModifiedSaturation, tag 0x0504
constexpr TagDetails olympusModifiedSaturation[] = {{0, N_("Off")}, constexpr TagDetails olympusModifiedSaturation[] = {
{1, N_("CM1 (Red Enhance)")}, {0, N_("Off")},
{2, N_("CM2 (Green Enhance)")}, {1, N_("CM1 (Red Enhance)")},
{3, N_("CM3 (Blue Enhance)")}, {2, N_("CM2 (Green Enhance)")},
{4, N_("CM4 (Skin Tones)")}}; {3, N_("CM3 (Blue Enhance)")},
{4, N_("CM4 (Skin Tones)")},
};
//! ColorSpace, tag 0x0507 //! ColorSpace, tag 0x0507
constexpr TagDetails olympusColorSpace[] = {{0, N_("sRGB")}, {1, N_("Adobe RGB")}, {2, N_("Pro Photo RGB")}}; constexpr TagDetails olympusColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
{2, N_("Pro Photo RGB")},
};
//! NoiseReduction, tag 0x050a //! NoiseReduction, tag 0x050a
constexpr TagDetailsBitmask olympusNoiseReduction[] = {{0x0001, N_("Noise Reduction")}, constexpr TagDetailsBitmask olympusNoiseReduction[] = {
{0x0002, N_("Noise Filter")}, {0x0001, N_("Noise Reduction")},
{0x0004, N_("Noise Filter (ISO Boost)")}, {0x0002, N_("Noise Filter")},
{0x0008, N_("Auto")}}; {0x0004, N_("Noise Filter (ISO Boost)")},
{0x0008, N_("Auto")},
};
//! PictureMode, tag 0x0520 //! PictureMode, tag 0x0520
constexpr TagDetails olympusPictureMode[] = {{1, N_("Vivid")}, constexpr TagDetails olympusPictureMode[] = {
{2, N_("Natural")}, {1, N_("Vivid")},
{3, N_("Muted")}, {2, N_("Natural")},
{4, N_("Portrait")}, {3, N_("Muted")},
{5, N_("i-Enhance")}, {4, N_("Portrait")},
{6, N_("e-Portrait")}, {5, N_("i-Enhance")},
{7, N_("Color Creator")}, {6, N_("e-Portrait")},
{9, N_("Color Profile 1")}, {7, N_("Color Creator")},
{10, N_("Color Profile 2")}, {9, N_("Color Profile 1")},
{11, N_("Color Profile 3")}, {10, N_("Color Profile 2")},
{12, N_("Monochrome Profile 1")}, {11, N_("Color Profile 3")},
{13, N_("Monochrome Profile 2")}, {12, N_("Monochrome Profile 1")},
{14, N_("Monochrome Profile 3")}, {13, N_("Monochrome Profile 2")},
{256, N_("Monotone")}, {14, N_("Monochrome Profile 3")},
{512, N_("Sepia")}}; {256, N_("Monotone")},
{512, N_("Sepia")},
};
//! PictureModeBWFilter, tag 0x0525 //! PictureModeBWFilter, tag 0x0525
constexpr TagDetails olympusPictureModeBWFilter[] = {{0, N_("n/a")}, {1, N_("Neutral")}, {2, N_("Yellow")}, constexpr TagDetails olympusPictureModeBWFilter[] = {
{3, N_("Orange")}, {4, N_("Red")}, {5, N_("Green")}}; {0, N_("n/a")}, {1, N_("Neutral")}, {2, N_("Yellow")}, {3, N_("Orange")}, {4, N_("Red")}, {5, N_("Green")},
};
//! PictureModeTone, tag 0x0526 //! PictureModeTone, tag 0x0526
constexpr TagDetails olympusPictureModeTone[] = {{0, N_("n/a")}, {1, N_("Neutral")}, {2, N_("Sepia")}, constexpr TagDetails olympusPictureModeTone[] = {
{3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")}}; {0, N_("n/a")}, {1, N_("Neutral")}, {2, N_("Sepia")}, {3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")},
};
constexpr TagDetails artFilters[] = { constexpr TagDetails artFilters[] = {
{0, N_("Off")}, {0, N_("Off")},
@ -448,11 +519,17 @@ constexpr TagDetails artFilters[] = {
}; };
//! OlympusCs Quality, tag 0x0603 //! OlympusCs Quality, tag 0x0603
constexpr TagDetails olympusCsQuality[] = {{1, N_("SQ")}, {2, N_("HQ")}, {3, N_("SHQ")}, {4, N_("RAW")}}; constexpr TagDetails olympusCsQuality[] = {
{1, N_("SQ")},
{2, N_("HQ")},
{3, N_("SHQ")},
{4, N_("RAW")},
};
//! Olympus ImageStabilization, tag 0x0604 //! Olympus ImageStabilization, tag 0x0604
static constexpr TagDetails olympusImageStabilization[] = { static constexpr TagDetails olympusImageStabilization[] = {
{0, N_("Off")}, {1, N_("S-IS 1")}, {2, N_("S-IS 2")}, {3, N_("S-IS 3")}, {4, N_("S-IS AUTO")}}; {0, N_("Off")}, {1, N_("S-IS 1")}, {2, N_("S-IS 2")}, {3, N_("S-IS 3")}, {4, N_("S-IS AUTO")},
};
constexpr TagInfo OlympusMakerNote::tagInfoCs_[] = { constexpr TagInfo OlympusMakerNote::tagInfoCs_[] = {
{0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), IfdId::olympusCsId, {0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), IfdId::olympusCsId,
@ -573,7 +650,11 @@ const TagInfo* OlympusMakerNote::tagListCs() {
} }
//! OlympusEq FlashType, tag 0x1000 //! OlympusEq FlashType, tag 0x1000
constexpr TagDetails olympusEqFlashType[] = {{0, N_("None")}, {2, N_("Simple E-System")}, {3, N_("E-System")}}; constexpr TagDetails olympusEqFlashType[] = {
{0, N_("None")},
{2, N_("Simple E-System")},
{3, N_("E-System")},
};
//! OlympusEq FlashModel, tag 0x1001 //! OlympusEq FlashModel, tag 0x1001
constexpr TagDetails olympusEqFlashModel[] = { constexpr TagDetails olympusEqFlashModel[] = {
@ -642,21 +723,34 @@ const TagInfo* OlympusMakerNote::tagListEq() {
} }
//! OlympusRd ColorSpace, tag 0x0108 //! OlympusRd ColorSpace, tag 0x0108
constexpr TagDetails olympusRdColorSpace[] = {{0, N_("sRGB")}, {1, N_("Adobe RGB")}, {2, N_("Pro Photo RGB")}}; constexpr TagDetails olympusRdColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
{2, N_("Pro Photo RGB")},
};
//! OlympusRd Engine, tag 0x0109 //! OlympusRd Engine, tag 0x0109
constexpr TagDetails olympusRdEngine[] = { constexpr TagDetails olympusRdEngine[] = {
{0, N_("High Speed")}, {1, N_("High Function")}, {2, N_("Advanced High Speed")}, {3, N_("Advanced High Function")}}; {0, N_("High Speed")},
{1, N_("High Function")},
{2, N_("Advanced High Speed")},
{3, N_("Advanced High Function")},
};
//! OlympusRd EditStatus, tag 0x010b //! OlympusRd EditStatus, tag 0x010b
constexpr TagDetails olympusRdEditStatus[] = { constexpr TagDetails olympusRdEditStatus[] = {
{0, N_("Original")}, {1, N_("Edited (Landscape)")}, {6, N_("Edited (Portrait)")}, {8, N_("Edited (Portrait)")}}; {0, N_("Original")},
{1, N_("Edited (Landscape)")},
{6, N_("Edited (Portrait)")},
{8, N_("Edited (Portrait)")},
};
//! OlympusRd Settings, tag 0x010c //! OlympusRd Settings, tag 0x010c
constexpr TagDetailsBitmask olympusRdSettings[] = {{0x0001, N_("WB Color Temp")}, {0x0004, N_("WB Gray Point")}, constexpr TagDetailsBitmask olympusRdSettings[] = {
{0x0008, N_("Saturation")}, {0x0010, N_("Contrast")}, {0x0001, N_("WB Color Temp")}, {0x0004, N_("WB Gray Point")}, {0x0008, N_("Saturation")},
{0x0020, N_("Sharpness")}, {0x0040, N_("Color Space")}, {0x0010, N_("Contrast")}, {0x0020, N_("Sharpness")}, {0x0040, N_("Color Space")},
{0x0080, N_("High Function")}, {0x0100, N_("Noise Reduction")}}; {0x0080, N_("High Function")}, {0x0100, N_("Noise Reduction")},
};
constexpr TagInfo OlympusMakerNote::tagInfoRd_[] = { constexpr TagInfo OlympusMakerNote::tagInfoRd_[] = {
{0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), IfdId::olympusRdId, {0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), IfdId::olympusRdId,
@ -697,25 +791,38 @@ const TagInfo* OlympusMakerNote::tagListRd() {
} }
//! OlympusRd2 WhiteBalance, tag 0x0101 //! OlympusRd2 WhiteBalance, tag 0x0101
constexpr TagDetails olympusRd2WhiteBalance[] = {{1, N_("Color Temperature")}, {2, N_("Gray Point")}}; constexpr TagDetails olympusRd2WhiteBalance[] = {
{1, N_("Color Temperature")},
{2, N_("Gray Point")},
};
//! OlympusRd2 ColorSpace, tag 0x0109 //! OlympusRd2 ColorSpace, tag 0x0109
constexpr TagDetails olympusRd2ColorSpace[] = {{0, N_("sRGB")}, {1, N_("Adobe RGB")}, {2, N_("Pro Photo RGB")}}; constexpr TagDetails olympusRd2ColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
{2, N_("Pro Photo RGB")},
};
//! OlympusRd2 Engine, tag 0x010b //! OlympusRd2 Engine, tag 0x010b
constexpr TagDetails olympusRd2Engine[] = {{0, N_("High Speed")}, {1, N_("High Function")}}; constexpr TagDetails olympusRd2Engine[] = {
{0, N_("High Speed")},
{1, N_("High Function")},
};
//! OlympusRd2 PictureMode, tag 0x010c //! OlympusRd2 PictureMode, tag 0x010c
constexpr TagDetails olympusRd2PictureMode[] = { constexpr TagDetails olympusRd2PictureMode[] = {
{1, N_("Vivid")}, {2, N_("Natural")}, {3, N_("Muted")}, {256, N_("Monotone")}, {512, N_("Sepia")}}; {1, N_("Vivid")}, {2, N_("Natural")}, {3, N_("Muted")}, {256, N_("Monotone")}, {512, N_("Sepia")},
};
//! OlympusRd2 PM_BWFilter, tag 0x0110 //! OlympusRd2 PM_BWFilter, tag 0x0110
constexpr TagDetails olympusRd2PM_BWFilter[] = { constexpr TagDetails olympusRd2PM_BWFilter[] = {
{1, N_("Neutral")}, {2, N_("Yellow")}, {3, N_("Orange")}, {4, N_("Red")}, {5, N_("Green")}}; {1, N_("Neutral")}, {2, N_("Yellow")}, {3, N_("Orange")}, {4, N_("Red")}, {5, N_("Green")},
};
//! OlympusRd2 PMPictureTone, tag 0x0111 //! OlympusRd2 PMPictureTone, tag 0x0111
constexpr TagDetails olympusRd2PMPictureTone[] = { constexpr TagDetails olympusRd2PMPictureTone[] = {
{1, N_("Neutral")}, {2, N_("Sepia")}, {3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")}}; {1, N_("Neutral")}, {2, N_("Sepia")}, {3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")},
};
constexpr TagInfo OlympusMakerNote::tagInfoRd2_[] = { constexpr TagInfo OlympusMakerNote::tagInfoRd2_[] = {
{0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), IfdId::olympusRd2Id, {0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), IfdId::olympusRd2Id,
@ -775,11 +882,15 @@ const TagInfo* OlympusMakerNote::tagListRd2() {
//! OlympusIp MultipleExposureMode, tag 0x101c //! OlympusIp MultipleExposureMode, tag 0x101c
constexpr TagDetails olympusIpMultipleExposureMode[] = { constexpr TagDetails olympusIpMultipleExposureMode[] = {
{0, N_("Off")}, {2, N_("On (2 frames)")}, {3, N_("On (3 frames)")}}; {0, N_("Off")},
{2, N_("On (2 frames)")},
{3, N_("On (3 frames)")},
};
//! OlympusIp olympusIpAspectRatio, tag 0x101c //! OlympusIp olympusIpAspectRatio, tag 0x101c
constexpr TagDetails olympusIpAspectRatio[] = {{1, "4:3"}, {2, "3:2"}, {3, "16:9"}, {4, "6:6"}, {5, "5:4"}, constexpr TagDetails olympusIpAspectRatio[] = {
{6, "7:6"}, {7, "6:5"}, {8, "7:5"}, {9, "3:4"}}; {1, "4:3"}, {2, "3:2"}, {3, "16:9"}, {4, "6:6"}, {5, "5:4"}, {6, "7:6"}, {7, "6:5"}, {8, "7:5"}, {9, "3:4"},
};
constexpr TagInfo OlympusMakerNote::tagInfoIp_[] = { constexpr TagInfo OlympusMakerNote::tagInfoIp_[] = {
{0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), {0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"),
@ -894,7 +1005,10 @@ const TagInfo* OlympusMakerNote::tagListIp() {
} }
//! OlympusFi ExternalFlashBounce, tag 0x1204 //! OlympusFi ExternalFlashBounce, tag 0x1204
constexpr TagDetails olympusFiExternalFlashBounce[] = {{0, N_("Bounce or Off")}, {1, N_("Direct")}}; constexpr TagDetails olympusFiExternalFlashBounce[] = {
{0, N_("Bounce or Off")},
{1, N_("Direct")},
};
constexpr TagInfo OlympusMakerNote::tagInfoFi_[] = { constexpr TagInfo OlympusMakerNote::tagInfoFi_[] = {
{0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), IfdId::olympusFiId, {0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), IfdId::olympusFiId,
@ -957,18 +1071,20 @@ const TagInfo* OlympusMakerNote::tagListFe() {
} }
//! OlympusRi LightSource, tag 0x1000 //! OlympusRi LightSource, tag 0x1000
constexpr TagDetails olympusRiLightSource[] = {{0, N_("Unknown")}, constexpr TagDetails olympusRiLightSource[] = {
{16, N_("Shade")}, {0, N_("Unknown")},
{17, N_("Cloudy")}, {16, N_("Shade")},
{18, N_("Fine Weather")}, {17, N_("Cloudy")},
{20, N_("Tungsten (incandescent)")}, {18, N_("Fine Weather")},
{22, N_("Evening Sunlight")}, {20, N_("Tungsten (incandescent)")},
{33, N_("Daylight Fluorescent (D 5700 - 7100K)")}, {22, N_("Evening Sunlight")},
{34, N_("Day White Fluorescent (N 4600 - 5400K)")}, {33, N_("Daylight Fluorescent (D 5700 - 7100K)")},
{35, N_("Cool White Fluorescent (W 3900 - 4500K)")}, {34, N_("Day White Fluorescent (N 4600 - 5400K)")},
{36, N_("White Fluorescent (WW 3200 - 3700K)")}, {35, N_("Cool White Fluorescent (W 3900 - 4500K)")},
{256, N_("One Touch White Balance")}, {36, N_("White Fluorescent (WW 3200 - 3700K)")},
{512, N_("Custom 1-4")}}; {256, N_("One Touch White Balance")},
{512, N_("Custom 1-4")},
};
constexpr TagInfo OlympusMakerNote::tagInfoRi_[] = { constexpr TagInfo OlympusMakerNote::tagInfoRi_[] = {
{0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), IfdId::olympusRiId, SectionId::makerTags, {0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), IfdId::olympusRiId, SectionId::makerTags,

@ -39,96 +39,111 @@ constexpr TagDetails panasonicImageStabilizer[] = {
//! Macro, tag 0x001c //! Macro, tag 0x001c
constexpr TagDetails panasonicMacro[] = { constexpr TagDetails panasonicMacro[] = {
{1, N_("On")}, {2, N_("Off")}, {257, N_("Tele-macro")}, {513, N_("Macro-zoom")}}; {1, N_("On")},
{2, N_("Off")},
{257, N_("Tele-macro")},
{513, N_("Macro-zoom")},
};
//! ShootingMode, tag 0x001f and SceneMode, tag 0x8001 //! ShootingMode, tag 0x001f and SceneMode, tag 0x8001
constexpr TagDetails panasonicShootingMode[] = {{0, N_("Off")}, // only SceneMode constexpr TagDetails panasonicShootingMode[] = {
{1, N_("Normal")}, {0, N_("Off")}, // only SceneMode
{2, N_("Portrait")}, {1, N_("Normal")},
{3, N_("Scenery")}, {2, N_("Portrait")},
{4, N_("Sports")}, {3, N_("Scenery")},
{5, N_("Night portrait")}, {4, N_("Sports")},
{6, N_("Program")}, {5, N_("Night portrait")},
{7, N_("Aperture priority")}, {6, N_("Program")},
{8, N_("Shutter-speed priority")}, {7, N_("Aperture priority")},
{9, N_("Macro")}, {8, N_("Shutter-speed priority")},
{10, N_("Spot")}, {9, N_("Macro")},
{11, N_("Manual")}, {10, N_("Spot")},
{12, N_("Movie preview")}, {11, N_("Manual")},
{13, N_("Panning")}, {12, N_("Movie preview")},
{14, N_("Simple")}, {13, N_("Panning")},
{15, N_("Color effects")}, {14, N_("Simple")},
{16, N_("Self Portrait")}, {15, N_("Color effects")},
{17, N_("Economy")}, {16, N_("Self Portrait")},
{18, N_("Fireworks")}, {17, N_("Economy")},
{19, N_("Party")}, {18, N_("Fireworks")},
{20, N_("Snow")}, {19, N_("Party")},
{21, N_("Night scenery")}, {20, N_("Snow")},
{22, N_("Food")}, {21, N_("Night scenery")},
{23, N_("Baby")}, {22, N_("Food")},
{24, N_("Soft skin")}, {23, N_("Baby")},
{25, N_("Candlelight")}, {24, N_("Soft skin")},
{26, N_("Starry night")}, {25, N_("Candlelight")},
{27, N_("High sensitivity")}, {26, N_("Starry night")},
{28, N_("Panorama assist")}, {27, N_("High sensitivity")},
{29, N_("Underwater")}, {28, N_("Panorama assist")},
{30, N_("Beach")}, {29, N_("Underwater")},
{31, N_("Aerial photo")}, {30, N_("Beach")},
{32, N_("Sunset")}, {31, N_("Aerial photo")},
{33, N_("Pet")}, {32, N_("Sunset")},
{34, N_("Intelligent ISO")}, {33, N_("Pet")},
{35, N_("Clipboard")}, {34, N_("Intelligent ISO")},
{36, N_("High speed continuous shooting")}, {35, N_("Clipboard")},
{37, N_("Intelligent auto")}, {36, N_("High speed continuous shooting")},
{39, N_("Multi-aspect")}, {37, N_("Intelligent auto")},
{41, N_("Transform")}, {39, N_("Multi-aspect")},
{42, N_("Flash Burst")}, {41, N_("Transform")},
{43, N_("Pin Hole")}, {42, N_("Flash Burst")},
{44, N_("Film Grain")}, {43, N_("Pin Hole")},
{45, N_("My Color")}, {44, N_("Film Grain")},
{46, N_("Photo Frame")}, {45, N_("My Color")},
{51, N_("HDR")}, {46, N_("Photo Frame")},
{55, N_("Handheld Night Shot")}, {51, N_("HDR")},
{57, N_("3D")}, {55, N_("Handheld Night Shot")},
{59, N_("Creative Control")}, {57, N_("3D")},
{62, N_("Panorama")}, {59, N_("Creative Control")},
{63, N_("Glass Through")}, {62, N_("Panorama")},
{64, N_("HDR")}, {63, N_("Glass Through")},
{66, N_("Digital Filter")}, {64, N_("HDR")},
{67, N_("Clear Portrait")}, {66, N_("Digital Filter")},
{68, N_("Silky Skin")}, {67, N_("Clear Portrait")},
{69, N_("Backlit Softness")}, {68, N_("Silky Skin")},
{70, N_("Clear in Backlight")}, {69, N_("Backlit Softness")},
{71, N_("Relaxing Tone")}, {70, N_("Clear in Backlight")},
{72, N_("Sweet Child's Face")}, {71, N_("Relaxing Tone")},
{73, N_("Distinct Scenery")}, {72, N_("Sweet Child's Face")},
{74, N_("Bright Blue Sky")}, {73, N_("Distinct Scenery")},
{75, N_("Romantic Sunset Glow")}, {74, N_("Bright Blue Sky")},
{76, N_("Vivid Sunset Glow")}, {75, N_("Romantic Sunset Glow")},
{77, N_("Glistening Water")}, {76, N_("Vivid Sunset Glow")},
{78, N_("Clear Nightscape")}, {77, N_("Glistening Water")},
{79, N_("Cool Night Sky")}, {78, N_("Clear Nightscape")},
{80, N_("Warm Glowing Nightscape")}, {79, N_("Cool Night Sky")},
{81, N_("Artistic Nightscape")}, {80, N_("Warm Glowing Nightscape")},
{82, N_("Glittering Illuminations")}, {81, N_("Artistic Nightscape")},
{83, N_("Clear Night Portrait")}, {82, N_("Glittering Illuminations")},
{84, N_("Soft Image of a Flower")}, {83, N_("Clear Night Portrait")},
{85, N_("Appetizing Food")}, {84, N_("Soft Image of a Flower")},
{86, N_("Cute Desert")}, {85, N_("Appetizing Food")},
{87, N_("Freeze Animal Motion")}, {86, N_("Cute Desert")},
{88, N_("Clear Sports Shot")}, {87, N_("Freeze Animal Motion")},
{89, N_("Monochrome")}, {88, N_("Clear Sports Shot")},
{90, N_("Creative Control")}}; {89, N_("Monochrome")},
{90, N_("Creative Control")},
};
//! Audio, tag 0x0020 //! Audio, tag 0x0020
constexpr TagDetails panasonicAudio[] = {{1, N_("Yes")}, {2, N_("No")}, {3, N_("Stereo")}}; constexpr TagDetails panasonicAudio[] = {
{1, N_("Yes")},
{2, N_("No")},
{3, N_("Stereo")},
};
//! ColorEffect, tag 0x0028 //! ColorEffect, tag 0x0028
constexpr TagDetails panasonicColorEffect[] = { constexpr TagDetails panasonicColorEffect[] = {
{1, N_("Off")}, {2, N_("Warm")}, {3, N_("Cool")}, {4, N_("Black and white")}, {5, N_("Sepia")}, {6, N_("Happy")}}; {1, N_("Off")}, {2, N_("Warm")}, {3, N_("Cool")}, {4, N_("Black and white")}, {5, N_("Sepia")}, {6, N_("Happy")},
};
//! BustMode, tag 0x002a //! BustMode, tag 0x002a
constexpr TagDetails panasonicBurstMode[] = {{0, N_("Off")}, {1, N_("Low/High quality")}, {2, N_("Infinite")}}; constexpr TagDetails panasonicBurstMode[] = {
{0, N_("Off")},
{1, N_("Low/High quality")},
{2, N_("Infinite")},
};
//! Contrast, tag 0x002c //! Contrast, tag 0x002c
constexpr TagDetails panasonicContrast[] = { constexpr TagDetails panasonicContrast[] = {
@ -138,26 +153,45 @@ constexpr TagDetails panasonicContrast[] = {
//! NoiseReduction, tag 0x002d //! NoiseReduction, tag 0x002d
constexpr TagDetails panasonicNoiseReduction[] = { constexpr TagDetails panasonicNoiseReduction[] = {
{0, N_("Standard")}, {1, N_("Low (-1)")}, {2, N_("High (+1)")}, {3, N_("Lowest (-2)")}, {4, N_("Highest (+2)")}}; {0, N_("Standard")}, {1, N_("Low (-1)")}, {2, N_("High (+1)")}, {3, N_("Lowest (-2)")}, {4, N_("Highest (+2)")},
};
//! SelfTimer, tag 0x002e //! SelfTimer, tag 0x002e
constexpr TagDetails panasonicSelfTimer[] = {{1, N_("Off")}, {2, "10 s"}, {3, "2 s"}, {4, "10 s / 3 pictures"}}; constexpr TagDetails panasonicSelfTimer[] = {
{1, N_("Off")},
{2, "10 s"},
{3, "2 s"},
{4, "10 s / 3 pictures"},
};
//! Rotation, tag 0x0030 //! Rotation, tag 0x0030
constexpr TagDetails panasonicRotation[] = { constexpr TagDetails panasonicRotation[] = {
{1, N_("Horizontal (normal)")}, {3, N_("Rotate 180")}, {6, N_("Rotate 90 CW")}, {8, N_("Rotate 270 CW")}}; {1, N_("Horizontal (normal)")},
{3, N_("Rotate 180")},
{6, N_("Rotate 90 CW")},
{8, N_("Rotate 270 CW")},
};
//! AFAssistLamp, tag 0x0031 //! AFAssistLamp, tag 0x0031
constexpr TagDetails panasonicAFAssistLamp[] = {{1, N_("Fired")}, constexpr TagDetails panasonicAFAssistLamp[] = {
{2, N_("Enabled but Not Used")}, {1, N_("Fired")},
{3, N_("Disabled but Required")}, {2, N_("Enabled but Not Used")},
{4, N_("Disabled and Not Required")}}; {3, N_("Disabled but Required")},
{4, N_("Disabled and Not Required")},
};
//! ColorMode, tag 0x0032 //! ColorMode, tag 0x0032
constexpr TagDetails panasonicColorMode[] = {{0, N_("Normal")}, {1, N_("Natural")}, {2, N_("Vivid")}}; constexpr TagDetails panasonicColorMode[] = {
{0, N_("Normal")},
{1, N_("Natural")},
{2, N_("Vivid")},
};
//! OpticalZoomMode, tag 0x0034 //! OpticalZoomMode, tag 0x0034
constexpr TagDetails panasonicOpticalZoomMode[] = {{1, N_("Standard")}, {2, N_("EX optics")}}; constexpr TagDetails panasonicOpticalZoomMode[] = {
{1, N_("Standard")},
{2, N_("EX optics")},
};
//! ConversionLens, tag 0x0035 //! ConversionLens, tag 0x0035
constexpr TagDetails panasonicConversionLens[] = { constexpr TagDetails panasonicConversionLens[] = {
@ -169,91 +203,141 @@ constexpr TagDetails panasonicConversionLens[] = {
}; };
//! WorldTimeLocation, tag 0x003a //! WorldTimeLocation, tag 0x003a
constexpr TagDetails panasonicWorldTimeLocation[] = {{1, N_("Home")}, {2, N_("Destination")}}; constexpr TagDetails panasonicWorldTimeLocation[] = {
{1, N_("Home")},
{2, N_("Destination")},
};
//! TextStamp, tag 0x003b, 0x003e, 000x8008 and 0x8009 //! TextStamp, tag 0x003b, 0x003e, 000x8008 and 0x8009
constexpr TagDetails panasonicTextStamp[] = {{1, N_("Off")}, {2, N_("On")}}; constexpr TagDetails panasonicTextStamp[] = {
{1, N_("Off")},
{2, N_("On")},
};
//! FilmMode, tag 0x0042 //! FilmMode, tag 0x0042
constexpr TagDetails panasonicFilmMode[] = { constexpr TagDetails panasonicFilmMode[] = {
{1, N_("Standard (color)")}, {2, N_("Dynamic (color)")}, {3, N_("Nature (color)")}, {1, N_("Standard (color)")}, {2, N_("Dynamic (color)")}, {3, N_("Nature (color)")},
{4, N_("Smooth (color)")}, {5, N_("Standard (B&W)")}, {6, N_("Dynamic (B&W)")}, {4, N_("Smooth (color)")}, {5, N_("Standard (B&W)")}, {6, N_("Dynamic (B&W)")},
{7, N_("Smooth (B&W)")}, {10, N_("Nostalgic")}, {11, N_("Vibrant")}}; {7, N_("Smooth (B&W)")}, {10, N_("Nostalgic")}, {11, N_("Vibrant")},
};
//! Bracket Settings, tag 0x0045 //! Bracket Settings, tag 0x0045
constexpr TagDetails panasonicBracketSettings[] = {{0, N_("No Bracket")}, constexpr TagDetails panasonicBracketSettings[] = {
{1, N_("3 images, Sequence 0/-/+")}, {0, N_("No Bracket")},
{2, N_("3 images, Sequence -/0/+")}, {1, N_("3 images, Sequence 0/-/+")},
{3, N_("5 images, Sequence 0/-/+")}, {2, N_("3 images, Sequence -/0/+")},
{4, N_("5 images, Sequence -/0/+")}, {3, N_("5 images, Sequence 0/-/+")},
{5, N_("7 images, Sequence 0/-/+")}, {4, N_("5 images, Sequence -/0/+")},
{6, N_("7 images, Sequence -/0/+")}}; {5, N_("7 images, Sequence 0/-/+")},
{6, N_("7 images, Sequence -/0/+")},
};
//! Flash curtain, tag 0x0048 //! Flash curtain, tag 0x0048
constexpr TagDetails panasonicFlashCurtain[] = {{0, N_("n/a")}, {1, N_("1st")}, {2, N_("2nd")}}; constexpr TagDetails panasonicFlashCurtain[] = {
{0, N_("n/a")},
{1, N_("1st")},
{2, N_("2nd")},
};
//! Long Shutter Noise Reduction, tag 0x0049 //! Long Shutter Noise Reduction, tag 0x0049
constexpr TagDetails panasonicLongShutterNoiseReduction[] = {{1, N_("Off")}, {2, N_("On")}}; constexpr TagDetails panasonicLongShutterNoiseReduction[] = {
{1, N_("Off")},
{2, N_("On")},
};
//! Intelligent exposure, tag 0x005d //! Intelligent exposure, tag 0x005d
constexpr TagDetails panasonicIntelligentExposure[] = { constexpr TagDetails panasonicIntelligentExposure[] = {
{0, N_("Off")}, {1, N_("Low")}, {2, N_("Standard")}, {3, N_("High")}}; {0, N_("Off")},
{1, N_("Low")},
{2, N_("Standard")},
{3, N_("High")},
};
//! Flash warning, tag 0x0062 //! Flash warning, tag 0x0062
constexpr TagDetails panasonicFlashWarning[] = {{0, N_("No")}, {1, N_("Yes (flash required but disabled")}}; constexpr TagDetails panasonicFlashWarning[] = {
{0, N_("No")},
{1, N_("Yes (flash required but disabled")},
};
//! Intelligent resolution, tag 0x0070 //! Intelligent resolution, tag 0x0070
constexpr TagDetails panasonicIntelligentResolution[] = { constexpr TagDetails panasonicIntelligentResolution[] = {
{0, N_("Off")}, {1, N_("Low")}, {2, N_("Standard")}, {3, N_("High")}, {4, N_("Extended")}}; {0, N_("Off")}, {1, N_("Low")}, {2, N_("Standard")}, {3, N_("High")}, {4, N_("Extended")},
};
//! Intelligent D-Range, tag 0x0079 //! Intelligent D-Range, tag 0x0079
constexpr TagDetails panasonicIntelligentDRange[] = { constexpr TagDetails panasonicIntelligentDRange[] = {
{0, N_("Off")}, {1, N_("Low")}, {2, N_("Standard")}, {3, N_("High")}}; {0, N_("Off")},
{1, N_("Low")},
{2, N_("Standard")},
{3, N_("High")},
};
//! Clear Retouch, tag 0x007c //! Clear Retouch, tag 0x007c
constexpr TagDetails panasonicClearRetouch[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails panasonicClearRetouch[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! Photo Style, tag 0x0089 //! Photo Style, tag 0x0089
constexpr TagDetails panasonicPhotoStyle[] = {{0, N_("NoAuto")}, {1, N_("Standard or Custom")}, {2, N_("Vivid")}, constexpr TagDetails panasonicPhotoStyle[] = {
{3, N_("Natural")}, {4, N_("Monochrome")}, {5, N_("Scenery")}, {0, N_("NoAuto")}, {1, N_("Standard or Custom")}, {2, N_("Vivid")}, {3, N_("Natural")}, {4, N_("Monochrome")},
{6, N_("Portrait")}}; {5, N_("Scenery")}, {6, N_("Portrait")},
};
//! Shading compensation, tag 0x008a //! Shading compensation, tag 0x008a
constexpr TagDetails panasonicShadingCompensation[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails panasonicShadingCompensation[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! Camera orientation, tag 0x008f //! Camera orientation, tag 0x008f
constexpr TagDetails panasonicCameraOrientation[] = {{0, N_("Normal")}, {1, N_("Rotate CW")}, constexpr TagDetails panasonicCameraOrientation[] = {
{2, N_("Rotate 180")}, {3, N_("Rotate CCW")}, {0, N_("Normal")}, {1, N_("Rotate CW")}, {2, N_("Rotate 180")},
{4, N_("Tilt upwards")}, {5, N_("Tilt downwards")}}; {3, N_("Rotate CCW")}, {4, N_("Tilt upwards")}, {5, N_("Tilt downwards")},
};
//! Sweep panorama direction, tag 0x0093 //! Sweep panorama direction, tag 0x0093
constexpr TagDetails panasonicSweepPanoramaDirection[] = {{0, N_("Off")}, constexpr TagDetails panasonicSweepPanoramaDirection[] = {
{1, N_("Left to Right")}, {0, N_("Off")}, {1, N_("Left to Right")}, {2, N_("Right to Left")},
{2, N_("Right to Left")}, {3, N_("Top to Bottom")}, {4, N_("Bottom to Top")},
{3, N_("Top to Bottom")}, };
{4, N_("Bottom to Top")}};
//! Timer recording, tag 0x0096 //! Timer recording, tag 0x0096
constexpr TagDetails panasonicTimerRecording[] = { constexpr TagDetails panasonicTimerRecording[] = {
{0, N_("Off")}, {1, N_("Time Lapse")}, {2, N_("Stop-Motion Animation")}}; {0, N_("Off")},
{1, N_("Time Lapse")},
{2, N_("Stop-Motion Animation")},
};
//! HDR, tag 0x009e //! HDR, tag 0x009e
constexpr TagDetails panasonicHDR[] = {{0, N_("Off")}, constexpr TagDetails panasonicHDR[] = {
{100, N_("1 EV")}, {0, N_("Off")},
{200, N_("2 EV")}, {100, N_("1 EV")},
{300, N_("3 EV")}, {200, N_("2 EV")},
{32868, N_("1 EV (Auto)")}, {300, N_("3 EV")},
{32968, N_("2 EV (Auto)")}, {32868, N_("1 EV (Auto)")},
{33068, N_("3 EV (Auto)")}}; {32968, N_("2 EV (Auto)")},
{33068, N_("3 EV (Auto)")},
};
//! Shutter Type, tag 0x009f //! Shutter Type, tag 0x009f
constexpr TagDetails panasonicShutterType[] = {{0, N_("Mechanical")}, {1, N_("Electronic")}, {2, N_("Hybrid")}}; constexpr TagDetails panasonicShutterType[] = {
{0, N_("Mechanical")},
{1, N_("Electronic")},
{2, N_("Hybrid")},
};
//! Touch AE, tag 0x00ab //! Touch AE, tag 0x00ab
constexpr TagDetails panasonicTouchAE[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails panasonicTouchAE[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! Flash Fired, tag 0x8007 //! Flash Fired, tag 0x8007
constexpr TagDetails panasonicFlashFired[] = {{1, N_("No")}, {2, N_("Yes")}}; constexpr TagDetails panasonicFlashFired[] = {
{1, N_("No")},
{2, N_("Yes")},
};
// Panasonic MakerNote Tag Info // Panasonic MakerNote Tag Info
constexpr TagInfo PanasonicMakerNote::tagInfo_[] = { constexpr TagInfo PanasonicMakerNote::tagInfo_[] = {

@ -463,9 +463,10 @@ constexpr TagDetails pentaxCities[] = {
//! ImageProcessing, combi-tag 0x0032 (4 bytes) //! ImageProcessing, combi-tag 0x0032 (4 bytes)
constexpr TagDetails pentaxImageProcessing[] = { constexpr TagDetails pentaxImageProcessing[] = {
{0x00000000, N_("Unprocessed")}, {0x00000004, N_("Digital Filter")}, {0x01000000, N_("Resized")}, {0x00000000, N_("Unprocessed")}, {0x00000004, N_("Digital Filter")}, {0x01000000, N_("Resized")},
{0x02000000, N_("Cropped")}, {0x04000000, N_("Color Filter")}, {0x06000000, N_("Digital Filter 6")}, {0x02000000, N_("Cropped")}, {0x04000000, N_("Color Filter")}, {0x06000000, N_("Digital Filter 6")},
{0x10000000, N_("Frame Synthesis?")}}; {0x10000000, N_("Frame Synthesis?")},
};
//! PictureMode, combi-tag 0x0033 (3 bytes) //! PictureMode, combi-tag 0x0033 (3 bytes)
constexpr TagDetails pentaxPictureMode[] = { constexpr TagDetails pentaxPictureMode[] = {

@ -283,7 +283,8 @@ const Loader::LoaderList Loader::loaderList_[] = {
{nullptr, createLoaderExifJpeg, 2}, {nullptr, createLoaderExifJpeg, 3}, {nullptr, createLoaderExifJpeg, 2}, {nullptr, createLoaderExifJpeg, 3},
{nullptr, createLoaderExifJpeg, 4}, {nullptr, createLoaderExifJpeg, 5}, {nullptr, createLoaderExifJpeg, 4}, {nullptr, createLoaderExifJpeg, 5},
{nullptr, createLoaderExifJpeg, 6}, {"image/x-canon-cr2", createLoaderExifJpeg, 7}, {nullptr, createLoaderExifJpeg, 6}, {"image/x-canon-cr2", createLoaderExifJpeg, 7},
{nullptr, createLoaderExifJpeg, 8}, {nullptr, createLoaderXmpJpeg, 0}}; {nullptr, createLoaderExifJpeg, 8}, {nullptr, createLoaderXmpJpeg, 0},
};
const LoaderExifJpeg::Param LoaderExifJpeg::param_[] = { const LoaderExifJpeg::Param LoaderExifJpeg::param_[] = {
{"Exif.Image.JPEGInterchangeFormat", "Exif.Image.JPEGInterchangeFormatLength", nullptr}, // 0 {"Exif.Image.JPEGInterchangeFormat", "Exif.Image.JPEGInterchangeFormatLength", nullptr}, // 0

@ -3969,7 +3969,8 @@ const XmpPropertyInfo xmpVideoInfo[] = {
{"Year", N_("Year"), "Integer", xmpText, xmpExternal, N_("Year in which the video was made.")}, {"Year", N_("Year"), "Integer", xmpText, xmpExternal, N_("Year in which the video was made.")},
{"YResolution", N_("Y Resolution"), "Rational", xmpText, xmpInternal, {"YResolution", N_("Y Resolution"), "Rational", xmpText, xmpInternal,
N_("Vertical resolution in pixels per unit.")}, N_("Vertical resolution in pixels per unit.")},
{nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr}}; {nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr},
};
const XmpPropertyInfo xmpAudioInfo[] = { const XmpPropertyInfo xmpAudioInfo[] = {
{"AvgBytePerSec", N_("Average Bytes Per Second"), "Integer", xmpText, xmpExternal, {"AvgBytePerSec", N_("Average Bytes Per Second"), "Integer", xmpText, xmpExternal,
@ -4821,7 +4822,8 @@ const XmpPropertyInfo xmpDwCInfo[] = {
{"measurementRemarks", N_("Measurement Remarks"), "Text", xmpText, xmpExternal, {"measurementRemarks", N_("Measurement Remarks"), "Text", xmpText, xmpExternal,
N_("Comments or notes accompanying the MeasurementOrFact.")}, N_("Comments or notes accompanying the MeasurementOrFact.")},
// End of list marker // End of list marker
{nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr}}; {nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr},
};
const XmpPropertyInfo xmpAcdseeInfo[] = { const XmpPropertyInfo xmpAcdseeInfo[] = {
{"caption", N_("Caption"), "Text", xmpText, xmpExternal, N_("A brief description of the file")}, {"caption", N_("Caption"), "Text", xmpText, xmpExternal, N_("A brief description of the file")},
@ -4834,7 +4836,8 @@ const XmpPropertyInfo xmpAcdseeInfo[] = {
{"categories", N_("Categories"), "Text", xmpText, xmpExternal, N_("Catalog of hierarchical keywords and groups")}, {"categories", N_("Categories"), "Text", xmpText, xmpExternal, N_("Catalog of hierarchical keywords and groups")},
// End of list marker // End of list marker
{nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr}}; {nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr},
};
const XmpPrintInfo xmpPrintInfo[] = { const XmpPrintInfo xmpPrintInfo[] = {
{"Xmp.crs.CropUnits", EXV_PRINT_TAG(crsCropUnits)}, {"Xmp.crs.CropUnits", EXV_PRINT_TAG(crsCropUnits)},
@ -4902,7 +4905,8 @@ const XmpPrintInfo xmpPrintInfo[] = {
{"Xmp.plus.MinorModelAgeDisclosure", EXV_PRINT_VOCABULARY(plusMinorModelAgeDisclosure)}, {"Xmp.plus.MinorModelAgeDisclosure", EXV_PRINT_VOCABULARY(plusMinorModelAgeDisclosure)},
{"Xmp.plus.ModelReleaseStatus", EXV_PRINT_VOCABULARY(plusModelReleaseStatus)}, {"Xmp.plus.ModelReleaseStatus", EXV_PRINT_VOCABULARY(plusModelReleaseStatus)},
{"Xmp.plus.PropertyReleaseStatus", EXV_PRINT_VOCABULARY(plusPropertyReleaseStatus)}, {"Xmp.plus.PropertyReleaseStatus", EXV_PRINT_VOCABULARY(plusPropertyReleaseStatus)},
{"Xmp.plus.Reuse", EXV_PRINT_VOCABULARY(plusReuse)}}; {"Xmp.plus.Reuse", EXV_PRINT_VOCABULARY(plusReuse)},
};
bool XmpNsInfo::operator==(const XmpNsInfo::Ns& ns) const { bool XmpNsInfo::operator==(const XmpNsInfo::Ns& ns) const {
return ns_ == ns.ns_; return ns_ == ns.ns_;

@ -16,90 +16,92 @@
namespace Exiv2::Internal { namespace Exiv2::Internal {
const std::map<std::string, std::string> infoTags = {{"AGES", "Xmp.video.Rated"}, const std::map<std::string, std::string> infoTags = {
{"CMNT", "Xmp.video.Comment"}, {"AGES", "Xmp.video.Rated"},
{"CODE", "Xmp.video.EncodedBy"}, {"CMNT", "Xmp.video.Comment"},
{"COMM", "Xmp.video.Comment"}, {"CODE", "Xmp.video.EncodedBy"},
{"DIRC", "Xmp.video.Director"}, {"COMM", "Xmp.video.Comment"},
{"DISP", "Xmp.audio.SchemeTitle"}, {"DIRC", "Xmp.video.Director"},
{"DTIM", "Xmp.video.DateTimeOriginal"}, {"DISP", "Xmp.audio.SchemeTitle"},
{"GENR", "Xmp.video.Genre"}, {"DTIM", "Xmp.video.DateTimeOriginal"},
{"IARL", "Xmp.video.ArchivalLocation"}, {"GENR", "Xmp.video.Genre"},
{"IART", "Xmp.video.Artist"}, {"IARL", "Xmp.video.ArchivalLocation"},
{"IAS1", "Xmp.video.Edit1"}, {"IART", "Xmp.video.Artist"},
{"IAS2", "Xmp.video.Edit2"}, {"IAS1", "Xmp.video.Edit1"},
{"IAS3", "Xmp.video.Edit3"}, {"IAS2", "Xmp.video.Edit2"},
{"IAS4", "Xmp.video.Edit4"}, {"IAS3", "Xmp.video.Edit3"},
{"IAS5", "Xmp.video.Edit5"}, {"IAS4", "Xmp.video.Edit4"},
{"IAS6", "Xmp.video.Edit6"}, {"IAS5", "Xmp.video.Edit5"},
{"IAS7", "Xmp.video.Edit7"}, {"IAS6", "Xmp.video.Edit6"},
{"IAS8", "Xmp.video.Edit8"}, {"IAS7", "Xmp.video.Edit7"},
{"IAS9", "Xmp.video.Edit9"}, {"IAS8", "Xmp.video.Edit8"},
{"IBSU", "Xmp.video.BaseURL"}, {"IAS9", "Xmp.video.Edit9"},
{"ICAS", "Xmp.audio.DefaultStream"}, {"IBSU", "Xmp.video.BaseURL"},
{"ICDS", "Xmp.video.CostumeDesigner"}, {"ICAS", "Xmp.audio.DefaultStream"},
{"ICMS", "Xmp.video.Commissioned"}, {"ICDS", "Xmp.video.CostumeDesigner"},
{"ICMT", "Xmp.video.Comment"}, {"ICMS", "Xmp.video.Commissioned"},
{"ICNM", "Xmp.video.Cinematographer"}, {"ICMT", "Xmp.video.Comment"},
{"ICNT", "Xmp.video.Country"}, {"ICNM", "Xmp.video.Cinematographer"},
{"ICOP", "Xmp.video.Copyright"}, {"ICNT", "Xmp.video.Country"},
{"ICRD", "Xmp.video.DateTimeDigitized"}, {"ICOP", "Xmp.video.Copyright"},
{"ICRP", "Xmp.video.Cropped"}, {"ICRD", "Xmp.video.DateTimeDigitized"},
{"IDIM", "Xmp.video.Dimensions"}, {"ICRP", "Xmp.video.Cropped"},
{"IDPI", "Xmp.video.DotsPerInch"}, {"IDIM", "Xmp.video.Dimensions"},
{"IDST", "Xmp.video.DistributedBy"}, {"IDPI", "Xmp.video.DotsPerInch"},
{"IEDT", "Xmp.video.EditedBy"}, {"IDST", "Xmp.video.DistributedBy"},
{"IENC", "Xmp.video.EncodedBy"}, {"IEDT", "Xmp.video.EditedBy"},
{"IENG", "Xmp.video.Engineer"}, {"IENC", "Xmp.video.EncodedBy"},
{"IGNR", "Xmp.video.Genre"}, {"IENG", "Xmp.video.Engineer"},
{"IKEY", "Xmp.video.PerformerKeywords"}, {"IGNR", "Xmp.video.Genre"},
{"ILGT", "Xmp.video.Lightness"}, {"IKEY", "Xmp.video.PerformerKeywords"},
{"ILGU", "Xmp.video.LogoURL"}, {"ILGT", "Xmp.video.Lightness"},
{"ILIU", "Xmp.video.LogoIconURL"}, {"ILGU", "Xmp.video.LogoURL"},
{"ILNG", "Xmp.video.Language"}, {"ILIU", "Xmp.video.LogoIconURL"},
{"IMBI", "Xmp.video.InfoBannerImage"}, {"ILNG", "Xmp.video.Language"},
{"IMBU", "Xmp.video.InfoBannerURL"}, {"IMBI", "Xmp.video.InfoBannerImage"},
{"IMED", "Xmp.video.Medium"}, {"IMBU", "Xmp.video.InfoBannerURL"},
{"IMIT", "Xmp.video.InfoText"}, {"IMED", "Xmp.video.Medium"},
{"IMIU", "Xmp.video.InfoURL"}, {"IMIT", "Xmp.video.InfoText"},
{"IMUS", "Xmp.video.MusicBy"}, {"IMIU", "Xmp.video.InfoURL"},
{"INAM", "Xmp.video.Title"}, {"IMUS", "Xmp.video.MusicBy"},
{"IPDS", "Xmp.video.ProductionDesigner"}, {"INAM", "Xmp.video.Title"},
{"IPLT", "Xmp.video.NumOfColors"}, {"IPDS", "Xmp.video.ProductionDesigner"},
{"IPRD", "Xmp.video.Product"}, {"IPLT", "Xmp.video.NumOfColors"},
{"IPRO", "Xmp.video.ProducedBy"}, {"IPRD", "Xmp.video.Product"},
{"IRIP", "Xmp.video.RippedBy"}, {"IPRO", "Xmp.video.ProducedBy"},
{"IRTD", "Xmp.video.Rating"}, {"IRIP", "Xmp.video.RippedBy"},
{"ISBJ", "Xmp.video.Subject"}, {"IRTD", "Xmp.video.Rating"},
{"ISFT", "Xmp.video.Software"}, {"ISBJ", "Xmp.video.Subject"},
{"ISGN", "Xmp.video.SecondaryGenre"}, {"ISFT", "Xmp.video.Software"},
{"ISHP", "Xmp.video.Sharpness"}, {"ISGN", "Xmp.video.SecondaryGenre"},
{"ISRC", "Xmp.video.Source"}, {"ISHP", "Xmp.video.Sharpness"},
{"ISRF", "Xmp.video.SourceForm"}, {"ISRC", "Xmp.video.Source"},
{"ISTD", "Xmp.video.ProductionStudio"}, {"ISRF", "Xmp.video.SourceForm"},
{"ISTR", "Xmp.video.Starring"}, {"ISTD", "Xmp.video.ProductionStudio"},
{"ITCH", "Xmp.video.Technician"}, {"ISTR", "Xmp.video.Starring"},
{"IWMU", "Xmp.video.WatermarkURL"}, {"ITCH", "Xmp.video.Technician"},
{"IWRI", "Xmp.video.WrittenBy"}, {"IWMU", "Xmp.video.WatermarkURL"},
{"LANG", "Xmp.video.Language"}, {"IWRI", "Xmp.video.WrittenBy"},
{"LOCA", "Xmp.video.LocationInfo"}, {"LANG", "Xmp.video.Language"},
{"PRT1", "Xmp.video.Part"}, {"LOCA", "Xmp.video.LocationInfo"},
{"PRT2", "Xmp.video.NumOfParts"}, {"PRT1", "Xmp.video.Part"},
{"RATE", "Xmp.video.Rate"}, {"PRT2", "Xmp.video.NumOfParts"},
{"STAR", "Xmp.video.Starring"}, {"RATE", "Xmp.video.Rate"},
{"STAT", "Xmp.video.Statistics"}, {"STAR", "Xmp.video.Starring"},
{"TAPE", "Xmp.video.TapeName"}, {"STAT", "Xmp.video.Statistics"},
{"TCDO", "Xmp.video.EndTimecode"}, {"TAPE", "Xmp.video.TapeName"},
{"TCOD", "Xmp.video.StartTimecode"}, {"TCDO", "Xmp.video.EndTimecode"},
{"TITL", "Xmp.video.Title"}, {"TCOD", "Xmp.video.StartTimecode"},
{"TLEN", "Xmp.video.Length"}, {"TITL", "Xmp.video.Title"},
{"TORG", "Xmp.video.Organization"}, {"TLEN", "Xmp.video.Length"},
{"TRCK", "Xmp.video.TrackNumber"}, {"TORG", "Xmp.video.Organization"},
{"TURL", "Xmp.video.URL"}, {"TRCK", "Xmp.video.TrackNumber"},
{"TVER", "Xmp.video.SoftwareVersion"}, {"TURL", "Xmp.video.URL"},
{"VMAJ", "Xmp.video.VegasVersionMajor"}, {"TVER", "Xmp.video.SoftwareVersion"},
{"VMIN", "Xmp.video.VegasVersionMinor"}, {"VMAJ", "Xmp.video.VegasVersionMajor"},
{"YEAR", "Xmp.video.Year"}}; {"VMIN", "Xmp.video.VegasVersionMinor"},
{"YEAR", "Xmp.video.Year"},
};
const std::map<uint16_t, std::string> audioEncodingValues = { const std::map<uint16_t, std::string> audioEncodingValues = {
{0x1, "Microsoft PCM"}, {0x1, "Microsoft PCM"},
@ -344,7 +346,8 @@ const std::map<uint16_t, std::string> audioEncodingValues = {
{0xe708, "Unknown -"}, {0xe708, "Unknown -"},
{0xf1ac, "Free Lossless Audio Codec FLAC"}, {0xf1ac, "Free Lossless Audio Codec FLAC"},
{0xfffe, "Extensible"}, {0xfffe, "Extensible"},
{0xffff, "Development"}}; {0xffff, "Development"},
};
} // namespace Exiv2::Internal } // namespace Exiv2::Internal
// ***************************************************************************** // *****************************************************************************

@ -15,30 +15,38 @@
// class member definitions // class member definitions
namespace Exiv2::Internal { namespace Exiv2::Internal {
//! LensType, tag 0xa003 //! LensType, tag 0xa003
constexpr TagDetails samsung2LensType[] = {{0, N_("Built-in")}, constexpr TagDetails samsung2LensType[] = {
{1, "Samsung NX 30mm F2 Pancake"}, {0, N_("Built-in")},
{2, "Samsung NX 18-55mm F3.5-5.6 OIS"}, {1, "Samsung NX 30mm F2 Pancake"},
{3, "Samsung NX 50-200mm F4-5.6 ED OIS"}, {2, "Samsung NX 18-55mm F3.5-5.6 OIS"},
{4, "Samsung NX 20-50mm F3.5-5.6 ED"}, {3, "Samsung NX 50-200mm F4-5.6 ED OIS"},
{5, "Samsung NX 20mm F2.8 Pancake"}, {4, "Samsung NX 20-50mm F3.5-5.6 ED"},
{6, "Samsung NX 18-200mm F3.5-6.3 ED OIS"}, {5, "Samsung NX 20mm F2.8 Pancake"},
{7, "Samsung NX 60mm F2.8 Macro ED OIS SSA"}, {6, "Samsung NX 18-200mm F3.5-6.3 ED OIS"},
{8, "Samsung NX 16mm F2.4 Pancake"}, {7, "Samsung NX 60mm F2.8 Macro ED OIS SSA"},
{9, "Samsung NX 85mm F1.4 ED SSA"}, {8, "Samsung NX 16mm F2.4 Pancake"},
{10, "Samsung NX 45mm F1.8"}, {9, "Samsung NX 85mm F1.4 ED SSA"},
{11, "Samsung NX 45mm F1.8 2D/3D"}, {10, "Samsung NX 45mm F1.8"},
{12, "Samsung NX 12-24mm F4-5.6 ED"}, {11, "Samsung NX 45mm F1.8 2D/3D"},
{13, "Samsung NX 16-50mm F2-2.8 S ED OIS"}, {12, "Samsung NX 12-24mm F4-5.6 ED"},
{14, "Samsung NX 10mm F3.5 Fisheye"}, {13, "Samsung NX 16-50mm F2-2.8 S ED OIS"},
{15, "Samsung NX 16-50mm F3.5-5.6 Power Zoom ED OIS"}, {14, "Samsung NX 10mm F3.5 Fisheye"},
{20, "Samsung NX 50-150mm F2.8 S ED OIS"}, {15, "Samsung NX 16-50mm F3.5-5.6 Power Zoom ED OIS"},
{21, "Samsung NX 300mm F2.8 ED OIS"}}; {20, "Samsung NX 50-150mm F2.8 S ED OIS"},
{21, "Samsung NX 300mm F2.8 ED OIS"},
};
//! ColorSpace, tag 0xa011 //! ColorSpace, tag 0xa011
constexpr TagDetails samsung2ColorSpace[] = {{0, N_("sRGB")}, {1, N_("Adobe RGB")}}; constexpr TagDetails samsung2ColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
};
//! SmartRange, tag 0xa012 //! SmartRange, tag 0xa012
constexpr TagDetails samsung2SmartRange[] = {{0, N_("Off")}, {1, N_("On")}}; constexpr TagDetails samsung2SmartRange[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! Print the camera temperature //! Print the camera temperature
static std::ostream& printCameraTemperature(std::ostream& os, const Value& value, const ExifData*) { static std::ostream& printCameraTemperature(std::ostream& os, const Value& value, const ExifData*) {
@ -138,10 +146,11 @@ const TagInfo* Samsung2MakerNote::tagList() {
} }
//! PictureWizard Mode //! PictureWizard Mode
constexpr TagDetails samsungPwMode[] = {{0, N_("Standard")}, {1, N_("Vivid")}, {2, N_("Portrait")}, constexpr TagDetails samsungPwMode[] = {
{3, N_("Landscape")}, {4, N_("Forest")}, {5, N_("Retro")}, {0, N_("Standard")}, {1, N_("Vivid")}, {2, N_("Portrait")}, {3, N_("Landscape")},
{6, N_("Cool")}, {7, N_("Calm")}, {8, N_("Classic")}, {4, N_("Forest")}, {5, N_("Retro")}, {6, N_("Cool")}, {7, N_("Calm")},
{9, N_("Custom1")}, {10, N_("Custom2")}, {11, N_("Custom3")}}; {8, N_("Classic")}, {9, N_("Custom1")}, {10, N_("Custom2")}, {11, N_("Custom3")},
};
//! Print the PictureWizard Color tag value //! Print the PictureWizard Color tag value
static std::ostream& printPwColor(std::ostream& os, const Value& value, const ExifData*) { static std::ostream& printPwColor(std::ostream& os, const Value& value, const ExifData*) {

File diff suppressed because it is too large Load Diff

@ -166,10 +166,15 @@ constexpr GroupInfo groupInfo[] = {
{IfdId::sonyMisc3cId, "Makernote", "SonyMisc3c", SonyMakerNote::tagListSonyMisc3c}, {IfdId::sonyMisc3cId, "Makernote", "SonyMisc3c", SonyMakerNote::tagListSonyMisc3c},
{IfdId::sonySInfo1Id, "Makernote", "SonySInfo1", SonyMakerNote::tagListSonySInfo1}, {IfdId::sonySInfo1Id, "Makernote", "SonySInfo1", SonyMakerNote::tagListSonySInfo1},
{IfdId::sony2010eId, "Makernote", "Sony2010e", SonyMakerNote::tagList2010e}, {IfdId::sony2010eId, "Makernote", "Sony2010e", SonyMakerNote::tagList2010e},
{IfdId::lastId, "(Last IFD info)", "(Last IFD item)", nullptr}}; {IfdId::lastId, "(Last IFD info)", "(Last IFD item)", nullptr},
};
//! Units for measuring X and Y resolution, tags 0x0128, 0xa210 //! Units for measuring X and Y resolution, tags 0x0128, 0xa210
constexpr TagDetails exifUnit[] = {{1, N_("none")}, {2, N_("inch")}, {3, N_("cm")}}; constexpr TagDetails exifUnit[] = {
{1, N_("none")},
{2, N_("inch")},
{3, N_("cm")},
};
//! Orientation, tag 0x0112 //! Orientation, tag 0x0112
constexpr TagDetails exifOrientation[] = { constexpr TagDetails exifOrientation[] = {
@ -179,7 +184,10 @@ constexpr TagDetails exifOrientation[] = {
}; };
//! PlanarConfiguration, tag 0x011c //! PlanarConfiguration, tag 0x011c
constexpr TagDetails exifPlanarConfiguration[] = {{1, N_("Chunky")}, {2, N_("Planar")}}; constexpr TagDetails exifPlanarConfiguration[] = {
{1, N_("Chunky")},
{2, N_("Planar")},
};
//! Predictor, tag 0x013d //! Predictor, tag 0x013d
constexpr TagDetails exifPredictor[] = { constexpr TagDetails exifPredictor[] = {
@ -193,7 +201,10 @@ constexpr TagDetails exifPredictor[] = {
}; };
//! InkSet, tag 0x014c //! InkSet, tag 0x014c
constexpr TagDetails exifInkSet[] = {{1, N_("CMYK")}, {2, N_("not CMYK")}}; constexpr TagDetails exifInkSet[] = {
{1, N_("CMYK")},
{2, N_("not CMYK")},
};
//! NewSubfileType, TIFF tag 0x00fe - this is actually a bitmask //! NewSubfileType, TIFF tag 0x00fe - this is actually a bitmask
constexpr TagDetails exifNewSubfileType[] = { constexpr TagDetails exifNewSubfileType[] = {
@ -213,44 +224,48 @@ constexpr TagDetails exifNewSubfileType[] = {
}; };
//! SubfileType, TIFF tag 0x00ff //! SubfileType, TIFF tag 0x00ff
constexpr TagDetails exifSubfileType[] = {{1, N_("Full-resolution image data")}, constexpr TagDetails exifSubfileType[] = {
{2, N_("Reduced-resolution image data")}, {1, N_("Full-resolution image data")},
{3, N_("A single page of a multi-page image")}}; {2, N_("Reduced-resolution image data")},
{3, N_("A single page of a multi-page image")},
};
//! Compression, tag 0x0103 //! Compression, tag 0x0103
constexpr TagDetails exifCompression[] = {{1, N_("Uncompressed")}, constexpr TagDetails exifCompression[] = {
{2, N_("CCITT RLE")}, {1, N_("Uncompressed")},
{3, N_("T4/Group 3 Fax")}, {2, N_("CCITT RLE")},
{4, N_("T6/Group 4 Fax")}, {3, N_("T4/Group 3 Fax")},
{5, N_("LZW")}, {4, N_("T6/Group 4 Fax")},
{6, N_("JPEG (old-style)")}, {5, N_("LZW")},
{7, N_("JPEG")}, {6, N_("JPEG (old-style)")},
{8, N_("Adobe Deflate")}, {7, N_("JPEG")},
{9, N_("JBIG B&W")}, {8, N_("Adobe Deflate")},
{10, N_("JBIG Color")}, {9, N_("JBIG B&W")},
{32766, N_("Next 2-bits RLE")}, {10, N_("JBIG Color")},
{32767, N_("Sony ARW Compressed")}, {32766, N_("Next 2-bits RLE")},
{32769, N_("Epson ERF Compressed")}, {32767, N_("Sony ARW Compressed")},
{32770, N_("Samsung SRW Compressed")}, {32769, N_("Epson ERF Compressed")},
{32771, N_("CCITT RLE 1-word")}, {32770, N_("Samsung SRW Compressed")},
{32773, N_("PackBits (Macintosh RLE)")}, {32771, N_("CCITT RLE 1-word")},
{32809, N_("Thunderscan RLE")}, {32773, N_("PackBits (Macintosh RLE)")},
{32895, N_("IT8 CT Padding")}, {32809, N_("Thunderscan RLE")},
{32896, N_("IT8 Linework RLE")}, {32895, N_("IT8 CT Padding")},
{32897, N_("IT8 Monochrome Picture")}, {32896, N_("IT8 Linework RLE")},
{32898, N_("IT8 Binary Lineart")}, {32897, N_("IT8 Monochrome Picture")},
{32908, N_("Pixar Film (10-bits LZW)")}, {32898, N_("IT8 Binary Lineart")},
{32909, N_("Pixar Log (11-bits ZIP)")}, {32908, N_("Pixar Film (10-bits LZW)")},
{32946, N_("Pixar Deflate")}, {32909, N_("Pixar Log (11-bits ZIP)")},
{32947, N_("Kodak DCS Encoding")}, {32946, N_("Pixar Deflate")},
{34661, N_("ISO JBIG")}, {32947, N_("Kodak DCS Encoding")},
{34676, N_("SGI Log Luminance RLE")}, {34661, N_("ISO JBIG")},
{34677, N_("SGI Log 24-bits packed")}, {34676, N_("SGI Log Luminance RLE")},
{34712, N_("Leadtools JPEG 2000")}, {34677, N_("SGI Log 24-bits packed")},
{34713, N_("Nikon NEF Compressed")}, {34712, N_("Leadtools JPEG 2000")},
{34892, N_("JPEG (lossy)")}, // DNG 1.4 {34713, N_("Nikon NEF Compressed")},
{65000, N_("Kodak DCR Compressed")}, {34892, N_("JPEG (lossy)")}, // DNG 1.4
{65535, N_("Pentax PEF Compressed")}}; {65000, N_("Kodak DCR Compressed")},
{65535, N_("Pentax PEF Compressed")},
};
//! PhotometricInterpretation, tag 0x0106 //! PhotometricInterpretation, tag 0x0106
constexpr TagDetails exifPhotometricInterpretation[] = { constexpr TagDetails exifPhotometricInterpretation[] = {
@ -268,93 +283,103 @@ constexpr TagDetails exifPhotometricInterpretation[] = {
{32844, N_("Pixar LogL")}, {32844, N_("Pixar LogL")},
{32845, N_("Pixar LogLuv")}, {32845, N_("Pixar LogLuv")},
{34892, N_("Linear Raw")}, {34892, N_("Linear Raw")},
{51177, N_("Depth Map")}, // DNG 1.5 {51177, N_("Depth Map")}, // DNG 1.5
{52527, N_("Semantic Mask")} // DNG 1.6 {52527, N_("Semantic Mask")}, // DNG 1.6
}; };
//! Thresholding, tag 0x0107 //! Thresholding, tag 0x0107
constexpr TagDetails exifThresholding[] = {{1, N_("No dithering or halftoning")}, constexpr TagDetails exifThresholding[] = {
{2, N_("Ordered dither or halftone technique")}, {1, N_("No dithering or halftoning")},
{3, N_("Randomized process")}}; {2, N_("Ordered dither or halftone technique")},
{3, N_("Randomized process")},
};
//! SampleFormat, tag 0x0153 //! SampleFormat, tag 0x0153
constexpr TagDetails exifSampleFormat[] = { constexpr TagDetails exifSampleFormat[] = {
{1, N_("Unsigned integer data")}, {1, N_("Unsigned integer data")}, {2, N_("Two's complement signed integer data")},
{2, N_("Two's complement signed integer data")}, {3, N_("IEEE floating point data")}, {4, N_("Undefined data format")},
{3, N_("IEEE floating point data")}, {4, N_("Undefined data format")}, // To silence compiler warning
{4, N_("Undefined data format")},
{4, N_("Undefined data format")} // To silence compiler warning
}; };
//! Indexed, tag 0x015a //! Indexed, tag 0x015a
constexpr TagDetails exifIndexed[] = {{0, N_("Not indexed")}, {1, N_("Indexed")}}; constexpr TagDetails exifIndexed[] = {
{0, N_("Not indexed")},
{1, N_("Indexed")},
};
//! exifJpegLosslessPredictor, tag 0x0205 //! exifJpegLosslessPredictor, tag 0x0205
constexpr TagDetails exifJpegLosslessPredictor[] = {{1, N_("A")}, {2, N_("B")}, {3, N_("C")}, constexpr TagDetails exifJpegLosslessPredictor[] = {
{4, N_("A+B-C")}, {5, N_("A+((B-C)/2)")}, {6, N_("B+((A-C)/2)")}, {1, N_("A")}, {2, N_("B")}, {3, N_("C")}, {4, N_("A+B-C")},
{7, N_("(A+B)/2")}}; {5, N_("A+((B-C)/2)")}, {6, N_("B+((A-C)/2)")}, {7, N_("(A+B)/2")},
};
//! LightSource, tag 0x9208 //! LightSource, tag 0x9208
constexpr TagDetails exifLightSource[] = {{0, N_("Unknown")}, constexpr TagDetails exifLightSource[] = {
{1, N_("Daylight")}, {0, N_("Unknown")},
{2, N_("Fluorescent")}, {1, N_("Daylight")},
{3, N_("Tungsten (incandescent light)")}, {2, N_("Fluorescent")},
{4, N_("Flash")}, {3, N_("Tungsten (incandescent light)")},
{9, N_("Fine weather")}, {4, N_("Flash")},
{10, N_("Cloudy weather")}, {9, N_("Fine weather")},
{11, N_("Shade")}, {10, N_("Cloudy weather")},
{12, N_("Daylight fluorescent (D 5700 - 7100K)")}, {11, N_("Shade")},
{13, N_("Day white fluorescent (N 4600 - 5400K)")}, {12, N_("Daylight fluorescent (D 5700 - 7100K)")},
{14, N_("Cool white fluorescent (W 3900 - 4500K)")}, {13, N_("Day white fluorescent (N 4600 - 5400K)")},
{15, N_("White fluorescent (WW 3200 - 3700K)")}, {14, N_("Cool white fluorescent (W 3900 - 4500K)")},
{17, N_("Standard light A")}, {15, N_("White fluorescent (WW 3200 - 3700K)")},
{18, N_("Standard light B")}, {17, N_("Standard light A")},
{19, N_("Standard light C")}, {18, N_("Standard light B")},
{20, N_("D55")}, {19, N_("Standard light C")},
{21, N_("D65")}, {20, N_("D55")},
{22, N_("D75")}, {21, N_("D65")},
{23, N_("D50")}, {22, N_("D75")},
{24, N_("ISO studio tungsten")}, {23, N_("D50")},
{255, N_("Other light source")}}; {24, N_("ISO studio tungsten")},
{255, N_("Other light source")},
};
//! Flash, Exif tag 0x9209 //! Flash, Exif tag 0x9209
constexpr TagDetails exifFlash[] = {{0x00, N_("No flash")}, constexpr TagDetails exifFlash[] = {
{0x01, N_("Fired")}, {0x00, N_("No flash")},
{0x05, N_("Fired, return light not detected")}, {0x01, N_("Fired")},
{0x07, N_("Fired, return light detected")}, {0x05, N_("Fired, return light not detected")},
{0x08, N_("Yes, did not fire")}, {0x07, N_("Fired, return light detected")},
{0x09, N_("Yes, compulsory")}, {0x08, N_("Yes, did not fire")},
{0x0d, N_("Yes, compulsory, return light not detected")}, {0x09, N_("Yes, compulsory")},
{0x0f, N_("Yes, compulsory, return light detected")}, {0x0d, N_("Yes, compulsory, return light not detected")},
{0x10, N_("No, compulsory")}, {0x0f, N_("Yes, compulsory, return light detected")},
{0x14, N_("No, did not fire, return light not detected")}, {0x10, N_("No, compulsory")},
{0x18, N_("No, auto")}, {0x14, N_("No, did not fire, return light not detected")},
{0x19, N_("Yes, auto")}, {0x18, N_("No, auto")},
{0x1d, N_("Yes, auto, return light not detected")}, {0x19, N_("Yes, auto")},
{0x1f, N_("Yes, auto, return light detected")}, {0x1d, N_("Yes, auto, return light not detected")},
{0x20, N_("No flash function")}, {0x1f, N_("Yes, auto, return light detected")},
{0x20, N_("No, no flash function")}, {0x20, N_("No flash function")},
{0x41, N_("Yes, red-eye reduction")}, {0x20, N_("No, no flash function")},
{0x45, N_("Yes, red-eye reduction, return light not detected")}, {0x41, N_("Yes, red-eye reduction")},
{0x47, N_("Yes, red-eye reduction, return light detected")}, {0x45, N_("Yes, red-eye reduction, return light not detected")},
{0x49, N_("Yes, compulsory, red-eye reduction")}, {0x47, N_("Yes, red-eye reduction, return light detected")},
{0x4d, N_("Yes, compulsory, red-eye reduction, return light not detected")}, {0x49, N_("Yes, compulsory, red-eye reduction")},
{0x4f, N_("Yes, compulsory, red-eye reduction, return light detected")}, {0x4d, N_("Yes, compulsory, red-eye reduction, return light not detected")},
{0x50, N_("No, red-eye reduction")}, {0x4f, N_("Yes, compulsory, red-eye reduction, return light detected")},
{0x58, N_("No, auto, red-eye reduction")}, {0x50, N_("No, red-eye reduction")},
{0x59, N_("Yes, auto, red-eye reduction")}, {0x58, N_("No, auto, red-eye reduction")},
{0x5d, N_("Yes, auto, red-eye reduction, return light not detected")}, {0x59, N_("Yes, auto, red-eye reduction")},
{0x5f, N_("Yes, auto, red-eye reduction, return light detected")}}; {0x5d, N_("Yes, auto, red-eye reduction, return light not detected")},
{0x5f, N_("Yes, auto, red-eye reduction, return light detected")},
};
//! FocalPlaneResolutionUnit, TIFF/EP tag 0x9210 //! FocalPlaneResolutionUnit, TIFF/EP tag 0x9210
constexpr TagDetails tiffFocalPlaneResolutionUnit[] = { constexpr TagDetails tiffFocalPlaneResolutionUnit[] = {
{1, N_("inch")}, {2, N_("meter")}, {3, N_("centimeter")}, {4, N_("millimeter")}, {5, N_("micrometer")}}; {1, N_("inch")}, {2, N_("meter")}, {3, N_("centimeter")}, {4, N_("millimeter")}, {5, N_("micrometer")},
};
//! SensingMethod, TIFF/EP tag 0x9217 //! SensingMethod, TIFF/EP tag 0x9217
constexpr TagDetails tiffSensingMethod[] = { constexpr TagDetails tiffSensingMethod[] = {
{0, N_("Undefined")}, {1, N_("Monochrome area")}, {2, N_("One-chip color area")}, {0, N_("Undefined")}, {1, N_("Monochrome area")}, {2, N_("One-chip color area")},
{3, N_("Two-chip color area")}, {4, N_("Three-chip color area")}, {5, N_("Color sequential area")}, {3, N_("Two-chip color area")}, {4, N_("Three-chip color area")}, {5, N_("Color sequential area")},
{6, N_("Monochrome linear")}, {7, N_("Trilinear sensor")}, {8, N_("Color sequential linear")}}; {6, N_("Monochrome linear")}, {7, N_("Trilinear sensor")}, {8, N_("Color sequential linear")},
};
//! CFALayout, DNG tag 0xc617 //! CFALayout, DNG tag 0xc617
constexpr TagDetails dngCfaLayout[] = { constexpr TagDetails dngCfaLayout[] = {
@ -363,41 +388,68 @@ constexpr TagDetails dngCfaLayout[] = {
{3, N_("Staggered layout B: even columns are offset up by 1/2 row")}, {3, N_("Staggered layout B: even columns are offset up by 1/2 row")},
{4, N_("Staggered layout C: even rows are offset right by 1/2 column")}, {4, N_("Staggered layout C: even rows are offset right by 1/2 column")},
{5, N_("Staggered layout D: even rows are offset left by 1/2 column")}, {5, N_("Staggered layout D: even rows are offset left by 1/2 column")},
{6, N_("Staggered layout E: even rows are offset up by 1/2, even columns left by 1/2")}, // DNG 1.3 {6, N_("Staggered layout E: even rows are offset up by 1/2, even columns left by 1/2")}, // DNG 1.3
{7, N_("Staggered layout F: even rows are offset up by 1/2, even columns right by 1/2")}, // DNG 1.3 {7, N_("Staggered layout F: even rows are offset up by 1/2, even columns right by 1/2")}, // DNG 1.3
{8, N_("Staggered layout G: even rows are offset down by 1/2, even columns left by 1/2")}, // DNG 1.3 {8, N_("Staggered layout G: even rows are offset down by 1/2, even columns left by 1/2")}, // DNG 1.3
{9, N_("Staggered layout H: even rows are offset down by 1/2, even columns right by 1/2")} // DNG 1.3 {9, N_("Staggered layout H: even rows are offset down by 1/2, even columns right by 1/2")}, // DNG 1.3
}; };
//! MakerNoteSafety, DNG tag 0xc635 //! MakerNoteSafety, DNG tag 0xc635
constexpr TagDetails dngMakerNoteSafety[] = {{0, N_("Unsafe")}, {1, N_("Safe")}}; constexpr TagDetails dngMakerNoteSafety[] = {
{0, N_("Unsafe")},
{1, N_("Safe")},
};
//! ColorimetricReference, DNG 1.2 tag 0xc6bf //! ColorimetricReference, DNG 1.2 tag 0xc6bf
constexpr TagDetails dngColorimetricReference[] = {{0, N_("XYZ values are scene-referred")}, constexpr TagDetails dngColorimetricReference[] = {
{1, N_("XYZ values are output-referred")}}; {0, N_("XYZ values are scene-referred")},
{1, N_("XYZ values are output-referred")},
};
//! ProfileEmbedPolicy, DNG 1.2 tag 0xc6fd //! ProfileEmbedPolicy, DNG 1.2 tag 0xc6fd
constexpr TagDetails dngProfileEmbedPolicy[] = { constexpr TagDetails dngProfileEmbedPolicy[] = {
{0, N_("Allow copying")}, {1, N_("Embed if used")}, {2, N_("Embed never")}, {3, N_("No restrictions")}}; {0, N_("Allow copying")},
{1, N_("Embed if used")},
{2, N_("Embed never")},
{3, N_("No restrictions")},
};
//! PreviewColorSpace, DNG 1.2 tag 0xc71a //! PreviewColorSpace, DNG 1.2 tag 0xc71a
constexpr TagDetails dngPreviewColorSpace[] = { constexpr TagDetails dngPreviewColorSpace[] = {
{0, N_("Unknown")}, {1, N_("Gray Gamma 2.2")}, {2, N_("sRGB")}, {2, N_("Adobe RGB")}, {4, N_("ProPhoto RGB")}}; {0, N_("Unknown")}, {1, N_("Gray Gamma 2.2")}, {2, N_("sRGB")}, {2, N_("Adobe RGB")}, {4, N_("ProPhoto RGB")},
};
//! ProfileEncoding, DNG 1.4 tags 0xc7a3, 0xc7a4 //! ProfileEncoding, DNG 1.4 tags 0xc7a3, 0xc7a4
constexpr TagDetails dngProfileEncoding[] = {{0, N_("Linear")}, {1, N_("sRGB")}}; constexpr TagDetails dngProfileEncoding[] = {
{0, N_("Linear")},
{1, N_("sRGB")},
};
//! DefaultBlackRender, DNG 1.4 tag 0xc7a6 //! DefaultBlackRender, DNG 1.4 tag 0xc7a6
constexpr TagDetails dngDefaultBlackRender[] = {{0, N_("Auto")}, {1, N_("None")}}; constexpr TagDetails dngDefaultBlackRender[] = {
{0, N_("Auto")},
{1, N_("None")},
};
//! DepthFormat, DNG 1.5 tag 0xc7e9 //! DepthFormat, DNG 1.5 tag 0xc7e9
constexpr TagDetails dngDepthFormat[] = {{0, N_("Unknown")}, {1, N_("Linear")}, {2, N_("Inverse")}}; constexpr TagDetails dngDepthFormat[] = {
{0, N_("Unknown")},
{1, N_("Linear")},
{2, N_("Inverse")},
};
//! DepthUnits, DNG 1.5 tag 0xc7ec //! DepthUnits, DNG 1.5 tag 0xc7ec
constexpr TagDetails dngDepthUnits[] = {{0, N_("Unknown")}, {1, N_("meters")}}; constexpr TagDetails dngDepthUnits[] = {
{0, N_("Unknown")},
{1, N_("meters")},
};
//! DepthMeasureType, DNG 1.5 tag 0xc7ed //! DepthMeasureType, DNG 1.5 tag 0xc7ed
constexpr TagDetails dngDepthMeasureType[] = {{0, N_("Unknown")}, {1, N_("Optical axis")}, {2, N_("Optical ray")}}; constexpr TagDetails dngDepthMeasureType[] = {
{0, N_("Unknown")},
{1, N_("Optical axis")},
{2, N_("Optical ray")},
};
//! Base IFD Tags (IFD0 and IFD1) //! Base IFD Tags (IFD0 and IFD1)
constexpr TagInfo ifdTagInfo[] = { constexpr TagInfo ifdTagInfo[] = {
@ -1668,7 +1720,11 @@ const TagInfo* ifdTagList() {
//! CompositeImage, tag 0xa460 //! CompositeImage, tag 0xa460
constexpr TagDetails exifCompositeImage[] = { constexpr TagDetails exifCompositeImage[] = {
{0, N_("Unknown")}, {1, N_("NonComposite")}, {2, N_("GeneralComposite")}, {3, N_("CompositeCapturedWhenShooting")}}; {0, N_("Unknown")},
{1, N_("NonComposite")},
{2, N_("GeneralComposite")},
{3, N_("CompositeCapturedWhenShooting")},
};
// Exif IFD Tags // Exif IFD Tags
constexpr TagInfo exifTagInfo[] = { constexpr TagInfo exifTagInfo[] = {
@ -2062,32 +2118,60 @@ const TagInfo* exifTagList() {
} }
//! GPS latitude reference, tag 0x0001; also GPSDestLatitudeRef, tag 0x0013 //! GPS latitude reference, tag 0x0001; also GPSDestLatitudeRef, tag 0x0013
constexpr TagDetails exifGPSLatitudeRef[] = {{78, N_("North")}, {83, N_("South")}}; constexpr TagDetails exifGPSLatitudeRef[] = {
{78, N_("North")},
{83, N_("South")},
};
//! GPS longitude reference, tag 0x0003; also GPSDestLongitudeRef, tag 0x0015 //! GPS longitude reference, tag 0x0003; also GPSDestLongitudeRef, tag 0x0015
constexpr TagDetails exifGPSLongitudeRef[] = {{69, N_("East")}, {87, N_("West")}}; constexpr TagDetails exifGPSLongitudeRef[] = {
{69, N_("East")},
{87, N_("West")},
};
//! GPS altitude reference, tag 0x0005 //! GPS altitude reference, tag 0x0005
constexpr TagDetails exifGPSAltitudeRef[] = {{0, N_("Above sea level")}, {1, N_("Below sea level")}}; constexpr TagDetails exifGPSAltitudeRef[] = {
{0, N_("Above sea level")},
{1, N_("Below sea level")},
};
//! GPS status, tag 0x0009 //! GPS status, tag 0x0009
constexpr TagDetails exifGPSStatus[] = {{'A', N_("Measurement in progress")}, {'V', N_("Measurement interrupted")}}; constexpr TagDetails exifGPSStatus[] = {
{'A', N_("Measurement in progress")},
{'V', N_("Measurement interrupted")},
};
//! GPS measurement mode, tag 0x000a //! GPS measurement mode, tag 0x000a
constexpr TagDetails exifGPSMeasureMode[] = {{'2', N_("2-dimensional measurement")}, constexpr TagDetails exifGPSMeasureMode[] = {
{'3', N_("3-dimensional measurement")}}; {'2', N_("2-dimensional measurement")},
{'3', N_("3-dimensional measurement")},
};
//! GPS speed reference, tag 0x000c //! GPS speed reference, tag 0x000c
constexpr TagDetails exifGPSSpeedRef[] = {{'K', N_("km/h")}, {'M', N_("mph")}, {'N', N_("knots")}}; constexpr TagDetails exifGPSSpeedRef[] = {
{'K', N_("km/h")},
{'M', N_("mph")},
{'N', N_("knots")},
};
//! GPS direction reference, tags 0x000e, 0x0010, 0x0017 //! GPS direction reference, tags 0x000e, 0x0010, 0x0017
constexpr TagDetails exifGPSDirRef[] = {{'T', N_("True direction")}, {'M', N_("Magnetic direction")}}; constexpr TagDetails exifGPSDirRef[] = {
{'T', N_("True direction")},
{'M', N_("Magnetic direction")},
};
//! GPS destination distance reference, tag 0x0019 //! GPS destination distance reference, tag 0x0019
constexpr TagDetails exifGPSDestDistanceRef[] = {{'K', N_("km")}, {'M', N_("miles")}, {'N', N_("nautical miles")}}; constexpr TagDetails exifGPSDestDistanceRef[] = {
{'K', N_("km")},
{'M', N_("miles")},
{'N', N_("nautical miles")},
};
//! GPS differential correction, tag 0x001e //! GPS differential correction, tag 0x001e
constexpr TagDetails exifGPSDifferential[] = {{0, N_("Without correction")}, {1, N_("Correction applied")}}; constexpr TagDetails exifGPSDifferential[] = {
{0, N_("Without correction")},
{1, N_("Correction applied")},
};
// GPS Info Tags // GPS Info Tags
constexpr TagInfo gpsTagInfo[] = { constexpr TagInfo gpsTagInfo[] = {
@ -2746,7 +2830,10 @@ std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*
} }
//! YCbCrPositioning, tag 0x0213 //! YCbCrPositioning, tag 0x0213
constexpr TagDetails exifYCbCrPositioning[] = {{1, N_("Centered")}, {2, N_("Co-sited")}}; constexpr TagDetails exifYCbCrPositioning[] = {
{1, N_("Centered")},
{2, N_("Co-sited")},
};
std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifYCbCrPositioning)(os, value, metadata); return EXV_PRINT_TAG(exifYCbCrPositioning)(os, value, metadata);
} }
@ -2811,7 +2898,8 @@ std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*)
constexpr TagDetails exifExposureProgram[] = { constexpr TagDetails exifExposureProgram[] = {
{0, N_("Not defined")}, {1, N_("Manual")}, {2, N_("Auto")}, {0, N_("Not defined")}, {1, N_("Manual")}, {2, N_("Auto")},
{3, N_("Aperture priority")}, {4, N_("Shutter priority")}, {5, N_("Creative program")}, {3, N_("Aperture priority")}, {4, N_("Shutter priority")}, {5, N_("Creative program")},
{6, N_("Action program")}, {7, N_("Portrait mode")}, {8, N_("Landscape mode")}}; {6, N_("Action program")}, {7, N_("Portrait mode")}, {8, N_("Landscape mode")},
};
std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifExposureProgram)(os, value, metadata); return EXV_PRINT_TAG(exifExposureProgram)(os, value, metadata);
@ -2952,7 +3040,8 @@ std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*)
constexpr TagDetails exifColorSpace[] = { constexpr TagDetails exifColorSpace[] = {
{1, N_("sRGB")}, {1, N_("sRGB")},
{2, N_("Adobe RGB")}, // Not defined to Exif 2.2 spec. But used by a lot of cameras. {2, N_("Adobe RGB")}, // Not defined to Exif 2.2 spec. But used by a lot of cameras.
{0xffff, N_("Uncalibrated")}}; {0xffff, N_("Uncalibrated")},
};
std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifColorSpace)(os, value, metadata); return EXV_PRINT_TAG(exifColorSpace)(os, value, metadata);
@ -2985,28 +3074,40 @@ std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*
} }
//! SceneType, tag 0xa301 //! SceneType, tag 0xa301
constexpr TagDetails exifSceneType[] = {{1, N_("Directly photographed")}}; constexpr TagDetails exifSceneType[] = {
{1, N_("Directly photographed")},
};
std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifSceneType)(os, value, metadata); return EXV_PRINT_TAG(exifSceneType)(os, value, metadata);
} }
//! CustomRendered, tag 0xa401 //! CustomRendered, tag 0xa401
constexpr TagDetails exifCustomRendered[] = {{0, N_("Normal process")}, {1, N_("Custom process")}}; constexpr TagDetails exifCustomRendered[] = {
{0, N_("Normal process")},
{1, N_("Custom process")},
};
std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifCustomRendered)(os, value, metadata); return EXV_PRINT_TAG(exifCustomRendered)(os, value, metadata);
} }
//! ExposureMode, tag 0xa402 //! ExposureMode, tag 0xa402
constexpr TagDetails exifExposureMode[] = {{0, N_("Auto")}, {1, N_("Manual")}, {2, N_("Auto bracket")}}; constexpr TagDetails exifExposureMode[] = {
{0, N_("Auto")},
{1, N_("Manual")},
{2, N_("Auto bracket")},
};
std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifExposureMode)(os, value, metadata); return EXV_PRINT_TAG(exifExposureMode)(os, value, metadata);
} }
//! WhiteBalance, tag 0xa403 //! WhiteBalance, tag 0xa403
constexpr TagDetails exifWhiteBalance[] = {{0, N_("Auto")}, {1, N_("Manual")}}; constexpr TagDetails exifWhiteBalance[] = {
{0, N_("Auto")},
{1, N_("Manual")},
};
std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifWhiteBalance)(os, value, metadata); return EXV_PRINT_TAG(exifWhiteBalance)(os, value, metadata);
@ -3049,18 +3150,21 @@ std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*
} }
//! GainControl, tag 0xa407 //! GainControl, tag 0xa407
constexpr TagDetails exifGainControl[] = {{0, N_("None")}, constexpr TagDetails exifGainControl[] = {
{1, N_("Low gain up")}, {0, N_("None")}, {1, N_("Low gain up")}, {2, N_("High gain up")},
{2, N_("High gain up")}, {3, N_("Low gain down")}, {4, N_("High gain down")},
{3, N_("Low gain down")}, };
{4, N_("High gain down")}};
std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifGainControl)(os, value, metadata); return EXV_PRINT_TAG(exifGainControl)(os, value, metadata);
} }
//! Saturation, tag 0xa409 //! Saturation, tag 0xa409
constexpr TagDetails exifSaturation[] = {{0, N_("Normal")}, {1, N_("Low")}, {2, N_("High")}}; constexpr TagDetails exifSaturation[] = {
{0, N_("Normal")},
{1, N_("Low")},
{2, N_("High")},
};
std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifSaturation)(os, value, metadata); return EXV_PRINT_TAG(exifSaturation)(os, value, metadata);
@ -3084,7 +3188,11 @@ std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifDat
} }
//! Contrast, tag 0xa408 and Sharpness, tag 0xa40a //! Contrast, tag 0xa408 and Sharpness, tag 0xa40a
constexpr TagDetails exifNormalSoftHard[] = {{0, N_("Normal")}, {1, N_("Soft")}, {2, N_("Hard")}}; constexpr TagDetails exifNormalSoftHard[] = {
{0, N_("Normal")},
{1, N_("Soft")},
{2, N_("Hard")},
};
std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(exifNormalSoftHard)(os, value, metadata); return EXV_PRINT_TAG(exifNormalSoftHard)(os, value, metadata);

@ -520,14 +520,16 @@ constexpr ArrayDef nikonFl3Def[] = {
{16, ttUnsignedByte, 1}, // FlashColorFilter {16, ttUnsignedByte, 1}, // FlashColorFilter
}; };
//! Nikon Flash Info 6 (0106) binary array - configuration //! Nikon Flash Info 6 (0106) binary array - configuration
constexpr ArrayCfg nikonFl6Cfg = {IfdId::nikonFl6Id, // Group for the elements constexpr ArrayCfg nikonFl6Cfg = {
bigEndian, // Use byte order from parent IfdId::nikonFl6Id, // Group for the elements
ttUndefined, // Type for array entry bigEndian, // Use byte order from parent
notEncrypted, // Not encrypted ttUndefined, // Type for array entry
false, // No size element notEncrypted, // Not encrypted
true, // Write all tags false, // No size element
true, // Concatenate gaps true, // Write all tags
{0, ttUnsignedByte, 1}}; true, // Concatenate gaps
{0, ttUnsignedByte, 1},
};
//! Nikon Flash Info 6 (0106) binary array - definition //! Nikon Flash Info 6 (0106) binary array - definition
constexpr ArrayDef nikonFl6Def[] = { constexpr ArrayDef nikonFl6Def[] = {
{0, ttUndefined, 4}, // Version {0, ttUndefined, 4}, // Version
@ -554,14 +556,16 @@ constexpr ArrayDef nikonFl6Def[] = {
{42, ttUnsignedByte, 1}, // FlashGroupCOutput {42, ttUnsignedByte, 1}, // FlashGroupCOutput
}; };
//! Nikon Flash Info 7 (0107 and 0108) binary array - configuration //! Nikon Flash Info 7 (0107 and 0108) binary array - configuration
constexpr ArrayCfg nikonFl7Cfg = {IfdId::nikonFl7Id, // Group for the elements constexpr ArrayCfg nikonFl7Cfg = {
bigEndian, // Use byte order from parent IfdId::nikonFl7Id, // Group for the elements
ttUndefined, // Type for array entry bigEndian, // Use byte order from parent
notEncrypted, // Not encrypted ttUndefined, // Type for array entry
false, // No size element notEncrypted, // Not encrypted
true, // Write all tags false, // No size element
true, // Concatenate gaps true, // Write all tags
{0, ttUnsignedByte, 1}}; true, // Concatenate gaps
{0, ttUnsignedByte, 1},
};
//! Nikon Flash Info 7 (0107 and 0108) binary array - definition //! Nikon Flash Info 7 (0107 and 0108) binary array - definition
constexpr ArrayDef nikonFl7Def[] = { constexpr ArrayDef nikonFl7Def[] = {
{0, ttUndefined, 4}, // Version {0, ttUndefined, 4}, // Version
@ -1394,7 +1398,8 @@ const TiffTreeTable TiffCreator::tiffTreeTable_ = {
{{Tag::pana, IfdId::ifdIdNotSet}, {IfdId::ifdIdNotSet, Tag::pana}}, {{Tag::pana, IfdId::ifdIdNotSet}, {IfdId::ifdIdNotSet, Tag::pana}},
{{Tag::pana, IfdId::panaRawId}, {IfdId::ifdIdNotSet, Tag::pana}}, {{Tag::pana, IfdId::panaRawId}, {IfdId::ifdIdNotSet, Tag::pana}},
{{Tag::pana, IfdId::exifId}, {IfdId::panaRawId, 0x8769}}, {{Tag::pana, IfdId::exifId}, {IfdId::panaRawId, 0x8769}},
{{Tag::pana, IfdId::gpsId}, {IfdId::panaRawId, 0x8825}}}; {{Tag::pana, IfdId::gpsId}, {IfdId::panaRawId, 0x8825}},
};
/* /*
This table describes the layout of each known TIFF group (including This table describes the layout of each known TIFF group (including

Loading…
Cancel
Save