diff --git a/include/exiv2/datasets.hpp b/include/exiv2/datasets.hpp index fc965cd4..d2b509b1 100644 --- a/include/exiv2/datasets.hpp +++ b/include/exiv2/datasets.hpp @@ -76,84 +76,84 @@ namespace Exiv2 { IIM4 standard (and not commonly used in images). */ //@{ - static const uint16_t invalidRecord = 0; - static const uint16_t envelope = 1; - static const uint16_t application2 = 2; + static constexpr uint16_t invalidRecord = 0; + static constexpr uint16_t envelope = 1; + static constexpr uint16_t application2 = 2; //@} //! @name Dataset identifiers //@{ - static const uint16_t ModelVersion = 0; - static const uint16_t Destination = 5; - static const uint16_t FileFormat = 20; - static const uint16_t FileVersion = 22; - static const uint16_t ServiceId = 30; - static const uint16_t EnvelopeNumber = 40; - static const uint16_t ProductId = 50; - static const uint16_t EnvelopePriority = 60; - static const uint16_t DateSent = 70; - static const uint16_t TimeSent = 80; - static const uint16_t CharacterSet = 90; - static const uint16_t UNO = 100; - static const uint16_t ARMId = 120; - static const uint16_t ARMVersion = 122; - static const uint16_t RecordVersion = 0; - static const uint16_t ObjectType = 3; - static const uint16_t ObjectAttribute = 4; - static const uint16_t ObjectName = 5; - static const uint16_t EditStatus = 7; - static const uint16_t EditorialUpdate = 8; - static const uint16_t Urgency = 10; - static const uint16_t Subject = 12; - static const uint16_t Category = 15; - static const uint16_t SuppCategory = 20; - static const uint16_t FixtureId = 22; - static const uint16_t Keywords = 25; - static const uint16_t LocationCode = 26; - static const uint16_t LocationName = 27; - static const uint16_t ReleaseDate = 30; - static const uint16_t ReleaseTime = 35; - static const uint16_t ExpirationDate = 37; - static const uint16_t ExpirationTime = 38; - static const uint16_t SpecialInstructions = 40; - static const uint16_t ActionAdvised = 42; - static const uint16_t ReferenceService = 45; - static const uint16_t ReferenceDate = 47; - static const uint16_t ReferenceNumber = 50; - static const uint16_t DateCreated = 55; - static const uint16_t TimeCreated = 60; - static const uint16_t DigitizationDate = 62; - static const uint16_t DigitizationTime = 63; - static const uint16_t Program = 65; - static const uint16_t ProgramVersion = 70; - static const uint16_t ObjectCycle = 75; - static const uint16_t Byline = 80; - static const uint16_t BylineTitle = 85; - static const uint16_t City = 90; - static const uint16_t SubLocation = 92; - static const uint16_t ProvinceState = 95; - static const uint16_t CountryCode = 100; - static const uint16_t CountryName = 101; - static const uint16_t TransmissionReference = 103; - static const uint16_t Headline = 105; - static const uint16_t Credit = 110; - static const uint16_t Source = 115; - static const uint16_t Copyright = 116; - static const uint16_t Contact = 118; - static const uint16_t Caption = 120; - static const uint16_t Writer = 122; - static const uint16_t RasterizedCaption = 125; - static const uint16_t ImageType = 130; - static const uint16_t ImageOrientation = 131; - static const uint16_t Language = 135; - static const uint16_t AudioType = 150; - static const uint16_t AudioRate = 151; - static const uint16_t AudioResolution = 152; - static const uint16_t AudioDuration = 153; - static const uint16_t AudioOutcue = 154; - static const uint16_t PreviewFormat = 200; - static const uint16_t PreviewVersion = 201; - static const uint16_t Preview = 202; + static constexpr uint16_t ModelVersion = 0; + static constexpr uint16_t Destination = 5; + static constexpr uint16_t FileFormat = 20; + static constexpr uint16_t FileVersion = 22; + static constexpr uint16_t ServiceId = 30; + static constexpr uint16_t EnvelopeNumber = 40; + static constexpr uint16_t ProductId = 50; + static constexpr uint16_t EnvelopePriority = 60; + static constexpr uint16_t DateSent = 70; + static constexpr uint16_t TimeSent = 80; + static constexpr uint16_t CharacterSet = 90; + static constexpr uint16_t UNO = 100; + static constexpr uint16_t ARMId = 120; + static constexpr uint16_t ARMVersion = 122; + static constexpr uint16_t RecordVersion = 0; + static constexpr uint16_t ObjectType = 3; + static constexpr uint16_t ObjectAttribute = 4; + static constexpr uint16_t ObjectName = 5; + static constexpr uint16_t EditStatus = 7; + static constexpr uint16_t EditorialUpdate = 8; + static constexpr uint16_t Urgency = 10; + static constexpr uint16_t Subject = 12; + static constexpr uint16_t Category = 15; + static constexpr uint16_t SuppCategory = 20; + static constexpr uint16_t FixtureId = 22; + static constexpr uint16_t Keywords = 25; + static constexpr uint16_t LocationCode = 26; + static constexpr uint16_t LocationName = 27; + static constexpr uint16_t ReleaseDate = 30; + static constexpr uint16_t ReleaseTime = 35; + static constexpr uint16_t ExpirationDate = 37; + static constexpr uint16_t ExpirationTime = 38; + static constexpr uint16_t SpecialInstructions = 40; + static constexpr uint16_t ActionAdvised = 42; + static constexpr uint16_t ReferenceService = 45; + static constexpr uint16_t ReferenceDate = 47; + static constexpr uint16_t ReferenceNumber = 50; + static constexpr uint16_t DateCreated = 55; + static constexpr uint16_t TimeCreated = 60; + static constexpr uint16_t DigitizationDate = 62; + static constexpr uint16_t DigitizationTime = 63; + static constexpr uint16_t Program = 65; + static constexpr uint16_t ProgramVersion = 70; + static constexpr uint16_t ObjectCycle = 75; + static constexpr uint16_t Byline = 80; + static constexpr uint16_t BylineTitle = 85; + static constexpr uint16_t City = 90; + static constexpr uint16_t SubLocation = 92; + static constexpr uint16_t ProvinceState = 95; + static constexpr uint16_t CountryCode = 100; + static constexpr uint16_t CountryName = 101; + static constexpr uint16_t TransmissionReference = 103; + static constexpr uint16_t Headline = 105; + static constexpr uint16_t Credit = 110; + static constexpr uint16_t Source = 115; + static constexpr uint16_t Copyright = 116; + static constexpr uint16_t Contact = 118; + static constexpr uint16_t Caption = 120; + static constexpr uint16_t Writer = 122; + static constexpr uint16_t RasterizedCaption = 125; + static constexpr uint16_t ImageType = 130; + static constexpr uint16_t ImageOrientation = 131; + static constexpr uint16_t Language = 135; + static constexpr uint16_t AudioType = 150; + static constexpr uint16_t AudioRate = 151; + static constexpr uint16_t AudioResolution = 152; + static constexpr uint16_t AudioDuration = 153; + static constexpr uint16_t AudioOutcue = 154; + static constexpr uint16_t PreviewFormat = 200; + static constexpr uint16_t PreviewVersion = 201; + static constexpr uint16_t Preview = 202; //@} private: diff --git a/include/exiv2/tags.hpp b/include/exiv2/tags.hpp index 35c79c9e..43c6fe45 100644 --- a/include/exiv2/tags.hpp +++ b/include/exiv2/tags.hpp @@ -72,18 +72,6 @@ namespace Exiv2 { //! Tag information struct EXIV2API TagInfo { - //! Constructor - TagInfo( - uint16_t tag, - const char* name, - const char* title, - const char* desc, - int ifdId, - int sectionId, - TypeId typeId, - int16_t count, - PrintFct printFct - ); uint16_t tag_; //!< Tag const char* name_; //!< One word tag label const char* title_; //!< Tag title diff --git a/include/exiv2/types.hpp b/include/exiv2/types.hpp index 283a7826..43077483 100644 --- a/include/exiv2/types.hpp +++ b/include/exiv2/types.hpp @@ -79,6 +79,12 @@ #define EXV_WARN_UNUSED_RESULT #endif +#ifndef _MSC_VER +#define EXV_UNUSED [[gnu::unused]] +#else +#define EXV_UNUSED +#endif + // ***************************************************************************** // forward declarations struct tm; diff --git a/samples/tiffaddpath-test.cpp b/samples/tiffaddpath-test.cpp index 2622c242..b1994479 100644 --- a/samples/tiffaddpath-test.cpp +++ b/samples/tiffaddpath-test.cpp @@ -48,7 +48,7 @@ struct TiffTagInfo { const char* name_; }; -extern const TiffTagInfo tiffTagInfo[] = { +static constexpr TiffTagInfo tiffTagInfo[] = { { 0x10000, "none" }, { 0x20000, "root" }, { 0x30000, "next" }, diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index d0818bda..fe2c4c05 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -49,7 +49,7 @@ namespace Exiv2 { namespace Internal { //! OffOn, multiple tags - extern const TagDetails canonOffOn[] = { + constexpr TagDetails canonOffOn[] = { { 0, N_("Off") }, { 1, N_("On") } }; @@ -72,7 +72,7 @@ namespace Exiv2 { const ExifData* metadata); //! ModelId, tag 0x0010 - extern const TagDetails canonModelId[] = { + constexpr TagDetails canonModelId[] = { { (long int)0x00000811, "EOS M6 Mark II"}, { (long int)0x00000804, "Powershot G5 X Mark II"}, { (long int)0x00000805, "PowerShot SX70 HS"}, @@ -424,20 +424,20 @@ namespace Exiv2 { }; //! SerialNumberFormat, tag 0x0015 - extern const TagDetails canonSerialNumberFormat[] = { + constexpr TagDetails canonSerialNumberFormat[] = { { (long int)0x90000000, N_("Format 1") }, { (long int)0xa0000000, N_("Format 2") }, }; //! SuperMacro, tag 0x001a - extern const TagDetails canonSuperMacro[] = { + constexpr TagDetails canonSuperMacro[] = { { 0, N_("Off") }, { 1, N_("On (1)") }, { 2, N_("On (2)") } }; // DateStampMode, tag 0x001c - extern const TagDetails canonDateStampMode[] = { + constexpr TagDetails canonDateStampMode[] = { { 0, N_("Off") }, { 1, N_("Date") }, { 2, N_("Date & Time") } @@ -446,7 +446,7 @@ namespace Exiv2 { // Categories, tag 0x0023 - extern const TagDetails canonCategories[] = { + EXV_UNUSED constexpr TagDetails canonCategories[] = { { 0x0001, N_("People") }, { 0x0002, N_("Scenery") }, { 0x0004, N_("Events") }, @@ -459,7 +459,7 @@ namespace Exiv2 { //! PictureStyle Values - extern const TagDetails canonPictureStyle[] = { + constexpr TagDetails canonPictureStyle[] = { { 0x00, N_("None") }, { 0x01, N_("Standard") }, { 0x02, N_("Portrait") }, @@ -484,8 +484,8 @@ namespace Exiv2 { { 0x88, N_("Fine Detail") } }; - //! WhiteBalance, multiple tags - extern const TagDetails canonSiWhiteBalance[] = { + //! WhiteBalance, multiple tags + constexpr TagDetails canonSiWhiteBalance[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Cloudy") }, @@ -512,13 +512,13 @@ namespace Exiv2 { //! ColorSpace, tag 0x00b4 - extern const TagDetails canonColorSpace[] = { + constexpr TagDetails canonColorSpace[] = { { 1, N_("sRGB") }, { 2, N_("Adobe RGB") } }; //! Canon AF Area Mode, tag 0x2601 - extern const TagDetails canonAFAreaMode[] = { + constexpr TagDetails canonAFAreaMode[] = { { 0, N_("Off (Manual Focus)") }, { 1, N_("AF Point Expansion (surround)")}, { 2, N_("Single-point AF") }, @@ -537,109 +537,109 @@ namespace Exiv2 { // Canon MakerNote Tag Info - const TagInfo CanonMakerNote::tagInfo_[] = { - TagInfo(0x0000, "0x0000", "0x0000", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0001, "CameraSettings", N_("Camera Settings"), N_("Various camera settings"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), canonId, makerTags, unsignedShort, -1, printFocalLength), - TagInfo(0x0003, "0x0003", "0x0003", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0004, "ShotInfo", N_("Shot Info"), N_("Shot information"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0005, "Panorama", N_("Panorama"), N_("Panorama"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0006, "ImageType", N_("Image Type"), N_("Image type"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0008, "FileNumber", N_("File Number"), N_("File number"), canonId, makerTags, unsignedLong, -1, print0x0008), - TagInfo(0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "0x000a", N_("0x000a"), N_("Unknow"), canonId, makerTags, unsignedLong, -1, print0x000c), - TagInfo(0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), canonId, makerTags, unsignedLong, -1, print0x000c), - TagInfo(0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x000e, "FileLength", N_("FileLength"), N_("FileLength"), canonId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x000f, "CustomFunctions", N_("Custom Functions"), N_("Custom Functions"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0010, "ModelID", N_("ModelID"), N_("Model ID"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonModelId)), - TagInfo(0x0011, "MovieInfo", N_("MovieInfo"), N_("Movie info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0012, "PictureInfo", N_("Picture Info"), N_("Picture info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0013, "ThumbnailImageValidArea", N_("Thumbnail Image Valid Area"), N_("Thumbnail image valid area"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x0015, "SerialNumberFormat", N_("Serial Number Format"), N_("Serial number format"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonSerialNumberFormat)), - TagInfo(0x001a, "SuperMacro", N_("Super Macro"), N_("Super macro"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonSuperMacro)), - TagInfo(0x001c, "DateStampMode", N_("DateStampMode"), N_("Data_Stamp_Mode"), canonId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonDateStampMode)), - TagInfo(0x001d, "MyColors", N_("MyColors"), N_("My_Colors"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x001e, "FirmwareRevision", N_("FirmwareRevision"), N_("Firmware_Revision"), canonId, makerTags, unsignedLong, -1, printValue), - // TagInfo(0x0023, "Categories", N_("Categories"), N_("Categories"), canonId, makerTags, unsignedLong -1, EXV_PRINT_TAG(canonCategories)), - TagInfo(0x0024, "FaceDetect1", N_("FaceDetect1"), N_("FaceDetect1"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0025, "FaceDetect2", N_("FaceDetect2"), N_("FaceDetect2"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0026, "AFInfo", N_("AF Info"), N_("AF info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0027, "ContrastInfo", N_("ContrastInfo"), N_("ContrastInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0028, "ImageUniqueID", N_("ImageUniqueID"), N_("ImageUniqueID"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0029, "WBInfo", N_("WBInfo"), N_("WBInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x002f, "FaceDetect3", N_("FaceDetect3"), N_("FaceDetect3"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0035, "TimeInfo", N_("Time Info"), N_("Time zone information"), canonId, makerTags, signedLong, -1, printValue), - TagInfo(0x0038, "BatteryType", N_("BatteryType"), N_("BatteryType"), canonId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x003c, "AFInfo3", N_("AFInfo3"), N_("AFInfo3"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0081, "RawDataOffset", N_("RawDataOffset"), N_("RawDataOffset"), canonId, makerTags, signedLong, -1, printValue), - TagInfo(0x0083, "OriginalDecisionDataOffset", N_("Original Decision Data Offset"), N_("Original decision data offset"), canonId, makerTags, signedLong, -1, printValue), - TagInfo(0x00a4, "WhiteBalanceTable", N_("White Balance Table"), N_("White balance table"), canonId, makerTags, unsignedShort, -1, printValue), - // TagInfo(0x0090, "CustomFunctions1D", N_("CustomFunctions1D"), N_("CustomFunctions1D"), canonId, makerTags, unsignedShort, -1, printValue), // ToDo - // TagInfo(0x0091, "PersonalFunctions", N_("PersonalFunctions"), N_("PersonalFunctions"), canonId, makerTags, unsignedShort, -1, printValue), // ToDo - // TagInfo(0x0092, "PersonalFunctionValues", N_("PersonalFunctionValues"), N_("PersonalFunctionValues"), canonId, makerTags, unsignedShort, -1, printValue), // ToDo - TagInfo(0x0093, "CanonFileInfo", N_("CanonFileInfo"), N_("CanonFileInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0094, "AFPointsInFocus1D", N_("AFPointsInFocus1D"), N_("AFPointsInFocus1D"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0095, "LensModel", N_("Lens Model"), N_("Lens model"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0096, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0097, "DustRemovalData", N_("Dust Removal Data"), N_("Dust removal data"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0099, "CustomFunctions", N_("Custom Functions"), N_("Custom functions"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x009a, "AspectInfo", N_("AspectInfo"), N_("AspectInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a0, "ProcessingInfo", N_("Processing Info"), N_("Processing info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a1, "ToneCurveTable", N_("ToneCurveTable"), N_("ToneCurveTable"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a2, "SharpnessTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a3, "SharpnessFreqTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a4, "WhiteBalanceTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a9, "ColorBalance", N_("ColorBalance"), N_("ColorBalance"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00aa, "MeasuredColor", N_("Measured Color"), N_("Measured color"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00ae, "ColorTemperature", N_("ColorTemperature"), N_("ColorTemperature"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b0, "CanonFlags", N_("CanonFlags"), N_("CanonFlags"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b1, "ModifiedInfo", N_("ModifiedInfo"), N_("ModifiedInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b2, "ToneCurveMatching", N_("ToneCurveMatching"), N_("ToneCurveMatching"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b3, "WhiteBalanceMatching", N_("WhiteBalanceMatching"), N_("WhiteBalanceMatching"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonColorSpace)), - TagInfo(0x00b5, "0x00b5", "0x00b5", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b6, "PreviewImageInfo", "PreviewImageInfo", N_("PreviewImageInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00c0, "0x00c0", "0x00c0", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00c1, "0x00c1", "0x00c1", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00d0, "VRDOffset", N_("VRD Offset"), N_("VRD offset"), canonId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00e0, "SensorInfo", N_("Sensor Info"), N_("Sensor info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2600, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2601, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonAFAreaMode)), - TagInfo(0x2602, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2603, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2604, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2605, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2606, "AFImageWidth", N_("AF Width"), N_("AF Width"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2607, "AFImageHeight", N_("AF Height"), N_("AF Height"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2608, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x2609, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x260a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x260b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x260c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), canonId, makerTags, signedShort, -1,printBitmask), - TagInfo(0x260d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), canonId, makerTags, signedShort, -1, printBitmask), - TagInfo(0x260e, "AFPointsUnusable", N_("AF Points Unusable"), N_("AF Points Unusable"), canonId, makerTags, signedShort, -1, printBitmask), - TagInfo(0x4001, "ColorData", N_("Color Data"), N_("Color data"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4002, "CRWParam", N_("CRWParam"), N_("CRWParam"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4003, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4005, "Flavor", N_("Flavor"), N_("Flavor"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4008, "PictureStyleUserDef", N_("PictureStyleUserDef"), N_("PictureStyleUserDef"), canonId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)), - // TagInfo(0x4009, "PictureStylePC", N_("PictureStylePC"), N_("PictureStylePC"), canonId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)), - TagInfo(0x4010, "CustomPictureStyleFileName", N_("CustomPictureStyleFileName"), N_("CustomPictureStyleFileName"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4013, "AFMicroAdj", N_("AFMicroAdj"), N_("AFMicroAdj"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4015, "VignettingCorr", N_("VignettingCorr"), N_("VignettingCorr"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4016, "VignettingCorr2", N_("VignettingCorr2"), N_("VignettingCorr2"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4018, "LightingOpt", N_("LightingOpt"), N_("LightingOpt"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4018, "LensInfo", N_("LensInfo"), N_("LensInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4020, "AmbienceInfo", N_("AmbienceInfo"), N_("AmbienceInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4021, "MultiExp", N_("MultiExp"), N_("MultiExp"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4024, "FilterInfo", N_("FilterInfo"), N_("FilterInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4025, "HDRInfo", N_("HDRInfo"), N_("HDRInfo"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4028, "AFConfig", N_("AFConfig"), N_("AFConfig"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x403f, "RawBurstModeRoll", N_("RawBurstModeRoll"), N_("RawBurstModeRoll"), canonId, makerTags, unsignedShort, -1, printValue), + constexpr TagInfo CanonMakerNote::tagInfo_[] = { + {0x0000, "0x0000", "0x0000", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0001, "CameraSettings", N_("Camera Settings"), N_("Various camera settings"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), canonId, makerTags, unsignedShort, -1, printFocalLength}, + {0x0003, "0x0003", "0x0003", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0004, "ShotInfo", N_("Shot Info"), N_("Shot information"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0005, "Panorama", N_("Panorama"), N_("Panorama"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0006, "ImageType", N_("Image Type"), N_("Image type"), canonId, makerTags, asciiString, -1, printValue}, + {0x0007, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), canonId, makerTags, asciiString, -1, printValue}, + {0x0008, "FileNumber", N_("File Number"), N_("File number"), canonId, makerTags, unsignedLong, -1, print0x0008}, + {0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), canonId, makerTags, asciiString, -1, printValue}, + {0x000a, "0x000a", N_("0x000a"), N_("Unknow"), canonId, makerTags, unsignedLong, -1, print0x000c}, + {0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), canonId, makerTags, unsignedLong, -1, print0x000c}, + {0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x000e, "FileLength", N_("FileLength"), N_("FileLength"), canonId, makerTags, unsignedLong, -1, printValue}, + {0x000f, "CustomFunctions", N_("Custom Functions"), N_("Custom Functions"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0010, "ModelID", N_("ModelID"), N_("Model ID"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonModelId)}, + {0x0011, "MovieInfo", N_("MovieInfo"), N_("Movie info"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0012, "PictureInfo", N_("Picture Info"), N_("Picture info"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0013, "ThumbnailImageValidArea", N_("Thumbnail Image Valid Area"), N_("Thumbnail image valid area"), canonId, makerTags, signedShort, -1, printValue}, + {0x0015, "SerialNumberFormat", N_("Serial Number Format"), N_("Serial number format"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonSerialNumberFormat)}, + {0x001a, "SuperMacro", N_("Super Macro"), N_("Super macro"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonSuperMacro)}, + {0x001c, "DateStampMode", N_("DateStampMode"), N_("Data_Stamp_Mode"), canonId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonDateStampMode)}, + {0x001d, "MyColors", N_("MyColors"), N_("My_Colors"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x001e, "FirmwareRevision", N_("FirmwareRevision"), N_("Firmware_Revision"), canonId, makerTags, unsignedLong, -1, printValue}, + // {0x0023, "Categories", N_("Categories"), N_("Categories"), canonId, makerTags, unsignedLong -1, EXV_PRINT_TAG(canonCategories)}, + {0x0024, "FaceDetect1", N_("FaceDetect1"), N_("FaceDetect1"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0025, "FaceDetect2", N_("FaceDetect2"), N_("FaceDetect2"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0026, "AFInfo", N_("AF Info"), N_("AF info"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0027, "ContrastInfo", N_("ContrastInfo"), N_("ContrastInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0028, "ImageUniqueID", N_("ImageUniqueID"), N_("ImageUniqueID"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0029, "WBInfo", N_("WBInfo"), N_("WBInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x002f, "FaceDetect3", N_("FaceDetect3"), N_("FaceDetect3"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0035, "TimeInfo", N_("Time Info"), N_("Time zone information"), canonId, makerTags, signedLong, -1, printValue}, + {0x0038, "BatteryType", N_("BatteryType"), N_("BatteryType"), canonId, makerTags, unsignedLong, -1, printValue}, + {0x003c, "AFInfo3", N_("AFInfo3"), N_("AFInfo3"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0081, "RawDataOffset", N_("RawDataOffset"), N_("RawDataOffset"), canonId, makerTags, signedLong, -1, printValue}, + {0x0083, "OriginalDecisionDataOffset", N_("Original Decision Data Offset"), N_("Original decision data offset"), canonId, makerTags, signedLong, -1, printValue}, + {0x00a4, "WhiteBalanceTable", N_("White Balance Table"), N_("White balance table"), canonId, makerTags, unsignedShort, -1, printValue}, + // {0x0090, "CustomFunctions1D", N_("CustomFunctions1D"), N_("CustomFunctions1D"), canonId, makerTags, unsignedShort, -1, printValue}, // ToDo + // {0x0091, "PersonalFunctions", N_("PersonalFunctions"), N_("PersonalFunctions"), canonId, makerTags, unsignedShort, -1, printValue}, // ToDo + // {0x0092, "PersonalFunctionValues", N_("PersonalFunctionValues"), N_("PersonalFunctionValues"), canonId, makerTags, unsignedShort, -1, printValue}, // ToDo + {0x0093, "CanonFileInfo", N_("CanonFileInfo"), N_("CanonFileInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0094, "AFPointsInFocus1D", N_("AFPointsInFocus1D"), N_("AFPointsInFocus1D"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x0095, "LensModel", N_("Lens Model"), N_("Lens model"), canonId, makerTags, asciiString, -1, printValue}, + {0x0096, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), canonId, makerTags, asciiString, -1, printValue}, + {0x0097, "DustRemovalData", N_("Dust Removal Data"), N_("Dust removal data"), canonId, makerTags, asciiString, -1, printValue}, + {0x0099, "CustomFunctions", N_("Custom Functions"), N_("Custom functions"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x009a, "AspectInfo", N_("AspectInfo"), N_("AspectInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00a0, "ProcessingInfo", N_("Processing Info"), N_("Processing info"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00a1, "ToneCurveTable", N_("ToneCurveTable"), N_("ToneCurveTable"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00a2, "SharpnessTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00a3, "SharpnessFreqTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00a4, "WhiteBalanceTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00a9, "ColorBalance", N_("ColorBalance"), N_("ColorBalance"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00aa, "MeasuredColor", N_("Measured Color"), N_("Measured color"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00ae, "ColorTemperature", N_("ColorTemperature"), N_("ColorTemperature"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00b0, "CanonFlags", N_("CanonFlags"), N_("CanonFlags"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00b1, "ModifiedInfo", N_("ModifiedInfo"), N_("ModifiedInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00b2, "ToneCurveMatching", N_("ToneCurveMatching"), N_("ToneCurveMatching"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00b3, "WhiteBalanceMatching", N_("WhiteBalanceMatching"), N_("WhiteBalanceMatching"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonColorSpace)}, + {0x00b5, "0x00b5", "0x00b5", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00b6, "PreviewImageInfo", "PreviewImageInfo", N_("PreviewImageInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00c0, "0x00c0", "0x00c0", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00c1, "0x00c1", "0x00c1", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x00d0, "VRDOffset", N_("VRD Offset"), N_("VRD offset"), canonId, makerTags, unsignedLong, -1, printValue}, + {0x00e0, "SensorInfo", N_("Sensor Info"), N_("Sensor info"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x2600, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), canonId, makerTags, signedShort, -1, printValue}, + {0x2601, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonAFAreaMode)}, + {0x2602, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), canonId, makerTags, signedShort, -1, printValue}, + {0x2603, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), canonId, makerTags, signedShort, -1, printValue}, + {0x2604, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonId, makerTags, signedShort, -1, printValue}, + {0x2605, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonId, makerTags, signedShort, -1, printValue}, + {0x2606, "AFImageWidth", N_("AF Width"), N_("AF Width"), canonId, makerTags, signedShort, -1, printValue}, + {0x2607, "AFImageHeight", N_("AF Height"), N_("AF Height"), canonId, makerTags, signedShort, -1, printValue}, + {0x2608, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), canonId, makerTags, signedShort, -1, printValue}, + {0x2609, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonId, makerTags, signedShort, -1, printValue}, + {0x260a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonId, makerTags, signedShort, -1, printValue}, + {0x260b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonId, makerTags, signedShort, -1, printValue}, + {0x260c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), canonId, makerTags, signedShort, -1,printBitmask}, + {0x260d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), canonId, makerTags, signedShort, -1, printBitmask}, + {0x260e, "AFPointsUnusable", N_("AF Points Unusable"), N_("AF Points Unusable"), canonId, makerTags, signedShort, -1, printBitmask}, + {0x4001, "ColorData", N_("Color Data"), N_("Color data"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4002, "CRWParam", N_("CRWParam"), N_("CRWParam"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4003, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4005, "Flavor", N_("Flavor"), N_("Flavor"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4008, "PictureStyleUserDef", N_("PictureStyleUserDef"), N_("PictureStyleUserDef"), canonId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + // {0x4009, "PictureStylePC", N_("PictureStylePC"), N_("PictureStylePC"), canonId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x4010, "CustomPictureStyleFileName", N_("CustomPictureStyleFileName"), N_("CustomPictureStyleFileName"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4013, "AFMicroAdj", N_("AFMicroAdj"), N_("AFMicroAdj"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4015, "VignettingCorr", N_("VignettingCorr"), N_("VignettingCorr"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4016, "VignettingCorr2", N_("VignettingCorr2"), N_("VignettingCorr2"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4018, "LightingOpt", N_("LightingOpt"), N_("LightingOpt"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4018, "LensInfo", N_("LensInfo"), N_("LensInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4020, "AmbienceInfo", N_("AmbienceInfo"), N_("AmbienceInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4021, "MultiExp", N_("MultiExp"), N_("MultiExp"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4024, "FilterInfo", N_("FilterInfo"), N_("FilterInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4025, "HDRInfo", N_("HDRInfo"), N_("HDRInfo"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x4028, "AFConfig", N_("AFConfig"), N_("AFConfig"), canonId, makerTags, unsignedShort, -1, printValue}, + {0x403f, "RawBurstModeRoll", N_("RawBurstModeRoll"), N_("RawBurstModeRoll"), canonId, makerTags, unsignedShort, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"), canonId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"), canonId, makerTags, asciiString, -1, printValue}, }; const TagInfo* CanonMakerNote::tagList() @@ -648,16 +648,16 @@ namespace Exiv2 { } // Canon Movie Info Tag - const TagInfo CanonMakerNote::tagInfoMv_[] = { - TagInfo(0x0001, "FrameRate", N_("FrameRate"), N_("FrameRate"), canonMvId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0002, "FrameCount", N_("FrameCount"), N_("FrameCount"), canonMvId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0004, "FrameCount", N_("FrameCount"), N_("FrameCount"), canonMvId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0006, "FrameRate", N_("FrameCount"), N_("FrameCount"), canonMvId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x006a, "Duration", N_("Duration"), N_("Duration"), canonMvId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x006c, "AudioBitrate", N_("Audio Bitrate"), N_("Audio Bitrate"), canonMvId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x006e, "AudioSampleRate", N_("Audio Sample Rate"), N_("Audio Sample Rate"), canonMvId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0070, "AudioChannels", N_("Audio Channels"), N_("Audio Channels"), canonMvId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0074, "VideoCodec", N_("Video Codec"), N_("Video Codec"), canonMvId, makerTags, asciiString, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoMv_[] = { + {0x0001, "FrameRate", N_("FrameRate"), N_("FrameRate"), canonMvId, makerTags, unsignedShort, -1, printValue}, + {0x0002, "FrameCount", N_("FrameCount"), N_("FrameCount"), canonMvId, makerTags, unsignedShort, -1, printValue}, + {0x0004, "FrameCount", N_("FrameCount"), N_("FrameCount"), canonMvId, makerTags, unsignedLong, -1, printValue}, + {0x0006, "FrameRate", N_("FrameCount"), N_("FrameCount"), canonMvId, makerTags, unsignedRational, -1, printValue}, + {0x006a, "Duration", N_("Duration"), N_("Duration"), canonMvId, makerTags, unsignedLong, -1, printValue}, + {0x006c, "AudioBitrate", N_("Audio Bitrate"), N_("Audio Bitrate"), canonMvId, makerTags, unsignedLong, -1, printValue}, + {0x006e, "AudioSampleRate", N_("Audio Sample Rate"), N_("Audio Sample Rate"), canonMvId, makerTags, unsignedLong, -1, printValue}, + {0x0070, "AudioChannels", N_("Audio Channels"), N_("Audio Channels"), canonMvId, makerTags, unsignedLong, -1, printValue}, + {0x0074, "VideoCodec", N_("Video Codec"), N_("Video Codec"), canonMvId, makerTags, asciiString, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListMv() @@ -666,7 +666,7 @@ namespace Exiv2 { } // MyColors, tag 0x001d - extern const TagDetails canonMyColors[] = { + constexpr TagDetails canonMyColors[] = { { 0, N_("Off") }, { 1, N_("Positive Film") }, { 2, N_("Light Skin Tone") }, @@ -685,8 +685,8 @@ namespace Exiv2 { // Canon My Colors Info Tag - const TagInfo CanonMakerNote::tagInfoMc_[] = { - TagInfo(0x0002, "MyColorMode", N_("My Color Mode"), N_("My Color Mode"), canonMyColorID, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonMyColors)) + constexpr TagInfo CanonMakerNote::tagInfoMc_[] = { + {0x0002, "MyColorMode", N_("My Color Mode"), N_("My Color Mode"), canonMyColorID, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonMyColors)}, }; const TagInfo* CanonMakerNote::tagListMc() @@ -695,18 +695,18 @@ namespace Exiv2 { } // Canon FaceDetect 1 Info Tag - const TagInfo CanonMakerNote::tagInfoFcd1_[] = { - TagInfo(0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), canonFcd1Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0003, "FacesDetectedFrameSize", N_("Faces Detected Frame Size"), N_("Faces Detected Frame Size"), canonFcd1Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0008, "Face1Position", N_("Face 1 Position"), N_("Face 1 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000a, "Face2Position", N_("Face 2 Position"), N_("Face 2 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000c, "Face3Position", N_("Face 3 Position"), N_("Face 3 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000e, "Face4Position", N_("Face 4 Position"), N_("Face 4 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0010, "Face5Position", N_("Face 5 Position"), N_("Face 5 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0012, "Face6Position", N_("Face 6 Position"), N_("Face 6 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0014, "Face7Position", N_("Face 7 Position"), N_("Face 7 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0016, "Face8Position", N_("Face 8 Position"), N_("Face 8 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0018, "Face9Position", N_("Face 9 Position"), N_("Face 9 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoFcd1_[] = { + {0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), canonFcd1Id, makerTags, unsignedShort, -1, printValue}, + {0x0003, "FacesDetectedFrameSize", N_("Faces Detected Frame Size"), N_("Faces Detected Frame Size"), canonFcd1Id, makerTags, unsignedShort, -1, printValue}, + {0x0008, "Face1Position", N_("Face 1 Position"), N_("Face 1 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x000a, "Face2Position", N_("Face 2 Position"), N_("Face 2 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x000c, "Face3Position", N_("Face 3 Position"), N_("Face 3 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x000e, "Face4Position", N_("Face 4 Position"), N_("Face 4 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x0010, "Face5Position", N_("Face 5 Position"), N_("Face 5 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x0012, "Face6Position", N_("Face 6 Position"), N_("Face 6 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x0014, "Face7Position", N_("Face 7 Position"), N_("Face 7 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x0016, "Face8Position", N_("Face 8 Position"), N_("Face 8 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, + {0x0018, "Face9Position", N_("Face 9 Position"), N_("Face 9 Position"), canonFcd1Id, makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFcd1() @@ -715,9 +715,9 @@ namespace Exiv2 { } // Canon FaceDetect 2 Info Tag - const TagInfo CanonMakerNote::tagInfoFcd2_[] = { - TagInfo(0x0001, "FaceWidth", N_("Face Width"), N_("Faces Width"), canonFcd2Id, makerTags, unsignedByte, -1, printValue), - TagInfo(0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), canonFcd2Id, makerTags, unsignedByte, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoFcd2_[] = { + {0x0001, "FaceWidth", N_("Face Width"), N_("Faces Width"), canonFcd2Id, makerTags, unsignedByte, -1, printValue}, + {0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), canonFcd2Id, makerTags, unsignedByte, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFcd2() @@ -726,7 +726,7 @@ namespace Exiv2 { } // Canon ContrastInfo, tag 0x001d - extern const TagDetails canonContrastInfo[] = { + constexpr TagDetails canonContrastInfo[] = { { 0x0, N_("Off") }, { 0x8, N_("On") }, { 0xfff, N_("n/a") } @@ -734,8 +734,8 @@ namespace Exiv2 { // Canon Contrast Info Tag - const TagInfo CanonMakerNote::tagInfoCo_[] = { - TagInfo(0x0004, "IntelligentContrast", N_("Intelligent Contrast"), N_("Intelligent Contrast"), canonContrastId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonContrastInfo)), + constexpr TagInfo CanonMakerNote::tagInfoCo_[] = { + {0x0004, "IntelligentContrast", N_("Intelligent Contrast"), N_("Intelligent Contrast"), canonContrastId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonContrastInfo)}, }; const TagInfo* CanonMakerNote::tagListCo() @@ -744,17 +744,17 @@ namespace Exiv2 { } // Canon WhiteBalance Info Tag - const TagInfo CanonMakerNote::tagInfoWbi_[] = { - TagInfo(0x0002, "WB_GRGBLevelsAuto", N_("WB_G RGB Levels Auto"), N_("WB_G RGB Levels Auto"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x000a, "WB_GRGBLevelsDaylight", N_("WB_G RGB Levels Daylight"), N_("WB_G RGB Levels Daylight"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0012, "WB_GRGBLevelsCloudy", N_("WB_G RGB Levels Cloudy"), N_("WB_G RGB Levels Cloudy"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001a, "WB_GRGBLevelsTungsten", N_("WB_G RGB Levels Tungsten"), N_("WB_G RGB Levels Tungsten"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0022, "WB_GRGBLevelsFluorescent", N_("WB_G RGB Levels Flourescent"), N_("WB_G RGB Levels Flourescent"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x002a, "WB_GRGBLevelsFluorHigh", N_("WB_G RGB Levels Flourecent High"), N_("WB_G RGB Levels Flourecent High"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0032, "WB_GRGBLevelsFlash", N_("WB_G RGB Levels Flash"), N_("WB_G RGB Levels Flash"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x003a, "WB_GRGBLevelsUnderwater", N_("WB_G RGB Levels Underwater"), N_("WB_G RGB Levels Underwater"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0042, "WB_GRGBLevelsCustom1", N_("WB_G RGB Levels Custom 1"), N_("WB_G RGB Levels Custom 1"), canonWbId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x004a, "WB_GRGBLevelsCustom2", N_("WB_G RGB Levels Custom 2"), N_("WB_G RGB Levels Custom 2"), canonWbId, makerTags, unsignedLong, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoWbi_[] = { + {0x0002, "WB_GRGBLevelsAuto", N_("WB_G RGB Levels Auto"), N_("WB_G RGB Levels Auto"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x000a, "WB_GRGBLevelsDaylight", N_("WB_G RGB Levels Daylight"), N_("WB_G RGB Levels Daylight"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x0012, "WB_GRGBLevelsCloudy", N_("WB_G RGB Levels Cloudy"), N_("WB_G RGB Levels Cloudy"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x001a, "WB_GRGBLevelsTungsten", N_("WB_G RGB Levels Tungsten"), N_("WB_G RGB Levels Tungsten"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x0022, "WB_GRGBLevelsFluorescent", N_("WB_G RGB Levels Flourescent"), N_("WB_G RGB Levels Flourescent"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x002a, "WB_GRGBLevelsFluorHigh", N_("WB_G RGB Levels Flourecent High"), N_("WB_G RGB Levels Flourecent High"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x0032, "WB_GRGBLevelsFlash", N_("WB_G RGB Levels Flash"), N_("WB_G RGB Levels Flash"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x003a, "WB_GRGBLevelsUnderwater", N_("WB_G RGB Levels Underwater"), N_("WB_G RGB Levels Underwater"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x0042, "WB_GRGBLevelsCustom1", N_("WB_G RGB Levels Custom 1"), N_("WB_G RGB Levels Custom 1"), canonWbId, makerTags, unsignedLong, -1, printValue}, + {0x004a, "WB_GRGBLevelsCustom2", N_("WB_G RGB Levels Custom 2"), N_("WB_G RGB Levels Custom 2"), canonWbId, makerTags, unsignedLong, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListWbi() @@ -763,8 +763,8 @@ namespace Exiv2 { } // Canon FaceDetect 3 Info Tag - const TagInfo CanonMakerNote::tagInfoFcd3_[] = { - TagInfo(0x0003, "FacesDetected", N_("Face Detected"), N_("Faces Detected"), canonFcd3Id, makerTags, unsignedShort, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoFcd3_[] = { + {0x0003, "FacesDetected", N_("Face Detected"), N_("Faces Detected"), canonFcd3Id, makerTags, unsignedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFcd3() @@ -774,22 +774,22 @@ namespace Exiv2 { // Canon AFInfo2 Info Tag - const TagInfo CanonMakerNote::tagInfoAf2_[] = { - TagInfo(0x0000, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0001, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), canonAf2Id, makerTags, signedShort, -1, EXV_PRINT_TAG(canonAFAreaMode)), - TagInfo(0x0002, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0003, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0004, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0005, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0006, "AFImageWidth", N_("AF Width"), N_("AF Width"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0007, "AFImageHeight", N_("AF Height"), N_("AF Height"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0008, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0009, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonAf2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), canonAf2Id, makerTags, signedShort, -1,printBitmask), - TagInfo(0x000d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), canonAf2Id, makerTags, signedShort, -1, printBitmask), - TagInfo(0x000e, "AFPrimaryPoint", N_("AF Primary Point"), N_("AF Primary Point"), canonAf2Id, makerTags, signedShort, -1, printBitmask), + constexpr TagInfo CanonMakerNote::tagInfoAf2_[] = { + {0x0000, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0001, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), canonAf2Id, makerTags, signedShort, -1, EXV_PRINT_TAG(canonAFAreaMode)}, + {0x0002, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0003, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0004, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0005, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0006, "AFImageWidth", N_("AF Width"), N_("AF Width"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0007, "AFImageHeight", N_("AF Height"), N_("AF Height"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0008, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x0009, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x000a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x000b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonAf2Id, makerTags, signedShort, -1, printValue}, + {0x000c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), canonAf2Id, makerTags, signedShort, -1,printBitmask}, + {0x000d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), canonAf2Id, makerTags, signedShort, -1, printBitmask}, + {0x000e, "AFPrimaryPoint", N_("AF Primary Point"), N_("AF Primary Point"), canonAf2Id, makerTags, signedShort, -1, printBitmask}, }; const TagInfo* CanonMakerNote::tagListAf2() @@ -799,22 +799,22 @@ namespace Exiv2 { // Canon AFInfo3 Info Tag - const TagInfo CanonMakerNote::tagInfoAf3_[] = { - TagInfo(0x0000, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0001, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), canonAf3Id, makerTags, signedShort, -1, EXV_PRINT_TAG(canonAFAreaMode)), - TagInfo(0x0002, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0003, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0004, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0005, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0006, "AFImageWidth", N_("AF Width"), N_("AF Width"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0007, "AFImageHeight", N_("AF Height"), N_("AF Height"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0008, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0009, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonAf3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), canonAf3Id, makerTags, signedShort, -1,printBitmask), - TagInfo(0x000d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), canonAf3Id, makerTags, signedShort, -1, printBitmask), - TagInfo(0x000e, "AFPrimaryPoint", N_("AF Primary Point"), N_("AF Primary Point"), canonAf3Id, makerTags, signedShort, -1, printBitmask), + constexpr TagInfo CanonMakerNote::tagInfoAf3_[] = { + {0x0000, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0001, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), canonAf3Id, makerTags, signedShort, -1, EXV_PRINT_TAG(canonAFAreaMode)}, + {0x0002, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0003, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0004, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0005, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0006, "AFImageWidth", N_("AF Width"), N_("AF Width"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0007, "AFImageHeight", N_("AF Height"), N_("AF Height"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0008, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x0009, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x000a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x000b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonAf3Id, makerTags, signedShort, -1, printValue}, + {0x000c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), canonAf3Id, makerTags, signedShort, -1,printBitmask}, + {0x000d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), canonAf3Id, makerTags, signedShort, -1, printBitmask}, + {0x000e, "AFPrimaryPoint", N_("AF Primary Point"), N_("AF Primary Point"), canonAf3Id, makerTags, signedShort, -1, printBitmask}, }; const TagInfo* CanonMakerNote::tagListAf3() @@ -823,8 +823,9 @@ namespace Exiv2 { } - // Canon Aspect Info, tag 0x001d - extern const TagDetails canonAspectInfo[] = { + /* + // Canon Aspect Info, tag 0x001d + constexpr TagDetails canonAspectInfo[] = { { 0, N_("3:2") }, { 1, N_("1:1") }, { 2, N_("4:3") }, @@ -833,14 +834,15 @@ namespace Exiv2 { { 12, N_("3:2 (APS-H crop)") }, { 13, N_("3:2 (APS-C crop)") } }; + */ // Canon Aspect Info Tag - const TagInfo CanonMakerNote::tagInfoAs_[] = { - TagInfo(0x0000, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), canonAsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0001, "CroppedImageWidth", N_("Cropped Image Width"), N_("Cropped Image Width"), canonAsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0002, "CroppedImageHeight", N_("Cropped Image Height"), N_("Cropped Image Height"), canonAsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0003, "CroppedImageLeft", N_("Cropped Image Left"), N_("Cropped Image Left"), canonAsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0004, "CroppedImageTop", N_("Cropped Image Top"), N_("Cropped Image Top"), canonAsId, makerTags, unsignedLong, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoAs_[] = { + {0x0000, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), canonAsId, makerTags, unsignedLong, -1, printValue}, + {0x0001, "CroppedImageWidth", N_("Cropped Image Width"), N_("Cropped Image Width"), canonAsId, makerTags, unsignedLong, -1, printValue}, + {0x0002, "CroppedImageHeight", N_("Cropped Image Height"), N_("Cropped Image Height"), canonAsId, makerTags, unsignedLong, -1, printValue}, + {0x0003, "CroppedImageLeft", N_("Cropped Image Left"), N_("Cropped Image Left"), canonAsId, makerTags, unsignedLong, -1, printValue}, + {0x0004, "CroppedImageTop", N_("Cropped Image Top"), N_("Cropped Image Top"), canonAsId, makerTags, unsignedLong, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListAs() @@ -850,17 +852,17 @@ namespace Exiv2 { // Canon Color Balance Info Tag - const TagInfo CanonMakerNote::tagInfoCbi_[] = { - TagInfo(0x0001, "WB_RGGBLevelsAuto", N_("WB_RGGB Levels Auto"), N_("WB_RGGB Levels Auto"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x0005, "WB_RGGBLevelsDaylight", N_("WB_RGGB Levels Daylight"), N_("WB_RGGB Levels Daylight"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x000d, "WB_RGGBLevelsShade", N_("WB_RGGB Levels Shade"), N_("WB_RGGB Levels Shade"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x001a, "WB_RGGBLevelsCloudy", N_("WB_RGGB Levels Cloudy"), N_("WB_RGGB Levels Cloudy"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x0011, "WB_RGGBLevelsTungsten", N_("WB_RGGB Levels Tungsten"), N_("WB_RGGB Levels Tungsten"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x0015, "WB_RGGBLevelsFlourescent", N_("WB_RGGB Levels Flourecent"), N_("WB_RGGB Levels Flourecent"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x001d, "WB_RGGBLevelsCustomBlackLevels", N_("WB_RGGB Levels Custom Black Levels"), N_("WB_RGGB Levels Custom Black Levels"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x0021, "WB_RGGBLevelsKelvin", N_("WB_RGGB Levels Kelvin"), N_("WB_RGGB Levels Kelvin"), canonCbId, makerTags, signedShort, -1, printValue), - TagInfo(0x0025, "WB_RGGBBlackLevels", N_("WB_RGGB Black Levels"), N_("WB_RGGB Black Levels"), canonCbId, makerTags, signedShort, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoCbi_[] = { + {0x0001, "WB_RGGBLevelsAuto", N_("WB_RGGB Levels Auto"), N_("WB_RGGB Levels Auto"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0005, "WB_RGGBLevelsDaylight", N_("WB_RGGB Levels Daylight"), N_("WB_RGGB Levels Daylight"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x000d, "WB_RGGBLevelsShade", N_("WB_RGGB Levels Shade"), N_("WB_RGGB Levels Shade"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x001a, "WB_RGGBLevelsCloudy", N_("WB_RGGB Levels Cloudy"), N_("WB_RGGB Levels Cloudy"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0011, "WB_RGGBLevelsTungsten", N_("WB_RGGB Levels Tungsten"), N_("WB_RGGB Levels Tungsten"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0015, "WB_RGGBLevelsFlourescent", N_("WB_RGGB Levels Flourecent"), N_("WB_RGGB Levels Flourecent"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x001d, "WB_RGGBLevelsCustomBlackLevels", N_("WB_RGGB Levels Custom Black Levels"), N_("WB_RGGB Levels Custom Black Levels"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0021, "WB_RGGBLevelsKelvin", N_("WB_RGGB Levels Kelvin"), N_("WB_RGGB Levels Kelvin"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0025, "WB_RGGBBlackLevels", N_("WB_RGGB Black Levels"), N_("WB_RGGB Black Levels"), canonCbId, makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListCbi() @@ -869,8 +871,8 @@ namespace Exiv2 { } // Canon Flags Tag - const TagInfo CanonMakerNote::tagInfoFl_[] = { - TagInfo(0x0001, "ModifiedParamFlag", N_("Modified Param Flag"), N_("Modified Param Flag"), canonFlId, makerTags, signedShort, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoFl_[] = { + {0x0001, "ModifiedParamFlag", N_("Modified Param Flag"), N_("Modified Param Flag"), canonFlId, makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFl() @@ -879,14 +881,14 @@ namespace Exiv2 { } // Canon Modified ToneCurve Info, tag 0x0001 - extern const TagDetails canonModifiedToneCurve[] = { + constexpr TagDetails canonModifiedToneCurve[] = { { 0, N_("Standard") }, { 1, N_("Manual") }, { 2, N_("Custom") } }; // Canon Modified Sharpness Freq Info, tag 0x0002 - extern const TagDetails canonModifiedSharpnessFreq[] = { + constexpr TagDetails canonModifiedSharpnessFreq[] = { { 0, N_("n/a") }, { 1, N_("Lowest") }, { 2, N_("Low") }, @@ -896,18 +898,18 @@ namespace Exiv2 { }; // Canon ModifiedInfo Tag - const TagInfo CanonMakerNote::tagInfoMo_[] = { - TagInfo(0x0001, "ModifiedToneCurve", N_("Modified ToneCurve"), N_("Modified ToneCurve"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedToneCurve)), - TagInfo(0x0002, "ModifiedSharpness", N_("Modified Sharpness"), N_("Modified Sharpness"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedSharpnessFreq)), - TagInfo(0x0003, "ModifiedSharpnessFreq", N_("Modified Sharpness Freq"), N_("Modified Sharpness Freq"), canonMoID, makerTags, signedShort, -1, printValue), - TagInfo(0x0004, "ModifiedSensorRedLevel", N_("Modified Sensor Red Level"), N_("Modified Sensor Red Level"), canonMoID, makerTags, signedShort, -1, printValue), - TagInfo(0x0005, "ModifiedSensorBlueLevel", N_("Modified Sensor Blue Level"), N_("Modified Sensor Blue Level"), canonMoID, makerTags, signedShort, -1, printValue), - TagInfo(0x0006, "ModifiedWhiteBalanceRed", N_("Modified White Balance Red"), N_("Modified White Balance Red"), canonMoID, makerTags, signedShort, -1, printValue), - TagInfo(0x0007, "ModifiedWhiteBalanceBlue", N_("Modified White Balance Blue"), N_("Modified White Balance Blue"), canonMoID, makerTags, signedShort, -1, printValue), - TagInfo(0x0008, "ModifiedWhiteBalance", N_("Modified White Balance"), N_("Modified White Balance"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonSiWhiteBalance)), - TagInfo(0x0009, "ModifiedColorTemp", N_("Modified Color Temp"), N_("Modified Color Temp"), canonMoID, makerTags, signedShort, -1, printValue), - TagInfo(0x000a, "ModifiedPictureStyle", N_("Modified Picture Style"), N_("Modified Picture Style"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonPictureStyle)), - TagInfo(0x000b, "ModifiedDigitalGain", N_("Modified Param Flag"), N_("Modified Param Flag"), canonMoID, makerTags, signedShort, -1, printValue), + constexpr TagInfo CanonMakerNote::tagInfoMo_[] = { + {0x0001, "ModifiedToneCurve", N_("Modified ToneCurve"), N_("Modified ToneCurve"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedToneCurve)}, + {0x0002, "ModifiedSharpness", N_("Modified Sharpness"), N_("Modified Sharpness"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedSharpnessFreq)}, + {0x0003, "ModifiedSharpnessFreq", N_("Modified Sharpness Freq"), N_("Modified Sharpness Freq"), canonMoID, makerTags, signedShort, -1, printValue}, + {0x0004, "ModifiedSensorRedLevel", N_("Modified Sensor Red Level"), N_("Modified Sensor Red Level"), canonMoID, makerTags, signedShort, -1, printValue}, + {0x0005, "ModifiedSensorBlueLevel", N_("Modified Sensor Blue Level"), N_("Modified Sensor Blue Level"), canonMoID, makerTags, signedShort, -1, printValue}, + {0x0006, "ModifiedWhiteBalanceRed", N_("Modified White Balance Red"), N_("Modified White Balance Red"), canonMoID, makerTags, signedShort, -1, printValue}, + {0x0007, "ModifiedWhiteBalanceBlue", N_("Modified White Balance Blue"), N_("Modified White Balance Blue"), canonMoID, makerTags, signedShort, -1, printValue}, + {0x0008, "ModifiedWhiteBalance", N_("Modified White Balance"), N_("Modified White Balance"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0009, "ModifiedColorTemp", N_("Modified Color Temp"), N_("Modified Color Temp"), canonMoID, makerTags, signedShort, -1, printValue}, + {0x000a, "ModifiedPictureStyle", N_("Modified Picture Style"), N_("Modified Picture Style"), canonMoID, makerTags, signedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x000b, "ModifiedDigitalGain", N_("Modified Param Flag"), N_("Modified Param Flag"), canonMoID, makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListMo() @@ -916,7 +918,7 @@ namespace Exiv2 { } // Canon Preview Quality Info, tag 0x0001 - extern const TagDetails canonPreviewQuality[] = { + constexpr TagDetails canonPreviewQuality[] = { { -1, N_("n/a") }, { 1, N_("Economy") }, { 2, N_("Normal") }, @@ -929,12 +931,12 @@ namespace Exiv2 { }; // Canon Preview Image Info Tag - const TagInfo CanonMakerNote::tagInfoPreI_[] = { - TagInfo(0x0001, "PreviewQuality", N_("Preview Quality"), N_("Preview Quality"), canonPreID, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonPreviewQuality)), - TagInfo(0x0002, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), canonPreID, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0003, "PreviewImageWidth", N_("Preview Image Width"), N_("Preview Image Width"), canonPreID, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0004, "PreviewImageHeight", N_("Preview Image Height"), N_("Preview Image Height"), canonPreID, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0005, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), canonPreID, makerTags, unsignedLong, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoPreI_[] = { + {0x0001, "PreviewQuality", N_("Preview Quality"), N_("Preview Quality"), canonPreID, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonPreviewQuality)}, + {0x0002, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), canonPreID, makerTags, unsignedLong, -1, printValue}, + {0x0003, "PreviewImageWidth", N_("Preview Image Width"), N_("Preview Image Width"), canonPreID, makerTags, unsignedLong, -1, printValue}, + {0x0004, "PreviewImageHeight", N_("Preview Image Height"), N_("Preview Image Height"), canonPreID, makerTags, unsignedLong, -1, printValue}, + {0x0005, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), canonPreID, makerTags, unsignedLong, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListPreI() @@ -943,10 +945,10 @@ namespace Exiv2 { } // Canon Color Info Tag - const TagInfo CanonMakerNote::tagInfoCi_[] = { - TagInfo(0x0001, "Saturation", N_("Saturation"), N_("Saturation"), canonCiId, makerTags, signedShort, -1, printValue), - TagInfo(0x0002, "ColorTone", N_("Color Tone"), N_("Color Tone"), canonCiId, makerTags, signedShort, -1, printValue), - TagInfo(0x0003, "ColorSpace", N_("Color Space"), N_("Color Space"), canonCiId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonColorSpace)) + constexpr TagInfo CanonMakerNote::tagInfoCi_[] = { + {0x0001, "Saturation", N_("Saturation"), N_("Saturation"), canonCiId, makerTags, signedShort, -1, printValue}, + {0x0002, "ColorTone", N_("Color Tone"), N_("Color Tone"), canonCiId, makerTags, signedShort, -1, printValue}, + {0x0003, "ColorSpace", N_("Color Space"), N_("Color Space"), canonCiId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonColorSpace)}, }; const TagInfo* CanonMakerNote::tagListCi() @@ -955,7 +957,7 @@ namespace Exiv2 { } // Canon AFMicroAdjMode Quality Info, tag 0x0001 - extern const TagDetails canonAFMicroAdjMode[] = { + constexpr TagDetails canonAFMicroAdjMode[] = { { 0, N_("Disable") }, { 1, N_("Adjust all by the same amount") }, { 2, N_("Adjust by lens") } @@ -963,9 +965,9 @@ namespace Exiv2 { // Canon AFMicroAdj Info Tag - const TagInfo CanonMakerNote::tagInfoAfMiAdj_[] = { - TagInfo(0x0001, "AFMicroAdjMode", N_("AFMicroAdjMode"), N_("AFMicroAdjMode"), canonAfMiAdjId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFMicroAdjMode)), - TagInfo(0x0002, "AFMicroAdjValue", N_("AF Micro Adj Value"), N_("AF Micro Adj Value"), canonAfMiAdjId, makerTags, signedRational, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoAfMiAdj_[] = { + {0x0001, "AFMicroAdjMode", N_("AFMicroAdjMode"), N_("AFMicroAdjMode"), canonAfMiAdjId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFMicroAdjMode)}, + {0x0002, "AFMicroAdjValue", N_("AF Micro Adj Value"), N_("AF Micro Adj Value"), canonAfMiAdjId, makerTags, signedRational, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListAfMiAdj() @@ -975,16 +977,16 @@ namespace Exiv2 { // Canon VignettingCorr Tag - const TagInfo CanonMakerNote::tagInfoVigCor_[] = { - TagInfo(0x0000, "VignettingCorrVersion", N_("Vignetting Corr Version"), N_("Vignetting Corr Version"), canonVigCorId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0002, "PeripheralLighting", N_("Peripheral Lighting"), N_("Peripheral Lighting"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0003, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion Correction"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0004, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0005, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0006, "PeripheralLightingValue", N_("Peripheral Lighting Value"), N_("Peripheral Lighting Value"), canonVigCorId, makerTags, signedShort, -1, printValue), - TagInfo(0x0009, "DistortionCorrectionValue", N_("Distortion Correction Value"), N_("Distortion Correction Value"), canonVigCorId, makerTags, signedShort, -1, printValue), - TagInfo(0x000b, "OriginalImageWidth", N_("Original Image Width"), N_("Original Image Width"), canonVigCorId, makerTags, signedShort, -1, printValue), - TagInfo(0x000c, "OriginalImageHeight", N_("Original Image Height"), N_("Original Image Height"), canonVigCorId, makerTags, signedShort, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoVigCor_[] = { + {0x0000, "VignettingCorrVersion", N_("Vignetting Corr Version"), N_("Vignetting Corr Version"), canonVigCorId, makerTags, unsignedShort, -1, printValue}, + {0x0002, "PeripheralLighting", N_("Peripheral Lighting"), N_("Peripheral Lighting"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0003, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion Correction"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0004, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0005, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), canonVigCorId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0006, "PeripheralLightingValue", N_("Peripheral Lighting Value"), N_("Peripheral Lighting Value"), canonVigCorId, makerTags, signedShort, -1, printValue}, + {0x0009, "DistortionCorrectionValue", N_("Distortion Correction Value"), N_("Distortion Correction Value"), canonVigCorId, makerTags, signedShort, -1, printValue}, + {0x000b, "OriginalImageWidth", N_("Original Image Width"), N_("Original Image Width"), canonVigCorId, makerTags, signedShort, -1, printValue}, + {0x000c, "OriginalImageHeight", N_("Original Image Height"), N_("Original Image Height"), canonVigCorId, makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListVigCor() @@ -993,10 +995,10 @@ namespace Exiv2 { } // Canon VignettingCorr2 Tag - const TagInfo CanonMakerNote::tagInfoVigCor2_[] = { - TagInfo(0x0005, "PeripheralLightingSetting", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0006, "ChromaticAberrationSetting", N_("Chromatic Aberration Setting"), N_("Chromatic Aberration Setting"), canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0007, "DistortionCorrectionSetting", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)) + constexpr TagInfo CanonMakerNote::tagInfoVigCor2_[] = { + {0x0005, "PeripheralLightingSetting", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0006, "ChromaticAberrationSetting", N_("Chromatic Aberration Setting"), N_("Chromatic Aberration Setting"), canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0007, "DistortionCorrectionSetting", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, }; const TagInfo* CanonMakerNote::tagListVigCor2() @@ -1005,7 +1007,7 @@ namespace Exiv2 { } // Canon AutoLightingOptimizer, tag 0x0002 - extern const TagDetails canonAutoLightingOptimizer[] = { + constexpr TagDetails canonAutoLightingOptimizer[] = { { 0, N_("Standard") }, { 1, N_("Low") }, { 2, N_("Strong") }, @@ -1013,14 +1015,14 @@ namespace Exiv2 { }; // Canon HighISONoiseReduction, tag 0x0004 - extern const TagDetails canonLongExposureNoiseReduction[] = { + constexpr TagDetails canonLongExposureNoiseReduction[] = { { 0, N_("Off") }, { 1, N_("Auto") }, { 2, N_("On") } }; // Canon HighISONoiseReduction, tag 0x0005 - extern const TagDetails canonHighISONoiseReduction[] = { + constexpr TagDetails canonHighISONoiseReduction[] = { { 0, N_("Standard") }, { 1, N_("Low") }, { 2, N_("Strong") }, @@ -1028,12 +1030,12 @@ namespace Exiv2 { }; // Canon LightingOpt Tag - const TagInfo CanonMakerNote::tagInfoLiOp_[] = { - TagInfo(0x0001, "PeripheralIlluminationCorr", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0002, "AutoLightingOptimizer", N_("Chromatic Aberration Setting"), N_("Chromatic Aberration Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAutoLightingOptimizer)), - TagInfo(0x0003, "HighlightTonePriority", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0004, "LongExposureNoiseReduction", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonLongExposureNoiseReduction)), - TagInfo(0x0005, "HighISONoiseReduction", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHighISONoiseReduction)) + constexpr TagInfo CanonMakerNote::tagInfoLiOp_[] = { + {0x0001, "PeripheralIlluminationCorr", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0002, "AutoLightingOptimizer", N_("Chromatic Aberration Setting"), N_("Chromatic Aberration Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAutoLightingOptimizer)}, + {0x0003, "HighlightTonePriority", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0004, "LongExposureNoiseReduction", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonLongExposureNoiseReduction)}, + {0x0005, "HighISONoiseReduction", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHighISONoiseReduction)}, }; const TagInfo* CanonMakerNote::tagListLiOp() @@ -1042,8 +1044,8 @@ namespace Exiv2 { } // Canon LensInfo Tag - const TagInfo CanonMakerNote::tagInfoLe_[] = { - TagInfo(0x0000, "LensSerialNumber", N_("Lens Seria lNumber"), N_("Lens Serial Number"), canonLeId, makerTags, asciiString, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoLe_[] = { + {0x0000, "LensSerialNumber", N_("Lens Seria lNumber"), N_("Lens Serial Number"), canonLeId, makerTags, asciiString, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListLe() @@ -1053,7 +1055,7 @@ namespace Exiv2 { // Canon AmbienceSelection, tag 0x0001 - extern const TagDetails canonAmbienceSelection[] = { + constexpr TagDetails canonAmbienceSelection[] = { { 0, N_("Standard") }, { 1, N_("Vivid") }, { 2, N_("Warm") }, @@ -1067,8 +1069,8 @@ namespace Exiv2 { // Canon Ambience Tag - const TagInfo CanonMakerNote::tagInfoAm_[] = { - TagInfo(0x0001, "AmbienceSelection", N_("Ambience Selection"), N_("Ambience Selection"), canonAmId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAmbienceSelection)) + constexpr TagInfo CanonMakerNote::tagInfoAm_[] = { + {0x0001, "AmbienceSelection", N_("Ambience Selection"), N_("Ambience Selection"), canonAmId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAmbienceSelection)}, }; const TagInfo* CanonMakerNote::tagListAm() @@ -1077,14 +1079,14 @@ namespace Exiv2 { } // Canon MultiExposure, tag 0x0001 - extern const TagDetails canonMultiExposure[] = { + constexpr TagDetails canonMultiExposure[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("On (RAW)") } }; // Canon MultiExposureControl, tag 0x0001 - extern const TagDetails canonMultiExposureControl[] = { + constexpr TagDetails canonMultiExposureControl[] = { { 0, N_("Additive") }, { 1, N_("Average") }, { 2, N_("Bright (comparative)") }, @@ -1092,10 +1094,10 @@ namespace Exiv2 { }; // Canon MultiExp Tag - const TagInfo CanonMakerNote::tagInfoMe_[] = { - TagInfo(0x0001, "MultiExposure", N_("Multi Exposure"), N_("Multi Exposure"), canonMeId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)), - TagInfo(0x0002, "MultiExposureControl", N_("Multi Exposure Control"), N_("Multi Exposure Control"), canonMeId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposureControl)), - TagInfo(0x0003, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi Exposure Shots"), canonMeId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)) + constexpr TagInfo CanonMakerNote::tagInfoMe_[] = { + {0x0001, "MultiExposure", N_("Multi Exposure"), N_("Multi Exposure"), canonMeId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)}, + {0x0002, "MultiExposureControl", N_("Multi Exposure Control"), N_("Multi Exposure Control"), canonMeId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposureControl)}, + {0x0003, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi Exposure Shots"), canonMeId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)}, }; const TagInfo* CanonMakerNote::tagListMe() @@ -1104,28 +1106,28 @@ namespace Exiv2 { } // Canon FilterInfo, tag 0x0001 - extern const TagDetails canonFilterInfo[] = { + constexpr TagDetails canonFilterInfo[] = { { -1, N_("Off") } }; // Canon MiniatureFilterOrientation, tag 0x0001 - extern const TagDetails canonMiniatureFilterOrientation[] = { + constexpr TagDetails canonMiniatureFilterOrientation[] = { { 0, N_("Horizontal") }, { 1, N_("Vertical") } }; // Canon Filter Info Tag - const TagInfo CanonMakerNote::tagInfoFil_[] = { - TagInfo(0x0101, "GrainyBWFilter", N_("Grainy BW Filter"), N_("Grainy BW Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)), - TagInfo(0x0201, "SoftFocusFilter", N_("Soft Focus Filter"), N_("Soft Focus Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)), - TagInfo(0x0301, "ToyCameraFilter", N_("Toy Camera Filter"), N_("Toy Camera Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)), - TagInfo(0x0401, "MiniatureFilter", N_("Miniature Filter"), N_("Miniature Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)), - TagInfo(0x0402, "MiniatureFilterOrientation", N_("Miniature Filter Orientation"), N_("Miniature Filter Orientation"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonMiniatureFilterOrientation)), - TagInfo(0x0403, "MiniatureFilterPosition", N_("Miniature Filter Position"), N_("Miniature Filter Position"), canonFilId, makerTags, asciiString, -1, printValue), - TagInfo(0x0404, "MiniatureFilterParameter", N_("Miniature Filter Parameter"), N_("Miniature Filter Parameter"), canonFilId, makerTags, asciiString, -1, printValue), - TagInfo(0x0501, "FisheyeFilter", N_("Fisheye Filter"), N_("Fisheye Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)), - TagInfo(0x0601, "PaintingFilter", N_("Painting Filter"), N_("Painting Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)), - TagInfo(0x0701, "WatercolorFilter", N_("Watercolor Filter"), N_("Watercolor Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)) + constexpr TagInfo CanonMakerNote::tagInfoFil_[] = { + {0x0101, "GrainyBWFilter", N_("Grainy BW Filter"), N_("Grainy BW Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0201, "SoftFocusFilter", N_("Soft Focus Filter"), N_("Soft Focus Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0301, "ToyCameraFilter", N_("Toy Camera Filter"), N_("Toy Camera Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0401, "MiniatureFilter", N_("Miniature Filter"), N_("Miniature Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0402, "MiniatureFilterOrientation", N_("Miniature Filter Orientation"), N_("Miniature Filter Orientation"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonMiniatureFilterOrientation)}, + {0x0403, "MiniatureFilterPosition", N_("Miniature Filter Position"), N_("Miniature Filter Position"), canonFilId, makerTags, asciiString, -1, printValue}, + {0x0404, "MiniatureFilterParameter", N_("Miniature Filter Parameter"), N_("Miniature Filter Parameter"), canonFilId, makerTags, asciiString, -1, printValue}, + {0x0501, "FisheyeFilter", N_("Fisheye Filter"), N_("Fisheye Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0601, "PaintingFilter", N_("Painting Filter"), N_("Painting Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0701, "WatercolorFilter", N_("Watercolor Filter"), N_("Watercolor Filter"), canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, }; @@ -1136,14 +1138,14 @@ namespace Exiv2 { // Canon HDR, tag 0x0001 - extern const TagDetails canonHdr[] = { + constexpr TagDetails canonHdr[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("On (RAW") } }; // Canon HDREffect, tag 0x0001 - extern const TagDetails canonHdrEffect[] = { + constexpr TagDetails canonHdrEffect[] = { { 0, N_("Natural") }, { 1, N_("Art (standard)") }, { 2, N_("Art (vivid)") }, @@ -1152,9 +1154,9 @@ namespace Exiv2 { }; // Canon HDR Info Tag - const TagInfo CanonMakerNote::tagInfoHdr_[] = { - TagInfo(0x0001, "HDR", N_("HDR"), N_("HDR"), canonHdrId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHdr)), - TagInfo(0x0002, "HDREffect", N_("HDR Effect"), N_("HDR Effect"), canonHdrId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHdrEffect)) + constexpr TagInfo CanonMakerNote::tagInfoHdr_[] = { + {0x0001, "HDR", N_("HDR"), N_("HDR"), canonHdrId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHdr)}, + {0x0002, "HDREffect", N_("HDR Effect"), N_("HDR Effect"), canonHdrId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHdrEffect)}, }; @@ -1164,14 +1166,14 @@ namespace Exiv2 { } // Canon AIServoFirstImage, tag 0x0001 - extern const TagDetails canonAIServoFirstImage[] = { + constexpr TagDetails canonAIServoFirstImage[] = { { 0, N_("Equal Priority") }, { 1, N_("Release Priority") }, { 2, N_("Focus Priority") } }; // Canon AIServoSecondImage, tag 0x0001 - extern const TagDetails canonAIServoSecondImage[] = { + constexpr TagDetails canonAIServoSecondImage[] = { { 0, N_("Equal Priority") }, { 1, N_("Release Priority") }, { 2, N_("Focus Priority") }, @@ -1180,39 +1182,39 @@ namespace Exiv2 { }; // Canon USMLensElectronicMF, tag 0x0001 - extern const TagDetails canonUSMLensElectronicMF[] = { + constexpr TagDetails canonUSMLensElectronicMF[] = { { 0, N_("Enable After AF") }, { 1, N_("Disable After AF") }, { 2, N_("Disable in AF Mode") } }; // Canon AFAssistBeam, tag 0x0001 - extern const TagDetails canonAFAssistBeam[] = { + constexpr TagDetails canonAFAssistBeam[] = { { 0, N_("Enable") }, { 1, N_("Disable") }, { 2, N_("IR AF Assist Beam Mode") } }; // Canon OneShotAFRelease, tag 0x0001 - extern const TagDetails canonOneShotAFRelease[] = { + constexpr TagDetails canonOneShotAFRelease[] = { { 0, N_("Focus Priority") }, { 1, N_("Release Priortiy") } }; // Canon AutoAFPointSelEOSiTRAF, tag 0x0001 - extern const TagDetails canonAutoAFPointSelEOSiTRAF[] = { + constexpr TagDetails canonAutoAFPointSelEOSiTRAF[] = { { 0, N_("Enable") }, { 1, N_("Disable") } }; // Canon LensDriveWhenAFImpossible, tag 0x0001 - extern const TagDetails canonLensDriveWhenAFImpossible[] = { + constexpr TagDetails canonLensDriveWhenAFImpossible[] = { { 0, N_("Continue Focus Search") }, { 1, N_("Stop Focus Search") } }; // Canon SelectAFAreaSelectionMode, tag 0x0001 - extern const TagDetails canonSelectAFAreaSelectionMode[] = { + constexpr TagDetails canonSelectAFAreaSelectionMode[] = { { 0, N_("Single-Point-AF") }, { 1, N_("Auto") }, { 2, N_("Zone AF") }, @@ -1222,26 +1224,26 @@ namespace Exiv2 { }; // Canon AFAreaSelectionMethod, tag 0x0001 - extern const TagDetails canonAFAreaSelectionMethod[] = { + constexpr TagDetails canonAFAreaSelectionMethod[] = { { 0, N_("M-Fn Button") }, { 1, N_("Main Dial") } }; // Canon OrientationLinkedAF, tag 0x0001 - extern const TagDetails canonOrientationLinkedAF[] = { + constexpr TagDetails canonOrientationLinkedAF[] = { { 0, N_("Same for Vert/Horiz Points") }, { 1, N_("Separate for Vert/Horiz Points") }, { 2, N_("Separate Area+Points") } }; // Canon ManualAFPointSelPattern, tag 0x0001 - extern const TagDetails canonManualAFPointSelPattern[] = { + constexpr TagDetails canonManualAFPointSelPattern[] = { { 0, N_("Stops at AF Area Edges") }, { 1, N_("Continous") } }; // Canon AFPointDisplayDuringFocus, tag 0x0001 - extern const TagDetails canonAFPointDisplayDuringFocus[] = { + constexpr TagDetails canonAFPointDisplayDuringFocus[] = { { 0, N_("Selected (constant)") }, { 1, N_("All (constant)") }, { 1, N_("Selected (pre-AF, focused)") }, @@ -1250,47 +1252,47 @@ namespace Exiv2 { }; // Canon VFDisplayIllumination, tag 0x0001 - extern const TagDetails canonAVFDisplayIllumination[] = { + constexpr TagDetails canonAVFDisplayIllumination[] = { { 0, N_("Auto") }, { 1, N_("Enable") }, { 2, N_("Disable") }, }; // Canon AFStatusViewfinder, tag 0x0001 - extern const TagDetails canonAFStatusViewfinder[] = { + constexpr TagDetails canonAFStatusViewfinder[] = { { 0, N_("Auto") }, { 1, N_("Enable") }, { 2, N_("Disable") }, }; // Canon InitialAFPointInServo, tag 0x0001 - extern const TagDetails canonInitialAFPointInServo[] = { + constexpr TagDetails canonInitialAFPointInServo[] = { { 0, N_("Initial AF Point Selected") }, { 1, N_("Manual AF Point") }, { 2, N_("Auto") }, }; //Canon AFConfig Tags - const TagInfo CanonMakerNote::tagInfoAfC_[] = { - TagInfo(0x0001, "AFConfigTool", N_("AF Config Tool"), N_("AF Config Tool"), canonAfCId, makerTags, signedLong, -1, printValue), - TagInfo(0x0002, "AFTrackingSensitivity", N_("AF Tracking Sensitivity"), N_("AFTrackingSensitivity"), canonAfCId, makerTags, signedLong, -1, printValue), - TagInfo(0x0003, "AFAccelDecelTracking", N_("AF Accel Decel Tracking"), N_("AF Accel Decel Tracking"), canonAfCId, makerTags, signedLong, -1, printValue), - TagInfo(0x0004, "AFPointSwitching", N_("AF PointS witching"), N_("AF Point Switching"), canonAfCId, makerTags, signedLong, -1, printValue), - TagInfo(0x0005, "AIServoFirstImage", N_("AI Servo First Image"), N_("AI Servo First Image"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAIServoFirstImage)), - TagInfo(0x0006, "AIServoSecondImage", N_("AI Servo Second Image"), N_("AI Servo Second Image"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAIServoSecondImage)), - TagInfo(0x0007, "USMLensElectronicMF", N_("USM Lens Electronic MF"), N_("USM Lens Electronic MF"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonUSMLensElectronicMF)), - TagInfo(0x0008, "AFAssistBeam", N_("AF Assist Beam"), N_("AF Assist Beam"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFAssistBeam)), - TagInfo(0x0009, "OneShotAFRelease", N_("One Shot AF Release"), N_("One Shot AF Release"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOneShotAFRelease)), - TagInfo(0x000a, "AutoAFPointSelEOSiTRAF", N_("Auto AF Point Sel EOS iTRAF"), N_("Auto AF Point Sel EOS iTRAF"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAutoAFPointSelEOSiTRAF)), - TagInfo(0x000b, "LensDriveWhenAFImpossible", N_("Lens Drive When AF Impossible"), N_("Lens Drive When AF Impossible"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonLensDriveWhenAFImpossible)), - TagInfo(0x000c, "SelectAFAreaSelectionMode", N_("Select AF Area Selection Mode"), N_("Select AF Area Selection Mode"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonSelectAFAreaSelectionMode)), - TagInfo(0x000d, "AFAreaSelectionMethod", N_("AF Area Selection Method"), N_("AF Area Selection Method"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFAreaSelectionMethod)), - TagInfo(0x000e, "OrientationLinkedAF", N_("Orientation Linked AF"), N_("Orientation Linked AF"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOrientationLinkedAF)), - TagInfo(0x000f, "ManualAFPointSelPattern", N_("Manual AF Point Sel Pattern"), N_("Manual AF Point Sel Pattern"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonManualAFPointSelPattern)), - TagInfo(0x0010, "AFPointDisplayDuringFocus", N_("AF Point Display During Focus"), N_("AF Point Display During Focus"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFPointDisplayDuringFocus)), - TagInfo(0x0011, "VFDisplayIllumination", N_("VF Display Illumination"), N_("VF Display Illumination"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAVFDisplayIllumination)), - TagInfo(0x0012, "AFStatusViewfinder", N_("AF Status Viewfinder"), N_("AF Status Viewfinder"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFStatusViewfinder)), - TagInfo(0x0013, "InitialAFPointInServo", N_("Initial AF Point In Servo"), N_("Initial AF Point In Servo"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonInitialAFPointInServo)), + constexpr TagInfo CanonMakerNote::tagInfoAfC_[] = { + {0x0001, "AFConfigTool", N_("AF Config Tool"), N_("AF Config Tool"), canonAfCId, makerTags, signedLong, -1, printValue}, + {0x0002, "AFTrackingSensitivity", N_("AF Tracking Sensitivity"), N_("AFTrackingSensitivity"), canonAfCId, makerTags, signedLong, -1, printValue}, + {0x0003, "AFAccelDecelTracking", N_("AF Accel Decel Tracking"), N_("AF Accel Decel Tracking"), canonAfCId, makerTags, signedLong, -1, printValue}, + {0x0004, "AFPointSwitching", N_("AF PointS witching"), N_("AF Point Switching"), canonAfCId, makerTags, signedLong, -1, printValue}, + {0x0005, "AIServoFirstImage", N_("AI Servo First Image"), N_("AI Servo First Image"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAIServoFirstImage)}, + {0x0006, "AIServoSecondImage", N_("AI Servo Second Image"), N_("AI Servo Second Image"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAIServoSecondImage)}, + {0x0007, "USMLensElectronicMF", N_("USM Lens Electronic MF"), N_("USM Lens Electronic MF"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonUSMLensElectronicMF)}, + {0x0008, "AFAssistBeam", N_("AF Assist Beam"), N_("AF Assist Beam"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFAssistBeam)}, + {0x0009, "OneShotAFRelease", N_("One Shot AF Release"), N_("One Shot AF Release"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOneShotAFRelease)}, + {0x000a, "AutoAFPointSelEOSiTRAF", N_("Auto AF Point Sel EOS iTRAF"), N_("Auto AF Point Sel EOS iTRAF"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAutoAFPointSelEOSiTRAF)}, + {0x000b, "LensDriveWhenAFImpossible", N_("Lens Drive When AF Impossible"), N_("Lens Drive When AF Impossible"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonLensDriveWhenAFImpossible)}, + {0x000c, "SelectAFAreaSelectionMode", N_("Select AF Area Selection Mode"), N_("Select AF Area Selection Mode"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonSelectAFAreaSelectionMode)}, + {0x000d, "AFAreaSelectionMethod", N_("AF Area Selection Method"), N_("AF Area Selection Method"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFAreaSelectionMethod)}, + {0x000e, "OrientationLinkedAF", N_("Orientation Linked AF"), N_("Orientation Linked AF"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOrientationLinkedAF)}, + {0x000f, "ManualAFPointSelPattern", N_("Manual AF Point Sel Pattern"), N_("Manual AF Point Sel Pattern"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonManualAFPointSelPattern)}, + {0x0010, "AFPointDisplayDuringFocus", N_("AF Point Display During Focus"), N_("AF Point Display During Focus"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFPointDisplayDuringFocus)}, + {0x0011, "VFDisplayIllumination", N_("VF Display Illumination"), N_("VF Display Illumination"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAVFDisplayIllumination)}, + {0x0012, "AFStatusViewfinder", N_("AF Status Viewfinder"), N_("AF Status Viewfinder"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFStatusViewfinder)}, + {0x0013, "InitialAFPointInServo", N_("Initial AF Point In Servo"), N_("Initial AF Point In Servo"), canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonInitialAFPointInServo)}, }; const TagInfo* CanonMakerNote::tagListAfC() @@ -1301,9 +1303,9 @@ namespace Exiv2 { // Canon RawBurstInfo Info Tag - const TagInfo CanonMakerNote::tagInfoRawB_[] = { - TagInfo(0x0001, "RawBurstImageNum", N_("Raw Burst Image Num"), N_("Raw Burst Image Num"), canonRawBId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0002, "RawBurstImageCount", N_("Raw Burst Image Count"), N_("Raw Burst Image Count"), canonRawBId, makerTags, unsignedLong, -1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoRawB_[] = { + {0x0001, "RawBurstImageNum", N_("Raw Burst Image Num"), N_("Raw Burst Image Num"), canonRawBId, makerTags, unsignedLong, -1, printValue}, + {0x0002, "RawBurstImageCount", N_("Raw Burst Image Count"), N_("Raw Burst Image Count"), canonRawBId, makerTags, unsignedLong, -1, printValue} }; const TagInfo* CanonMakerNote::tagListRawB() @@ -1312,13 +1314,13 @@ namespace Exiv2 { } //! Macro, tag 0x0001 - extern const TagDetails canonCsMacro[] = { + constexpr TagDetails canonCsMacro[] = { { 1, N_("On") }, { 2, N_("Off") } }; //! Quality, tag 0x0003 - extern const TagDetails canonCsQuality[] = { + constexpr TagDetails canonCsQuality[] = { { -1, N_("n/a") }, { 1, N_("Economy") }, { 2, N_("Normal") }, @@ -1331,7 +1333,7 @@ namespace Exiv2 { }; //! FlashMode, tag 0x0004 - extern const TagDetails canonCsFlashMode[] = { + constexpr TagDetails canonCsFlashMode[] = { { 0, N_("Off") }, { 1, N_("Auto") }, { 2, N_("On") }, @@ -1344,7 +1346,7 @@ namespace Exiv2 { }; //! DriveMode, tag 0x0005 - extern const TagDetails canonCsDriveMode[] = { + constexpr TagDetails canonCsDriveMode[] = { { 0, N_("Single / timer") }, { 1, N_("Continuous") }, { 2, N_("Movie") }, @@ -1358,7 +1360,7 @@ namespace Exiv2 { }; //! FocusMode, tag 0x0007 - extern const TagDetails canonCsFocusMode[] = { + constexpr TagDetails canonCsFocusMode[] = { { 0, N_("One shot AF") }, { 1, N_("AI servo AF") }, { 2, N_("AI focus AF") }, @@ -1374,7 +1376,7 @@ namespace Exiv2 { }; //! RecordMode, tag 0x0009 - extern const TagDetails canonCsRecordMode[] = { + constexpr TagDetails canonCsRecordMode[] = { { 1, N_("JPEG") }, { 2, N_("CRW+THM") }, { 3, N_("AVI+THM") }, @@ -1392,7 +1394,7 @@ namespace Exiv2 { }; //! ImageSize, tag 0x000a - extern const TagDetails canonCsImageSize[] = { + constexpr TagDetails canonCsImageSize[] = { { 0, N_("Large") }, { 1, N_("Medium") }, { 2, N_("Small") }, @@ -1413,7 +1415,7 @@ namespace Exiv2 { }; //! EasyMode, tag 0x000b - extern const TagDetails canonCsEasyMode[] = { + constexpr TagDetails canonCsEasyMode[] = { { 0, N_("Full auto") }, { 1, N_("Manual") }, { 2, N_("Landscape") }, @@ -1488,7 +1490,7 @@ namespace Exiv2 { }; //! DigitalZoom, tag 0x000c - extern const TagDetails canonCsDigitalZoom[] = { + constexpr TagDetails canonCsDigitalZoom[] = { { 0, N_("None") }, { 1, "2x" }, { 2, "4x" }, @@ -1497,14 +1499,14 @@ namespace Exiv2 { }; //! Contrast, Saturation Sharpness, tags 0x000d, 0x000e, 0x000f - extern const TagDetails canonCsLnh[] = { + constexpr TagDetails canonCsLnh[] = { { 0xffff, N_("Low") }, { 0x0000, N_("Normal") }, { 0x0001, N_("High") } }; //! ISOSpeeds, tag 0x0010 - extern const TagDetails canonCsISOSpeed[] = { + constexpr TagDetails canonCsISOSpeed[] = { { 0, N_("n/a") }, { 14, N_("Auto High") }, { 15, N_("Auto") }, @@ -1546,7 +1548,7 @@ namespace Exiv2 { }; //! MeteringMode, tag 0x0011 - extern const TagDetails canonCsMeteringMode[] = { + constexpr TagDetails canonCsMeteringMode[] = { { 0, N_("Default") }, { 1, N_("Spot") }, { 2, N_("Average") }, @@ -1556,7 +1558,7 @@ namespace Exiv2 { }; //! FocusType, tag 0x0012 - extern const TagDetails canonCsFocusType[] = { + constexpr TagDetails canonCsFocusType[] = { { 0, N_("Manual") }, { 1, N_("Auto") }, { 2, N_("Not known") }, @@ -1571,7 +1573,7 @@ namespace Exiv2 { }; //! AFPoint, tag 0x0013 - extern const TagDetails canonCsAfPoint[] = { + constexpr TagDetails canonCsAfPoint[] = { { 0x2005, N_("Manual AF point selection") }, { 0x3000, N_("None (MF)") }, { 0x3001, N_("Auto-selected") }, @@ -1583,7 +1585,7 @@ namespace Exiv2 { }; //! ExposureProgram, tag 0x0014 - extern const TagDetails canonCsExposureProgram[] = { + constexpr TagDetails canonCsExposureProgram[] = { { 0, N_("Easy shooting (Auto)") }, { 1, N_("Program (P)") }, { 2, N_("Shutter priority (Tv)") }, @@ -1595,7 +1597,7 @@ namespace Exiv2 { }; //! LensType, tag 0x0016 - extern const TagDetails canonCsLensType[] = { + constexpr TagDetails canonCsLensType[] = { { -1, "n/a" }, { 1, "Canon EF 50mm f/1.8" }, { 2, "Canon EF 28mm f/2.8" }, @@ -2145,13 +2147,13 @@ namespace Exiv2 { }; //! FlashActivity, tag 0x001c - extern const TagDetails canonCsFlashActivity[] = { + constexpr TagDetails canonCsFlashActivity[] = { { 0, N_("Did not fire") }, { 1, N_("Fired") } }; //! FlashDetails, tag 0x001d - extern const TagDetailsBitmask canonCsFlashDetails[] = { + constexpr TagDetailsBitmask canonCsFlashDetails[] = { { 0x4000, N_("External flash") }, { 0x2000, N_("Internal flash") }, { 0x0001, N_("Manual") }, @@ -2164,14 +2166,14 @@ namespace Exiv2 { }; //! FocusContinuous, tag 0x0020 - extern const TagDetails canonCsFocusContinuous[] = { + constexpr TagDetails canonCsFocusContinuous[] = { { 0, N_("Single") }, { 1, N_("Continuous") }, { 8, N_("Manual") } }; //! AESetting, tag 0x0021 - extern const TagDetails canonCsAESetting[] = { + constexpr TagDetails canonCsAESetting[] = { { 0, N_("Normal AE") }, { 1, N_("Exposure compensation") }, { 2, N_("AE lock") }, @@ -2180,7 +2182,7 @@ namespace Exiv2 { }; //! ImageStabilization, tag 0x0022 - extern const TagDetails canonCsImageStabilization[] = { + constexpr TagDetails canonCsImageStabilization[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("Shoot Only") }, @@ -2194,13 +2196,13 @@ namespace Exiv2 { }; //! SpotMeteringMode, tag 0x0027 - extern const TagDetails canonCsSpotMeteringMode[] = { + constexpr TagDetails canonCsSpotMeteringMode[] = { { 0, N_("Center") }, { 1, N_("AF Point") } }; //! PhotoEffect, tag 0x0028 - extern const TagDetails canonCsPhotoEffect[] = { + constexpr TagDetails canonCsPhotoEffect[] = { { 0, N_("Off") }, { 1, N_("Vivid") }, { 2, N_("Neutral") }, @@ -2213,7 +2215,7 @@ namespace Exiv2 { }; //! ManualFlashOutput, tag 0x0029 - extern const TagDetails canonCsManualFlashOutput[] = { + EXV_UNUSED constexpr TagDetails canonCsManualFlashOutput[] = { { 0x0000, N_("n/a") }, { 0x0500, N_("Full") }, { 0x0502, N_("Medium") }, @@ -2222,59 +2224,59 @@ namespace Exiv2 { }; //! SRAWQuality, tag 0x002e - extern const TagDetails canonCsSRAWQuality[] = { + constexpr TagDetails canonCsSRAWQuality[] = { { 0, N_("n/a") }, { 1, N_("sRAW1 (mRAW)") }, { 2, N_("sRAW2 (sRAW)") } }; // Canon Camera Settings Tag Info - const TagInfo CanonMakerNote::tagInfoCs_[] = { - TagInfo(0x0001, "Macro", N_("Macro"), N_("Macro mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMacro)), - TagInfo(0x0002, "Selftimer", N_("Selftimer"), N_("Self timer"), canonCsId, makerTags, signedShort, 1, printCs0x0002), - TagInfo(0x0003, "Quality", N_("Quality"), N_("Quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)), - TagInfo(0x0004, "FlashMode", N_("Flash Mode"), N_("Flash mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashMode)), - TagInfo(0x0005, "DriveMode", N_("Drive Mode"), N_("Drive mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDriveMode)), - TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonCsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)), - TagInfo(0x0008, "0x0008", "0x0008", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0009, "RecordMode", "RecordMode", N_("Record Mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode)), - TagInfo(0x000a, "ImageSize", N_("Image Size"), N_("Image size"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageSize)), - TagInfo(0x000b, "EasyMode", N_("Easy Mode"), N_("Easy shooting mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsEasyMode)), - TagInfo(0x000c, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDigitalZoom)), - TagInfo(0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), - TagInfo(0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), - TagInfo(0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), - TagInfo(0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsISOSpeed)), - TagInfo(0x0011, "MeteringMode", N_("Metering Mode"), N_("Metering mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMeteringMode)), - TagInfo(0x0012, "FocusType", N_("Focus Type"), N_("Focus type setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusType)), - TagInfo(0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAfPoint)), - TagInfo(0x0014, "ExposureProgram", N_("Exposure Program"), N_("Exposure mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsExposureProgram)), - TagInfo(0x0015, "0x0015", "0x0015", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0016, "LensType", N_("Lens Type"), N_("Lens type"), canonCsId, makerTags, signedShort, 1, printCsLensType), - TagInfo(0x0017, "Lens", N_("Lens"), N_("'long' and 'short' focal length of lens (in 'focal units') and 'focal units' per mm"), canonCsId, makerTags, unsignedShort, 3, printCsLens), - TagInfo(0x0018, "ShortFocal", N_("Short Focal"), N_("Short focal"), canonCsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0019, "FocalUnits", N_("Focal Units"), N_("Focal units"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015), - TagInfo(0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015), - TagInfo(0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashActivity)), - TagInfo(0x001d, "FlashDetails", N_("Flash Details"), N_("Flash details"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG_BITMASK(canonCsFlashDetails)), - TagInfo(0x001e, "0x001e", "0x001e", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x001f, "0x001f", "0x001f", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous)), - TagInfo(0x0021, "AESetting", N_("AESetting"), N_("AE setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAESetting)), - TagInfo(0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization)), - TagInfo(0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0024, "ZoomSourceWidth", N_("Zoom Source Width"), N_("Zoom source width"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0026, "0x0026", "0x0026", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSpotMeteringMode)), - TagInfo(0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsPhotoEffect)), - TagInfo(0x0029, "ManualFlashOutput", N_("Manual Flash Output"), N_("Manual flash output"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)), - TagInfo(0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)), + constexpr TagInfo CanonMakerNote::tagInfoCs_[] = { + {0x0001, "Macro", N_("Macro"), N_("Macro mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMacro)}, + {0x0002, "Selftimer", N_("Selftimer"), N_("Self timer"), canonCsId, makerTags, signedShort, 1, printCs0x0002}, + {0x0003, "Quality", N_("Quality"), N_("Quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)}, + {0x0004, "FlashMode", N_("Flash Mode"), N_("Flash mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashMode)}, + {0x0005, "DriveMode", N_("Drive Mode"), N_("Drive mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDriveMode)}, + {0x0006, "0x0006", "0x0006", N_("Unknown"), canonCsId, makerTags, unsignedShort, 1, printValue}, + {0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)}, + {0x0008, "0x0008", "0x0008", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0009, "RecordMode", "RecordMode", N_("Record Mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode)}, + {0x000a, "ImageSize", N_("Image Size"), N_("Image size"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageSize)}, + {0x000b, "EasyMode", N_("Easy Mode"), N_("Easy shooting mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsEasyMode)}, + {0x000c, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDigitalZoom)}, + {0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)}, + {0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)}, + {0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)}, + {0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsISOSpeed)}, + {0x0011, "MeteringMode", N_("Metering Mode"), N_("Metering mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMeteringMode)}, + {0x0012, "FocusType", N_("Focus Type"), N_("Focus type setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusType)}, + {0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAfPoint)}, + {0x0014, "ExposureProgram", N_("Exposure Program"), N_("Exposure mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsExposureProgram)}, + {0x0015, "0x0015", "0x0015", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0016, "LensType", N_("Lens Type"), N_("Lens type"), canonCsId, makerTags, signedShort, 1, printCsLensType}, + {0x0017, "Lens", N_("Lens"), N_("'long' and 'short' focal length of lens (in 'focal units') and 'focal units' per mm"), canonCsId, makerTags, unsignedShort, 3, printCsLens}, + {0x0018, "ShortFocal", N_("Short Focal"), N_("Short focal"), canonCsId, makerTags, unsignedShort, 1, printValue}, + {0x0019, "FocalUnits", N_("Focal Units"), N_("Focal units"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015}, + {0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015}, + {0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashActivity)}, + {0x001d, "FlashDetails", N_("Flash Details"), N_("Flash details"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG_BITMASK(canonCsFlashDetails)}, + {0x001e, "0x001e", "0x001e", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x001f, "0x001f", "0x001f", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous)}, + {0x0021, "AESetting", N_("AESetting"), N_("AE setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAESetting)}, + {0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization)}, + {0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0024, "ZoomSourceWidth", N_("Zoom Source Width"), N_("Zoom source width"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0026, "0x0026", "0x0026", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSpotMeteringMode)}, + {0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsPhotoEffect)}, + {0x0029, "ManualFlashOutput", N_("Manual Flash Output"), N_("Manual flash output"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)}, + {0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)}, // End of list marker - TagInfo(0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, makerTags, signedShort, 1, printValue) + {0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, makerTags, signedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListCs() @@ -2284,14 +2286,14 @@ namespace Exiv2 { //! AFPointUsed, tag 0x000e - extern const TagDetailsBitmask canonSiAFPointUsed[] = { + constexpr TagDetailsBitmask canonSiAFPointUsed[] = { { 0x0004, N_("left") }, { 0x0002, N_("center") }, { 0x0001, N_("right") } }; //! FlashBias, tag 0x000f - extern const TagDetails canonSiFlashBias[] = { + constexpr TagDetails canonSiFlashBias[] = { { 0xffc0, "-2 EV" }, { 0xffcc, "-1.67 EV" }, { 0xffd0, "-1.50 EV" }, @@ -2311,7 +2313,7 @@ namespace Exiv2 { { 0x0040, "2 EV" } }; - extern const TagDetails cameraType[] = { + constexpr TagDetails cameraType[] = { { 0, "n/a" }, { 248, "EOS High-end" }, { 250, "Compact" }, @@ -2319,7 +2321,7 @@ namespace Exiv2 { { 255, "DV Camera" }, }; - extern const TagDetails autoExposureBracketing[] = { + constexpr TagDetails autoExposureBracketing[] = { { 65535, "On" }, { 0, "Off" }, { 1, "On (shot 1)" }, @@ -2327,7 +2329,7 @@ namespace Exiv2 { { 3, "On (shot 3)" }, }; - extern const TagDetails slowShutter[] = { + constexpr TagDetails slowShutter[] = { { 65535, "n/a" }, { 0, "Off" }, { 1, "Night Scene" }, @@ -2337,36 +2339,36 @@ namespace Exiv2 { // Canon Shot Info Tag - const TagInfo CanonMakerNote::tagInfoSi_[] = { - TagInfo(0x0001, "AutoISO", N_("AutoISO"), N_("AutoISO"), canonSiId, makerTags, unsignedShort, 1, printSi0x0001), - TagInfo(0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiId, makerTags, unsignedShort, 1, printSi0x0002), - TagInfo(0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiId, makerTags, unsignedShort, 1, printSi0x0003), - TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015), - TagInfo(0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016), - TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), N_("White balance setting"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)), - TagInfo(0x0008, "SlowShutter", N_("Slow Shutter"), N_("Slow shutter"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(slowShutter)), - TagInfo(0x0009, "Sequence", N_("Sequence"), N_("Sequence number (if in a continuous burst)"), canonSiId, makerTags, unsignedShort, 1, printSi0x0009), - TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000b, "0x000b", "0x000b", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000c, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), canonSiId, makerTags, signedShort, 1, printSi0x000c), - TagInfo(0x000d, "FlashGuideNumber", N_("Flash Guide Number"), N_("Flash guide number"), canonSiId, makerTags, unsignedShort, 1, printSi0x000d), - TagInfo(0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), canonSiId, makerTags, unsignedShort, 1, printSi0x000e), - TagInfo(0x000f, "FlashBias", N_("Flash Bias"), N_("Flash bias"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiFlashBias)), - TagInfo(0x0010, "AutoExposureBracketing", N_("Auto Exposure Bracketing"), N_("Auto exposure bracketing"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(autoExposureBracketing)), - TagInfo(0x0011, "0x0011", "0x0011", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0012, "0x0012", "0x0012", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0013, "SubjectDistance", N_("Subject Distance"), N_("Subject distance"), canonSiId, makerTags, unsignedShort, 1, printSi0x0013), - TagInfo(0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015), - TagInfo(0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016), - TagInfo(0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiId, makerTags, unsignedShort, 1, printSi0x0017), - TagInfo(0x0018, "BulbDuration", N_("Bulb Duration"), N_("Bulb duration"), canonSiId, makerTags, unsignedShort, 1, printSi0x0018), - TagInfo(0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001a, "CameraType", N_("Camera Type"), N_("Camera type"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(cameraType)), - TagInfo(0x001b, "AutoRotate", N_("Auto Rotate"), N_("Auto rotate"), canonSiId, makerTags, signedShort, 1, printValue), + constexpr TagInfo CanonMakerNote::tagInfoSi_[] = { + {0x0001, "AutoISO", N_("AutoISO"), N_("AutoISO"), canonSiId, makerTags, unsignedShort, 1, printSi0x0001}, + {0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiId, makerTags, unsignedShort, 1, printSi0x0002}, + {0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiId, makerTags, unsignedShort, 1, printSi0x0003}, + {0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015}, + {0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016}, + {0x0006, "0x0006", "0x0006", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance setting"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0008, "SlowShutter", N_("Slow Shutter"), N_("Slow shutter"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(slowShutter)}, + {0x0009, "Sequence", N_("Sequence"), N_("Sequence number (if in a continuous burst)"), canonSiId, makerTags, unsignedShort, 1, printSi0x0009}, + {0x000a, "0x000a", "0x000a", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x000b, "0x000b", "0x000b", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x000c, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), canonSiId, makerTags, signedShort, 1, printSi0x000c}, + {0x000d, "FlashGuideNumber", N_("Flash Guide Number"), N_("Flash guide number"), canonSiId, makerTags, unsignedShort, 1, printSi0x000d}, + {0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), canonSiId, makerTags, unsignedShort, 1, printSi0x000e}, + {0x000f, "FlashBias", N_("Flash Bias"), N_("Flash bias"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiFlashBias)}, + {0x0010, "AutoExposureBracketing", N_("Auto Exposure Bracketing"), N_("Auto exposure bracketing"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(autoExposureBracketing)}, + {0x0011, "0x0011", "0x0011", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x0012, "0x0012", "0x0012", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x0013, "SubjectDistance", N_("Subject Distance"), N_("Subject distance"), canonSiId, makerTags, unsignedShort, 1, printSi0x0013}, + {0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015}, + {0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016}, + {0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiId, makerTags, unsignedShort, 1, printSi0x0017}, + {0x0018, "BulbDuration", N_("Bulb Duration"), N_("Bulb duration"), canonSiId, makerTags, unsignedShort, 1, printSi0x0018}, + {0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x001a, "CameraType", N_("Camera Type"), N_("Camera type"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(cameraType)}, + {0x001b, "AutoRotate", N_("Auto Rotate"), N_("Auto rotate"), canonSiId, makerTags, signedShort, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListSi() @@ -2375,7 +2377,7 @@ namespace Exiv2 { } //! PanoramaDirection, tag 0x0005 - extern const TagDetails canonPaDirection[] = { + constexpr TagDetails canonPaDirection[] = { { 0, N_("Left to right") }, { 1, N_("Right to left") }, { 2, N_("Bottom to top") }, @@ -2384,11 +2386,11 @@ namespace Exiv2 { }; // Canon Panorama Info - const TagInfo CanonMakerNote::tagInfoPa_[] = { - TagInfo(0x0002, "PanoramaFrame", N_("Panorama Frame"), N_("Panorama frame number"), canonPaId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "PanoramaDirection", N_("Panorama Direction"), N_("Panorama direction"), canonPaId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonPaDirection)), + constexpr TagInfo CanonMakerNote::tagInfoPa_[] = { + {0x0002, "PanoramaFrame", N_("Panorama Frame"), N_("Panorama frame number"), canonPaId, makerTags, unsignedShort, 1, printValue}, + {0x0005, "PanoramaDirection", N_("Panorama Direction"), N_("Panorama direction"), canonPaId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonPaDirection)}, // End of list marker - TagInfo(0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), canonPaId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), canonPaId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListPa() @@ -2397,24 +2399,24 @@ namespace Exiv2 { } // Canon Custom Function Tag Info - const TagInfo CanonMakerNote::tagInfoCf_[] = { - TagInfo(0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0003, "MirrorLockup", N_("Mirror Lockup"), N_("Mirror lockup"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0004, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Tv/Av and exposure level"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "AFAssist", N_("AF Assist"), N_("AF assist light"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0006, "FlashSyncSpeedAv", N_("Flash Sync Speed Av"), N_("Shutter speed in Av mode"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "AEBSequence", N_("AEB Sequence"), N_("AEB sequence/auto cancellation"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0008, "ShutterCurtainSync", N_("Shutter Curtain Sync"), N_("Shutter curtain sync"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0009, "LensAFStopButton", N_("Lens AF Stop Button"), N_("Lens AF stop button Fn. Switch"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000a, "FillFlashAutoReduction", N_("Fill Flash Auto Reduction"), N_("Auto reduction of fill flash"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000b, "MenuButtonReturn", N_("Menu Button Return"), N_("Menu button return position"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000c, "SetButtonFunction", N_("Set Button Function"), N_("SET button func. when shooting"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000d, "SensorCleaning", N_("Sensor Cleaning"), N_("Sensor cleaning"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000e, "SuperimposedDisplay", N_("Superimposed Display"), N_("Superimposed display"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000f, "ShutterReleaseNoCFCard", N_("Shutter Release No CF Card"), N_("Shutter Release W/O CF Card"), canonCfId, makerTags, unsignedShort, 1, printValue), + constexpr TagInfo CanonMakerNote::tagInfoCf_[] = { + {0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0003, "MirrorLockup", N_("Mirror Lockup"), N_("Mirror lockup"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0004, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Tv/Av and exposure level"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0005, "AFAssist", N_("AF Assist"), N_("AF assist light"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0006, "FlashSyncSpeedAv", N_("Flash Sync Speed Av"), N_("Shutter speed in Av mode"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0007, "AEBSequence", N_("AEB Sequence"), N_("AEB sequence/auto cancellation"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0008, "ShutterCurtainSync", N_("Shutter Curtain Sync"), N_("Shutter curtain sync"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0009, "LensAFStopButton", N_("Lens AF Stop Button"), N_("Lens AF stop button Fn. Switch"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x000a, "FillFlashAutoReduction", N_("Fill Flash Auto Reduction"), N_("Auto reduction of fill flash"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x000b, "MenuButtonReturn", N_("Menu Button Return"), N_("Menu button return position"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x000c, "SetButtonFunction", N_("Set Button Function"), N_("SET button func. when shooting"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x000d, "SensorCleaning", N_("Sensor Cleaning"), N_("Sensor cleaning"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x000e, "SuperimposedDisplay", N_("Superimposed Display"), N_("Superimposed display"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x000f, "ShutterReleaseNoCFCard", N_("Shutter Release No CF Card"), N_("Shutter Release W/O CF Card"), canonCfId, makerTags, unsignedShort, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), canonCfId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), canonCfId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListCf() @@ -2423,7 +2425,7 @@ namespace Exiv2 { } //! AFPointsUsed, tag 0x0016 - extern const TagDetailsBitmask canonPiAFPointsUsed[] = { + constexpr TagDetailsBitmask canonPiAFPointsUsed[] = { { 0x01, N_("right") }, { 0x02, N_("mid-right") }, { 0x04, N_("bottom") }, @@ -2434,7 +2436,7 @@ namespace Exiv2 { }; //! AFPointsUsed20D, tag 0x001a - extern const TagDetailsBitmask canonPiAFPointsUsed20D[] = { + constexpr TagDetailsBitmask canonPiAFPointsUsed20D[] = { { 0x001, N_("top") }, { 0x002, N_("upper-left") }, { 0x004, N_("upper-right") }, @@ -2447,15 +2449,15 @@ namespace Exiv2 { }; // Canon Picture Info Tag - const TagInfo CanonMakerNote::tagInfoPi_[] = { - TagInfo(0x0002, "ImageWidth", N_("Image Width"), N_("Image width"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0003, "ImageHeight", N_("Image Height"), N_("Image height"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0004, "ImageWidthAsShot", N_("Image Width As Shot"), N_("Image width (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "ImageHeightAsShot", N_("Image Height As Shot"), N_("Image height (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0016, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed)), - TagInfo(0x001a, "AFPointsUsed20D", N_("AF Points Used 20D"), N_("AF points used (20D)"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed20D)), + constexpr TagInfo CanonMakerNote::tagInfoPi_[] = { + {0x0002, "ImageWidth", N_("Image Width"), N_("Image width"), canonPiId, makerTags, unsignedShort, 1, printValue}, + {0x0003, "ImageHeight", N_("Image Height"), N_("Image height"), canonPiId, makerTags, unsignedShort, 1, printValue}, + {0x0004, "ImageWidthAsShot", N_("Image Width As Shot"), N_("Image width (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue}, + {0x0005, "ImageHeightAsShot", N_("Image Height As Shot"), N_("Image height (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue}, + {0x0016, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed)}, + {0x001a, "AFPointsUsed20D", N_("AF Points Used 20D"), N_("AF points used (20D)"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed20D)}, // End of list marker - TagInfo(0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), canonPiId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), canonPiId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListPi() @@ -2464,7 +2466,7 @@ namespace Exiv2 { } //! BracketMode, tag 0x0003 - extern const TagDetails canonBracketMode[] = { + constexpr TagDetails canonBracketMode[] = { { 0, N_("Off") }, { 1, N_("AEB") }, { 2, N_("FEB") }, @@ -2473,7 +2475,7 @@ namespace Exiv2 { }; //! RawJpgSize, tag 0x0007 - extern const TagDetails canonRawJpgSize[] = { + constexpr TagDetails canonRawJpgSize[] = { { -1, N_("n/a") }, { 0, N_("Large") }, { 1, N_("Medium") }, @@ -2496,7 +2498,7 @@ namespace Exiv2 { }; //! NoiseReduction, tag 0x0008 - extern const TagDetails canonNoiseReduction[] = { + constexpr TagDetails canonNoiseReduction[] = { { 0, N_("Off") }, { 1, N_("On 1") }, { 2, N_("On 2") }, @@ -2505,14 +2507,14 @@ namespace Exiv2 { }; //! WBBracketMode, tag 0x0009 - extern const TagDetails canonWBBracketMode[] = { + constexpr TagDetails canonWBBracketMode[] = { { 0, N_("Off") }, { 1, N_("On (shift AB)") }, { 2, N_("On (shift GM)") } }; //! FilterEffect, tag 0x000e - extern const TagDetails canonFilterEffect[] = { + constexpr TagDetails canonFilterEffect[] = { { 0, N_("None") }, { 1, N_("Yellow") }, { 2, N_("Orange") }, @@ -2521,7 +2523,7 @@ namespace Exiv2 { }; //! ToningEffect, tag 0x000e - extern const TagDetails canonToningEffect[] = { + constexpr TagDetails canonToningEffect[] = { { 0, N_("None") }, { 1, N_("Sepia") }, { 2, N_("Blue") }, @@ -2530,7 +2532,7 @@ namespace Exiv2 { }; //! RFLensType, tag 0x003D - extern const TagDetails canonRFLensType[] = { + constexpr TagDetails canonRFLensType[] = { { 0, N_("n/a") }, { 257, N_("Canon RF 50mm F1.2L USM") }, { 257, N_("Canon RF 24-105mm F4L IS USM") }, @@ -2556,27 +2558,27 @@ namespace Exiv2 { }; // Canon File Info Tag - const TagInfo CanonMakerNote::tagInfoFi_[] = { - TagInfo(0x0001, "FileNumber", N_("File Number"), N_("File Number"), canonFiId, makerTags, unsignedLong, 1, printFiFileNumber), - TagInfo(0x0003, "BracketMode", N_("Bracket Mode"), N_("Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonBracketMode)), - TagInfo(0x0004, "BracketValue", N_("Bracket Value"), N_("Bracket Value"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x0005, "BracketShotNumber", N_("Bracket Shot Number"), N_("Bracket Shot Number"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)), - TagInfo(0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonRawJpgSize)), - TagInfo(0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonNoiseReduction)), - TagInfo(0x0009, "WBBracketMode", N_("WB Bracket Mode"), N_("WB Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonWBBracketMode)), - TagInfo(0x000c, "WBBracketValueAB", N_("WB Bracket Value AB"), N_("WB Bracket Value AB"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x000d, "WBBracketValueGM", N_("WB Bracket Value GM"), N_("WB Bracket Value GM"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonFilterEffect)), - TagInfo(0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToningEffect)), - TagInfo(0x0010, "MacroMagnification", N_("Macro Magnification"), N_("Macro magnification"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x0013, "LiveViewShooting", N_("Live View Shooting"), N_("Live view shooting"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0014, "FocusDistanceUpper", N_("Focus Distance Upper"), N_("Focus Distance Upper"), canonFiId, makerTags, unsignedShort, 1, printFiFocusDistance), - TagInfo(0x0015, "FocusDistanceLower", N_("Focus Distance Lower"), N_("Focus Distance Lower"), canonFiId, makerTags, unsignedShort, 1, printFiFocusDistance), - TagInfo(0x0019, "FlashExposureLock", N_("Flash Exposure Lock"), N_("Flash exposure lock"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x003D, "RFLensType", N_("RF Lens Type"), N_("RF Lens Type"), canonFiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonRFLensType)), + constexpr TagInfo CanonMakerNote::tagInfoFi_[] = { + {0x0001, "FileNumber", N_("File Number"), N_("File Number"), canonFiId, makerTags, unsignedLong, 1, printFiFileNumber}, + {0x0003, "BracketMode", N_("Bracket Mode"), N_("Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonBracketMode)}, + {0x0004, "BracketValue", N_("Bracket Value"), N_("Bracket Value"), canonFiId, makerTags, signedShort, 1, printValue}, + {0x0005, "BracketShotNumber", N_("Bracket Shot Number"), N_("Bracket Shot Number"), canonFiId, makerTags, signedShort, 1, printValue}, + {0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)}, + {0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonRawJpgSize)}, + {0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonNoiseReduction)}, + {0x0009, "WBBracketMode", N_("WB Bracket Mode"), N_("WB Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonWBBracketMode)}, + {0x000c, "WBBracketValueAB", N_("WB Bracket Value AB"), N_("WB Bracket Value AB"), canonFiId, makerTags, signedShort, 1, printValue}, + {0x000d, "WBBracketValueGM", N_("WB Bracket Value GM"), N_("WB Bracket Value GM"), canonFiId, makerTags, signedShort, 1, printValue}, + {0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonFilterEffect)}, + {0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToningEffect)}, + {0x0010, "MacroMagnification", N_("Macro Magnification"), N_("Macro magnification"), canonFiId, makerTags, signedShort, 1, printValue}, + {0x0013, "LiveViewShooting", N_("Live View Shooting"), N_("Live view shooting"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)}, + {0x0014, "FocusDistanceUpper", N_("Focus Distance Upper"), N_("Focus Distance Upper"), canonFiId, makerTags, unsignedShort, 1, printFiFocusDistance}, + {0x0015, "FocusDistanceLower", N_("Focus Distance Lower"), N_("Focus Distance Lower"), canonFiId, makerTags, unsignedShort, 1, printFiFocusDistance}, + {0x0019, "FlashExposureLock", N_("Flash Exposure Lock"), N_("Flash exposure lock"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)}, + {0x003D, "RFLensType", N_("RF Lens Type"), N_("RF Lens Type"), canonFiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonRFLensType)}, // End of list marker - TagInfo(0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), canonFiId, makerTags, signedShort, 1, printValue) + {0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), canonFiId, makerTags, signedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListFi() @@ -2585,14 +2587,14 @@ namespace Exiv2 { } //! Tone Curve Values - extern const TagDetails canonToneCurve[] = { + constexpr TagDetails canonToneCurve[] = { { 0, N_("Standard") }, { 1, N_("Manual") }, { 2, N_("Custom") } }; //! Sharpness Frequency Values - extern const TagDetails canonSharpnessFrequency[] = { + constexpr TagDetails canonSharpnessFrequency[] = { { 0, N_("n/a") }, { 1, N_("Lowest") }, { 2, N_("Low") }, @@ -2603,21 +2605,21 @@ namespace Exiv2 { // Canon Processing Info Tag - const TagInfo CanonMakerNote::tagInfoPr_[] = { - TagInfo(0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToneCurve)), - TagInfo(0x0002, "Sharpness", N_("Sharpness"), N_("Sharpness"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0003, "SharpnessFrequency", N_("SharpnessFrequency"), N_("Sharpness frequency"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSharpnessFrequency)), - TagInfo(0x0004, "SensorRedLevel", N_("SensorRedLevel"), N_("Sensor red level"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0005, "SensorBlueLevel", N_("SensorBlueLevel"), N_("Sensor blue level"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0006, "WhiteBalanceRed", N_("WhiteBalanceRed"), N_("White balance red"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)), - TagInfo(0x0009, "ColorTemperature", N_("ColorTemperature"), N_("Color Temperature"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x000a, "PictureStyle", N_("PictureStyle"), N_("Picture style"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonPictureStyle)), - TagInfo(0x000b, "DigitalGain", N_("DigitalGain"), N_("Digital gain"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x000c, "WBShiftAB", N_("WBShiftAB"), N_("WBShift AB"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x000d, "WBShiftGM", N_("WBShiftGM"), N_("WB Shift GM"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0xffff, "(UnknownCanonPrTag)", "(UnknownCanonPrTag)", N_("Unknown Canon Processing Info tag"), canonPrId, makerTags, signedShort, 1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoPr_[] = { + {0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToneCurve)}, + {0x0002, "Sharpness", N_("Sharpness"), N_("Sharpness"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x0003, "SharpnessFrequency", N_("SharpnessFrequency"), N_("Sharpness frequency"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSharpnessFrequency)}, + {0x0004, "SensorRedLevel", N_("SensorRedLevel"), N_("Sensor red level"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x0005, "SensorBlueLevel", N_("SensorBlueLevel"), N_("Sensor blue level"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x0006, "WhiteBalanceRed", N_("WhiteBalanceRed"), N_("White balance red"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0009, "ColorTemperature", N_("ColorTemperature"), N_("Color Temperature"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x000a, "PictureStyle", N_("PictureStyle"), N_("Picture style"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x000b, "DigitalGain", N_("DigitalGain"), N_("Digital gain"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x000c, "WBShiftAB", N_("WBShiftAB"), N_("WBShift AB"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x000d, "WBShiftGM", N_("WBShiftGM"), N_("WB Shift GM"), canonPrId, makerTags, signedShort, 1, printValue}, + {0xffff, "(UnknownCanonPrTag)", "(UnknownCanonPrTag)", N_("Unknown Canon Processing Info tag"), canonPrId, makerTags, signedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListPr() @@ -2626,7 +2628,7 @@ namespace Exiv2 { } //! canonTimeZoneCity - array of cityID/cityName used by Canon - extern const TagDetails canonTimeZoneCity[] = { + constexpr TagDetails canonTimeZoneCity[] = { { 0x0000, N_("n/a") }, { 0x0001, N_("Chatham Islands") }, { 0x0002, N_("Wellington") }, @@ -2665,11 +2667,11 @@ namespace Exiv2 { }; // Canon Time Info Tag - const TagInfo CanonMakerNote::tagInfoTi_[] = { - TagInfo(0x0001, "TimeZone", N_("Time zone offset"), N_("Time zone offset in minutes"), canonTiId, makerTags, signedLong, 1, printValue), - TagInfo(0x0002, "TimeZoneCity", N_("Time zone city"), N_("Time zone city"), canonTiId, makerTags, signedLong, 1, EXV_PRINT_TAG(canonTimeZoneCity)), - TagInfo(0x0003, "DaylightSavings", N_("Daylight Savings"), N_("Daylight Saving Time"), canonTiId, makerTags, signedLong, 1, printValue), - TagInfo(0xffff, "(UnknownCanonTiTag)", "(UnknownCanonTiTag)", N_("Unknown Canon Time Info tag"), canonTiId, makerTags, signedLong, 1, printValue) + constexpr TagInfo CanonMakerNote::tagInfoTi_[] = { + {0x0001, "TimeZone", N_("Time zone offset"), N_("Time zone offset in minutes"), canonTiId, makerTags, signedLong, 1, printValue}, + {0x0002, "TimeZoneCity", N_("Time zone city"), N_("Time zone city"), canonTiId, makerTags, signedLong, 1, EXV_PRINT_TAG(canonTimeZoneCity)}, + {0x0003, "DaylightSavings", N_("Daylight Savings"), N_("Daylight Saving Time"), canonTiId, makerTags, signedLong, 1, printValue}, + {0xffff, "(UnknownCanonTiTag)", "(UnknownCanonTiTag)", N_("Unknown Canon Time Info tag"), canonTiId, makerTags, signedLong, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListTi() diff --git a/src/casiomn_int.cpp b/src/casiomn_int.cpp index b1fdb2b6..ed81d2a7 100644 --- a/src/casiomn_int.cpp +++ b/src/casiomn_int.cpp @@ -44,7 +44,7 @@ namespace Exiv2 { namespace Internal { //! RecordingMode, tag 0x0001 - extern const TagDetails casioRecordingMode[] = { + constexpr TagDetails casioRecordingMode[] = { { 1, N_("Single Shutter") }, { 2, N_("Panorama") }, { 3, N_("Night Scene") }, @@ -57,14 +57,14 @@ namespace Exiv2 { }; //! Quality, tag 0x0002 - extern const TagDetails casioQuality[] = { + constexpr TagDetails casioQuality[] = { { 1, N_("Economy") }, { 2, N_("Normal") }, { 3, N_("Fine") } }; //! Focus Mode, tag 0x0003 - extern const TagDetails casioFocusMode[] = { + constexpr TagDetails casioFocusMode[] = { { 2, N_("Macro") }, { 3, N_("Auto") }, { 4, N_("Manual") }, @@ -73,7 +73,7 @@ namespace Exiv2 { }; //! FlashMode, tag 0x0004 - extern const TagDetails casioFlashMode[] = { + constexpr TagDetails casioFlashMode[] = { { 1, N_("Auto") }, { 2, N_("On") }, { 3, N_("Off") }, @@ -82,7 +82,7 @@ namespace Exiv2 { }; //! Flash intensity, tag 0x0005 - extern const TagDetails casioFlashIntensity[] = { + constexpr TagDetails casioFlashIntensity[] = { { 11, N_("Weak") }, { 12, N_("Low") }, { 13, N_("Normal") }, @@ -91,7 +91,7 @@ namespace Exiv2 { }; //! white balance, tag 0x0007 - extern const TagDetails casioWhiteBalance[] = { + constexpr TagDetails casioWhiteBalance[] = { { 1, N_("Auto") }, { 2, N_("Tungsten") }, { 3, N_("Daylight") }, @@ -101,7 +101,7 @@ namespace Exiv2 { }; //! Flash intensity, tag 0x0005 - extern const TagDetails casioDigitalZoom[] = { + constexpr TagDetails casioDigitalZoom[] = { { 0x10000, N_("Off") }, { 0x10001, N_("2x") }, { 0x13333, N_("1.2x") }, @@ -113,7 +113,7 @@ namespace Exiv2 { }; //! Sharpness, tag 0x000b - extern const TagDetails casioSharpness[] = { + constexpr TagDetails casioSharpness[] = { { 0, N_("Normal") }, { 1, N_("Soft") }, { 2, N_("Hard") }, @@ -123,7 +123,7 @@ namespace Exiv2 { }; //! Contrast, tag 0x000c - extern const TagDetails casioContrast[] = { + constexpr TagDetails casioContrast[] = { { 0, N_("Normal") }, { 1, N_("Low") }, { 2, N_("High") }, @@ -133,7 +133,7 @@ namespace Exiv2 { }; //! Saturation, tag 0x000d - extern const TagDetails casioSaturation[] = { + constexpr TagDetails casioSaturation[] = { { 0, N_("Normal") }, { 1, N_("Low") }, { 2, N_("High") }, @@ -143,7 +143,7 @@ namespace Exiv2 { }; //! Enhancement, tag 0x0016 - extern const TagDetails casioEnhancement[] = { + constexpr TagDetails casioEnhancement[] = { { 1, N_("Off") }, { 2, N_("Red") }, { 3, N_("Green") }, @@ -152,7 +152,7 @@ namespace Exiv2 { }; //! Color filter, tag 0x0017 - extern const TagDetails casioColorFilter[] = { + constexpr TagDetails casioColorFilter[] = { { 1, N_("Off") }, { 2, N_("Black & White") }, { 3, N_("Sepia") }, @@ -165,14 +165,14 @@ namespace Exiv2 { }; //! flash intensity 2, tag 0x0019 - extern const TagDetails casioFlashIntensity2[] = { + constexpr TagDetails casioFlashIntensity2[] = { { 1, N_("Normal") }, { 2, N_("Weak") }, { 3, N_("Strong") } }; //! CCD Sensitivity intensity, tag 0x0020 - extern const TagDetails casioCCDSensitivity[] = { + constexpr TagDetails casioCCDSensitivity[] = { { 64, N_("Normal") }, { 125, N_("+1.0") }, { 250, N_("+2.0") }, @@ -182,27 +182,27 @@ namespace Exiv2 { }; // Casio MakerNote Tag Info - const TagInfo CasioMakerNote::tagInfo_[] = { - TagInfo(0x0001, "RecodingMode", N_("RecodingMode"), N_("Recording Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioRecordingMode)), - TagInfo(0x0002, "Quality", N_("Quality"), N_("Quality"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioQuality)), - TagInfo(0x0003, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFocusMode)), - TagInfo(0x0004, "FlashMode", N_("Flash Mode"), N_("Flash Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashMode)), - TagInfo(0x0005, "FlashIntensity", N_("Flash Intensity"), N_("Flash Intensity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity)), - TagInfo(0x0006, "ObjectDistance", N_("Object Distance"), N_("Distance to object"), casioId, makerTags, unsignedLong, -1, print0x0006), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), N_("White balance settings"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioWhiteBalance)), - TagInfo(0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), casioId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(casioDigitalZoom)), - TagInfo(0x000b, "Sharpness", N_("Sharpness"), N_("Sharpness"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSharpness)), - TagInfo(0x000c, "Contrast", N_("Contrast"), N_("Contrast"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioContrast)), - TagInfo(0x000d, "Saturation", N_("Saturation"), N_("Saturation"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSaturation)), - TagInfo(0x0014, "ISO", N_("ISO"), N_("ISO"), casioId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0015, "FirmwareDate", N_("Firmware date"), N_("Firmware date"), casioId, makerTags, asciiString, -1, print0x0015), - TagInfo(0x0016, "Enhancement", N_("Enhancement"), N_("Enhancement"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioEnhancement)), - TagInfo(0x0017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioColorFilter)), - TagInfo(0x0018, "AFPoint", N_("AF Point"), N_("AF Point"), casioId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0019, "FlashIntensity2", N_("Flash Intensity"), N_("Flash Intensity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity2)), - TagInfo(0x0020, "CCDSensitivity", N_("CCDSensitivity"), N_("CCDSensitivity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioCCDSensitivity)), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), casioId, makerTags, undefined, -1, printValue), - TagInfo(0xffff, "(UnknownCasioMakerNoteTag)", "(UnknownCasioMakerNoteTag)", N_("Unknown CasioMakerNote tag"), casioId, makerTags, asciiString, -1, printValue) + constexpr TagInfo CasioMakerNote::tagInfo_[] = { + {0x0001, "RecodingMode", N_("RecodingMode"), N_("Recording Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioRecordingMode)}, + {0x0002, "Quality", N_("Quality"), N_("Quality"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioQuality)}, + {0x0003, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFocusMode)}, + {0x0004, "FlashMode", N_("Flash Mode"), N_("Flash Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashMode)}, + {0x0005, "FlashIntensity", N_("Flash Intensity"), N_("Flash Intensity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity)}, + {0x0006, "ObjectDistance", N_("Object Distance"), N_("Distance to object"), casioId, makerTags, unsignedLong, -1, print0x0006}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance settings"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioWhiteBalance)}, + {0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), casioId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(casioDigitalZoom)}, + {0x000b, "Sharpness", N_("Sharpness"), N_("Sharpness"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSharpness)}, + {0x000c, "Contrast", N_("Contrast"), N_("Contrast"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioContrast)}, + {0x000d, "Saturation", N_("Saturation"), N_("Saturation"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSaturation)}, + {0x0014, "ISO", N_("ISO"), N_("ISO"), casioId, makerTags, unsignedShort, -1, printValue}, + {0x0015, "FirmwareDate", N_("Firmware date"), N_("Firmware date"), casioId, makerTags, asciiString, -1, print0x0015}, + {0x0016, "Enhancement", N_("Enhancement"), N_("Enhancement"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioEnhancement)}, + {0x0017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioColorFilter)}, + {0x0018, "AFPoint", N_("AF Point"), N_("AF Point"), casioId, makerTags, unsignedShort, -1, printValue}, + {0x0019, "FlashIntensity2", N_("Flash Intensity"), N_("Flash Intensity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity2)}, + {0x0020, "CCDSensitivity", N_("CCDSensitivity"), N_("CCDSensitivity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioCCDSensitivity)}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), casioId, makerTags, undefined, -1, printValue}, + {0xffff, "(UnknownCasioMakerNoteTag)", "(UnknownCasioMakerNoteTag)", N_("Unknown CasioMakerNote tag"), casioId, makerTags, asciiString, -1, printValue}, }; const TagInfo* CasioMakerNote::tagList() @@ -263,14 +263,14 @@ namespace Exiv2 { //Casio Makernotes, Type 2 //! Quality Mode, tag 0x0004 - extern const TagDetails casio2QualityMode[] = { + constexpr TagDetails casio2QualityMode[] = { { 0, N_("Economy") }, { 1, N_("Normal") }, { 2, N_("Fine") } }; //! Image Size, tag 0x0009 - extern const TagDetails casio2ImageSize[] = { + constexpr TagDetails casio2ImageSize[] = { { 0, "640x480" }, { 4, "1600x1200" }, { 5, "2048x1536" }, @@ -281,13 +281,13 @@ namespace Exiv2 { }; //! Focus Mode, tag 0x000d - extern const TagDetails casio2FocusMode[] = { + constexpr TagDetails casio2FocusMode[] = { { 0, N_("Normal") }, { 1, N_("Macro") } }; //! ISO Speed, tag 0x0014 - extern const TagDetails casio2IsoSpeed[] = { + constexpr TagDetails casio2IsoSpeed[] = { { 3, "50" }, { 4, "64" }, { 6, "100" }, @@ -295,7 +295,7 @@ namespace Exiv2 { }; //! White Balance, tag 0x0019 - extern const TagDetails casio2WhiteBalance[] = { + constexpr TagDetails casio2WhiteBalance[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Shade") }, @@ -305,28 +305,28 @@ namespace Exiv2 { }; //! Saturation, tag 0x001f - extern const TagDetails casio2Saturation[] = { + constexpr TagDetails casio2Saturation[] = { { 0, N_("Low") }, { 1, N_("Normal") }, { 2, N_("High") } }; //! Contrast, tag 0x0020 - extern const TagDetails casio2Contrast[] = { + constexpr TagDetails casio2Contrast[] = { { 0, N_("Low") }, { 1, N_("Normal") }, { 2, N_("High") } }; //! Sharpness, tag 0x0021 - extern const TagDetails casio2Sharpness[] = { + constexpr TagDetails casio2Sharpness[] = { { 0, N_("Soft") }, { 1, N_("Normal") }, { 2, N_("Hard") } }; //! White Balance2, tag 0x2012 - extern const TagDetails casio2WhiteBalance2[] = { + constexpr TagDetails casio2WhiteBalance2[] = { { 0, N_("Manual") }, { 1, N_("Daylight") }, { 2, N_("Cloudy") }, @@ -339,7 +339,7 @@ namespace Exiv2 { }; //! Release Mode, tag 0x3001 - extern const TagDetails casio2ReleaseMode[] = { + constexpr TagDetails casio2ReleaseMode[] = { { 1, N_("Normal") }, { 3, N_("AE Bracketing") }, { 11, N_("WB Bracketing") }, @@ -348,14 +348,14 @@ namespace Exiv2 { }; //! Quality, tag 0x3002 - extern const TagDetails casio2Quality[] = { + constexpr TagDetails casio2Quality[] = { { 1, N_("Economy") }, { 2, N_("Normal") }, { 3, N_("Fine") } }; //! Focus Mode 2, tag 0x3003 - extern const TagDetails casio2FocusMode2[] = { + constexpr TagDetails casio2FocusMode2[] = { { 0, N_("Manual") }, { 1, N_("Focus Lock") }, { 2, N_("Macro") }, @@ -366,7 +366,7 @@ namespace Exiv2 { }; //! AutoISO, tag 0x3008 - extern const TagDetails casio2AutoISO[] = { + constexpr TagDetails casio2AutoISO[] = { { 1, N_("On") }, { 2, N_("Off") }, { 7, N_("On (high sensitiviy)") }, @@ -375,7 +375,7 @@ namespace Exiv2 { }; //! AFMode, tag 0x3009 - extern const TagDetails casio2AFMode[] = { + constexpr TagDetails casio2AFMode[] = { { 0, N_("Off") }, { 1, N_("Spot") }, { 2, N_("Multi") }, @@ -385,14 +385,14 @@ namespace Exiv2 { }; //! ColorMode, tag 0x3015 - extern const TagDetails casio2ColorMode[] = { + constexpr TagDetails casio2ColorMode[] = { { 0, N_("Off") }, { 2, N_("Black & White") }, { 3, N_("Sepia") } }; //! Enhancement, tag 0x3016 - extern const TagDetails casio2Enhancement[] = { + constexpr TagDetails casio2Enhancement[] = { { 0, N_("Off") }, { 1, N_("Scenery") }, { 3, N_("Green") }, @@ -402,7 +402,7 @@ namespace Exiv2 { }; //! Color Filter, tag 0x3017 - extern const TagDetails casio2ColorFilter[] = { + constexpr TagDetails casio2ColorFilter[] = { { 0, N_("Off") }, { 1, N_("Blue") }, { 3, N_("Green") }, @@ -413,7 +413,7 @@ namespace Exiv2 { }; //! Art Mode, tag 0x301b - extern const TagDetails casio2ArtMode[] = { + constexpr TagDetails casio2ArtMode[] = { { 0, N_("Normal") }, { 8, N_("Silent Movie") }, { 39, N_("HDR") }, @@ -430,7 +430,7 @@ namespace Exiv2 { }; //! Lighting Mode, tag 0x302a - extern const TagDetails casio2LightingMode[] = { + constexpr TagDetails casio2LightingMode[] = { { 0, N_("Off") }, { 1, N_("High Dynamic Range") }, { 5, N_("Shadow Enhance Low") }, @@ -438,14 +438,14 @@ namespace Exiv2 { }; //! Portrait Refiner, tag 0x302b - extern const TagDetails casio2PortraitRefiner[] = { + constexpr TagDetails casio2PortraitRefiner[] = { { 0, N_("Off") }, { 1, N_("+1") }, { 2, N_("+2") } }; //! Special Effect Setting, tag 0x3031 - extern const TagDetails casio2SpecialEffectSetting[] = { + constexpr TagDetails casio2SpecialEffectSetting[] = { { 0, N_("Off") }, { 1, N_("Makeup") }, { 2, N_("Mist Removal") }, @@ -454,7 +454,7 @@ namespace Exiv2 { }; //! Drive Mode, tag 0x3103 - extern const TagDetails casio2DriveMode[] = { + constexpr TagDetails casio2DriveMode[] = { { 0, N_("Single Shot") }, { 1, N_("Continuous Shooting") }, { 2, N_("Continuous (2 fps)") }, @@ -474,7 +474,7 @@ namespace Exiv2 { }; //! Video Quality, tag 0x4003 - extern const TagDetails casio2VideoQuality[] = { + constexpr TagDetails casio2VideoQuality[] = { { 1, N_("Standard") }, { 3, N_("HD (720p)") }, { 4, N_("Full HD (1080p)") }, @@ -482,57 +482,57 @@ namespace Exiv2 { }; // Casio2 MakerNote Tag Info - const TagInfo Casio2MakerNote::tagInfo_[] = { - TagInfo(0x0002, "PreviewImageSize", N_("Preview Image Size"), N_("Preview Image Size"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0003, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), casio2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0004, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), casio2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0008, "QualityMode", N_("Quality Mode"), N_("Quality Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2QualityMode)), - TagInfo(0x0009, "ImageSize", N_("Image Size"), N_("Image Size"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ImageSize)), - TagInfo(0x000d, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode)), - TagInfo(0x0014, "ISOSpeed", N_("ISO Speed"), N_("ISO Speed"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2IsoSpeed)), - TagInfo(0x0019, "WhiteBalance", N_("White Balance"), N_("White Balance Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance)), - TagInfo(0x001d, "FocalLength", N_("Focal Length"), N_("Focal Length"), casio2Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x001f, "Saturation", N_("Saturation"), N_("Saturation"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Saturation)), - TagInfo(0x0020, "Contrast", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Contrast)), - TagInfo(0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Sharpness)), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x2000, "PreviewImage", N_("Preview Image"), N_("Preview Image"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x2001, "FirmwareDate", N_("Firmware Date"), N_("Firmware Date"), casio2Id, makerTags, asciiString, -1, print0x2001), - TagInfo(0x2011, "WhiteBalanceBias", N_("White Balance Bias"), N_("White Balance Bias"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2012, "WhiteBalance2", N_("White Balance"), N_("White Balance Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance2)), - TagInfo(0x2021, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2022, "ObjectDistance", N_("Object Distance"), N_("Object Distance"), casio2Id, makerTags, unsignedLong, -1, print0x2022), - TagInfo(0x2034, "FlashDistance", N_("Flash Distance"), N_("Flash Distance"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2076, "SpecialEffectMode", N_("Special Effect Mode"), N_("Special Effect Mode"), casio2Id, makerTags, unsignedByte, -1, printValue), - TagInfo(0x2089, "FaceInfo", N_("Face Info"), N_("Face Info"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x211c, "FacesDetected", N_("Faces detected"), N_("Faces detected"), casio2Id, makerTags, unsignedByte, -1, printValue), - TagInfo(0x3000, "RecordMode", N_("Record Mode"), N_("Record Mode"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x3001, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ReleaseMode)), - TagInfo(0x3002, "Quality", N_("Quality"), N_("Quality"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Quality)), - TagInfo(0x3003, "FocusMode2", N_("Focus Mode2"), N_("Focus Mode2"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode2)), - TagInfo(0x3006, "HometownCity", N_("Home town city"), N_("Home town city"), casio2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x3007, "BestShotMode", N_("Best Shot Mode"), N_("Best Shot Mode"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x3008, "AutoISO", N_("Auto ISO"), N_("Auto ISO"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AutoISO)), - TagInfo(0x3009, "AFMode", N_("AF Mode"), N_("AF Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AFMode)), - TagInfo(0x3011, "Sharpness2", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x3012, "Contrast2", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x3013, "Saturation2", N_("Saturation"), N_("Saturation"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x3014, "ISO", N_("ISO"), N_("ISO"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x3015, "ColorMode", N_("Color Mode"), N_("Color Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ColorMode)), - TagInfo(0x3016, "Enhancement", N_("Enhancement"), N_("Enhancement"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Enhancement)), - TagInfo(0x3017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ColorFilter)), - TagInfo(0x301b, "ArtMode", N_("Art Mode"), N_("Art Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ArtMode)), - TagInfo(0x301c, "SequenceNumber", N_("Sequence Number"), N_("Sequence Number"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x3020, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x302a, "LightingMode", N_("Lighting Mode"), N_("Lighting Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2LightingMode)), - TagInfo(0x302b, "PortraitRefiner", N_("Portrait Refiner"), N_("Portrait Refiner settings"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2PortraitRefiner)), - TagInfo(0x3030, "SpecialEffectLevel", N_("Special Effect Level"), N_("Special Effect Level"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x3031, "SpecialEffectSetting", N_("Special Effect Setting"), N_("Special Effect Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2SpecialEffectSetting)), - TagInfo(0x3103, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2DriveMode)), - TagInfo(0x310b, "ArtModeParameters", N_("Art Mode Parameters"), N_("Art Mode Parameters"), casio2Id, makerTags, undefined, -1, printValue), - TagInfo(0x4001, "CaptureFrameRate", N_("Capture Frame Rate"), N_("Capture Frame Rate"), casio2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4003, "VideoQuality", N_("Video Quality"), N_("Video Quality"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2VideoQuality)), - TagInfo(0xffff, "(UnknownCasio2MakerNoteTag)", "(UnknownCasio2MakerNoteTag)", N_("Unknown Casio2MakerNote tag"), casio2Id, makerTags, asciiString, -1, printValue) + constexpr TagInfo Casio2MakerNote::tagInfo_[] = { + {0x0002, "PreviewImageSize", N_("Preview Image Size"), N_("Preview Image Size"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x0003, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), casio2Id, makerTags, unsignedLong, -1, printValue}, + {0x0004, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), casio2Id, makerTags, unsignedLong, -1, printValue}, + {0x0008, "QualityMode", N_("Quality Mode"), N_("Quality Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2QualityMode)}, + {0x0009, "ImageSize", N_("Image Size"), N_("Image Size"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ImageSize)}, + {0x000d, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode)}, + {0x0014, "ISOSpeed", N_("ISO Speed"), N_("ISO Speed"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2IsoSpeed)}, + {0x0019, "WhiteBalance", N_("White Balance"), N_("White Balance Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance)}, + {0x001d, "FocalLength", N_("Focal Length"), N_("Focal Length"), casio2Id, makerTags, unsignedRational, -1, printValue}, + {0x001f, "Saturation", N_("Saturation"), N_("Saturation"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Saturation)}, + {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Contrast)}, + {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Sharpness)}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), casio2Id, makerTags, undefined, -1, printValue}, + {0x2000, "PreviewImage", N_("Preview Image"), N_("Preview Image"), casio2Id, makerTags, undefined, -1, printValue}, + {0x2001, "FirmwareDate", N_("Firmware Date"), N_("Firmware Date"), casio2Id, makerTags, asciiString, -1, print0x2001}, + {0x2011, "WhiteBalanceBias", N_("White Balance Bias"), N_("White Balance Bias"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x2012, "WhiteBalance2", N_("White Balance"), N_("White Balance Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance2)}, + {0x2021, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x2022, "ObjectDistance", N_("Object Distance"), N_("Object Distance"), casio2Id, makerTags, unsignedLong, -1, print0x2022}, + {0x2034, "FlashDistance", N_("Flash Distance"), N_("Flash Distance"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x2076, "SpecialEffectMode", N_("Special Effect Mode"), N_("Special Effect Mode"), casio2Id, makerTags, unsignedByte, -1, printValue}, + {0x2089, "FaceInfo", N_("Face Info"), N_("Face Info"), casio2Id, makerTags, undefined, -1, printValue}, + {0x211c, "FacesDetected", N_("Faces detected"), N_("Faces detected"), casio2Id, makerTags, unsignedByte, -1, printValue}, + {0x3000, "RecordMode", N_("Record Mode"), N_("Record Mode"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x3001, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ReleaseMode)}, + {0x3002, "Quality", N_("Quality"), N_("Quality"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Quality)}, + {0x3003, "FocusMode2", N_("Focus Mode2"), N_("Focus Mode2"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode2)}, + {0x3006, "HometownCity", N_("Home town city"), N_("Home town city"), casio2Id, makerTags, asciiString, -1, printValue}, + {0x3007, "BestShotMode", N_("Best Shot Mode"), N_("Best Shot Mode"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x3008, "AutoISO", N_("Auto ISO"), N_("Auto ISO"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AutoISO)}, + {0x3009, "AFMode", N_("AF Mode"), N_("AF Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AFMode)}, + {0x3011, "Sharpness2", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, undefined, -1, printValue}, + {0x3012, "Contrast2", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, undefined, -1, printValue}, + {0x3013, "Saturation2", N_("Saturation"), N_("Saturation"), casio2Id, makerTags, undefined, -1, printValue}, + {0x3014, "ISO", N_("ISO"), N_("ISO"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x3015, "ColorMode", N_("Color Mode"), N_("Color Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ColorMode)}, + {0x3016, "Enhancement", N_("Enhancement"), N_("Enhancement"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Enhancement)}, + {0x3017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ColorFilter)}, + {0x301b, "ArtMode", N_("Art Mode"), N_("Art Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ArtMode)}, + {0x301c, "SequenceNumber", N_("Sequence Number"), N_("Sequence Number"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x3020, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x302a, "LightingMode", N_("Lighting Mode"), N_("Lighting Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2LightingMode)}, + {0x302b, "PortraitRefiner", N_("Portrait Refiner"), N_("Portrait Refiner settings"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2PortraitRefiner)}, + {0x3030, "SpecialEffectLevel", N_("Special Effect Level"), N_("Special Effect Level"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x3031, "SpecialEffectSetting", N_("Special Effect Setting"), N_("Special Effect Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2SpecialEffectSetting)}, + {0x3103, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2DriveMode)}, + {0x310b, "ArtModeParameters", N_("Art Mode Parameters"), N_("Art Mode Parameters"), casio2Id, makerTags, undefined, -1, printValue}, + {0x4001, "CaptureFrameRate", N_("Capture Frame Rate"), N_("Capture Frame Rate"), casio2Id, makerTags, unsignedShort, -1, printValue}, + {0x4003, "VideoQuality", N_("Video Quality"), N_("Video Quality"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2VideoQuality)}, + {0xffff, "(UnknownCasio2MakerNoteTag)", "(UnknownCasio2MakerNoteTag)", N_("Unknown Casio2MakerNote tag"), casio2Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* Casio2MakerNote::tagList() diff --git a/src/crwimage_int.cpp b/src/crwimage_int.cpp index 5c155305..e2922e69 100644 --- a/src/crwimage_int.cpp +++ b/src/crwimage_int.cpp @@ -54,7 +54,7 @@ namespace { // local definitions namespace { //! @cond IGNORE - const RotationMap::OmList RotationMap::omList_[] = { + constexpr RotationMap::OmList RotationMap::omList_[] = { { 1, 0 }, { 3, 180 }, { 3, -180 }, diff --git a/src/fujimn_int.cpp b/src/fujimn_int.cpp index e0d27fa7..7f2f53ca 100644 --- a/src/fujimn_int.cpp +++ b/src/fujimn_int.cpp @@ -46,13 +46,13 @@ namespace Exiv2 { namespace Internal { //! OffOn, multiple tags - extern const TagDetails fujiOffOn[] = { + constexpr TagDetails fujiOffOn[] = { { 0, N_("Off") }, { 1, N_("On") } }; //! Sharpness, tag 0x1001 - extern const TagDetails fujiSharpness[] = { + constexpr TagDetails fujiSharpness[] = { { 1, N_("Soft mode 1") }, { 2, N_("Soft mode 2") }, { 3, N_("Normal") }, @@ -61,7 +61,7 @@ namespace Exiv2 { }; //! WhiteBalance, tag 0x1002 - extern const TagDetails fujiWhiteBalance[] = { + constexpr TagDetails fujiWhiteBalance[] = { { 0, N_("Auto") }, { 256, N_("Daylight") }, { 512, N_("Cloudy") }, @@ -74,7 +74,7 @@ namespace Exiv2 { }; //! Color, tag 0x1003 - extern const TagDetails fujiColor[] = { + constexpr TagDetails fujiColor[] = { { 0, N_("Normal") }, { 256, N_("High") }, { 512, N_("Low") }, @@ -87,14 +87,14 @@ namespace Exiv2 { }; //! Tone, tag 0x1004 - extern const TagDetails fujiTone[] = { + constexpr TagDetails fujiTone[] = { { 0, N_("Normal") }, { 256, N_("High") }, { 512, N_("Low") } }; //! FlashMode, tag 0x1010 - extern const TagDetails fujiFlashMode[] = { + constexpr TagDetails fujiFlashMode[] = { { 0, N_("Auto") }, { 1, N_("On") }, { 2, N_("Off") }, @@ -105,13 +105,13 @@ namespace Exiv2 { }; //! FocusMode, tag 0x1021 - extern const TagDetails fujiFocusMode[] = { + constexpr TagDetails fujiFocusMode[] = { { 0, N_("Auto") }, { 1, N_("Manual") } }; //! PictureMode, tag 0x1031 - extern const TagDetails fujiPictureMode[] = { + constexpr TagDetails fujiPictureMode[] = { { 0, N_("Auto") }, { 1, N_("Portrait") }, { 2, N_("Landscape") }, @@ -137,7 +137,7 @@ namespace Exiv2 { //! ShadowTone, tag 0x1040 //! HighlightTone, tag 0x041 - extern const TagDetails fujiSHTone[] = { + constexpr TagDetails fujiSHTone[] = { { -64, N_("+4") }, { -48, N_("+3") }, { -32, N_("+2") }, @@ -148,27 +148,27 @@ namespace Exiv2 { }; //! Continuous, tag 0x1100 - extern const TagDetails fujiContinuous[] = { + constexpr TagDetails fujiContinuous[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("No flash & flash") } }; //! FinePixColor, tag 0x1210 - extern const TagDetails fujiFinePixColor[] = { + constexpr TagDetails fujiFinePixColor[] = { { 0, N_("Standard") }, { 16, N_("Chrome") }, { 48, N_("Black & white") } }; //! DynamicRange, tag 0x1400 - extern const TagDetails fujiDynamicRange[] = { + constexpr TagDetails fujiDynamicRange[] = { { 1, N_("Standard") }, { 3, N_("Wide") } }; //! FilmMode, tag 0x1401 - extern const TagDetails fujiFilmMode[] = { + constexpr TagDetails fujiFilmMode[] = { { 0, N_("F0/Standard (Provia)") }, { 256, N_("F1/Studio Portrait") }, { 272, N_("F1a/Studio Portrait Enhanced Saturation") }, @@ -183,7 +183,7 @@ namespace Exiv2 { }; //! DynamicRange, tag 0x1402 - extern const TagDetails fujiDynamicRangeSetting[] = { + constexpr TagDetails fujiDynamicRangeSetting[] = { { 0, N_("Auto (100-400%)") }, { 1, N_("Raw") }, { 256, N_("Standard (100%)") }, @@ -193,7 +193,7 @@ namespace Exiv2 { }; //! CropMode, tag 0x104d - extern const TagDetails fujiCropMode[] = { + constexpr TagDetails fujiCropMode[] = { { 0, N_("None") }, { 1, N_("Full frame") }, { 2, N_("Sports Finder Mode") }, @@ -201,190 +201,190 @@ namespace Exiv2 { }; //! DRangePriority, tag 0x1443 - extern const TagDetails fujiDRangePriority[] = { + constexpr TagDetails fujiDRangePriority[] = { { 0, N_("Auto") }, { 1, N_("Fixed") } }; //! DRangePriorityAuto, tag 0x1444 - extern const TagDetails fujiDRangePriorityAuto[] = { + constexpr TagDetails fujiDRangePriorityAuto[] = { { 1, N_("Weak") }, { 2, N_("Strong") } }; //! DRangePriorityFixed, tag 0x1445 - extern const TagDetails fujiDRangePriorityFixed[] = { + constexpr TagDetails fujiDRangePriorityFixed[] = { { 1, N_("Weak") }, { 2, N_("Strong") } }; // Fujifilm MakerNote Tag Info - const TagInfo FujiMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", N_("Version"), + constexpr TagInfo FujiMakerNote::tagInfo_[] = { + {0x0000, "Version", N_("Version"), N_("Fujifilm Makernote version"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0x0010, "SerialNumber", N_("Serial Number"), + fujiId, makerTags, undefined, -1, printValue}, + {0x0010, "SerialNumber", N_("Serial Number"), N_("This number is unique, and contains the date of manufacture, " "but is not the same as the number printed on the camera body."), - fujiId, makerTags, asciiString, -1, printValue), - TagInfo(0x1000, "Quality", N_("Quality"), + fujiId, makerTags, asciiString, -1, printValue}, + {0x1000, "Quality", N_("Quality"), N_("Image quality setting"), - fujiId, makerTags, asciiString, -1, printValue), - TagInfo(0x1001, N_("Sharpness"), N_("Sharpness"), + fujiId, makerTags, asciiString, -1, printValue}, + {0x1001, N_("Sharpness"), N_("Sharpness"), N_("Sharpness setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiSharpness)), - TagInfo(0x1002, "WhiteBalance", N_("White Balance"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiSharpness)}, + {0x1002, "WhiteBalance", N_("White Balance"), N_("White balance setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiWhiteBalance)), - TagInfo(0x1003, "Color", N_("Color"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiWhiteBalance)}, + {0x1003, "Color", N_("Color"), N_("Chroma saturation setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiColor)), - TagInfo(0x1004, "Tone", N_("Tone"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiColor)}, + {0x1004, "Tone", N_("Tone"), N_("Tone (contrast) setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiTone)), - TagInfo(0x1010, "FlashMode", N_("Flash Mode"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiTone)}, + {0x1010, "FlashMode", N_("Flash Mode"), N_("Flash firing mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFlashMode)), - TagInfo(0x1011, "FlashStrength", N_("Flash Strength"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFlashMode)}, + {0x1011, "FlashStrength", N_("Flash Strength"), N_("Flash firing strength compensation setting"), - fujiId, makerTags, signedRational, -1, printValue), - TagInfo(0x1020, "Macro", N_("Macro"), + fujiId, makerTags, signedRational, -1, printValue}, + {0x1020, "Macro", N_("Macro"), N_("Macro mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1021, "FocusMode", N_("Focus Mode"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1021, "FocusMode", N_("Focus Mode"), N_("Focusing mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFocusMode)), - TagInfo(0x1022, "0x1022", "0x1022", + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFocusMode)}, + {0x1022, "0x1022", "0x1022", N_("Unknown"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1030, "SlowSync", N_("Slow Sync"), + fujiId, makerTags, unsignedShort, -1, printValue}, + {0x1030, "SlowSync", N_("Slow Sync"), N_("Slow synchro mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1031, "PictureMode", N_("Picture Mode"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1031, "PictureMode", N_("Picture Mode"), N_("Picture mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiPictureMode)), - TagInfo(0x1032, "0x1032", "0x1032", + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiPictureMode)}, + {0x1032, "0x1032", "0x1032", N_("Unknown"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1040, "ShadowTone", N_("Shadow Tone"), + fujiId, makerTags, unsignedShort, -1, printValue}, + {0x1040, "ShadowTone", N_("Shadow Tone"), N_("Shadow tone"), - fujiId, makerTags, signedLong, -1, EXV_PRINT_TAG(fujiSHTone)), - TagInfo(0x1041, "HighlightTone", N_("Highlight Tone"), + fujiId, makerTags, signedLong, -1, EXV_PRINT_TAG(fujiSHTone)}, + {0x1041, "HighlightTone", N_("Highlight Tone"), N_("Highlight tone"), - fujiId, makerTags, signedLong, -1, EXV_PRINT_TAG(fujiSHTone)), - TagInfo(0x104d, "CropMode", N_("Crop Mode"), N_("Crop mode"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiCropMode)), - TagInfo(0x1100, "Continuous", N_("Continuous"), + fujiId, makerTags, signedLong, -1, EXV_PRINT_TAG(fujiSHTone)}, + {0x104d, "CropMode", N_("Crop Mode"), N_("Crop mode"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiCropMode)}, + {0x1100, "Continuous", N_("Continuous"), N_("Continuous shooting or auto bracketing setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiContinuous)), - TagInfo(0x1101, "SequenceNumber", N_("Sequence Number"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiContinuous)}, + {0x1101, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1200, "0x1200", "0x1200", + fujiId, makerTags, unsignedShort, -1, printValue}, + {0x1200, "0x1200", "0x1200", N_("Unknown"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1210, "FinePixColor", N_("FinePix Color"), + fujiId, makerTags, unsignedShort, -1, printValue}, + {0x1210, "FinePixColor", N_("FinePix Color"), N_("Fuji FinePix color setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFinePixColor)), - TagInfo(0x1300, "BlurWarning", N_("Blur Warning"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFinePixColor)}, + {0x1300, "BlurWarning", N_("Blur Warning"), N_("Blur warning status"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1301, "FocusWarning", N_("Focus Warning"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1301, "FocusWarning", N_("Focus Warning"), N_("Auto Focus warning status"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1302, "ExposureWarning", N_("Exposure Warning"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1302, "ExposureWarning", N_("Exposure Warning"), N_("Auto exposure warning status"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1400, "DynamicRange", N_("Dynamic Range"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1400, "DynamicRange", N_("Dynamic Range"), N_("Dynamic range"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRange)), - TagInfo(0x1401, "FilmMode", N_("Film Mode"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRange)}, + {0x1401, "FilmMode", N_("Film Mode"), N_("Film mode"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFilmMode)), - TagInfo(0x1402, "DynamicRangeSetting", N_("Dynamic Range Setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFilmMode)}, + {0x1402, "DynamicRangeSetting", N_("Dynamic Range Setting"), N_("Dynamic range settings"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRangeSetting)), - TagInfo(0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRangeSetting)}, + {0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"), N_("Development dynamic range"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1404, "MinFocalLength", N_("Minimum Focal Length"), + fujiId, makerTags, unsignedShort, -1, printValue}, + {0x1404, "MinFocalLength", N_("Minimum Focal Length"), N_("Minimum focal length"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1405, "MaxFocalLength", N_("Maximum Focal Length"), + fujiId, makerTags, unsignedRational, -1, printValue}, + {0x1405, "MaxFocalLength", N_("Maximum Focal Length"), N_("Maximum focal length"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1406, "MaxApertureAtMinFocal", N_("Maximum Aperture at Minimum Focal"), + fujiId, makerTags, unsignedRational, -1, printValue}, + {0x1406, "MaxApertureAtMinFocal", N_("Maximum Aperture at Minimum Focal"), N_("Maximum aperture at minimum focal"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1407, "MaxApertureAtMaxFocal", N_("Maximum Aperture at Maximum Focal"), + fujiId, makerTags, unsignedRational, -1, printValue}, + {0x1407, "MaxApertureAtMaxFocal", N_("Maximum Aperture at Maximum Focal"), N_("Maximum aperture at maximum focal"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1431, "Rating", N_("Rating"), + fujiId, makerTags, unsignedRational, -1, printValue}, + {0x1431, "Rating", N_("Rating"), N_("Rating"), - fujiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1443, "DRangePriority", N_("D Range Priority"), + fujiId, makerTags, unsignedLong, -1, printValue}, + {0x1443, "DRangePriority", N_("D Range Priority"), N_("Dynamic range priority"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriority)), - TagInfo(0x1444, "DRangePriorityFixed", N_("D Range Priority Fixed"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriority)}, + {0x1444, "DRangePriorityFixed", N_("D Range Priority Fixed"), N_("Dynamic range priority fixed"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityFixed)), - TagInfo(0x1445, "DRangePriorityAuto", N_("D Range Priority Auto"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityFixed)}, + {0x1445, "DRangePriorityAuto", N_("D Range Priority Auto"), N_("Dynamic range priority auto"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityAuto)), - TagInfo(0x8000, "FileSource", N_("File Source"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityAuto)}, + {0x8000, "FileSource", N_("File Source"), N_("File source"), - fujiId, makerTags, asciiString, -1, printValue), - TagInfo(0x8002, "OrderNumber", N_("Order Number"), + fujiId, makerTags, asciiString, -1, printValue}, + {0x8002, "OrderNumber", N_("Order Number"), N_("Order number"), - fujiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x8003, "FrameNumber", N_("Frame Number"), + fujiId, makerTags, unsignedLong, -1, printValue}, + {0x8003, "FrameNumber", N_("Frame Number"), N_("Frame number"), - fujiId, makerTags, unsignedShort, -1, printValue), + fujiId, makerTags, unsignedShort, -1, printValue}, // #1402 - TagInfo(0xf000, "FujiIFD", N_("FujiIFD"), + {0xf000, "FujiIFD", N_("FujiIFD"), N_("Fujifilm IFD"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf001, "RawImageFullWidth", N_("Raw Image Full Width"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf001, "RawImageFullWidth", N_("Raw Image Full Width"), N_("Raw Image Full Width"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf002, "RawImageFullHeight", N_("Raw Image Full Height"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf002, "RawImageFullHeight", N_("Raw Image Full Height"), N_("Raw Image Full Height"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf003, "BitsPerSample", N_("Bits Per Sample"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf003, "BitsPerSample", N_("Bits Per Sample"), N_("Bits Per Sample"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf007, "StripOffsets", N_("Strip Offsets"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf007, "StripOffsets", N_("Strip Offsets"), N_("Strip Offsets"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf008, "StripByteCounts", N_("Strip Byte Counts"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf008, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip Byte Counts"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf00a, "BlackLevel", N_("Black Level"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf00a, "BlackLevel", N_("Black Level"), N_("Black Level"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf00b, "GeometricDistortionParams", N_("Geometric Distortion Params"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf00b, "GeometricDistortionParams", N_("Geometric Distortion Params"), N_("Geometric Distortion Params"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf00c, "WB_GRBLevelsStandard", N_("WB GRB Levels Standard"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf00c, "WB_GRBLevelsStandard", N_("WB GRB Levels Standard"), N_("WB GRB Levels Standard"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf00d, "WB_GRBLevelsAuto", N_("WB GRB Levels Auto"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf00d, "WB_GRBLevelsAuto", N_("WB GRB Levels Auto"), N_("WB GRB Levels Auto"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf00e, "WB_GRBLevels", N_("WB GRB Levels"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf00e, "WB_GRBLevels", N_("WB GRB Levels"), N_("WB GRB Levels"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf00f, "ChromaticAberrationParams", N_("Chromatic Aberration Params"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf00f, "ChromaticAberrationParams", N_("Chromatic Aberration Params"), N_("Chromatic Aberration Params"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0xf010, "VignettingParams", N_("Vignetting Params"), + fujiId, makerTags, undefined, -1, printValue}, + {0xf010, "VignettingParams", N_("Vignetting Params"), N_("Vignetting Params"), - fujiId, makerTags, undefined, -1, printValue), + fujiId, makerTags, undefined, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)", + {0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)", N_("Unknown FujiMakerNote tag"), - fujiId, makerTags, asciiString, -1, printValue) + fujiId, makerTags, asciiString, -1, printValue}, }; const TagInfo* FujiMakerNote::tagList() diff --git a/src/makernote_int.cpp b/src/makernote_int.cpp index 82e4a4e0..786bf296 100644 --- a/src/makernote_int.cpp +++ b/src/makernote_int.cpp @@ -1081,7 +1081,7 @@ namespace Exiv2 { #define NA ((uint32_t)-1) //! Nikon binary array version lookup table - extern const NikonArrayIdx nikonArrayIdx[] = { + constexpr NikonArrayIdx nikonArrayIdx[] = { // NikonSi { 0x0091, "0208", 0, 0, 4 }, // D80 { 0x0091, "0209", 0, 1, 4 }, // D40 diff --git a/src/minoltamn_int.cpp b/src/minoltamn_int.cpp index 7b772f80..96ebd0bc 100644 --- a/src/minoltamn_int.cpp +++ b/src/minoltamn_int.cpp @@ -45,7 +45,7 @@ namespace Exiv2 { // -- Standard Minolta Makernotes tags --------------------------------------------------------------- //! Lookup table to translate Minolta color mode values to readable labels - extern const TagDetails minoltaColorMode[] = { + constexpr TagDetails minoltaColorMode[] = { { 0, N_("Natural Color") }, { 1, N_("Black & White") }, { 2, N_("Vivid Color") }, @@ -63,7 +63,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta image quality values to readable labels - extern const TagDetails minoltaImageQuality[] = { + EXV_UNUSED constexpr TagDetails minoltaImageQuality[] = { { 0, N_("Raw") }, { 1, N_("Super Fine") }, { 2, N_("Fine") }, @@ -73,113 +73,113 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta image stabilization values - extern const TagDetails minoltaImageStabilization[] = { + constexpr TagDetails minoltaImageStabilization[] = { { 1, N_("Off") }, { 5, N_("On") } }; // Minolta Tag Info - const TagInfo MinoltaMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", N_("Makernote Version"), + constexpr TagInfo MinoltaMakerNote::tagInfo_[] = { + {0x0000, "Version", N_("Makernote Version"), N_("String 'MLT0' (not null terminated)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0001, "CameraSettingsStdOld", N_("Camera Settings (Std Old)"), + minoltaId, makerTags, undefined, -1, printValue}, + {0x0001, "CameraSettingsStdOld", N_("Camera Settings (Std Old)"), N_("Standard Camera settings (Old Camera models like D5, D7, S304, and S404)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0003, "CameraSettingsStdNew", N_("Camera Settings (Std New)"), + minoltaId, makerTags, undefined, -1, printValue}, + {0x0003, "CameraSettingsStdNew", N_("Camera Settings (Std New)"), N_("Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0004, "CameraSettings7D", N_("Camera Settings (7D)"), + minoltaId, makerTags, undefined, -1, printValue}, + {0x0004, "CameraSettings7D", N_("Camera Settings (7D)"), N_("Camera Settings (for Dynax 7D model)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0018, "ImageStabilizationData", N_("Image Stabilization Data"), + minoltaId, makerTags, undefined, -1, printValue}, + {0x0018, "ImageStabilizationData", N_("Image Stabilization Data"), N_("Image stabilization data"), - minoltaId, makerTags, undefined, -1, printValue), + minoltaId, makerTags, undefined, -1, printValue}, // TODO: Implement WB Info A100 tags decoding. - TagInfo(0x0020, "WBInfoA100", N_("WB Info A100"), + {0x0020, "WBInfoA100", N_("WB Info A100"), N_("White balance information for the Sony DSLR-A100"), - minoltaId, makerTags, undefined, -1, printValue), + minoltaId, makerTags, undefined, -1, printValue}, - TagInfo(0x0040, "CompressedImageSize", N_("Compressed Image Size"), + {0x0040, "CompressedImageSize", N_("Compressed Image Size"), N_("Compressed image size"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0081, "Thumbnail", N_("Thumbnail"), + minoltaId, makerTags, unsignedLong, -1, printValue}, + {0x0081, "Thumbnail", N_("Thumbnail"), N_("Jpeg thumbnail 640x480 pixels"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0088, "ThumbnailOffset", N_("Thumbnail Offset"), + minoltaId, makerTags, undefined, -1, printValue}, + {0x0088, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the thumbnail"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0089, "ThumbnailLength", N_("Thumbnail Length"), + minoltaId, makerTags, unsignedLong, -1, printValue}, + {0x0089, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the thumbnail"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0100, "SceneMode", N_("Scene Mode"), + minoltaId, makerTags, unsignedLong, -1, printValue}, + {0x0100, "SceneMode", N_("Scene Mode"), N_("Scene Mode"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonySceneMode), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonySceneMode}, // TODO: for A100, use Sony table from printMinoltaSonyColorMode(). - TagInfo(0x0101, "ColorMode", N_("Color Mode"), + {0x0101, "ColorMode", N_("Color Mode"), N_("Color mode"), - minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaColorMode)), + minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaColorMode)}, - TagInfo(0x0102, "Quality", N_("Image Quality"), + {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality}, // TODO: Tag 0x0103 : quality or image size (see ExifTool doc). - TagInfo(0x0103, "0x0103", N_("0x0103"), + {0x0103, "0x0103", N_("0x0103"), N_("0x0103"), - minoltaId, makerTags, unsignedLong, -1, printValue), + minoltaId, makerTags, unsignedLong, -1, printValue}, - TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), + {0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), - minoltaId, makerTags, signedRational, -1, print0x9204), - TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"), + minoltaId, makerTags, signedRational, -1, print0x9204}, + {0x0105, "Teleconverter", N_("Teleconverter Model"), N_("Teleconverter Model"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel), - TagInfo(0x0107, "ImageStabilization", N_("Image Stabilization"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel}, + {0x0107, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), - minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaImageStabilization)), - TagInfo(0x0109, "RawAndJpgRecording", N_("RAW+JPG Recording"), + minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaImageStabilization)}, + {0x0109, "RawAndJpgRecording", N_("RAW+JPG Recording"), N_("RAW and JPG files recording"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), - TagInfo(0x010a, "ZoneMatching", N_("Zone Matching"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, + {0x010a, "ZoneMatching", N_("Zone Matching"), N_("Zone matching"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching), - TagInfo(0x010b, "ColorTemperature", N_("Color Temperature"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching}, + {0x010b, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x010c, "LensID", N_("Lens ID"), + minoltaId, makerTags, unsignedLong, -1, printValue}, + {0x010c, "LensID", N_("Lens ID"), N_("Lens identifier"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyLensID), - TagInfo(0x0111, "ColorCompensationFilter", N_("Color Compensation Filter"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyLensID}, + {0x0111, "ColorCompensationFilter", N_("Color Compensation Filter"), N_("Color Compensation Filter: negative is green, positive is magenta"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + minoltaId, makerTags, unsignedLong, -1, printValue}, + {0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune Value"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0113, "ImageStabilizationA100", N_("Image Stabilization A100"), + minoltaId, makerTags, unsignedLong, -1, printValue}, + {0x0113, "ImageStabilizationA100", N_("Image Stabilization A100"), N_("Image Stabilization for the Sony DSLR-A100"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, // TODO: implement CameraSettingsA100 tags decoding. - TagInfo(0x0114, "CameraSettings5D", N_("Camera Settings (5D)"), + {0x0114, "CameraSettings5D", N_("Camera Settings (5D)"), N_("Camera Settings (for Dynax 5D model)"), - minoltaId, makerTags, undefined, -1, printValue), + minoltaId, makerTags, undefined, -1, printValue}, - TagInfo(0x0115, "WhiteBalance", N_("White Balance"), + {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0f00, "CameraSettingsZ1", N_("Camera Settings (Z1)"), + minoltaId, makerTags, undefined, -1, printValue}, + {0x0f00, "CameraSettingsZ1", N_("Camera Settings (Z1)"), N_("Camera Settings (for Z1, DImage X, and F100 models)"), - minoltaId, makerTags, undefined, -1, printValue), + minoltaId, makerTags, undefined, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownMinoltaMakerNoteTag)", "(UnknownMinoltaMakerNoteTag)", + {0xffff, "(UnknownMinoltaMakerNoteTag)", "(UnknownMinoltaMakerNoteTag)", N_("Unknown Minolta MakerNote tag"), - minoltaId, makerTags, asciiString, -1, printValue) + minoltaId, makerTags, asciiString, -1, printValue}, }; const TagInfo* MinoltaMakerNote::tagList() @@ -190,7 +190,7 @@ namespace Exiv2 { // -- Standard Minolta camera settings --------------------------------------------------------------- //! Lookup table to translate Minolta Std camera settings exposure mode values to readable labels - extern const TagDetails minoltaExposureModeStd[] = { + constexpr TagDetails minoltaExposureModeStd[] = { { 0, N_("Program") }, { 1, N_("Aperture priority") }, { 2, N_("Shutter priority") }, @@ -198,7 +198,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings flash mode values to readable labels - extern const TagDetails minoltaFlashModeStd[] = { + constexpr TagDetails minoltaFlashModeStd[] = { { 0, N_("Fill flash") }, { 1, N_("Red-eye reduction") }, { 2, N_("Rear flash sync") }, @@ -207,7 +207,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings white balance values to readable labels - extern const TagDetails minoltaWhiteBalanceStd[] = { + constexpr TagDetails minoltaWhiteBalanceStd[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Cloudy") }, @@ -220,7 +220,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings image size values to readable labels - extern const TagDetails minoltaImageSizeStd[] = { + constexpr TagDetails minoltaImageSizeStd[] = { { 0, N_("Full size") }, { 1, "1600x1200" }, { 2, "1280x960" }, @@ -231,7 +231,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings image quality values to readable labels - extern const TagDetails minoltaImageQualityStd[] = { + constexpr TagDetails minoltaImageQualityStd[] = { { 0, N_("Raw") }, { 1, N_("Super fine") }, { 2, N_("Fine") }, @@ -241,7 +241,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings drive mode values to readable labels - extern const TagDetails minoltaDriveModeStd[] = { + constexpr TagDetails minoltaDriveModeStd[] = { { 0, N_("Single Frame") }, { 1, N_("Continuous") }, { 2, N_("Self-timer") }, @@ -252,28 +252,28 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings metering mode values to readable labels - extern const TagDetails minoltaMeteringModeStd[] = { + constexpr TagDetails minoltaMeteringModeStd[] = { { 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 - extern const TagDetails minoltaDigitalZoomStd[] = { + 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 - extern const TagDetails minoltaBracketStepStd[] = { + 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 - extern const TagDetails minoltaAFPointsStd[] = { + EXV_UNUSED constexpr TagDetails minoltaAFPointsStd[] = { { 0, N_("Center") }, { 1, N_("Top") }, { 2, N_("Top-right") }, @@ -286,20 +286,20 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings flash fired values to readable labels - extern const TagDetails minoltaFlashFired[] = { + constexpr TagDetails minoltaFlashFired[] = { { 0, N_("Did not fire") }, { 1, N_("Fired") } }; //! Lookup table to translate Minolta Std camera settings sharpness values to readable labels - extern const TagDetails minoltaSharpnessStd[] = { + 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 - extern const TagDetails minoltaSubjectProgramStd[] = { + constexpr TagDetails minoltaSubjectProgramStd[] = { { 0, N_("None") }, { 1, N_("Portrait") }, { 2, N_("Text") }, @@ -309,7 +309,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings ISO settings values to readable labels - extern const TagDetails minoltaISOSettingStd[] = { + constexpr TagDetails minoltaISOSettingStd[] = { { 0, "100" }, { 1, "200" }, { 2, "400" }, @@ -319,7 +319,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings model values to readable labels - extern const TagDetails minoltaModelStd[] = { + constexpr TagDetails minoltaModelStd[] = { { 0, "DiMAGE 7 | X1 | X21 | X31" }, { 1, "DiMAGE 5" }, { 2, "DiMAGE S304" }, @@ -332,19 +332,19 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings interval mode values to readable labels - extern const TagDetails minoltaIntervalModeStd[] = { + 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 - extern const TagDetails minoltaFolderNameStd[] = { + 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 - extern const TagDetails minoltaColorModeStd[] = { + constexpr TagDetails minoltaColorModeStd[] = { { 0, N_("Natural color") }, { 1, N_("Black and white") }, { 2, N_("Vivid color") }, @@ -353,7 +353,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings wide focus zone values to readable labels - extern const TagDetails minoltaWideFocusZoneStd[] = { + constexpr TagDetails minoltaWideFocusZoneStd[] = { { 0, N_("No zone") }, { 1, N_("Center zone (horizontal orientation)") }, { 1, N_("Center zone (vertical orientation)") }, @@ -362,19 +362,19 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings focus mode values to readable labels - extern const TagDetails minoltaFocusModeStd[] = { + 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 - extern const TagDetails minoltaFocusAreaStd[] = { + 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 - extern const TagDetails minoltaDECPositionStd[] = { + constexpr TagDetails minoltaDECPositionStd[] = { { 0, N_("Exposure") }, { 1, N_("Contrast") }, { 2, N_("Saturation") }, @@ -382,13 +382,13 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings color profile values to readable labels - extern const TagDetails minoltaColorProfileStd[] = { + constexpr TagDetails minoltaColorProfileStd[] = { { 0, N_("Not embedded") }, { 1, N_("Embedded") } }; //! Lookup table to translate Minolta Std camera settings data Imprint values to readable labels - extern const TagDetails minoltaDataImprintStd[] = { + constexpr TagDetails minoltaDataImprintStd[] = { { 0, N_("None") }, { 1, "YYYY/MM/DD" }, { 2, "MM/DD/HH:MM" }, @@ -397,7 +397,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Std camera settings flash metering values to readable labels - extern const TagDetails minoltaFlashMeteringStd[] = { + constexpr TagDetails minoltaFlashMeteringStd[] = { { 0, N_("ADI (Advanced Distance Integration)") }, { 1, N_("Pre-flash TTl") }, { 2, N_("Manual flash control") } @@ -479,161 +479,161 @@ namespace Exiv2 { } // Minolta Standard Camera Settings Tag Info (Old and New) - const TagInfo MinoltaMakerNote::tagInfoCsStd_[] = { - TagInfo(0x0001, "ExposureMode", N_("Exposure Mode"), + constexpr TagInfo MinoltaMakerNote::tagInfoCsStd_[] = { + {0x0001, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaExposureModeStd)), - TagInfo(0x0002, "FlashMode", N_("Flash Mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaExposureModeStd)}, + {0x0002, "FlashMode", N_("Flash Mode"), N_("Flash mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashModeStd)), - TagInfo(0x0003, "WhiteBalance", N_("White Balance"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashModeStd)}, + {0x0003, "WhiteBalance", N_("White Balance"), N_("White balance"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWhiteBalanceStd)), - TagInfo(0x0004, "ImageSize", N_("Image Size"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWhiteBalanceStd)}, + {0x0004, "ImageSize", N_("Image Size"), N_("Image size"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageSizeStd)), - TagInfo(0x0005, "Quality", N_("Image Quality"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageSizeStd)}, + {0x0005, "Quality", N_("Image Quality"), N_("Image quality"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageQualityStd)), - TagInfo(0x0006, "DriveMode", N_("Drive Mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageQualityStd)}, + {0x0006, "DriveMode", N_("Drive Mode"), N_("Drive mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDriveModeStd)), - TagInfo(0x0007, "MeteringMode", N_("Metering Mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDriveModeStd)}, + {0x0007, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaMeteringModeStd)), - TagInfo(0x0008, "ISO", N_("ISO"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaMeteringModeStd)}, + {0x0008, "ISO", N_("ISO"), N_("ISO Value"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureSpeedStd), - TagInfo(0x0009, "ExposureTime", N_("Exposure Time"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureSpeedStd}, + {0x0009, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureTimeStd), - TagInfo(0x000A, "FNumber", N_("FNumber"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureTimeStd}, + {0x000A, "FNumber", N_("FNumber"), N_("The F-Number"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFNumberStd), - TagInfo(0x000B, "MacroMode", N_("Macro Mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFNumberStd}, + {0x000B, "MacroMode", N_("Macro Mode"), N_("Macro mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue), - TagInfo(0x000C, "DigitalZoom", N_("Digital Zoom"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue}, + {0x000C, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDigitalZoomStd)), - TagInfo(0x000D, "ExposureCompensation", N_("Exposure Compensation"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDigitalZoomStd)}, + {0x000D, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureCompensationStd), - TagInfo(0x000E, "BracketStep", N_("Bracket Step"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureCompensationStd}, + {0x000E, "BracketStep", N_("Bracket Step"), N_("Bracket step"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaBracketStepStd)), - TagInfo(0x0010, "IntervalLength", N_("Interval Length"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaBracketStepStd)}, + {0x0010, "IntervalLength", N_("Interval Length"), N_("Interval length"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0011, "IntervalNumber", N_("Interval Number"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x0011, "IntervalNumber", N_("Interval Number"), N_("Interval number"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0012, "FocalLength", N_("Focal Length"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x0012, "FocalLength", N_("Focal Length"), N_("Focal length"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFocalLengthStd), - TagInfo(0x0013, "FocusDistance", N_("Focus Distance"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFocalLengthStd}, + {0x0013, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0014, "FlashFired", N_("Flash Fired"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x0014, "FlashFired", N_("Flash Fired"), N_("Flash fired"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x0015, "MinoltaDate", N_("Minolta Date"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x0015, "MinoltaDate", N_("Minolta Date"), N_("Minolta date"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaDateStd), - TagInfo(0x0016, "MinoltaTime", N_("Minolta Time"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaDateStd}, + {0x0016, "MinoltaTime", N_("Minolta Time"), N_("Minolta time"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaTimeStd), - TagInfo(0x0017, "MaxAperture", N_("Max Aperture"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaTimeStd}, + {0x0017, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x001A, "FileNumberMemory", N_("File Number Memory"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x001A, "FileNumberMemory", N_("File Number Memory"), N_("File number memory"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue), - TagInfo(0x001B, "LastFileNumber", N_("Last Image Number"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue}, + {0x001B, "LastFileNumber", N_("Last Image Number"), N_("Last image number"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x001C, "ColorBalanceRed", N_("Color Balance Red"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x001C, "ColorBalanceRed", N_("Color Balance Red"), N_("Color balance red"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), - TagInfo(0x001D, "ColorBalanceGreen", N_("Color Balance Green"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd}, + {0x001D, "ColorBalanceGreen", N_("Color Balance Green"), N_("Color balance green"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), - TagInfo(0x001E, "ColorBalanceBlue", N_("Color Balance Blue"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd}, + {0x001E, "ColorBalanceBlue", N_("Color Balance Blue"), N_("Color balance blue"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), - TagInfo(0x001F, "Saturation", N_("Saturation"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd}, + {0x001F, "Saturation", N_("Saturation"), N_("Saturation"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0020, "Contrast", N_("Contrast"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0021, "Sharpness", N_("Sharpness"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSharpnessStd)), - TagInfo(0x0022, "SubjectProgram", N_("Subject Program"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSharpnessStd)}, + {0x0022, "SubjectProgram", N_("Subject Program"), N_("Subject program"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSubjectProgramStd)), - TagInfo(0x0023, "FlashExposureComp", N_("Flash Exposure Compensation"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSubjectProgramStd)}, + {0x0023, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFlashExposureCompStd), - TagInfo(0x0024, "ISOSetting", N_("ISO Settings"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFlashExposureCompStd}, + {0x0024, "ISOSetting", N_("ISO Settings"), N_("ISO setting"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaISOSettingStd)), - TagInfo(0x0025, "MinoltaModel", N_("Minolta Model"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaISOSettingStd)}, + {0x0025, "MinoltaModel", N_("Minolta Model"), N_("Minolta model"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaModelStd)), - TagInfo(0x0026, "IntervalMode", N_("Interval Mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaModelStd)}, + {0x0026, "IntervalMode", N_("Interval Mode"), N_("Interval mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaIntervalModeStd)), - TagInfo(0x0027, "FolderName", N_("Folder Name"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaIntervalModeStd)}, + {0x0027, "FolderName", N_("Folder Name"), N_("Folder name"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFolderNameStd)), - TagInfo(0x0028, "ColorMode", N_("ColorMode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFolderNameStd)}, + {0x0028, "ColorMode", N_("ColorMode"), N_("ColorMode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorModeStd)), - TagInfo(0x0029, "ColorFilter", N_("Color Filter"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorModeStd)}, + {0x0029, "ColorFilter", N_("Color Filter"), N_("Color filter"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002A, "BWFilter", N_("Black and White Filter"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x002A, "BWFilter", N_("Black and White Filter"), N_("Black and white filter"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002B, "Internal Flash", N_("Internal Flash"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x002B, "Internal Flash", N_("Internal Flash"), N_("Internal Flash"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x002C, "Brightness", N_("Brightness"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x002C, "Brightness", N_("Brightness"), N_("Brightness"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaBrightnessStd), - TagInfo(0x002D, "SpotFocusPointX", N_("Spot Focus Point X"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaBrightnessStd}, + {0x002D, "SpotFocusPointX", N_("Spot Focus Point X"), N_("Spot focus point X"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002E, "SpotFocusPointY", N_("Spot Focus Point Y"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x002E, "SpotFocusPointY", N_("Spot Focus Point Y"), N_("Spot focus point Y"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002F, "WideFocusZone", N_("Wide Focus Zone"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + {0x002F, "WideFocusZone", N_("Wide Focus Zone"), N_("Wide focus zone"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWideFocusZoneStd)), - TagInfo(0x0030, "FocusMode", N_("Focus Mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWideFocusZoneStd)}, + {0x0030, "FocusMode", N_("Focus Mode"), N_("Focus mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusModeStd)), - TagInfo(0x0031, "FocusArea", N_("Focus area"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusModeStd)}, + {0x0031, "FocusArea", N_("Focus area"), N_("Focus area"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusAreaStd)), - TagInfo(0x0032, "DECPosition", N_("DEC Switch Position"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusAreaStd)}, + {0x0032, "DECPosition", N_("DEC Switch Position"), N_("DEC switch position"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDECPositionStd)), - TagInfo(0x0033, "ColorProfile", N_("Color Profile"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDECPositionStd)}, + {0x0033, "ColorProfile", N_("Color Profile"), N_("Color profile"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorProfileStd)), - TagInfo(0x0034, "DataImprint", N_("Data Imprint"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorProfileStd)}, + {0x0034, "DataImprint", N_("Data Imprint"), N_("Data Imprint"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDataImprintStd)), - TagInfo(0x003F, "FlashMetering", N_("Flash Metering"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDataImprintStd)}, + {0x003F, "FlashMetering", N_("Flash Metering"), N_("Flash metering"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)}, // End of list marker - TagInfo(0xffff, "(UnknownMinoltaCsStdTag)", "(UnknownMinoltaCsStdTag)", + {0xffff, "(UnknownMinoltaCsStdTag)", "(UnknownMinoltaCsStdTag)", N_("Unknown Minolta Camera Settings tag"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue) + minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCsStd() @@ -644,7 +644,7 @@ namespace Exiv2 { // -- Minolta Dynax 7D camera settings --------------------------------------------------------------- //! Lookup table to translate Minolta Dynax 7D camera settings exposure mode values to readable labels - extern const TagDetails minoltaExposureMode7D[] = { + constexpr TagDetails minoltaExposureMode7D[] = { { 0, N_("Program") }, { 1, N_("Aperture priority") }, { 2, N_("Shutter priority") }, @@ -655,14 +655,14 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 7D camera settings image size values to readable labels - extern const TagDetails minoltaImageSize7D[] = { + 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 - extern const TagDetails minoltaImageQuality7D[] = { + constexpr TagDetails minoltaImageQuality7D[] = { { 0, N_("Raw") }, { 16, N_("Fine") }, { 32, N_("Normal") }, @@ -671,7 +671,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 7D camera settings white balance values to readable labels - extern const TagDetails minoltaWhiteBalance7D[] = { + constexpr TagDetails minoltaWhiteBalance7D[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Shade") }, @@ -684,7 +684,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 7D camera settings focus mode values to readable labels - extern const TagDetails minoltaFocusMode7D[] = { + constexpr TagDetails minoltaFocusMode7D[] = { { 0, N_("Single-shot AF") }, { 1, N_("Continuous AF") }, { 3, N_("Manual") }, @@ -692,7 +692,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 7D camera settings AF points values to readable labels - extern const TagDetails minoltaAFPoints7D[] = { + constexpr TagDetails minoltaAFPoints7D[] = { { 1, N_("Center") }, { 2, N_("Top") }, { 4, N_("Top-right") }, @@ -705,7 +705,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 7D camera settings ISO settings values to readable labels - extern const TagDetails minoltaISOSetting7D[] = { + constexpr TagDetails minoltaISOSetting7D[] = { { 0, N_("Auto") }, { 1, "100" }, { 3, "200" }, @@ -716,104 +716,104 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 7D camera settings color space values to readable labels - extern const TagDetails minoltaColorSpace7D[] = { + constexpr TagDetails minoltaColorSpace7D[] = { { 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 - extern const TagDetails minoltaRotation7D[] = { + constexpr TagDetails minoltaRotation7D[] = { { 72, N_("Horizontal (normal)") }, { 76, N_("Rotate 90 CW") }, { 82, N_("Rotate 270 CW") } }; // Minolta Dynax 7D Camera Settings Tag Info - const TagInfo MinoltaMakerNote::tagInfoCs7D_[] = { - TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"), + constexpr TagInfo MinoltaMakerNote::tagInfoCs7D_[] = { + {0x0000, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode7D)), - TagInfo(0x0002, "ImageSize", N_("Image Size"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode7D)}, + {0x0002, "ImageSize", N_("Image Size"), N_("Image size"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageSize7D)), - TagInfo(0x0003, "Quality", N_("Image Quality"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageSize7D)}, + {0x0003, "Quality", N_("Image Quality"), N_("Image quality"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageQuality7D)), - TagInfo(0x0004, "WhiteBalance", N_("White Balance"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageQuality7D)}, + {0x0004, "WhiteBalance", N_("White Balance"), N_("White balance"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance7D)), - TagInfo(0x000E, "FocusMode", N_("Focus Mode"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance7D)}, + {0x000E, "FocusMode", N_("Focus Mode"), N_("Focus mode"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFocusMode7D)), - TagInfo(0x0010, "AFPoints", N_("AF Points"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFocusMode7D)}, + {0x0010, "AFPoints", N_("AF Points"), N_("AF points"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaAFPoints7D)), - TagInfo(0x0015, "FlashFired", N_("Flash Fired"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaAFPoints7D)}, + {0x0015, "FlashFired", N_("Flash Fired"), N_("Flash fired"), - minoltaCs7DId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x0016, "FlashMode", N_("Flash Mode"), + minoltaCs7DId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x0016, "FlashMode", N_("Flash Mode"), N_("Flash mode"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001C, "ISOSpeed", N_("ISO Speed Mode"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x001C, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaISOSetting7D)), - TagInfo(0x001E, "ExposureCompensation", N_("Exposure Compensation"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaISOSetting7D)}, + {0x001E, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), - minoltaCs7DId, makerTags, signedShort, 1, printValue), - TagInfo(0x0025, "ColorSpace", N_("Color Space"), + minoltaCs7DId, makerTags, signedShort, 1, printValue}, + {0x0025, "ColorSpace", N_("Color Space"), N_("Color space"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaColorSpace7D)), - TagInfo(0x0026, "Sharpness", N_("Sharpness"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaColorSpace7D)}, + {0x0026, "Sharpness", N_("Sharpness"), N_("Sharpness"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0027, "Contrast", N_("Contrast"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x0027, "Contrast", N_("Contrast"), N_("Contrast"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0028, "Saturation", N_("Saturation"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x0028, "Saturation", N_("Saturation"), N_("Saturation"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x002D, "FreeMemoryCardImages", N_("Free Memory Card Images"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x002D, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x003F, "ColorTemperature", N_("Color Temperature"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x003F, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), - minoltaCs7DId, makerTags, signedShort, 1, printValue), - TagInfo(0x0040, "Hue", N_("Hue"), N_("Hue"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0046, "Rotation", N_("Rotation"), + minoltaCs7DId, makerTags, signedShort, 1, printValue}, + {0x0040, "Hue", N_("Hue"), N_("Hue"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x0046, "Rotation", N_("Rotation"), N_("Rotation"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaRotation7D)), - TagInfo(0x0047, "FNumber", N_("FNumber"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaRotation7D)}, + {0x0047, "FNumber", N_("FNumber"), N_("The F-Number"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0048, "ExposureTime", N_("Exposure Time"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x0048, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, // 0x004A is a dupplicate than 0x002D. - TagInfo(0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"), + {0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x005E, "ImageNumber", N_("Image Number"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x005E, "ImageNumber", N_("Image Number"), N_("Image number"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0060, "NoiseReduction", N_("Noise Reduction"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x0060, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), - minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, // 0x0062 is a dupplicate than 0x005E. - TagInfo(0x0062, "ImageNumber", N_("Image Number"), + {0x0062, "ImageNumber", N_("Image Number"), N_("Image number"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0071, "ImageStabilization", N_("Image Stabilization"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + {0x0071, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), - minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0075, "ZoneMatchingOn", N_("Zone Matching On"), + minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0075, "ZoneMatchingOn", N_("Zone Matching On"), N_("Zone matching on"), - minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, // End of list marker - TagInfo(0xffff, "(UnknownMinoltaCs7DTag)", "(UnknownMinoltaCs7DTag)", + {0xffff, "(UnknownMinoltaCs7DTag)", "(UnknownMinoltaCs7DTag)", N_("Unknown Minolta Camera Settings 7D tag"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue) + minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCs7D() @@ -824,7 +824,7 @@ namespace Exiv2 { // -- Minolta Dynax 5D camera settings --------------------------------------------------------------- //! Lookup table to translate Minolta Dynax 5D camera settings exposure mode values to readable labels - extern const TagDetails minoltaExposureMode5D[] = { + constexpr TagDetails minoltaExposureMode5D[] = { { 0, N_("Program") }, { 1, N_("Aperture priority") }, { 2, N_("Shutter priority") }, @@ -841,14 +841,14 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings image size values to readable labels - extern const TagDetails minoltaImageSize5D[] = { + 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 - extern const TagDetails minoltaImageQuality5D[] = { + constexpr TagDetails minoltaImageQuality5D[] = { { 0, N_("Raw") }, { 16, N_("Fine") }, { 32, N_("Normal") }, @@ -857,7 +857,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings white balance values to readable labels - extern const TagDetails minoltaWhiteBalance5D[] = { + constexpr TagDetails minoltaWhiteBalance5D[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Cloudy") }, @@ -870,14 +870,14 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings metering mode values to readable labels - extern const TagDetails minoltaMeteringMode5D[] = { + 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 - extern const TagDetails minoltaISOSetting5D[] = { + constexpr TagDetails minoltaISOSetting5D[] = { { 0, N_("Auto") }, { 1, "100" }, { 3, "200" }, @@ -890,7 +890,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings color space values to readable labels - extern const TagDetails minoltaColorSpace5D[] = { + constexpr TagDetails minoltaColorSpace5D[] = { { 0, N_("sRGB (Natural)") }, { 1, N_("sRGB (Natural+)") }, { 2, N_("Monochrome") }, @@ -899,14 +899,14 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings rotation values to readable labels - extern const TagDetails minoltaRotation5D[] = { + constexpr TagDetails minoltaRotation5D[] = { { 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 - extern const TagDetails minoltaFocusPosition5D[] = { + constexpr TagDetails minoltaFocusPosition5D[] = { { 0, N_("Wide") }, { 1, N_("Central") }, { 2, N_("Up") }, @@ -920,14 +920,14 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings focus area values to readable labels - extern const TagDetails minoltaFocusArea5D[] = { + 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 - extern const TagDetails minoltaAFMode5D[] = { + constexpr TagDetails minoltaAFMode5D[] = { { 0, "AF-A" }, { 1, "AF-S" }, { 2, "AF-D" }, @@ -935,7 +935,7 @@ namespace Exiv2 { }; //! Lookup table to translate Minolta Dynax 5D camera settings picture finish values to readable labels - extern const TagDetails minoltaPictureFinish5D[] = { + constexpr TagDetails minoltaPictureFinish5D[] = { { 0, N_("Natural") }, { 1, N_("Natural+") }, { 2, N_("Portrait") }, @@ -977,97 +977,97 @@ namespace Exiv2 { } // Minolta Dynax 5D Camera Settings Tag Info - const TagInfo MinoltaMakerNote::tagInfoCs5D_[] = { - TagInfo(0x000A, "ExposureMode", N_("Exposure Mode"), + constexpr TagInfo MinoltaMakerNote::tagInfoCs5D_[] = { + {0x000A, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaExposureMode5D)), - TagInfo(0x000C, "ImageSize", N_("Image Size"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaExposureMode5D)}, + {0x000C, "ImageSize", N_("Image Size"), N_("Image size"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageSize5D)), - TagInfo(0x000D, "Quality", N_("Image Quality"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageSize5D)}, + {0x000D, "Quality", N_("Image Quality"), N_("Image quality"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageQuality5D)), - TagInfo(0x000E, "WhiteBalance", N_("White Balance"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageQuality5D)}, + {0x000E, "WhiteBalance", N_("White Balance"), N_("White balance"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaWhiteBalance5D)), - TagInfo(0x001A, "FocusPosition", N_("Focus Position"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaWhiteBalance5D)}, + {0x001A, "FocusPosition", N_("Focus Position"), N_("Focus position"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusPosition5D)), - TagInfo(0x001B, "FocusArea", N_("Focus Area"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusPosition5D)}, + {0x001B, "FocusArea", N_("Focus Area"), N_("Focus area"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusArea5D)), - TagInfo(0x001F, "FlashFired", N_("Flash Fired"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusArea5D)}, + {0x001F, "FlashFired", N_("Flash Fired"), N_("Flash fired"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x0025, "MeteringMode", N_("Metering Mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x0025, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaMeteringMode5D)), - TagInfo(0x0026, "ISOSpeed", N_("ISO Speed Mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaMeteringMode5D)}, + {0x0026, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaISOSetting5D)), - TagInfo(0x002F, "ColorSpace", N_("Color Space"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaISOSetting5D)}, + {0x002F, "ColorSpace", N_("Color Space"), N_("Color space"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaColorSpace5D)), - TagInfo(0x0030, "Sharpness", N_("Sharpness"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaColorSpace5D)}, + {0x0030, "Sharpness", N_("Sharpness"), N_("Sharpness"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0031, "Contrast", N_("Contrast"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0031, "Contrast", N_("Contrast"), N_("Contrast"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0032, "Saturation", N_("Saturation"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0032, "Saturation", N_("Saturation"), N_("Saturation"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0035, "ExposureTime", N_("Exposure Time"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0035, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0036, "FNumber", N_("FNumber"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0036, "FNumber", N_("FNumber"), N_("The F-Number"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0037, "FreeMemoryCardImages", N_("Free Memory Card Images"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0037, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0038, "ExposureRevision", N_("Exposure Revision"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0038, "ExposureRevision", N_("Exposure Revision"), N_("Exposure revision"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0048, "FocusMode", N_("Focus Mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0048, "FocusMode", N_("Focus Mode"), N_("Focus mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusModeStd)), - TagInfo(0x0049, "ColorTemperature", N_("Color Temperature"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusModeStd)}, + {0x0049, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), - minoltaCs5DId, makerTags, signedShort, -1, printValue), - TagInfo(0x0050, "Rotation", N_("Rotation"), + minoltaCs5DId, makerTags, signedShort, -1, printValue}, + {0x0050, "Rotation", N_("Rotation"), N_("Rotation"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaRotation5D)), - TagInfo(0x0053, "ExposureCompensation", N_("Exposure Compensation"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaRotation5D)}, + {0x0053, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureCompensation5D), - TagInfo(0x0054, "FreeMemoryCardImages", N_("Free Memory Card Images"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureCompensation5D}, + {0x0054, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0065, "Rotation2", N_("Rotation2"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x0065, "Rotation2", N_("Rotation2"), N_("Rotation2"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyRotation), - TagInfo(0x006E, "Color Temperature", N_("Color Temperature"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyRotation}, + {0x006E, "Color Temperature", N_("Color Temperature"), N_("Color Temperature"), - minoltaCs5DId, makerTags, signedShort, -1, printValue), - TagInfo(0x0071, "PictureFinish", N_("Picture Finish"), + minoltaCs5DId, makerTags, signedShort, -1, printValue}, + {0x0071, "PictureFinish", N_("Picture Finish"), N_("Picture Finish"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaPictureFinish5D)), - TagInfo(0x0091, "ExposureManualBias", N_("Exposure Manual Bias"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaPictureFinish5D)}, + {0x0091, "ExposureManualBias", N_("Exposure Manual Bias"), N_("Exposure manual bias"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureManualBias5D), - TagInfo(0x009E, "AFMode", N_("AF Mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureManualBias5D}, + {0x009E, "AFMode", N_("AF Mode"), N_("AF mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaAFMode5D)), - TagInfo(0x00AE, "ImageNumber", N_("Image Number"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaAFMode5D)}, + {0x00AE, "ImageNumber", N_("Image Number"), N_("Image number"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00B0, "NoiseReduction", N_("Noise Reduction"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, + {0x00B0, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue), - TagInfo(0x00BD, "ImageStabilization", N_("Image Stabilization"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue}, + {0x00BD, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue}, // From Xavier Raynaud: some notes on missing tags. // 0x0051 seems to be identical to FNumber (0x0036). An approx. relation between Tag value @@ -1076,9 +1076,9 @@ namespace Exiv2 { // value and Exposure time is exp(-4+value*0.085) // End of list marker - TagInfo(0xFFFF, "(UnknownMinoltaCs5DTag)", "(UnknownMinoltaCs5DTag)", + {0xFFFF, "(UnknownMinoltaCs5DTag)", "(UnknownMinoltaCs5DTag)", N_("Unknown Minolta Camera Settings 5D tag"), - minoltaCs5DId, makerTags, invalidTypeId, -1, printValue) + minoltaCs5DId, makerTags, invalidTypeId, -1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCs5D() @@ -1089,7 +1089,7 @@ namespace Exiv2 { // -- Sony A100 camera settings --------------------------------------------------------------- //! Lookup table to translate Sony A100 camera settings drive mode 2 values to readable labels - extern const TagDetails sonyDriveMode2A100[] = { + constexpr TagDetails sonyDriveMode2A100[] = { { 0, N_("Self-timer 10 sec") }, { 1, N_("Continuous") }, { 4, N_("Self-timer 2 sec") }, @@ -1103,7 +1103,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings focus mode values to readable labels - extern const TagDetails sonyFocusModeA100[] = { + constexpr TagDetails sonyFocusModeA100[] = { { 0, "AF-S" }, { 1, "AF-C" }, { 4, "AF-A" }, @@ -1112,7 +1112,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings flash mode values to readable labels - extern const TagDetails sonyFlashModeA100[] = { + constexpr TagDetails sonyFlashModeA100[] = { { 0, N_("Auto") }, { 2, N_("Rear flash sync") }, { 3, N_("Wireless") }, @@ -1120,14 +1120,14 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings metering mode values to readable labels - extern const TagDetails sonyMeteringModeA100[] = { + constexpr TagDetails sonyMeteringModeA100[] = { { 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 - extern const TagDetails sonyZoneMatchingModeA100[] = { + constexpr TagDetails sonyZoneMatchingModeA100[] = { { 0, N_("Off") }, { 1, N_("Standard") }, { 2, N_("Advanced") } @@ -1135,13 +1135,13 @@ namespace Exiv2 { //! Lookup table to translate Sony A100 camera settings color space values to readable labels - extern const TagDetails sonyColorSpaceA100[] = { + constexpr TagDetails sonyColorSpaceA100[] = { { 0, N_("sRGB") }, { 5, N_("Adobe RGB") } }; //! Lookup table to translate Sony A100 camera settings drive mode values to readable labels - extern const TagDetails sonyDriveModeA100[] = { + constexpr TagDetails sonyDriveModeA100[] = { { 0, N_("Single Frame") }, { 1, N_("Continuous") }, { 2, N_("Self-timer") }, @@ -1151,31 +1151,31 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings self timer time values to readable labels - extern const TagDetails sonySelfTimerTimeA100[] = { + constexpr TagDetails sonySelfTimerTimeA100[] = { { 0, "10s" }, { 4, "2s" } }; //! Lookup table to translate Sony A100 camera settings continuous bracketing values to readable labels - extern const TagDetails sonyContinuousBracketingA100[] = { + constexpr TagDetails sonyContinuousBracketingA100[] = { { 0x303, N_("Low") }, { 0x703, N_("High") } }; //! Lookup table to translate Sony A100 camera settings single frame bracketing values to readable labels - extern const TagDetails sonySingleFrameBracketingA100[] = { + constexpr TagDetails sonySingleFrameBracketingA100[] = { { 0x302, N_("Low") }, { 0x702, N_("High") } }; //! Lookup table to translate Sony A100 camera settings white balance bracketing values to readable labels - extern const TagDetails sonyWhiteBalanceBracketingA100[] = { + constexpr TagDetails sonyWhiteBalanceBracketingA100[] = { { 0x8, N_("Low") }, { 0x9, N_("High") } }; //! Lookup table to translate Sony A100 camera settings white balance setting values to readable labels - extern const TagDetails sonyWhiteBalanceSettingA100[] = { + constexpr TagDetails sonyWhiteBalanceSettingA100[] = { { 0x0000, N_("Auto") }, { 0x0001, N_("Preset") }, { 0x0002, N_("Custom") }, @@ -1186,7 +1186,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings preset white balance values to readable labels - extern const TagDetails sonyPresetWhiteBalanceA100[] = { + constexpr TagDetails sonyPresetWhiteBalanceA100[] = { { 1, N_("Daylight") }, { 2, N_("Cloudy") }, { 3, N_("Shade") }, @@ -1196,57 +1196,57 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings color temperature setting values to readable labels - extern const TagDetails sonyColorTemperatureSettingA100[] = { + 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 - extern const TagDetails sonyCustomWBSettingA100[] = { + constexpr TagDetails sonyCustomWBSettingA100[] = { { 0, N_("Setup") }, { 2, N_("Recall") } }; //! Lookup table to translate Sony A100 camera settings custom WB error values to readable labels - extern const TagDetails sonyCustomWBErrorA100[] = { + constexpr TagDetails sonyCustomWBErrorA100[] = { { 0, N_("Ok") }, { 2, N_("Error") } }; //! Lookup table to translate Sony A100 camera settings image size values to readable labels - extern const TagDetails sonyImageSizeA100[] = { + 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 - extern const TagDetails sonyInstantPlaybackSetupA100[] = { + constexpr TagDetails sonyInstantPlaybackSetupA100[] = { { 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 - extern const TagDetails sonyFlashDefaultA100[] = { + 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 - extern const TagDetails sonyAutoBracketOrderA100[] = { + constexpr TagDetails sonyAutoBracketOrderA100[] = { { 0, "0-+" }, { 1, "-0+" } }; //! Lookup table to translate Sony A100 camera settings focus hold button values to readable labels - extern const TagDetails sonyFocusHoldButtonA100[] = { + 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 - extern const TagDetails sonyAELButtonA100[] = { + constexpr TagDetails sonyAELButtonA100[] = { { 0, N_("Hold") }, { 1, N_("Toggle") }, { 2, N_("Spot Hold") }, @@ -1254,51 +1254,51 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings control dial set values to readable labels - extern const TagDetails sonyControlDialSetA100[] = { + 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 - extern const TagDetails sonyExposureCompensationModeA100[] = { + 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 - extern const TagDetails sonyAFAreaIlluminationA100[] = { + 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 - extern const TagDetails sonyMonitorDisplayOffA100[] = { + constexpr TagDetails sonyMonitorDisplayOffA100[] = { { 0, N_("Automatic") }, { 1, N_("Manual") } }; //! Lookup table to translate Sony A100 camera settings record display values to readable labels - extern const TagDetails sonyRecordDisplayA100[] = { + constexpr TagDetails sonyRecordDisplayA100[] = { { 0, N_("Auto-rotate") }, { 1, N_("Horizontal") } }; //! Lookup table to translate Sony A100 camera settings play display values to readable labels - extern const TagDetails sonyPlayDisplayA100[] = { + 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 - extern const TagDetails sonyMeteringOffScaleIndicatorA100[] = { + constexpr TagDetails sonyMeteringOffScaleIndicatorA100[] = { { 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 - extern const TagDetails sonyExposureIndicatorA100[] = { + constexpr TagDetails sonyExposureIndicatorA100[] = { { 0, N_("Not Indicated") }, { 1, N_("Under Scale") }, { 119, N_("Bottom of Scale") }, @@ -1324,20 +1324,20 @@ namespace Exiv2 { }; //! Lookup table to translate Sony A100 camera settings focus mode switch values to readable labels - extern const TagDetails sonyFocusModeSwitchA100[] = { + constexpr TagDetails sonyFocusModeSwitchA100[] = { { 0, N_("AM") }, { 1, N_("MF") } }; //! Lookup table to translate Sony A100 camera settings flash type switch values to readable labels - extern const TagDetails sonyFlashTypeA100[] = { + 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 - extern const TagDetails sonyBatteryLevelA100[] = { + constexpr TagDetails sonyBatteryLevelA100[] = { { 3, N_("Very Low") }, { 4, N_("Low") }, { 5, N_("Half Full") }, @@ -1345,245 +1345,245 @@ namespace Exiv2 { }; // Sony A100 Camera Settings Tag Info - const TagInfo MinoltaMakerNote::tagInfoCsA100_[] = { - TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"), + constexpr TagInfo MinoltaMakerNote::tagInfoCsA100_[] = { + {0x0000, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode5D)), - TagInfo(0x0001, "ExposureCompensationSetting", N_("Exposure Compensation Setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode5D)}, + {0x0001, "ExposureCompensationSetting", N_("Exposure Compensation Setting"), N_("Exposure compensation setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "HighSpeedSync", N_("High Speed Sync"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0005, "HighSpeedSync", N_("High Speed Sync"), N_("High speed sync"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0006, "ManualExposureTime", N_("Manual Exposure Time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0006, "ManualExposureTime", N_("Manual Exposure Time"), N_("Manual exposure time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "ManualFNumber", N_("Manual FNumber"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0007, "ManualFNumber", N_("Manual FNumber"), N_("Manual FNumber"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0008, "ExposureTime", N_("Exposure Time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0008, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0009, "FNumber", N_("FNumber"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0009, "FNumber", N_("FNumber"), N_("FNumber"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000A, "DriveMode2", N_("Drive Mode 2"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x000A, "DriveMode2", N_("Drive Mode 2"), N_("Drive mode 2"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveMode2A100)), - TagInfo(0x000B, "WhiteBalance", N_("White Balance"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveMode2A100)}, + {0x000B, "WhiteBalance", N_("White Balance"), N_("White balance"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance5D)), - TagInfo(0x000C, "FocusMode", N_("Focus Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance5D)}, + {0x000C, "FocusMode", N_("Focus Mode"), N_("Focus mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeA100)), - TagInfo(0x000D, "LocalAFAreaPoint", N_("Local AF Area Point"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeA100)}, + {0x000D, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), - TagInfo(0x000E, "AFAreaMode", N_("AF Area Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, + {0x000E, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), - TagInfo(0x000F, "FlashMode", N_("FlashMode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode}, + {0x000F, "FlashMode", N_("FlashMode"), N_("FlashMode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashModeA100)), - TagInfo(0x0010, "FlashExposureCompSetting", N_("Flash Exposure Comp Setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashModeA100)}, + {0x0010, "FlashExposureCompSetting", N_("Flash Exposure Comp Setting"), N_("Flash exposure compensation setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0012, "MeteringMode", N_("Metering Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0012, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringModeA100)), - TagInfo(0x0013, "ISOSetting", N_("ISO Setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringModeA100)}, + {0x0013, "ISOSetting", N_("ISO Setting"), N_("ISO setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0014, "ZoneMatchingMode", N_("Zone Matching Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0014, "ZoneMatchingMode", N_("Zone Matching Mode"), N_("Zone Matching Mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyZoneMatchingModeA100)), - TagInfo(0x0015, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyZoneMatchingModeA100)}, + {0x0015, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), N_("Dynamic range optimizer mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0016, "ColorMode", N_("Color Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + {0x0016, "ColorMode", N_("Color Mode"), N_("Color mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyColorMode), - TagInfo(0x0017, "ColorSpace", N_("Color Space"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyColorMode}, + {0x0017, "ColorSpace", N_("Color Space"), N_("Color space"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorSpaceA100)), - TagInfo(0x0018, "Sharpness", N_("Sharpness"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorSpaceA100)}, + {0x0018, "Sharpness", N_("Sharpness"), N_("Sharpness"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0019, "Contrast", N_("Contrast"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0019, "Contrast", N_("Contrast"), N_("Contrast"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001A, "Saturation", N_("Saturation"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x001A, "Saturation", N_("Saturation"), N_("Saturation"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001C, "FlashMetering", N_("Flash Metering"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x001C, "FlashMetering", N_("Flash Metering"), N_("Flash metering"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)), - TagInfo(0x001D, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)}, + {0x001D, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), N_("Priority Setup Shutter Release"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease), - TagInfo(0x001E, "DriveMode", N_("Drive Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease}, + {0x001E, "DriveMode", N_("Drive Mode"), N_("Drive mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeA100)), - TagInfo(0x001F, "SelfTimerTime", N_("Self Timer Time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeA100)}, + {0x001F, "SelfTimerTime", N_("Self Timer Time"), N_("Self timer time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySelfTimerTimeA100)), - TagInfo(0x0020, "ContinuousBracketing", N_("Continuous Bracketing"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySelfTimerTimeA100)}, + {0x0020, "ContinuousBracketing", N_("Continuous Bracketing"), N_("Continuous bracketing"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyContinuousBracketingA100)), - TagInfo(0x0021, "SingleFrameBracketing", N_("Single Frame Bracketing"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyContinuousBracketingA100)}, + {0x0021, "SingleFrameBracketing", N_("Single Frame Bracketing"), N_("Single frame bracketing"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySingleFrameBracketingA100)), - TagInfo(0x0022, "WhiteBalanceBracketing", N_("White Balance Bracketing"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySingleFrameBracketingA100)}, + {0x0022, "WhiteBalanceBracketing", N_("White Balance Bracketing"), N_("White balance bracketing"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceBracketingA100)), - TagInfo(0x0023, "WhiteBalanceSetting", N_("White Balance Setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceBracketingA100)}, + {0x0023, "WhiteBalanceSetting", N_("White Balance Setting"), N_("White balance setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceSettingA100)), - TagInfo(0x0024, "PresetWhiteBalance", N_("Preset White Balance"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceSettingA100)}, + {0x0024, "PresetWhiteBalance", N_("Preset White Balance"), N_("Preset white balance"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPresetWhiteBalanceA100)), - TagInfo(0x0025, "ColorTemperatureSetting", N_("Color Temperature Setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPresetWhiteBalanceA100)}, + {0x0025, "ColorTemperatureSetting", N_("Color Temperature Setting"), N_("Color temperature setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorTemperatureSettingA100)), - TagInfo(0x0026, "CustomWBSetting", N_("Custom WB Setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorTemperatureSettingA100)}, + {0x0026, "CustomWBSetting", N_("Custom WB Setting"), N_("Custom WB setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBSettingA100)), - TagInfo(0x0027, "DynamicRangeOptimizerSettings", N_("Dynamic Range Optimizer Settings"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBSettingA100)}, + {0x0027, "DynamicRangeOptimizerSettings", N_("Dynamic Range Optimizer Settings"), N_("Dynamic Range Optimizer Settings"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0032, "FreeMemoryCardImages", N_("Free Memory Card Images"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + {0x0032, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0034, "CustomWBRedLevel", N_("Custom WB Red Level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0034, "CustomWBRedLevel", N_("Custom WB Red Level"), N_("Custom WB red level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0035, "CustomWBGreenLevel", N_("Custom WB Green Level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0035, "CustomWBGreenLevel", N_("Custom WB Green Level"), N_("Custom WB green level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0036, "CustomWBBlueLevel", N_("Custom WB Blue Level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0036, "CustomWBBlueLevel", N_("Custom WB Blue Level"), N_("CustomWB blue level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0037, "CustomWBError", N_("Custom WB Error"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x0037, "CustomWBError", N_("Custom WB Error"), N_("Custom WB Error"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBErrorA100)), - TagInfo(0x0038, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBErrorA100)}, + {0x0038, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White balance fine tune"), - sony1MltCsA100Id, makerTags, signedShort, 1, printValue), - TagInfo(0x0039, "ColorTemperature", N_("Color Temperature"), + sony1MltCsA100Id, makerTags, signedShort, 1, printValue}, + {0x0039, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x003A, "ColorCompensationFilter", N_("Color Compensation Filter"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x003A, "ColorCompensationFilter", N_("Color Compensation Filter"), N_("Color compensation filter"), - sony1MltCsA100Id, makerTags, signedShort, 1, printValue), - TagInfo(0x003B, "SonyImageSize", N_("Sony Image Size"), + sony1MltCsA100Id, makerTags, signedShort, 1, printValue}, + {0x003B, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSizeA100)), - TagInfo(0x003C, "Quality", N_("Quality"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSizeA100)}, + {0x003C, "Quality", N_("Quality"), N_("Quality"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs), - TagInfo(0x003D, "InstantPlaybackTime", N_("Instant Playback Time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs}, + {0x003D, "InstantPlaybackTime", N_("Instant Playback Time"), N_("Instant playback time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x003E, "InstantPlaybackSetup", N_("Instant Playback Setup"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + {0x003E, "InstantPlaybackSetup", N_("Instant Playback Setup"), N_("Instant playback setup"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyInstantPlaybackSetupA100)), - TagInfo(0x003F, "NoiseReduction", N_("Noise Reduction"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyInstantPlaybackSetupA100)}, + {0x003F, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0040, "EyeStartAF", N_("Eye Start AF"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0040, "EyeStartAF", N_("Eye Start AF"), N_("Eye start AF"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x0041, "RedEyeReduction", N_("Red Eye Reduction"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, + {0x0041, "RedEyeReduction", N_("Red Eye Reduction"), N_("Red eye reduction"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0042, "FlashDefault", N_("Flash Default"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0042, "FlashDefault", N_("Flash Default"), N_("Flash default"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashDefaultA100)), - TagInfo(0x0043, "AutoBracketOrder", N_("Auto Bracket Order"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashDefaultA100)}, + {0x0043, "AutoBracketOrder", N_("Auto Bracket Order"), N_("Auto bracket order"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAutoBracketOrderA100)), - TagInfo(0x0044, "FocusHoldButton", N_("Focus Hold Button"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAutoBracketOrderA100)}, + {0x0044, "FocusHoldButton", N_("Focus Hold Button"), N_("Focus hold button"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusHoldButtonA100)), - TagInfo(0x0045, "AELButton", N_("AEL Button"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusHoldButtonA100)}, + {0x0045, "AELButton", N_("AEL Button"), N_("AEL button"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAELButtonA100)), - TagInfo(0x0046, "ControlDialSet", N_("Control Dial Set"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAELButtonA100)}, + {0x0046, "ControlDialSet", N_("Control Dial Set"), N_("Control dial set"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyControlDialSetA100)), - TagInfo(0x0047, "ExposureCompensationMode", N_("Exposure Compensation Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyControlDialSetA100)}, + {0x0047, "ExposureCompensationMode", N_("Exposure Compensation Mode"), N_("Exposure compensation mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureCompensationModeA100)), - TagInfo(0x0048, "AFAssist", N_("AF Assist"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureCompensationModeA100)}, + {0x0048, "AFAssist", N_("AF Assist"), N_("AF assist"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x0049, "CardShutterLock", N_("Card Shutter Lock"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, + {0x0049, "CardShutterLock", N_("Card Shutter Lock"), N_("Card shutter lock"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x004A, "LensShutterLock", N_("Lens Shutter Lock"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, + {0x004A, "LensShutterLock", N_("Lens Shutter Lock"), N_("Lens shutter lock"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x004B, "AFAreaIllumination", N_("AF Area Illumination"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, + {0x004B, "AFAreaIllumination", N_("AF Area Illumination"), N_("AF area illumination"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFAreaIlluminationA100)), - TagInfo(0x004C, "MonitorDisplayOff", N_("Monitor Display Off"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFAreaIlluminationA100)}, + {0x004C, "MonitorDisplayOff", N_("Monitor Display Off"), N_("Monitor display off"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMonitorDisplayOffA100)), - TagInfo(0x004D, "RecordDisplay", N_("Record Display"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMonitorDisplayOffA100)}, + {0x004D, "RecordDisplay", N_("Record Display"), N_("Record display"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyRecordDisplayA100)), - TagInfo(0x004E, "PlayDisplay", N_("Play Display"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyRecordDisplayA100)}, + {0x004E, "PlayDisplay", N_("Play Display"), N_("Play display"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPlayDisplayA100)), - TagInfo(0x0050, "ExposureIndicator", N_("Exposure Indicator"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPlayDisplayA100)}, + {0x0050, "ExposureIndicator", N_("Exposure Indicator"), N_("Exposure indicator"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0051, "AELExposureIndicator", N_("AEL Exposure Indicator"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0051, "AELExposureIndicator", N_("AEL Exposure Indicator"), N_("AEL exposure indicator (also indicates exposure for next shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0052, "ExposureBracketingIndicatorLast", N_("Exposure Bracketing Indicator Last"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0052, "ExposureBracketingIndicatorLast", N_("Exposure Bracketing Indicator Last"), N_("Exposure bracketing indicator last (indicator for last shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0053, "MeteringOffScaleIndicator", N_("Metering Off Scale Indicator"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0053, "MeteringOffScaleIndicator", N_("Metering Off Scale Indicator"), N_("Metering off scale indicator (two flashing triangles when under or over metering scale)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringOffScaleIndicatorA100)), - TagInfo(0x0054, "FlashExposureIndicator", N_("Flash Exposure Indicator"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringOffScaleIndicatorA100)}, + {0x0054, "FlashExposureIndicator", N_("Flash Exposure Indicator"), N_("Flash exposure indicator"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0055, "FlashExposureIndicatorNext", N_("Flash Exposure Indicator Next"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0055, "FlashExposureIndicatorNext", N_("Flash Exposure Indicator Next"), N_("Flash exposure indicator next (indicator for next shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0056, "FlashExposureIndicatorLast", N_("Flash Exposure Indicator Last"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0056, "FlashExposureIndicatorLast", N_("Flash Exposure Indicator Last"), N_("Flash exposure indicator last (indicator for last shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0057, "ImageStabilization", N_("Image Stabilization"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0057, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0058, "FocusModeSwitch", N_("Focus Mode Switch"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0058, "FocusModeSwitch", N_("Focus Mode Switch"), N_("Focus mode switch"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeSwitchA100)), - TagInfo(0x0059, "FlashType", N_("Flash Type"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeSwitchA100)}, + {0x0059, "FlashType", N_("Flash Type"), N_("Flash type"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashTypeA100)), - TagInfo(0x005A, "Rotation", N_("Rotation"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashTypeA100)}, + {0x005A, "Rotation", N_("Rotation"), N_("Rotation"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation), - TagInfo(0x004B, "AELock", N_("AE Lock"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation}, + {0x004B, "AELock", N_("AE Lock"), N_("AE lock"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x005E, "ColorTemperature", N_("Color Temperature"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x005E, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), - sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue), - TagInfo(0x005F, "ColorCompensationFilter", N_("Color Compensation Filter"), + sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue}, + {0x005F, "ColorCompensationFilter", N_("Color Compensation Filter"), N_("Color compensation filter: negative is green, positive is magenta"), - sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0060, "BatteryLevel", N_("Battery Level"), + sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue}, + {0x0060, "BatteryLevel", N_("Battery Level"), N_("Battery level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyBatteryLevelA100)), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyBatteryLevelA100)}, // End of list marker - TagInfo(0xffff, "(UnknownSonyCsA100Tag)", "(UnknownSonyCsA100Tag)", + {0xffff, "(UnknownSonyCsA100Tag)", "(UnknownSonyCsA100Tag)", N_("Unknown Sony Camera Settings A100 tag"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue) + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCsA100() @@ -2240,7 +2240,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Minolta A100 and all other Sony Alpha camera color mode values to readable labels - extern const TagDetails minoltaSonyColorMode[] = { + constexpr TagDetails minoltaSonyColorMode[] = { { 0, N_("Standard") }, { 1, N_("Vivid Color") }, { 2, N_("Portrait") }, @@ -2266,7 +2266,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Minolta/Sony bool function values to readable labels - extern const TagDetails minoltaSonyBoolFunction[] = { + constexpr TagDetails minoltaSonyBoolFunction[] = { { 0, N_("Off") }, { 1, N_("On") } }; @@ -2279,7 +2279,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Minolta/Sony bool inverse function values to readable labels - extern const TagDetails minoltaSonyBoolInverseFunction[] = { + constexpr TagDetails minoltaSonyBoolInverseFunction[] = { { 0, N_("On") }, { 1, N_("Off") } }; @@ -2292,7 +2292,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony camera settings focus mode values to readable labels - extern const TagDetails minoltaSonyAFAreaMode[] = { + constexpr TagDetails minoltaSonyAFAreaMode[] = { { 0, N_("Wide") }, { 1, N_("Local") }, { 2, N_("Spot") } @@ -2306,7 +2306,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony camera settings Local AF Area Point values to readable labels - extern const TagDetails minoltaSonyLocalAFAreaPoint[] = { + constexpr TagDetails minoltaSonyLocalAFAreaPoint[] = { { 1, N_("Center") }, { 2, N_("Top") }, { 3, N_("Top-Right") }, @@ -2328,7 +2328,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony camera settings dynamic range optimizer mode values to readable labels - extern const TagDetails minoltaSonyDynamicRangeOptimizerMode[] = { + constexpr TagDetails minoltaSonyDynamicRangeOptimizerMode[] = { { 0, N_("Off") }, { 1, N_("Standard") }, { 2, N_("Advanced Auto") }, @@ -2344,7 +2344,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony camera settings priority setup shutter release values to readable labels - extern const TagDetails minoltaSonyPrioritySetupShutterRelease[] = { + constexpr TagDetails minoltaSonyPrioritySetupShutterRelease[] = { { 0, N_("AF") }, { 1, N_("Release") } }; @@ -2357,7 +2357,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony camera settings quality values to readable labels - extern const TagDetails minoltaSonyQualityCs[] = { + constexpr TagDetails minoltaSonyQualityCs[] = { { 0, N_("RAW") }, { 2, N_("CRAW") }, { 16, N_("Extra Fine") }, @@ -2375,7 +2375,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony camera settings rotation values to readable labels - extern const TagDetails minoltaSonyRotation[] = { + constexpr TagDetails minoltaSonyRotation[] = { { 0, N_("Horizontal (normal)") }, { 1, N_("Rotate 90 CW") }, { 2, N_("Rotate 270 CW") } @@ -2389,7 +2389,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Minolta/Sony scene mode values to readable labels - extern const TagDetails minoltaSonySceneMode[] = { + constexpr TagDetails minoltaSonySceneMode[] = { { 0, N_("Standard") }, { 1, N_("Portrait") }, { 2, N_("Text") }, @@ -2412,7 +2412,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony/Minolta image quality values to readable labels - extern const TagDetails minoltaSonyImageQuality[] = { + constexpr TagDetails minoltaSonyImageQuality[] = { { 0, N_("Raw") }, { 1, N_("Super Fine") }, { 2, N_("Fine") }, @@ -2432,7 +2432,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony/Minolta teleconverter model values to readable labels - extern const TagDetails minoltaSonyTeleconverterModel[] = { + constexpr TagDetails minoltaSonyTeleconverterModel[] = { { 0x00, N_("None") }, { 0x04, N_("Minolta/Sony AF 1.4x APO (D) (0x04)") }, { 0x05, N_("Minolta/Sony AF 2x APO (D) (0x05)") }, @@ -2452,7 +2452,7 @@ namespace Exiv2 { // ---------------------------------------------------------------------------------------------------- //! Lookup table to translate Sony/Minolta Std camera settings white balance values to readable labels - extern const TagDetails minoltaSonyWhiteBalanceStd[] = { + constexpr TagDetails minoltaSonyWhiteBalanceStd[] = { { 0x00, N_("Auto") }, { 0x01, N_("Color Temperature/Color Filter") }, { 0x10, N_("Daylight") }, @@ -2470,7 +2470,7 @@ namespace Exiv2 { } //! Lookup table to translate Sony/Minolta zone matching values to readable labels - extern const TagDetails minoltaSonyZoneMatching[] = { + constexpr TagDetails minoltaSonyZoneMatching[] = { { 0, N_("ISO Setting Used") }, { 1, N_("High Key") }, { 2, N_("Low Key") } diff --git a/src/nikonmn_int.cpp b/src/nikonmn_int.cpp index 75b77267..8c9eeefc 100644 --- a/src/nikonmn_int.cpp +++ b/src/nikonmn_int.cpp @@ -45,13 +45,13 @@ namespace Exiv2 { namespace Internal { //! OffOn, multiple tags - extern const TagDetails nikonOffOn[] = { + constexpr TagDetails nikonOffOn[] = { { 0, N_("Off") }, { 1, N_("On") } }; //! Off, Low, Normal, High, multiple tags - extern const TagDetails nikonOlnh[] = { + constexpr TagDetails nikonOlnh[] = { { 0, N_("Off") }, { 1, N_("Low") }, { 3, N_("Normal") }, @@ -59,7 +59,7 @@ namespace Exiv2 { }; //! Off, Low, Normal, High, multiple tags - extern const TagDetails nikonActiveDLighning[] = { + constexpr TagDetails nikonActiveDLighning[] = { { 0, N_("Off") }, { 1, N_("Low") }, { 3, N_("Normal") }, @@ -69,7 +69,7 @@ namespace Exiv2 { }; //! Focus area for Nikon cameras. - extern const char * const nikonFocusarea[] = { + constexpr const char *nikonFocusarea[] = { N_("Single area"), N_("Dynamic area"), N_("Dynamic area, closest subject"), @@ -82,7 +82,7 @@ namespace Exiv2 { // module. Note that relative size and position will vary depending on if // "wide" or not //! Focus points for Nikon cameras, used for Nikon 1 and Nikon 3 makernotes. - extern const char * const nikonFocuspoints[] = { + constexpr const char *nikonFocuspoints[] = { N_("Center"), N_("Top"), N_("Bottom"), @@ -97,7 +97,7 @@ namespace Exiv2 { }; //! Shutter Modes (credits to exiftool) - extern const TagDetails nikonShutterModes[] = { + constexpr TagDetails nikonShutterModes[] = { { 0, "Mechanical" }, { 16, "Electronic" }, { 48, "Electronic Front Curtain" }, @@ -107,7 +107,7 @@ namespace Exiv2 { }; //! FlashComp, tag 0x0012 - extern const TagDetails nikonFlashComp[] = { + constexpr TagDetails nikonFlashComp[] = { // From the PHP JPEG Metadata Toolkit { 0x06, "+1.0 EV" }, { 0x04, "+0.7 EV" }, @@ -129,13 +129,13 @@ namespace Exiv2 { }; //! ColorSpace, tag 0x001e - extern const TagDetails nikonColorSpace[] = { + constexpr TagDetails nikonColorSpace[] = { { 1, N_("sRGB") }, { 2, N_("Adobe RGB") } }; //! FlashMode, tag 0x0087 - extern const TagDetails nikonFlashMode[] = { + constexpr TagDetails nikonFlashMode[] = { { 0, N_("Did not fire") }, { 1, N_("Fire, manual") }, { 7, N_("Fire, external") }, @@ -144,7 +144,7 @@ namespace Exiv2 { }; //! ShootingMode, tag 0x0089 - extern const TagDetailsBitmask nikonShootingMode[] = { + constexpr TagDetailsBitmask nikonShootingMode[] = { { 0x0001, N_("Continuous") }, { 0x0002, N_("Delay") }, { 0x0004, N_("PC Control") }, @@ -157,7 +157,7 @@ namespace Exiv2 { }; //! ShootingMode D70, tag 0x0089 - extern const TagDetailsBitmask nikonShootingModeD70[] = { + constexpr TagDetailsBitmask nikonShootingModeD70[] = { { 0x0001, N_("Continuous") }, { 0x0002, N_("Delay") }, { 0x0004, N_("PC control") }, @@ -168,14 +168,14 @@ namespace Exiv2 { }; //! AutoBracketRelease, tag 0x008a - extern const TagDetails nikonAutoBracketRelease[] = { + constexpr TagDetails nikonAutoBracketRelease[] = { { 0, N_("None") }, { 1, N_("Auto release") }, { 2, N_("Manual release") } }; //! NEFCompression, tag 0x0093 - extern const TagDetails nikonNefCompression[] = { + constexpr TagDetails nikonNefCompression[] = { { 1, N_("Lossy (type 1)") }, { 2, N_("Uncompressed") }, { 3, N_("Lossless") }, @@ -183,7 +183,7 @@ namespace Exiv2 { }; //! RetouchHistory, tag 0x009e - extern const TagDetails nikonRetouchHistory[] = { + constexpr TagDetails nikonRetouchHistory[] = { { 0, N_("None") }, { 3, N_("B & W") }, { 4, N_("Sepia") }, @@ -199,7 +199,7 @@ namespace Exiv2 { }; //! HighISONoiseReduction, tag 0x00b1 - extern const TagDetails nikonHighISONoiseReduction[] = { + constexpr TagDetails nikonHighISONoiseReduction[] = { { 0, N_("Off") }, { 1, N_("Minimal") }, { 2, N_("Low") }, @@ -208,59 +208,59 @@ namespace Exiv2 { }; // Nikon1 MakerNote Tag Info - const TagInfo Nikon1MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", N_("Version"), + constexpr TagInfo Nikon1MakerNote::tagInfo_[] = { + {0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), - nikon1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), + nikon1Id, makerTags, undefined, -1, printValue}, + {0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), - nikon1Id, makerTags, unsignedShort, -1, print0x0002), - TagInfo(0x0003, "ColorMode", N_("Color Mode"), + nikon1Id, makerTags, unsignedShort, -1, print0x0002}, + {0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0004, "Quality", N_("Quality"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0004, "Quality", N_("Quality"), N_("Image quality setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0005, "WhiteBalance", N_("White Balance"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0006, "Sharpening", N_("Sharpening"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "Focus", N_("Focus"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0007, "Focus", N_("Focus"), N_("Focus mode"), - nikon1Id, makerTags, asciiString, -1, print0x0007), - TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), + nikon1Id, makerTags, asciiString, -1, print0x0007}, + {0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "0x000a", "0x000a", + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x000a, "0x000a", "0x000a", N_("Unknown"), - nikon1Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), + nikon1Id, makerTags, unsignedRational, -1, printValue}, + {0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0010, "DataDump", N_("Data Dump"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), - nikon1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), + nikon1Id, makerTags, undefined, -1, printValue}, + {0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), + nikon1Id, makerTags, asciiString, -1, printValue}, + {0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), - nikon1Id, makerTags, unsignedRational, -1, print0x0085), - TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), + nikon1Id, makerTags, unsignedRational, -1, print0x0085}, + {0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), - nikon1Id, makerTags, unsignedRational, -1, print0x0086), - TagInfo(0x0088, "AFFocusPos", N_("AF Focus Position"), + nikon1Id, makerTags, unsignedRational, -1, print0x0086}, + {0x0088, "AFFocusPos", N_("AF Focus Position"), N_("AF focus position information"), - nikon1Id, makerTags, undefined, -1, print0x0088), + nikon1Id, makerTags, undefined, -1, print0x0088}, // End of list marker - TagInfo(0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", + {0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", N_("Unknown Nikon1MakerNote tag"), - nikon1Id, makerTags, asciiString, -1, printValue) + nikon1Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* Nikon1MakerNote::tagList() @@ -441,7 +441,7 @@ namespace Exiv2 { } //! Quality, tag 0x0003 - extern const TagDetails nikon2Quality[] = { + constexpr TagDetails nikon2Quality[] = { { 1, N_("VGA Basic") }, { 2, N_("VGA Normal") }, { 3, N_("VGA Fine") }, @@ -451,13 +451,13 @@ namespace Exiv2 { }; //! ColorMode, tag 0x0004 - extern const TagDetails nikon2ColorMode[] = { + constexpr TagDetails nikon2ColorMode[] = { { 1, N_("Color") }, { 2, N_("Monochrome") } }; //! ImageAdjustment, tag 0x0005 - extern const TagDetails nikon2ImageAdjustment[] = { + constexpr TagDetails nikon2ImageAdjustment[] = { { 0, N_("Normal") }, { 1, N_("Bright+") }, { 2, N_("Bright-") }, @@ -466,7 +466,7 @@ namespace Exiv2 { }; //! ISOSpeed, tag 0x0006 - extern const TagDetails nikon2IsoSpeed[] = { + constexpr TagDetails nikon2IsoSpeed[] = { { 0, "80" }, { 2, "160" }, { 4, "320" }, @@ -474,7 +474,7 @@ namespace Exiv2 { }; //! WhiteBalance, tag 0x0007 - extern const TagDetails nikon2WhiteBalance[] = { + constexpr TagDetails nikon2WhiteBalance[] = { { 0, N_("Auto") }, { 1, N_("Preset") }, { 2, N_("Daylight") }, @@ -485,44 +485,44 @@ namespace Exiv2 { }; // Nikon2 MakerNote Tag Info - const TagInfo Nikon2MakerNote::tagInfo_[] = { - TagInfo(0x0002, "0x0002", "0x0002", + constexpr TagInfo Nikon2MakerNote::tagInfo_[] = { + {0x0002, "0x0002", "0x0002", N_("Unknown"), - nikon2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0003, "Quality", N_("Quality"), + nikon2Id, makerTags, asciiString, -1, printValue}, + {0x0003, "Quality", N_("Quality"), N_("Image quality setting"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2Quality)), - TagInfo(0x0004, "ColorMode", N_("Color Mode"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2Quality)}, + {0x0004, "ColorMode", N_("Color Mode"), N_("Color mode"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ColorMode)), - TagInfo(0x0005, "ImageAdjustment", N_("Image Adjustment"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ColorMode)}, + {0x0005, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ImageAdjustment)), - TagInfo(0x0006, "ISOSpeed", N_("ISO Speed"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ImageAdjustment)}, + {0x0006, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2IsoSpeed)), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2IsoSpeed)}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2WhiteBalance)), - TagInfo(0x0008, "Focus", N_("Focus Mode"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2WhiteBalance)}, + {0x0008, "Focus", N_("Focus Mode"), N_("Focus mode"), - nikon2Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0009, "0x0009", "0x0009", + nikon2Id, makerTags, unsignedRational, -1, printValue}, + {0x0009, "0x0009", "0x0009", N_("Unknown"), - nikon2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "DigitalZoom", N_("Digital Zoom"), + nikon2Id, makerTags, asciiString, -1, printValue}, + {0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), - nikon2Id, makerTags, unsignedRational, -1, print0x000a), - TagInfo(0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), + nikon2Id, makerTags, unsignedRational, -1, print0x000a}, + {0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), - nikon2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0f00, "0x0f00", "0x0f00", + nikon2Id, makerTags, unsignedShort, -1, printValue}, + {0x0f00, "0x0f00", "0x0f00", N_("Unknown"), - nikon2Id, makerTags, unsignedLong, -1, printValue), + nikon2Id, makerTags, unsignedLong, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", + {0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", N_("Unknown Nikon2MakerNote tag"), - nikon2Id, makerTags, asciiString, -1, printValue) + nikon2Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* Nikon2MakerNote::tagList() @@ -555,104 +555,104 @@ namespace Exiv2 { } // Nikon3 MakerNote Tag Info - const TagInfo Nikon3MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), nikon3Id, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), - TagInfo(0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0004, "Quality", N_("Quality"), N_("Image quality setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "Focus", N_("Focus"), N_("Focus mode"), nikon3Id, makerTags, asciiString, -1, print0x0007), - TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0009, "FlashDevice", N_("Flash Device"), N_("Flash device"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), nikon3Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x000b, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), nikon3Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x000d, "ProgramShift", N_("Program Shift"), N_("Program shift"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x000e, "ExposureDiff", N_("Exposure Difference"), N_("Exposure difference"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0011, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), // use 0x0002 print fct - TagInfo(0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), // use 0x0012 print fct - TagInfo(0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), nikon3Id, makerTags, signedRational, -1, printValue), - TagInfo(0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonColorSpace)), - TagInfo(0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo(0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighning)), - TagInfo(0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0024, "WorldTime", N_("World Time"), N_("World time"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x002a, "VignetteControl", N_("Vignette Control"), N_("Vignette control"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonOlnh)), - TagInfo(0x0034, "ShutterMode", N_("Shutter Mode"), N_("Shutter mode"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonShutterModes)), - TagInfo(0x0037, "MechanicalShutterCount", N_("Mechanical Shutter Count"), N_("Mechanical shutter count"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0081, "ToneComp", N_("Tone Compensation"), N_("Tone compensation"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0083, "LensType", N_("Lens Type"), N_("Lens type"), nikon3Id, makerTags, unsignedByte, -1, print0x0083), - TagInfo(0x0084, "Lens", N_("Lens"), N_("Lens"), nikon3Id, makerTags, unsignedRational, -1, print0x0084), - TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), nikon3Id, makerTags, unsignedRational, -1, print0x0085), - TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon3Id, makerTags, unsignedRational, -1, print0x0086), - TagInfo(0x0087, "FlashMode", N_("Flash Mode"), N_("Mode of flash used"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonFlashMode)), - TagInfo(0x0088, "AFInfo", N_("AF Info"), N_("AF info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0089, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), nikon3Id, makerTags, unsignedShort, -1, print0x0089), - TagInfo(0x008a, "AutoBracketRelease", N_("Auto Bracket Release"), N_("Auto bracket release"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonAutoBracketRelease)), - TagInfo(0x008b, "LensFStops", N_("Lens FStops"), N_("Lens FStops"), nikon3Id, makerTags, undefined, -1, print0x008b), - TagInfo(0x008c, "ContrastCurve", N_("Contrast Curve"), N_("Contrast curve"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x008d, "ColorHue", N_("Color Hue"), N_("Color hue"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x008f, "SceneMode", N_("Scene Mode"), N_("Scene mode"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0090, "LightSource", N_("Light Source"), N_("Light source"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0091, "ShotInfo", "Shot Info", N_("Shot info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0092, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0093, "NEFCompression", N_("NEF Compression"), N_("NEF compression"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonNefCompression)), - TagInfo(0x0094, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0095, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0097, "ColorBalance", N_("Color Balance"), N_("Color balance"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0098, "LensData", N_("Lens Data"), N_("Lens data settings"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0099, "RawImageCenter", N_("Raw Image Center"), N_("Raw image center"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x009a, "SensorPixelSize", N_("Sensor Pixel Size"), N_("Sensor pixel size"), nikon3Id, makerTags, unsignedRational, -1, print0x009a), - TagInfo(0x009b, "0x009b", "0x009b", N_("Unknown"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x009c, "SceneAssist", N_("Scene Assist"), N_("Scene assist"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x009e, "RetouchHistory", N_("Retouch History"), N_("Retouch history"), nikon3Id, makerTags, unsignedShort, -1, print0x009e), - TagInfo(0x009f, "0x009f", "0x009f", N_("Unknown"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x00a0, "SerialNO", N_("Serial NO"), N_("Camera serial number, usually starts with \"NO= \""), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00a2, "ImageDataSize", N_("Image Data Size"), N_("Image data size"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a3, "0x00a3", "0x00a3", N_("Unknown"), nikon3Id, makerTags, unsignedByte, -1, printValue), - TagInfo(0x00a5, "ImageCount", N_("Image Count"), N_("Image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a6, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a7, "ShutterCount", N_("Shutter Count"), N_("Number of shots taken by camera"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a8, "FlashInfo", "Flash Info", N_("Flash info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00a9, "ImageOptimization", N_("Image Optimization"), N_("Image optimization"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00aa, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00ab, "VariProgram", N_("Program Variation"), N_("Program variation"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00ac, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00ad, "AFResponse", N_("AF Response"), N_("AF response"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00b0, "MultiExposure", "Multi Exposure", N_("Multi exposure"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00b1, "HighISONoiseReduction", N_("High ISO Noise Reduction"), N_("High ISO Noise Reduction"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonHighISONoiseReduction)), - TagInfo(0x00b3, "ToningEffect", "Toning Effect", N_("Toning effect"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00b7, "AFInfo2", "AF Info 2", N_("AF info 2"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00b8, "FileInfo", "File Info", N_("File info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00b9, "AFTune", "AF Tune", N_("AF tune"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00c3, "BarometerInfo", "Barometer Info", N_("Barometer Info"), nikon3Id, makerTags, signedLong, -1, Nikon1MakerNote::printBarValue), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), nikon3Id, makerTags, undefined, -1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfo_[] = { + {0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), nikon3Id, makerTags, undefined, -1, printExifVersion}, + {0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002}, + {0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0004, "Quality", N_("Quality"), N_("Image quality setting"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0007, "Focus", N_("Focus"), N_("Focus mode"), nikon3Id, makerTags, asciiString, -1, print0x0007}, + {0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0009, "FlashDevice", N_("Flash Device"), N_("Flash device"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x000a, "0x000a", "0x000a", N_("Unknown"), nikon3Id, makerTags, unsignedRational, -1, printValue}, + {0x000b, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), nikon3Id, makerTags, signedShort, -1, printValue}, + {0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), nikon3Id, makerTags, unsignedRational, -1, printValue}, + {0x000d, "ProgramShift", N_("Program Shift"), N_("Program shift"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x000e, "ExposureDiff", N_("Exposure Difference"), N_("Exposure difference"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0011, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002}, // use 0x0002 print fct + {0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), nikon3Id, makerTags, unsignedShort, -1, printValue}, + {0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, // use 0x0012 print fct + {0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), nikon3Id, makerTags, signedRational, -1, printValue}, + {0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3Id, makerTags, unsignedShort, -1, printValue}, + {0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3Id, makerTags, unsignedShort, -1, printValue}, + {0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonColorSpace)}, + {0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)}, + {0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighning)}, + {0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0024, "WorldTime", N_("World Time"), N_("World time"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x002a, "VignetteControl", N_("Vignette Control"), N_("Vignette control"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonOlnh)}, + {0x0034, "ShutterMode", N_("Shutter Mode"), N_("Shutter mode"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonShutterModes)}, + {0x0037, "MechanicalShutterCount", N_("Mechanical Shutter Count"), N_("Mechanical shutter count"), nikon3Id, makerTags, unsignedLong, -1, printValue}, + {0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0081, "ToneComp", N_("Tone Compensation"), N_("Tone compensation"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0083, "LensType", N_("Lens Type"), N_("Lens type"), nikon3Id, makerTags, unsignedByte, -1, print0x0083}, + {0x0084, "Lens", N_("Lens"), N_("Lens"), nikon3Id, makerTags, unsignedRational, -1, print0x0084}, + {0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), nikon3Id, makerTags, unsignedRational, -1, print0x0085}, + {0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon3Id, makerTags, unsignedRational, -1, print0x0086}, + {0x0087, "FlashMode", N_("Flash Mode"), N_("Mode of flash used"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonFlashMode)}, + {0x0088, "AFInfo", N_("AF Info"), N_("AF info"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0089, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), nikon3Id, makerTags, unsignedShort, -1, print0x0089}, + {0x008a, "AutoBracketRelease", N_("Auto Bracket Release"), N_("Auto bracket release"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonAutoBracketRelease)}, + {0x008b, "LensFStops", N_("Lens FStops"), N_("Lens FStops"), nikon3Id, makerTags, undefined, -1, print0x008b}, + {0x008c, "ContrastCurve", N_("Contrast Curve"), N_("Contrast curve"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x008d, "ColorHue", N_("Color Hue"), N_("Color hue"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x008f, "SceneMode", N_("Scene Mode"), N_("Scene mode"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0090, "LightSource", N_("Light Source"), N_("Light source"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0091, "ShotInfo", "Shot Info", N_("Shot info"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0092, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikon3Id, makerTags, signedShort, -1, printValue}, + {0x0093, "NEFCompression", N_("NEF Compression"), N_("NEF compression"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonNefCompression)}, + {0x0094, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, signedShort, -1, printValue}, + {0x0095, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0097, "ColorBalance", N_("Color Balance"), N_("Color balance"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0098, "LensData", N_("Lens Data"), N_("Lens data settings"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0099, "RawImageCenter", N_("Raw Image Center"), N_("Raw image center"), nikon3Id, makerTags, unsignedShort, -1, printValue}, + {0x009a, "SensorPixelSize", N_("Sensor Pixel Size"), N_("Sensor pixel size"), nikon3Id, makerTags, unsignedRational, -1, print0x009a}, + {0x009b, "0x009b", "0x009b", N_("Unknown"), nikon3Id, makerTags, unsignedShort, -1, printValue}, + {0x009c, "SceneAssist", N_("Scene Assist"), N_("Scene assist"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x009e, "RetouchHistory", N_("Retouch History"), N_("Retouch history"), nikon3Id, makerTags, unsignedShort, -1, print0x009e}, + {0x009f, "0x009f", "0x009f", N_("Unknown"), nikon3Id, makerTags, signedShort, -1, printValue}, + {0x00a0, "SerialNO", N_("Serial NO"), N_("Camera serial number, usually starts with \"NO= \""), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00a2, "ImageDataSize", N_("Image Data Size"), N_("Image data size"), nikon3Id, makerTags, unsignedLong, -1, printValue}, + {0x00a3, "0x00a3", "0x00a3", N_("Unknown"), nikon3Id, makerTags, unsignedByte, -1, printValue}, + {0x00a5, "ImageCount", N_("Image Count"), N_("Image count"), nikon3Id, makerTags, unsignedLong, -1, printValue}, + {0x00a6, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikon3Id, makerTags, unsignedLong, -1, printValue}, + {0x00a7, "ShutterCount", N_("Shutter Count"), N_("Number of shots taken by camera"), nikon3Id, makerTags, unsignedLong, -1, printValue}, + {0x00a8, "FlashInfo", "Flash Info", N_("Flash info"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x00a9, "ImageOptimization", N_("Image Optimization"), N_("Image optimization"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00aa, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00ab, "VariProgram", N_("Program Variation"), N_("Program variation"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00ac, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00ad, "AFResponse", N_("AF Response"), N_("AF response"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00b0, "MultiExposure", "Multi Exposure", N_("Multi exposure"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x00b1, "HighISONoiseReduction", N_("High ISO Noise Reduction"), N_("High ISO Noise Reduction"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonHighISONoiseReduction)}, + {0x00b3, "ToningEffect", "Toning Effect", N_("Toning effect"), nikon3Id, makerTags, asciiString, -1, printValue}, + {0x00b7, "AFInfo2", "AF Info 2", N_("AF info 2"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x00b8, "FileInfo", "File Info", N_("File info"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x00b9, "AFTune", "AF Tune", N_("AF tune"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x00c3, "BarometerInfo", "Barometer Info", N_("Barometer Info"), nikon3Id, makerTags, signedLong, -1, Nikon1MakerNote::printBarValue}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), nikon3Id, makerTags, undefined, -1, printValue}, // TODO: Add Capture Data decoding implementation. - TagInfo(0x0e01, "CaptureData", N_("Capture Data"), N_("Capture data"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e09, "CaptureVersion", N_("Capture Version"), N_("Capture version"), nikon3Id, makerTags, asciiString, -1, printValue), + {0x0e01, "CaptureData", N_("Capture Data"), N_("Capture data"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0e09, "CaptureVersion", N_("Capture Version"), N_("Capture version"), nikon3Id, makerTags, asciiString, -1, printValue}, // TODO: Add Capture Offsets decoding implementation. - TagInfo(0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e10, "ScanIFD", "Scan IFD", N_("Scan IFD"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e1d, "ICCProfile", "ICC Profile", N_("ICC profile"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e1e, "CaptureOutput", "Capture Output", N_("Capture output"), nikon3Id, makerTags, undefined, -1, printValue), + {0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0e10, "ScanIFD", "Scan IFD", N_("Scan IFD"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0e1d, "ICCProfile", "ICC Profile", N_("ICC profile"), nikon3Id, makerTags, undefined, -1, printValue}, + {0x0e1e, "CaptureOutput", "Capture Output", N_("Capture output"), nikon3Id, makerTags, undefined, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), nikon3Id, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), nikon3Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* Nikon3MakerNote::tagList() @@ -661,30 +661,30 @@ namespace Exiv2 { } //! YesNo, used for DaylightSavings, tag index 2 - extern const TagDetails nikonYesNo[] = { + constexpr TagDetails nikonYesNo[] = { { 0, N_("No") }, { 1, N_("Yes") } }; //! DateDisplayFormat, tag index 3 - extern const TagDetails nikonDateDisplayFormat[] = { + constexpr TagDetails nikonDateDisplayFormat[] = { { 0, N_("Y/M/D") }, { 1, N_("M/D/Y") }, { 2, N_("D/M/Y") } }; //! OnOff - extern const TagDetails nikonOnOff[] = { + constexpr TagDetails nikonOnOff[] = { { 1, N_("On") }, { 2, N_("Off") } }; // Nikon3 Vibration Reduction Tag Info - const TagInfo Nikon3MakerNote::tagInfoVr_[] = { - TagInfo(0, "Version", N_("Version"), N_("Version"), nikonVrId, makerTags, undefined, 4, printExifVersion), - TagInfo(4, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonVrId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOnOff)), + constexpr TagInfo Nikon3MakerNote::tagInfoVr_[] = { + {0, "Version", N_("Version"), N_("Version"), nikonVrId, makerTags, undefined, 4, printExifVersion}, + {4, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonVrId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOnOff)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), nikonVrId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), nikonVrId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListVr() @@ -693,14 +693,14 @@ namespace Exiv2 { } //! Adjust - extern const TagDetails nikonAdjust[] = { + constexpr TagDetails nikonAdjust[] = { { 0, N_("Default Settings") }, { 1, N_("Quick Adjust") }, { 2, N_("Full Control") } }; //! FilterEffect - extern const TagDetails nikonFilterEffect[] = { + constexpr TagDetails nikonFilterEffect[] = { { 0x80, N_("Off") }, { 0x81, N_("Yellow") }, { 0x82, N_("Orange") }, @@ -710,7 +710,7 @@ namespace Exiv2 { }; //! ToningEffect - extern const TagDetails nikonToningEffect[] = { + constexpr TagDetails nikonToningEffect[] = { { 0x80, N_("B&W") }, { 0x81, N_("Sepia") }, { 0x82, N_("Cyanotype") }, @@ -725,22 +725,22 @@ namespace Exiv2 { }; // Nikon3 Picture Control Tag Info - const TagInfo Nikon3MakerNote::tagInfoPc_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonPcId, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "Name", N_("Name"), N_("Name"), nikonPcId, makerTags, asciiString, 20, printValue), - TagInfo(24, "Base", N_("Base"), N_("Base"), nikonPcId, makerTags, asciiString, 20, printValue), - TagInfo(48, "Adjust", N_("Adjust"), N_("Adjust"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAdjust)), - TagInfo(49, "QuickAdjust", N_("Quick Adjust"), N_("Quick adjust"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(50, "Sharpness", N_("Sharpness"), N_("Sharpness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(51, "Contrast", N_("Contrast"), N_("Contrast"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(52, "Brightness", N_("Brightness"), N_("Brightness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(53, "Saturation", N_("Saturation"), N_("Saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(54, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(55, "FilterEffect", N_("Filter Effect"), N_("Filter effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFilterEffect)), - TagInfo(56, "ToningEffect", N_("Toning Effect"), N_("Toning effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonToningEffect)), - TagInfo(57, "ToningSaturation", N_("Toning Saturation"), N_("Toning saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + constexpr TagInfo Nikon3MakerNote::tagInfoPc_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonPcId, makerTags, undefined, 4, printExifVersion}, + { 4, "Name", N_("Name"), N_("Name"), nikonPcId, makerTags, asciiString, 20, printValue}, + {24, "Base", N_("Base"), N_("Base"), nikonPcId, makerTags, asciiString, 20, printValue}, + {48, "Adjust", N_("Adjust"), N_("Adjust"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAdjust)}, + {49, "QuickAdjust", N_("Quick Adjust"), N_("Quick adjust"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, + {50, "Sharpness", N_("Sharpness"), N_("Sharpness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, + {51, "Contrast", N_("Contrast"), N_("Contrast"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, + {52, "Brightness", N_("Brightness"), N_("Brightness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, + {53, "Saturation", N_("Saturation"), N_("Saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, + {54, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, + {55, "FilterEffect", N_("Filter Effect"), N_("Filter effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFilterEffect)}, + {56, "ToningEffect", N_("Toning Effect"), N_("Toning effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonToningEffect)}, + {57, "ToningSaturation", N_("Toning Saturation"), N_("Toning saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl}, // End of list marker - TagInfo(0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), nikonPcId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), nikonPcId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListPc() @@ -749,19 +749,19 @@ namespace Exiv2 { } //! OnOff - extern const TagDetails aftOnOff[] = { + constexpr TagDetails aftOnOff[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("On") } }; // Nikon3 AF Fine Tune - const TagInfo Nikon3MakerNote::tagInfoAFT_[] = { - TagInfo(0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), nikonAFTId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(aftOnOff)), - TagInfo(1, "AFFineTuneIndex", N_("AF Fine Tune Index"), N_("AF fine tune index"), nikonAFTId, makerTags, unsignedByte, 1, printValue), - TagInfo(2, "AFFineTuneAdj", N_("AF Fine Tune Adjustment"), N_("AF fine tune adjustment"), nikonAFTId, makerTags, signedByte, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoAFT_[] = { + {0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), nikonAFTId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(aftOnOff)}, + {1, "AFFineTuneIndex", N_("AF Fine Tune Index"), N_("AF fine tune index"), nikonAFTId, makerTags, unsignedByte, 1, printValue}, + {2, "AFFineTuneAdj", N_("AF Fine Tune Adjustment"), N_("AF fine tune adjustment"), nikonAFTId, makerTags, signedByte, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonAFTTag)", "(UnknownNikonAFTTag)", N_("Unknown Nikon AF Fine Tune Tag"), nikonAFTId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonAFTTag)", "(UnknownNikonAFTTag)", N_("Unknown Nikon AF Fine Tune Tag"), nikonAFTId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAFT() @@ -770,12 +770,12 @@ namespace Exiv2 { } // Nikon3 World Time Tag Info - const TagInfo Nikon3MakerNote::tagInfoWt_[] = { - TagInfo(0, "Timezone", N_("Timezone"), N_("Timezone"), nikonWtId, makerTags, signedShort, 1, printTimeZone), - TagInfo(2, "DaylightSavings", N_("Daylight Savings"), N_("Daylight savings"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)), - TagInfo(3, "DateDisplayFormat", N_("Date Display Format"), N_("Date display format"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonDateDisplayFormat)), + constexpr TagInfo Nikon3MakerNote::tagInfoWt_[] = { + {0, "Timezone", N_("Timezone"), N_("Timezone"), nikonWtId, makerTags, signedShort, 1, printTimeZone}, + {2, "DaylightSavings", N_("Daylight Savings"), N_("Daylight savings"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)}, + {3, "DateDisplayFormat", N_("Date Display Format"), N_("Date display format"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonDateDisplayFormat)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), nikonWtId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), nikonWtId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListWt() @@ -784,7 +784,7 @@ namespace Exiv2 { } //! ISOExpansion, tag index 4 and 10 - extern const TagDetails nikonIsoExpansion[] = { + constexpr TagDetails nikonIsoExpansion[] = { { 0x000, N_("Off") }, { 0x101, N_("Hi 0.3") }, { 0x102, N_("Hi 0.5") }, @@ -813,13 +813,13 @@ namespace Exiv2 { }; // Nikon3 ISO Info Tag Info - const TagInfo Nikon3MakerNote::tagInfoIi_[] = { - TagInfo( 0, "ISO", N_("ISO"), N_("ISO"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 4, "ISOExpansion", N_("ISO Expansion"), N_("ISO expansion"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), - TagInfo( 6, "ISO2", N_("ISO 2"), N_("ISO 2"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), - TagInfo(10, "ISOExpansion2", N_("ISO Expansion 2"), N_("ISO expansion 2"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), + constexpr TagInfo Nikon3MakerNote::tagInfoIi_[] = { + { 0, "ISO", N_("ISO"), N_("ISO"), nikonIiId, makerTags, unsignedByte, 1, printIiIso}, + { 4, "ISOExpansion", N_("ISO Expansion"), N_("ISO expansion"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)}, + { 6, "ISO2", N_("ISO 2"), N_("ISO 2"), nikonIiId, makerTags, unsignedByte, 1, printIiIso}, + {10, "ISOExpansion2", N_("ISO Expansion 2"), N_("ISO expansion 2"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), nikonIiId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), nikonIiId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListIi() @@ -828,7 +828,7 @@ namespace Exiv2 { } //! AfAreaMode - extern const TagDetails nikonAfAreaMode[] = { + constexpr TagDetails nikonAfAreaMode[] = { { 0, N_("Single Area") }, { 1, N_("Dynamic Area") }, { 2, N_("Dynamic Area, Closest Subject") }, @@ -838,7 +838,7 @@ namespace Exiv2 { }; //! AfPoint - extern const TagDetails nikonAfPoint[] = { + constexpr TagDetails nikonAfPoint[] = { { 0, N_("Center") }, { 1, N_("Top") }, { 2, N_("Bottom") }, @@ -853,7 +853,7 @@ namespace Exiv2 { }; //! AfPointsInFocus - extern const TagDetailsBitmask nikonAfPointsInFocus[] = { + constexpr TagDetailsBitmask nikonAfPointsInFocus[] = { { 0x0001, N_("Center") }, { 0x0002, N_("Top") }, { 0x0004, N_("Bottom") }, @@ -868,12 +868,12 @@ namespace Exiv2 { }; // Nikon3 Auto Focus Tag Info - const TagInfo Nikon3MakerNote::tagInfoAf_[] = { - TagInfo( 0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfAreaMode)), - TagInfo( 1, "AFPoint", N_("AF Point"), N_("AF point"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfPoint)), - TagInfo( 2, "AFPointsInFocus", N_("AF Points In Focus"), N_("AF points in focus"), nikonAfId, makerTags, unsignedShort, 1, printAfPointsInFocus), + constexpr TagInfo Nikon3MakerNote::tagInfoAf_[] = { + { 0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfAreaMode)}, + { 1, "AFPoint", N_("AF Point"), N_("AF point"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfPoint)}, + { 2, "AFPointsInFocus", N_("AF Points In Focus"), N_("AF points in focus"), nikonAfId, makerTags, unsignedShort, 1, printAfPointsInFocus}, // End of list marker - TagInfo(0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), nikonAfId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), nikonAfId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAf() @@ -882,7 +882,7 @@ namespace Exiv2 { } //! PhaseDetectAF - extern const TagDetails nikonPhaseDetectAF[] = { + constexpr TagDetails nikonPhaseDetectAF[] = { { 0, N_("Off") }, { 1, N_("On (51-point)") }, { 2, N_("On (11-point)") }, @@ -894,22 +894,22 @@ namespace Exiv2 { }; // Nikon3 Auto Focus Tag Info - const TagInfo Nikon3MakerNote::tagInfoAf21_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonAf21Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf21Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo( 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf21Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf21Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)), - TagInfo( 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf21Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf21Id, makerTags, unsignedByte, 7, printValue), - TagInfo( 16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoAf21_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonAf21Id, makerTags, undefined, 4, printExifVersion}, + { 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf21Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)}, + { 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf21Id, makerTags, unsignedByte, 1, printValue}, + { 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf21Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)}, + { 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf21Id, makerTags, unsignedByte, 1, printValue}, + { 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf21Id, makerTags, unsignedByte, 7, printValue}, + { 16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, + { 18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, + { 20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, + { 22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, + { 24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, + { 26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, + { 28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf21Id, makerTags, unsignedShort, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf21Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf21Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAf21() @@ -918,22 +918,22 @@ namespace Exiv2 { } // Nikon3 Auto Focus Tag Info Version 1.01 https://github.com/Exiv2/exiv2/pull/900 - const TagInfo Nikon3MakerNote::tagInfoAf22_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonAf22Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf22Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo( 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf22Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf22Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)), - TagInfo( 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf22Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf22Id, makerTags, unsignedByte, 7, printValue), - TagInfo( 70, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 72, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 74, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 76, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 78, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 80, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 82, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoAf22_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonAf22Id, makerTags, undefined, 4, printExifVersion}, + { 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf22Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)}, + { 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf22Id, makerTags, unsignedByte, 1, printValue}, + { 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf22Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)}, + { 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf22Id, makerTags, unsignedByte, 1, printValue}, + { 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf22Id, makerTags, unsignedByte, 7, printValue}, + { 70, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, + { 72, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, + { 74, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, + { 76, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, + { 78, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, + { 80, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, + { 82, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf22Id, makerTags, unsignedShort, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf22Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf22Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAf22() @@ -943,12 +943,12 @@ namespace Exiv2 { // Nikon3 File Info Tag Info - const TagInfo Nikon3MakerNote::tagInfoFi_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFiId, makerTags, undefined, 4, printExifVersion), - TagInfo( 6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), nikonFiId, makerTags, unsignedShort, 1, printValue), - TagInfo( 8, "FileNumber", N_("File Number"), N_("File number"), nikonFiId, makerTags, unsignedShort, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoFi_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonFiId, makerTags, undefined, 4, printExifVersion}, + { 6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), nikonFiId, makerTags, unsignedShort, 1, printValue}, + { 8, "FileNumber", N_("File Number"), N_("File number"), nikonFiId, makerTags, unsignedShort, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFi() @@ -957,20 +957,20 @@ namespace Exiv2 { } //! MultiExposureMode - extern const TagDetails nikonMultiExposureMode[] = { + constexpr TagDetails nikonMultiExposureMode[] = { { 0, N_("Off") }, { 1, N_("Multiple Exposure") }, { 2, N_("Image Overlay") } }; // Nikon3 Multi Exposure Tag Info - const TagInfo Nikon3MakerNote::tagInfoMe_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonMeId, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonMultiExposureMode)), - TagInfo( 8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), nikonMeId, makerTags, unsignedLong, 1, printValue), - TagInfo( 12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonOffOn)), + constexpr TagInfo Nikon3MakerNote::tagInfoMe_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonMeId, makerTags, undefined, 4, printExifVersion}, + { 4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonMultiExposureMode)}, + { 8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), nikonMeId, makerTags, unsignedLong, 1, printValue}, + { 12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonOffOn)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListMe() @@ -979,14 +979,14 @@ namespace Exiv2 { } //! FlashSource - extern const TagDetails nikonFlashSource[] = { + constexpr TagDetails nikonFlashSource[] = { { 0, N_("None") }, { 1, N_("External") }, { 2, N_("Internal") } }; //! FlashFirmware - extern const TagDetails nikonFlashFirmware[] = { + constexpr TagDetails nikonFlashFirmware[] = { { 0x0000, N_("n/a") }, { 0x0101, N_("1.01 (SB-800 or Metz 58 AF-1)") }, { 0x0103, "1.03 (SB-800)" }, @@ -1004,7 +1004,7 @@ namespace Exiv2 { }; //! FlashGNDistance - extern const TagDetails nikonFlashGNDistance[] = { + constexpr TagDetails nikonFlashGNDistance[] = { { 0, N_("None") }, { 1, "0.1 m" }, { 2, "0.2 m" }, @@ -1046,7 +1046,7 @@ namespace Exiv2 { }; //! FlashControlMode - extern const TagDetails nikonFlashControlMode[] = { + constexpr TagDetails nikonFlashControlMode[] = { { 0, N_("Off") }, { 1, N_("iTTL-BL") }, { 2, N_("iTTL") }, @@ -1059,14 +1059,14 @@ namespace Exiv2 { }; //! ExternalFlashFlags - extern const TagDetails nikonExternalFlashFlags[] = { + constexpr TagDetails nikonExternalFlashFlags[] = { { 0, N_("Fired") }, { 2, N_("Bounce Flash") }, { 4, N_("Wide Flash Adapter") } }; //! FlashColorFilter - extern const TagDetails nikonFlashColorFilter[] = { + constexpr TagDetails nikonFlashColorFilter[] = { { 0, N_("None") }, { 1, N_("FL-GL1") }, { 2, N_("FL-GL2") }, @@ -1079,20 +1079,20 @@ namespace Exiv2 { }; // Nikon3 Flash Info 1 Tag Info - const TagInfo Nikon3MakerNote::tagInfoFl1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl1Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), - TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl1Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl1Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), - TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), - TagInfo( 11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl1Id, makerTags, unsignedByte, 1, printFlashFocalLength), - TagInfo( 12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), - TagInfo( 13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), - TagInfo( 14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), - TagInfo( 15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), - TagInfo( 16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), + constexpr TagInfo Nikon3MakerNote::tagInfoFl1_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonFl1Id, makerTags, undefined, 4, printExifVersion}, + { 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)}, + { 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl1Id, makerTags, unsignedByte, 1, printValue}, + { 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl1Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + { 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)}, + { 11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl1Id, makerTags, unsignedByte, 1, printFlashFocalLength}, + { 12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashRate}, + { 13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashCount}, + { 14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, + { 15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)}, + { 16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl1() @@ -1101,18 +1101,18 @@ namespace Exiv2 { } // Nikon3 Flash Info 2 Tag Info - const TagInfo Nikon3MakerNote::tagInfoFl2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), - TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl2Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), - TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), - TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl2Id, makerTags, unsignedByte, 1, printFlashFocalLength), - TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), - TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), - TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), + constexpr TagInfo Nikon3MakerNote::tagInfoFl2_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonFl2Id, makerTags, undefined, 4, printExifVersion}, + { 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)}, + { 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl2Id, makerTags, unsignedByte, 1, printValue}, + { 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + { 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)}, + { 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl2Id, makerTags, unsignedByte, 1, printFlashFocalLength}, + { 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashRate}, + { 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashCount}, + { 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl2() @@ -1121,18 +1121,18 @@ namespace Exiv2 { } // Nikon3 Flash Info 3 Tag Info - const TagInfo Nikon3MakerNote::tagInfoFl3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl3Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), - TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), - TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), - TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl3Id, makerTags, unsignedByte, 1, printFlashFocalLength), - TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), - TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), - TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), - TagInfo( 16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashColorFilter)), + constexpr TagInfo Nikon3MakerNote::tagInfoFl3_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonFl3Id, makerTags, undefined, 4, printExifVersion}, + { 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)}, + { 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + { 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)}, + { 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl3Id, makerTags, unsignedByte, 1, printFlashFocalLength}, + { 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashRate}, + { 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashCount}, + { 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, + { 16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashColorFilter)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl3() @@ -1141,11 +1141,11 @@ namespace Exiv2 { } // Nikon3 Shot Info D80 Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi1Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 586, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi1Id, makerTags, unsignedLong, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoSi1_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonSi1Id, makerTags, unsignedByte, 4, printExifVersion}, + { 586, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi1Id, makerTags, unsignedLong, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonSi1Tag)", "(UnknownNikonSi1Tag)", N_("Unknown Nikon Shot Info D80 Tag"), nikonSi1Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonSi1Tag)", "(UnknownNikonSi1Tag)", N_("Unknown Nikon Shot Info D80 Tag"), nikonSi1Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi1() @@ -1154,12 +1154,12 @@ namespace Exiv2 { } // Nikon3 Shot Info D40 Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi2Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 582, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi2Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 738, "FlashLevel", N_("Flash Level"), N_("Flash level"), nikonSi2Id, makerTags, unsignedByte, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoSi2_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonSi2Id, makerTags, unsignedByte, 4, printExifVersion}, + { 582, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi2Id, makerTags, unsignedLong, 1, printValue}, + { 738, "FlashLevel", N_("Flash Level"), N_("Flash level"), nikonSi2Id, makerTags, unsignedByte, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonSi2Tag)", "(UnknownNikonSi2Tag)", N_("Unknown Nikon Shot Info D40 Tag"), nikonSi2Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonSi2Tag)", "(UnknownNikonSi2Tag)", N_("Unknown Nikon Shot Info D40 Tag"), nikonSi2Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi2() @@ -1168,7 +1168,7 @@ namespace Exiv2 { } //! AfFineTuneAdj D300 (a) - extern const TagDetails nikonAfFineTuneAdj1[] = { + constexpr TagDetails nikonAfFineTuneAdj1[] = { { 0x0000, "0" }, { 0x003a, "+1" }, { 0x003b, "+2" }, @@ -1213,13 +1213,13 @@ namespace Exiv2 { }; // Nikon3 Shot Info D300 (a) Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi3Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 604, "ISO", N_("ISO"), N_("ISO"), nikonSi3Id, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 633, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi3Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 721, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj1)), + constexpr TagInfo Nikon3MakerNote::tagInfoSi3_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonSi3Id, makerTags, unsignedByte, 4, printExifVersion}, + { 604, "ISO", N_("ISO"), N_("ISO"), nikonSi3Id, makerTags, unsignedByte, 1, printIiIso}, + { 633, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi3Id, makerTags, unsignedLong, 1, printValue}, + { 721, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj1)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonSi3Tag)", "(UnknownNikonSi3Tag)", N_("Unknown Nikon Shot Info D300 (a) Tag"), nikonSi3Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonSi3Tag)", "(UnknownNikonSi3Tag)", N_("Unknown Nikon Shot Info D300 (a) Tag"), nikonSi3Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi3() @@ -1228,7 +1228,7 @@ namespace Exiv2 { } //! AfFineTuneAdj D300 (b) - extern const TagDetails nikonAfFineTuneAdj2[] = { + constexpr TagDetails nikonAfFineTuneAdj2[] = { { 0x0000, "0" }, { 0x043e, "+13" }, { 0x04c2, "-13" }, @@ -1273,13 +1273,13 @@ namespace Exiv2 { }; // Nikon3 Shot Info D300 (b) Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi4_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi4Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 613, "ISO", N_("ISO"), N_("ISO"), nikonSi4Id, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 644, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi4Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 732, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi4Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj2)), + constexpr TagInfo Nikon3MakerNote::tagInfoSi4_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonSi4Id, makerTags, unsignedByte, 4, printExifVersion}, + { 613, "ISO", N_("ISO"), N_("ISO"), nikonSi4Id, makerTags, unsignedByte, 1, printIiIso}, + { 644, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi4Id, makerTags, unsignedLong, 1, printValue}, + { 732, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi4Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj2)}, // End of list marker - TagInfo(0xffff, "(UnknownNikonSi4Tag)", "(UnknownNikonSi4Tag)", N_("Unknown Nikon Shot Info D300 (b) Tag"), nikonSi4Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonSi4Tag)", "(UnknownNikonSi4Tag)", N_("Unknown Nikon Shot Info D300 (b) Tag"), nikonSi4Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi4() @@ -1288,7 +1288,7 @@ namespace Exiv2 { } //! VibrationReduction - extern const TagDetails nikonOffOn2[] = { + constexpr TagDetails nikonOffOn2[] = { { 0, N_("Off") }, { 1, N_("On (1)") }, { 2, N_("On (2)") }, @@ -1296,25 +1296,25 @@ namespace Exiv2 { }; //! VibrationReduction2 - extern const TagDetails nikonOffOn3[] = { + constexpr TagDetails nikonOffOn3[] = { { 0x0, N_("n/a") }, { 0xc, N_("Off") }, { 0xf, N_("On") } }; // Nikon3 Shot Info Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi5_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi5Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 106, "ShutterCount1", N_("Shutter Count 1"), N_("Shutter count 1"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 110, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 117, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn2)), - TagInfo( 130, "VibrationReduction1", N_("Vibration Reduction 1"), N_("Vibration reduction 1"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo( 343, "ShutterCount2", N_("Shutter Count 2"), N_("Shutter count 2"), nikonSi5Id, makerTags, undefined, 2, printValue), - TagInfo( 430, "VibrationReduction2", N_("Vibration Reduction 2"), N_("Vibration reduction 2"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn3)), - TagInfo( 598, "ISO", N_("ISO"), N_("ISO"), nikonSi5Id, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 630, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoSi5_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonSi5Id, makerTags, unsignedByte, 4, printExifVersion}, + { 106, "ShutterCount1", N_("Shutter Count 1"), N_("Shutter count 1"), nikonSi5Id, makerTags, unsignedLong, 1, printValue}, + { 110, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue}, + { 117, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn2)}, + { 130, "VibrationReduction1", N_("Vibration Reduction 1"), N_("Vibration reduction 1"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)}, + { 343, "ShutterCount2", N_("Shutter Count 2"), N_("Shutter count 2"), nikonSi5Id, makerTags, undefined, 2, printValue}, + { 430, "VibrationReduction2", N_("Vibration Reduction 2"), N_("Vibration reduction 2"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn3)}, + { 598, "ISO", N_("ISO"), N_("ISO"), nikonSi5Id, makerTags, unsignedByte, 1, printIiIso}, + { 630, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), nikonSi5Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), nikonSi5Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi5() @@ -1323,11 +1323,11 @@ namespace Exiv2 { } // Nikon3 Color Balance 1 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb1Id, makerTags, undefined, 4, printExifVersion), - TagInfo(36, "WB_RBGGLevels", N_("WB RBGG Levels"), N_("WB RBGG levels"), nikonCb1Id, makerTags, unsignedShort, 4, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoCb1_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonCb1Id, makerTags, undefined, 4, printExifVersion}, + {36, "WB_RBGGLevels", N_("WB RBGG Levels"), N_("WB RBGG levels"), nikonCb1Id, makerTags, unsignedShort, 4, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonCb1Tag)", "(UnknownNikonCb1Tag)", N_("Unknown Nikon Color Balance 1 Tag"), nikonCb1Id, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownNikonCb1Tag)", "(UnknownNikonCb1Tag)", N_("Unknown Nikon Color Balance 1 Tag"), nikonCb1Id, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb1() @@ -1336,11 +1336,11 @@ namespace Exiv2 { } // Nikon3 Color Balance 2 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 5, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2Id, makerTags, unsignedShort, 4, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoCb2_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonCb2Id, makerTags, undefined, 4, printExifVersion}, + { 5, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2Id, makerTags, unsignedShort, 4, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonCb2Tag)", "(UnknownNikonCb2Tag)", N_("Unknown Nikon Color Balance 2 Tag"), nikonCb2Id, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownNikonCb2Tag)", "(UnknownNikonCb2Tag)", N_("Unknown Nikon Color Balance 2 Tag"), nikonCb2Id, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb2() @@ -1349,11 +1349,11 @@ namespace Exiv2 { } // Nikon3 Color Balance 2a Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb2a_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2aId, makerTags, undefined, 4, printExifVersion), - TagInfo( 9, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2aId, makerTags, unsignedShort, 4, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoCb2a_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonCb2aId, makerTags, undefined, 4, printExifVersion}, + { 9, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2aId, makerTags, unsignedShort, 4, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonCb2aTag)", "(UnknownNikonCb2aTag)", N_("Unknown Nikon Color Balance 2a Tag"), nikonCb2aId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownNikonCb2aTag)", "(UnknownNikonCb2aTag)", N_("Unknown Nikon Color Balance 2a Tag"), nikonCb2aId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb2a() @@ -1362,11 +1362,11 @@ namespace Exiv2 { } // Nikon3 Color Balance 2b Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb2b_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2bId, makerTags, undefined, 4, printExifVersion), - TagInfo(145, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2bId, makerTags, unsignedShort, 4, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoCb2b_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonCb2bId, makerTags, undefined, 4, printExifVersion}, + {145, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2bId, makerTags, unsignedShort, 4, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonCb2bTag)", "(UnknownNikonCb2bTag)", N_("Unknown Nikon Color Balance 2b Tag"), nikonCb2bId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownNikonCb2bTag)", "(UnknownNikonCb2bTag)", N_("Unknown Nikon Color Balance 2b Tag"), nikonCb2bId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb2b() @@ -1375,11 +1375,11 @@ namespace Exiv2 { } // Nikon3 Color Balance 3 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb3Id, makerTags, undefined, 4, printExifVersion), - TagInfo(10, "WB_RGBGLevels", N_("WB RGBG Levels"), N_("WB RGBG levels"), nikonCb3Id, makerTags, unsignedShort, 4, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoCb3_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonCb3Id, makerTags, undefined, 4, printExifVersion}, + {10, "WB_RGBGLevels", N_("WB RGBG Levels"), N_("WB RGBG levels"), nikonCb3Id, makerTags, unsignedShort, 4, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonCb3Tag)", "(UnknownNikonCb3Tag)", N_("Unknown Nikon Color Balance 3 Tag"), nikonCb3Id, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownNikonCb3Tag)", "(UnknownNikonCb3Tag)", N_("Unknown Nikon Color Balance 3 Tag"), nikonCb3Id, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb3() @@ -1388,11 +1388,11 @@ namespace Exiv2 { } // Nikon3 Color Balance 4 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb4_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb4Id, makerTags, undefined, 4, printExifVersion), - TagInfo(147, "WB_GRBGLevels", N_("WB GRBG Levels"), N_("WB GRBG levels"), nikonCb4Id, makerTags, unsignedShort, 4, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoCb4_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonCb4Id, makerTags, undefined, 4, printExifVersion}, + {147, "WB_GRBGLevels", N_("WB GRBG Levels"), N_("WB GRBG levels"), nikonCb4Id, makerTags, unsignedShort, 4, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonCb4Tag)", "(UnknownNikonCb4Tag)", N_("Unknown Nikon Color Balance 4 Tag"), nikonCb4Id, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownNikonCb4Tag)", "(UnknownNikonCb4Tag)", N_("Unknown Nikon Color Balance 4 Tag"), nikonCb4Id, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb4() @@ -1401,17 +1401,17 @@ namespace Exiv2 { } // Nikon3 Lens Data 1 Tag Info - const TagInfo Nikon3MakerNote::tagInfoLd1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd1Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 6, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd1Id, makerTags, unsignedByte, 1, printLensId1), - TagInfo( 7, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd1Id, makerTags, unsignedByte, 1, printFStops), - TagInfo( 8, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), - TagInfo( 9, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(10, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(11, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(12, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd1Id, makerTags, unsignedByte, 1, printValue), + constexpr TagInfo Nikon3MakerNote::tagInfoLd1_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonLd1Id, makerTags, undefined, 4, printExifVersion}, + { 6, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd1Id, makerTags, unsignedByte, 1, printLensId1}, + { 7, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd1Id, makerTags, unsignedByte, 1, printFStops}, + { 8, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal}, + { 9, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal}, + {10, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture}, + {11, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture}, + {12, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd1Id, makerTags, unsignedByte, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownNikonLd1Tag)", "(UnknownNikonLd1Tag)", N_("Unknown Nikon Lens Data 1 Tag"), nikonLd1Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonLd1Tag)", "(UnknownNikonLd1Tag)", N_("Unknown Nikon Lens Data 1 Tag"), nikonLd1Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd1() @@ -1420,23 +1420,23 @@ namespace Exiv2 { } // Nikon3 Lens Data 2 Tag Info - const TagInfo Nikon3MakerNote::tagInfoLd2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd2Id, makerTags, unsignedByte, 1, printExitPupilPosition), - TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 9, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd2Id, makerTags, unsignedByte, 1, printFocusDistance), - TagInfo(10, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(11, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd2Id, makerTags, unsignedByte, 1, printLensId2), - TagInfo(12, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd2Id, makerTags, unsignedByte, 1, printFStops), - TagInfo(13, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(14, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(15, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(16, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(17, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), - TagInfo(18, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), + constexpr TagInfo Nikon3MakerNote::tagInfoLd2_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonLd2Id, makerTags, undefined, 4, printExifVersion}, + { 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd2Id, makerTags, unsignedByte, 1, printExitPupilPosition}, + { 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture}, + { 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd2Id, makerTags, unsignedByte, 1, printValue}, + { 9, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd2Id, makerTags, unsignedByte, 1, printFocusDistance}, + {10, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal}, + {11, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd2Id, makerTags, unsignedByte, 1, printLensId2}, + {12, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd2Id, makerTags, unsignedByte, 1, printFStops}, + {13, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal}, + {14, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal}, + {15, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture}, + {16, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture}, + {17, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd2Id, makerTags, unsignedByte, 1, printValue}, + {18, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture}, // End of list marker - TagInfo(0xffff, "(UnknownNikonLd2Tag)", "(UnknownNikonLd2Tag)", N_("Unknown Nikon Lens Data 2 Tag"), nikonLd2Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonLd2Tag)", "(UnknownNikonLd2Tag)", N_("Unknown Nikon Lens Data 2 Tag"), nikonLd2Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd2() @@ -1445,23 +1445,23 @@ namespace Exiv2 { } // Nikon3 Lens Data 3 Tag Info - const TagInfo Nikon3MakerNote::tagInfoLd3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd3Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd3Id, makerTags, unsignedByte, 1, printExitPupilPosition), - TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), - TagInfo(10, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd3Id, makerTags, unsignedByte, 1, printFocusDistance), - TagInfo(11, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(12, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd3Id, makerTags, unsignedByte, 1, printLensId3), - TagInfo(13, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd3Id, makerTags, unsignedByte, 1, printFStops), - TagInfo(14, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(15, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(16, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(17, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(18, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), - TagInfo(19, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), + constexpr TagInfo Nikon3MakerNote::tagInfoLd3_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonLd3Id, makerTags, undefined, 4, printExifVersion}, + { 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd3Id, makerTags, unsignedByte, 1, printExitPupilPosition}, + { 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture}, + { 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd3Id, makerTags, unsignedByte, 1, printValue}, + {10, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd3Id, makerTags, unsignedByte, 1, printFocusDistance}, + {11, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal}, + {12, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd3Id, makerTags, unsignedByte, 1, printLensId3}, + {13, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd3Id, makerTags, unsignedByte, 1, printFStops}, + {14, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal}, + {15, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal}, + {16, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture}, + {17, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture}, + {18, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd3Id, makerTags, unsignedByte, 1, printValue}, + {19, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture}, // End of list marker - TagInfo(0xffff, "(UnknownNikonLd3Tag)", "(UnknownNikonLd3Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd3Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonLd3Tag)", "(UnknownNikonLd3Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd3Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd3() @@ -1471,28 +1471,28 @@ namespace Exiv2 { // Nikon3 Lens Data 4 Tag Info // based on https://exiftool.org/TagNames/Nikon.html#LensData0800 - const TagInfo Nikon3MakerNote::tagInfoLd4_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd4Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd4Id, makerTags, unsignedByte, 1, printExitPupilPosition), - TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), - TagInfo( 9, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd4Id, makerTags, unsignedByte, 1, printValue), - TagInfo(11, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd4Id, makerTags, unsignedByte, 1, printFocusDistance), - TagInfo(12, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(13, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd4Id, makerTags, unsignedByte, 1, printLensId4), - TagInfo(14, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd4Id, makerTags, unsignedByte, 1, printFStops), - TagInfo(15, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(16, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(17, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(18, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(19, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd4Id, makerTags, unsignedByte, 1, printValue), - TagInfo(20, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(48, "LensID", N_("LensID"), N_("Lens ID"), nikonLd4Id, makerTags, unsignedShort, 1, printLensId4ZMount), - TagInfo(54, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), nikonLd4Id, makerTags, unsignedShort, 1, printApertureLd4), - TagInfo(56, "FNumber", N_("F-Number"), N_("F-Number"), nikonLd4Id, makerTags, unsignedShort, 1, printApertureLd4), - TagInfo(60, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd4Id, makerTags, unsignedShort, 1, printFocalLd4), - TagInfo(79, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd4Id, makerTags, unsignedByte, 1, printFocusDistance), + constexpr TagInfo Nikon3MakerNote::tagInfoLd4_[] = { + { 0, "Version", N_("Version"), N_("Version"), nikonLd4Id, makerTags, undefined, 4, printExifVersion}, + { 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd4Id, makerTags, unsignedByte, 1, printExitPupilPosition}, + { 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture}, + { 9, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd4Id, makerTags, unsignedByte, 1, printValue}, + {11, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd4Id, makerTags, unsignedByte, 1, printFocusDistance}, + {12, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal}, + {13, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd4Id, makerTags, unsignedByte, 1, printLensId4}, + {14, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd4Id, makerTags, unsignedByte, 1, printFStops}, + {15, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal}, + {16, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal}, + {17, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture}, + {18, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture}, + {19, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd4Id, makerTags, unsignedByte, 1, printValue}, + {20, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture}, + {48, "LensID", N_("LensID"), N_("Lens ID"), nikonLd4Id, makerTags, unsignedShort, 1, printLensId4ZMount}, + {54, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), nikonLd4Id, makerTags, unsignedShort, 1, printApertureLd4}, + {56, "FNumber", N_("F-Number"), N_("F-Number"), nikonLd4Id, makerTags, unsignedShort, 1, printApertureLd4}, + {60, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd4Id, makerTags, unsignedShort, 1, printFocalLd4}, + {79, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd4Id, makerTags, unsignedByte, 1, printFocusDistance}, // End of list marker - TagInfo(0xffff, "(UnknownNikonLd4Tag)", "(UnknownNikonLd4Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd4Id, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownNikonLd4Tag)", "(UnknownNikonLd4Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd4Id, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd4() diff --git a/src/olympusmn_int.cpp b/src/olympusmn_int.cpp index 662a2bb3..62f8a595 100644 --- a/src/olympusmn_int.cpp +++ b/src/olympusmn_int.cpp @@ -41,19 +41,19 @@ namespace Exiv2 { namespace Internal { //! OffOn, multiple tags - extern const TagDetails olympusOffOn[] = { + constexpr TagDetails olympusOffOn[] = { { 0, N_("Off") }, { 1, N_("On") } }; //! NoYes, multiple tags - extern const TagDetails olympusNoYes[] = { + constexpr TagDetails olympusNoYes[] = { { 0, N_("No") }, { 1, N_("Yes") } }; //! Quality, tag 0x0201 - extern const TagDetails olympusQuality[] = { + constexpr TagDetails olympusQuality[] = { { 1, N_("Standard Quality (SQ)") }, { 2, N_("High Quality (HQ)") }, { 3, N_("Super High Quality (SHQ)") }, @@ -61,21 +61,21 @@ namespace Exiv2 { }; //! Macro, tag 0x0202 - extern const TagDetails olympusMacro[] = { + constexpr TagDetails olympusMacro[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("Super macro") } }; //! OneTouchWB, tag 0x0302 - extern const TagDetails olympusOneTouchWb[] = { + constexpr TagDetails olympusOneTouchWb[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("On (preset)") } }; //! SceneMode, tag 0x403 and CameraSettings tag 0x509 - extern const TagDetails olympusSceneMode[] = { + constexpr TagDetails olympusSceneMode[] = { { 0, N_("Standard") }, { 6, N_("Auto") }, { 7, N_("Sport") }, @@ -124,7 +124,7 @@ namespace Exiv2 { }; //! FlashDevice, tag 0x1005 - extern const TagDetails olympusFlashDevice[] = { + constexpr TagDetails olympusFlashDevice[] = { { 0, N_("None") }, { 1, N_("Internal") }, { 4, N_("External") }, @@ -132,329 +132,329 @@ namespace Exiv2 { }; //! FocusRange, tag 0x100a - extern const TagDetails olympusFocusRange[] = { + constexpr TagDetails olympusFocusRange[] = { { 0, N_("Normal") }, { 1, N_("Macro") } }; //! FocusMode, tag 0x100b - extern const TagDetails olympusFocusMode[] = { + constexpr TagDetails olympusFocusMode[] = { { 0, N_("Auto") }, { 1, N_("Manual") } }; //! Sharpness, tag 0x100f - extern const TagDetails olympusSharpness[] = { + constexpr TagDetails olympusSharpness[] = { { 0, N_("Normal") }, { 1, N_("Hard") }, { 2, N_("Soft") } }; //! Contrast, tag 0x1029 - extern const TagDetails olympusContrast[] = { + constexpr TagDetails olympusContrast[] = { { 0, N_("High") }, { 1, N_("Normal") }, { 2, N_("Low") } }; //! CCDScanMode, tag 0x1039 - extern const TagDetails olympusCCDScanMode[] = { + constexpr TagDetails olympusCCDScanMode[] = { { 0, N_("Interlaced") }, { 1, N_("Progressive") } }; // Olympus Tag Info - const TagInfo OlympusMakerNote::tagInfo_[] = { + constexpr TagInfo OlympusMakerNote::tagInfo_[] = { /* TODO: add Minolta makenotes tags here (0x0000-0x0103). See Exiftool database.*/ - TagInfo(0x0000, "0x0000", "0x0000", + {0x0000, "0x0000", "0x0000", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0100, "ThumbnailImage", N_("Thumbnail Image"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x0100, "ThumbnailImage", N_("Thumbnail Image"), N_("Thumbnail image"), - olympusId, makerTags, undefined, -1, printValue), + olympusId, makerTags, undefined, -1, printValue}, - TagInfo(0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), + {0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0200, "SpecialMode", N_("Special Mode"), + olympusId, makerTags, asciiString, -1, printValue}, + {0x0200, "SpecialMode", N_("Special Mode"), N_("Picture taking mode"), - olympusId, makerTags, unsignedLong, -1, print0x0200), - TagInfo(0x0201, "Quality", N_("Quality"), + olympusId, makerTags, unsignedLong, -1, print0x0200}, + {0x0201, "Quality", N_("Quality"), N_("Image quality setting"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusQuality)), - TagInfo(0x0202, "Macro", N_("Macro"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusQuality)}, + {0x0202, "Macro", N_("Macro"), N_("Macro mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacro)), - TagInfo(0x0203, "BWMode", N_("Black & White Mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacro)}, + {0x0203, "BWMode", N_("Black & White Mode"), N_("Black and white mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0204, "DigitalZoom", N_("Digital Zoom"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0204, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom ratio"), - olympusId, makerTags, unsignedRational, -1, print0x0204), - TagInfo(0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), + olympusId, makerTags, unsignedRational, -1, print0x0204}, + {0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), - olympusId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), + olympusId, makerTags, unsignedRational, -1, printValue}, + {0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), N_("Lens distortion parameters"), - olympusId, makerTags, signedShort, -1, printValue), - TagInfo(0x0207, "CameraType", N_("Camera Type"), + olympusId, makerTags, signedShort, -1, printValue}, + {0x0207, "CameraType", N_("Camera Type"), N_("Camera type"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0208, "PictureInfo", N_("Picture Info"), + olympusId, makerTags, asciiString, -1, printValue}, + {0x0208, "PictureInfo", N_("Picture Info"), N_("ASCII format data such as [PictureInfo]"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0209, "CameraID", N_("Camera ID"), + olympusId, makerTags, asciiString, -1, printValue}, + {0x0209, "CameraID", N_("Camera ID"), N_("Camera ID data"), - olympusId, makerTags, asciiString, -1, print0x0209), - TagInfo(0x020b, "ImageWidth", N_("Image Width"), + olympusId, makerTags, asciiString, -1, print0x0209}, + {0x020b, "ImageWidth", N_("Image Width"), N_("Image width"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020c, "ImageHeight", N_("Image Height"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x020c, "ImageHeight", N_("Image Height"), N_("Image height"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020d, "Software", N_("Software"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x020d, "Software", N_("Software"), N_("Software"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0280, "PreviewImage", N_("Preview Image"), + olympusId, makerTags, asciiString, -1, printValue}, + {0x0280, "PreviewImage", N_("Preview Image"), N_("Preview image"), - olympusId, makerTags, unsignedByte, -1, printValue), - TagInfo(0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), + olympusId, makerTags, unsignedByte, -1, printValue}, + {0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), N_("Pre-capture frames"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "WhiteBoard", N_("White Board"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x0301, "WhiteBoard", N_("White Board"), N_("White board"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0302, "OneTouchWB", N_("One Touch WB"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x0302, "OneTouchWB", N_("One Touch WB"), N_("One touch white balance"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOneTouchWb)), - TagInfo(0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOneTouchWb)}, + {0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0304, "WhiteBalanceBias", N_("White Balance Bias"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x0304, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0403, "SceneMode", N_("Scene Mode"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x0403, "SceneMode", N_("Scene Mode"), N_("Scene mode"), - olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)), - TagInfo(0x0404, "Firmware", N_("Firmware"), + olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)}, + {0x0404, "Firmware", N_("Firmware"), N_("Firmware"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), + olympusId, makerTags, asciiString, -1, printValue}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), - olympusId, makerTags, undefined, -1, printValue), - TagInfo(0x0f00, "DataDump1", N_("Data Dump 1"), + olympusId, makerTags, undefined, -1, printValue}, + {0x0f00, "DataDump1", N_("Data Dump 1"), N_("Various camera settings 1"), - olympusId, makerTags, undefined, -1, printValue), - TagInfo(0x0f01, "DataDump2", N_("Data Dump 2"), + olympusId, makerTags, undefined, -1, printValue}, + {0x0f01, "DataDump2", N_("Data Dump 2"), N_("Various camera settings 2"), - olympusId, makerTags, undefined, -1, printValue), - TagInfo(0x1000, "ShutterSpeed", N_("Shutter Speed"), + olympusId, makerTags, undefined, -1, printValue}, + {0x1000, "ShutterSpeed", N_("Shutter Speed"), N_("Shutter speed value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1001, "ISOSpeed", N_("ISO Speed"), + olympusId, makerTags, signedRational, -1, printValue}, + {0x1001, "ISOSpeed", N_("ISO Speed"), N_("ISO speed value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1002, "ApertureValue", N_("Aperture Value"), + olympusId, makerTags, signedRational, -1, printValue}, + {0x1002, "ApertureValue", N_("Aperture Value"), N_("Aperture value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1003, "Brightness", N_("Brightness"), + olympusId, makerTags, signedRational, -1, printValue}, + {0x1003, "Brightness", N_("Brightness"), N_("Brightness value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1004, "FlashMode", N_("Flash Mode"), + olympusId, makerTags, signedRational, -1, printValue}, + {0x1004, "FlashMode", N_("Flash Mode"), N_("Flash mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1005, "FlashDevice", N_("Flash Device"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1005, "FlashDevice", N_("Flash Device"), N_("Flash device"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashDevice)), - TagInfo(0x1006, "Bracket", N_("Bracket"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashDevice)}, + {0x1006, "Bracket", N_("Bracket"), N_("Exposure compensation value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1007, "SensorTemperature", N_("Sensor Temperature"), + olympusId, makerTags, signedRational, -1, printValue}, + {0x1007, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), - olympusId, makerTags, signedShort, -1, printValue), - TagInfo(0x1008, "LensTemperature", N_("Lens Temperature"), + olympusId, makerTags, signedShort, -1, printValue}, + {0x1008, "LensTemperature", N_("Lens Temperature"), N_("Lens temperature"), - olympusId, makerTags, signedShort, -1, printValue), - TagInfo(0x1009, "LightCondition", N_("Light Condition"), + olympusId, makerTags, signedShort, -1, printValue}, + {0x1009, "LightCondition", N_("Light Condition"), N_("Light condition"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x100a, "FocusRange", N_("Focus Range"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x100a, "FocusRange", N_("Focus Range"), N_("Focus range"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusRange)), - TagInfo(0x100b, "FocusMode", N_("Focus Mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusRange)}, + {0x100b, "FocusMode", N_("Focus Mode"), N_("Focus mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusMode)), - TagInfo(0x100c, "FocusDistance", N_("Focus Distance"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusMode)}, + {0x100c, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), - olympusId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x100d, "Zoom", N_("Zoom"), + olympusId, makerTags, unsignedRational, -1, printValue}, + {0x100d, "Zoom", N_("Zoom"), N_("Zoom step count"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x100e, "MacroFocus", N_("Macro Focus"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x100e, "MacroFocus", N_("Macro Focus"), N_("Macro focus step count"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x100f, "SharpnessFactor", N_("Sharpness Factor"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x100f, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSharpness)), - TagInfo(0x1010, "FlashChargeLevel", N_("Flash Charge Level"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSharpness)}, + {0x1010, "FlashChargeLevel", N_("Flash Charge Level"), N_("Flash charge level"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1011, "ColorMatrix", N_("Color Matrix"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1011, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1012, "BlackLevel", N_("BlackLevel"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1012, "BlackLevel", N_("BlackLevel"), N_("Black level"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1013, "0x1013", "0x1013", + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1013, "0x1013", "0x1013", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1014, "0x1014", "0x1014", + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1014, "0x1014", "0x1014", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1015, "WhiteBalance", N_("White Balance"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1015, "WhiteBalance", N_("White Balance"), N_("White balance mode"), - olympusId, makerTags, unsignedShort, -1, print0x1015), - TagInfo(0x1016, "0x1016", "0x1016", + olympusId, makerTags, unsignedShort, -1, print0x1015}, + {0x1016, "0x1016", "0x1016", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1017, "RedBalance", N_("Red Balance"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1017, "RedBalance", N_("Red Balance"), N_("Red balance"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1018, "BlueBalance", N_("Blue Balance"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1018, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), N_("Color matrix number"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x101a, "SerialNumber2", N_("Serial Number 2"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x101a, "SerialNumber2", N_("Serial Number 2"), N_("Serial number 2"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x101b, "0x101b", "0x101b", + olympusId, makerTags, asciiString, -1, printValue}, + {0x101b, "0x101b", "0x101b", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101c, "0x101c", "0x101c", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x101c, "0x101c", "0x101c", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101d, "0x101d", "0x101d", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x101d, "0x101d", "0x101d", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101e, "0x101e", "0x101e", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x101e, "0x101e", "0x101e", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101f, "0x101f", "0x101f", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x101f, "0x101f", "0x101f", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1020, "0x1020", "0x1020", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1020, "0x1020", "0x1020", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1021, "0x1021", "0x1021", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1021, "0x1021", "0x1021", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1022, "0x1022", "0x1022", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1022, "0x1022", "0x1022", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1023, "FlashBias", N_("Flash Bias"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1023, "FlashBias", N_("Flash Bias"), N_("Flash exposure compensation"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1024, "0x1024", "0x1024", + olympusId, makerTags, signedRational, -1, printValue}, + {0x1024, "0x1024", "0x1024", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1025, "0x1025", "0x1025", + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1025, "0x1025", "0x1025", N_("Unknown"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), + olympusId, makerTags, signedRational, -1, printValue}, + {0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1028, "ExternalFlashMode", N_("External Flash Mode"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1028, "ExternalFlashMode", N_("External Flash Mode"), N_("External flash mode"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1029, "Contrast", N_("Contrast"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1029, "Contrast", N_("Contrast"), N_("Contrast setting"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusContrast)), - TagInfo(0x102a, "SharpnessFactor", N_("Sharpness Factor"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusContrast)}, + {0x102a, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102b, "ColorControl", N_("Color Control"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x102b, "ColorControl", N_("Color Control"), N_("Color control"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102c, "ValidBits", N_("ValidBits"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x102c, "ValidBits", N_("ValidBits"), N_("Valid bits"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102d, "CoringFilter", N_("CoringFilter"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x102d, "CoringFilter", N_("CoringFilter"), N_("Coring filter"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102e, "ImageWidth", N_("Image Width"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x102e, "ImageWidth", N_("Image Width"), N_("Image width"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x102f, "ImageHeight", N_("Image Height"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x102f, "ImageHeight", N_("Image Height"), N_("Image height"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1030, "0x1030", "0x1030", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1030, "0x1030", "0x1030", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1031, "0x1031", "0x1031", + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1031, "0x1031", "0x1031", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1032, "0x1032", "0x1032", + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1032, "0x1032", "0x1032", N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1033, "0x1033", "0x1033", + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x1033, "0x1033", "0x1033", N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1034, "CompressionRatio", N_("Compression Ratio"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1034, "CompressionRatio", N_("Compression Ratio"), N_("Compression ratio"), - olympusId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1035, "Thumbnail", N_("Thumbnail"), + olympusId, makerTags, unsignedRational, -1, printValue}, + {0x1035, "Thumbnail", N_("Thumbnail"), N_("Preview image embedded"), - olympusId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), + olympusId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the preview image"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1037, "ThumbnailLength", N_("Thumbnail Length"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1037, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the preview image"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1039, "CCDScanMode", N_("CCD Scan Mode"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x1039, "CCDScanMode", N_("CCD Scan Mode"), N_("CCD scan mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCCDScanMode)), - TagInfo(0x103a, "NoiseReduction", N_("Noise Reduction"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCCDScanMode)}, + {0x103a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x103b, "InfinityLensStep", N_("Infinity Lens Step"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x103b, "InfinityLensStep", N_("Infinity Lens Step"), N_("Infinity lens step"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x103c, "NearLensStep", N_("Near Lens Step"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x103c, "NearLensStep", N_("Near Lens Step"), N_("Near lens step"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2010, "Equipment", N_("Equipment Info"), + olympusId, makerTags, unsignedShort, -1, printValue}, + {0x2010, "Equipment", N_("Equipment Info"), N_("Camera equipment sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2020, "CameraSettings", N_("Camera Settings"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x2020, "CameraSettings", N_("Camera Settings"), N_("Camera Settings sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2030, "RawDevelopment", N_("Raw Development"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x2030, "RawDevelopment", N_("Raw Development"), N_("Raw development sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2031, "RawDevelopment2", N_("Raw Development 2"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x2031, "RawDevelopment2", N_("Raw Development 2"), N_("Raw development 2 sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2040, "ImageProcessing", N_("Image Processing"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x2040, "ImageProcessing", N_("Image Processing"), N_("Image processing sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2050, "FocusInfo", N_("Focus Info"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x2050, "FocusInfo", N_("Focus Info"), N_("Focus sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x3000, "RawInfo", N_("Raw Info"), + olympusId, makerTags, unsignedLong, -1, printValue}, + {0x3000, "RawInfo", N_("Raw Info"), N_("Raw sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), + olympusId, makerTags, unsignedLong, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusMakerNoteTag)", "(UnknownOlympusMakerNoteTag)", + {0xffff, "(UnknownOlympusMakerNoteTag)", "(UnknownOlympusMakerNoteTag)", N_("Unknown OlympusMakerNote tag"), - olympusId, makerTags, asciiString, -1, printValue) + olympusId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagList() @@ -464,7 +464,7 @@ namespace Exiv2 { // Olympus CameraSettings Tags //! ExposureMode, tag 0x0200 - extern const TagDetails olympusExposureMode[] = { + constexpr TagDetails olympusExposureMode[] = { { 1, N_("Manual") }, { 2, N_("Program") }, { 3, N_("Aperture-priority AE") }, @@ -473,7 +473,7 @@ namespace Exiv2 { }; //! MeteringMode, tag 0x0202 - extern const TagDetails olympusMeteringMode[] = { + constexpr TagDetails olympusMeteringMode[] = { { 2, N_("Center-weighted average") }, { 3, N_("Spot") }, { 5, N_("ESP") }, @@ -483,14 +483,14 @@ namespace Exiv2 { }; //! MacroMode, tag 0x0300 - extern const TagDetails olympusMacroMode[] = { + constexpr TagDetails olympusMacroMode[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("Super Macro") } }; //! FocusMode, tag 0x0301 - extern const TagDetails olympusCsFocusMode[] = { + EXV_UNUSED constexpr TagDetails olympusCsFocusMode[] = { { 0, N_("Single AF") }, { 1, N_("Sequential shooting AF") }, { 2, N_("Continuous AF") }, @@ -499,19 +499,19 @@ namespace Exiv2 { }; //! FocusProcess, tag 0x0302 - extern const TagDetails olympusFocusProcess[] = { + constexpr TagDetails olympusFocusProcess[] = { { 0, N_("AF Not Used") }, { 1, N_("AF Used") } }; //! AFSearch, tag 0x0303 - extern const TagDetails olympusAFSearch[] = { + constexpr TagDetails olympusAFSearch[] = { { 0, N_("Not Ready") }, { 1, N_("Ready") } }; //! FlashMode, tag 0x0400 - extern const TagDetailsBitmask olympusFlashMode[] = { + constexpr TagDetailsBitmask olympusFlashMode[] = { { 0x0000, N_("Off") }, { 0x0001, N_("On") }, { 0x0002, N_("Fill-in") }, @@ -522,7 +522,7 @@ namespace Exiv2 { }; //! FlashRemoteControl, tag 0x0403 - extern const TagDetails olympusFlashRemoteControl[] = { + constexpr TagDetails olympusFlashRemoteControl[] = { { 0x0, N_("Off") }, { 0x1, N_("Channel 1, Low") }, { 0x2, N_("Channel 2, Low") }, @@ -539,7 +539,7 @@ namespace Exiv2 { }; //! FlashControlMode, tag 0x0404 - extern const TagDetails olympusFlashControlMode[] = { + constexpr TagDetails olympusFlashControlMode[] = { { 0, N_("Off") }, { 3, N_("TTL") }, { 4, N_("Auto") }, @@ -547,7 +547,7 @@ namespace Exiv2 { }; //! WhiteBalance, tag 0x0500 - extern const TagDetails olympusWhiteBalance[] = { + constexpr TagDetails olympusWhiteBalance[] = { { 0, N_("Auto") }, { 1, N_("Auto (Keep Warm Color Off") }, { 16, N_("7500K (Fine Weather with Shade)") }, @@ -574,7 +574,7 @@ namespace Exiv2 { }; //! ModifiedSaturation, tag 0x0504 - extern const TagDetails olympusModifiedSaturation[] = { + constexpr TagDetails olympusModifiedSaturation[] = { { 0, N_("Off") }, { 1, N_("CM1 (Red Enhance)") }, { 2, N_("CM2 (Green Enhance)") }, @@ -583,14 +583,14 @@ namespace Exiv2 { }; //! ColorSpace, tag 0x0507 - extern const TagDetails olympusColorSpace[] = { + constexpr TagDetails olympusColorSpace[] = { { 0, N_("sRGB") }, { 1, N_("Adobe RGB") }, { 2, N_("Pro Photo RGB") } }; //! NoiseReduction, tag 0x050a - extern const TagDetailsBitmask olympusNoiseReduction[] = { + constexpr TagDetailsBitmask olympusNoiseReduction[] = { { 0x0001, N_("Noise Reduction") }, { 0x0002, N_("Noise Filter") }, { 0x0004, N_("Noise Filter (ISO Boost)") }, @@ -598,7 +598,7 @@ namespace Exiv2 { }; //! PictureMode, tag 0x0520 - extern const TagDetails olympusPictureMode[] = { + constexpr TagDetails olympusPictureMode[] = { { 1, N_("Vivid") }, { 2, N_("Natural") }, { 3, N_("Muted") }, @@ -617,7 +617,7 @@ namespace Exiv2 { }; //! PictureModeBWFilter, tag 0x0525 - extern const TagDetails olympusPictureModeBWFilter[] = { + constexpr TagDetails olympusPictureModeBWFilter[] = { { 0, N_("n/a") }, { 1, N_("Neutral") }, { 2, N_("Yellow") }, @@ -627,7 +627,7 @@ namespace Exiv2 { }; //! PictureModeTone, tag 0x0526 - extern const TagDetails olympusPictureModeTone[] = { + constexpr TagDetails olympusPictureModeTone[] = { { 0, N_("n/a") }, { 1, N_("Neutral") }, { 2, N_("Sepia") }, @@ -637,7 +637,7 @@ namespace Exiv2 { }; //! OlympusCs Quality, tag 0x0603 - extern const TagDetails olympusCsQuality[] = { + constexpr TagDetails olympusCsQuality[] = { { 1, N_("SQ") }, { 2, N_("HQ") }, { 3, N_("SHQ") }, @@ -645,70 +645,70 @@ namespace Exiv2 { }; //! Olympus ImageStabilization, tag 0x0604 - extern const TagDetails olympusImageStabilization[] = { + constexpr TagDetails olympusImageStabilization[] = { { 0, N_("Off") }, { 1, N_("On, Mode 1") }, { 2, N_("On, Mode 2") }, { 3, N_("On, Mode 3") } }; - const TagInfo OlympusMakerNote::tagInfoCs_[] = { - TagInfo(0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), olympusCsId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), olympusCsId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusNoYes)), - TagInfo(0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), olympusCsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), olympusCsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusExposureMode)), - TagInfo(0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0202, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMeteringMode)), - TagInfo(0x0203, "ExposureShift", N_("Exposure Shift"), N_("Exposure shift"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0300, "MacroMode", N_("Macro Mode"), N_("Macro mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacroMode)), - TagInfo(0x0301, "FocusMode", N_("Focus Mode"), N_("Focus mode"), olympusCsId, makerTags, unsignedShort, -1, printCs0x0301), - TagInfo(0x0302, "FocusProcess", N_("Focus Process"), N_("Focus process"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusProcess)), - TagInfo(0x0303, "AFSearch", N_("AF Search"), N_("AF search"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusAFSearch)), - TagInfo(0x0304, "AFAreas", N_("AF Areas"), N_("AF areas"), olympusCsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0305, "AFPointSelected", N_("AFPointSelected"), N_("AFPointSelected"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0307, "AFFineTuneAdj", N_("AF Fine Tune Adjust"), N_("AF fine tune adjust"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0400, "FlashMode", N_("Flash Mode"), N_("Flash mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusFlashMode)), - TagInfo(0x0401, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0403, "FlashRemoteControl", N_("Flash Remote Control"), N_("Flash remote control"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashRemoteControl)), - TagInfo(0x0404, "FlashControlMode", N_("Flash Control Mode"), N_("Flash control mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashControlMode)), - TagInfo(0x0405, "FlashIntensity", N_("Flash Intensity"), N_("Flash intensity"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0500, "WhiteBalance", N_("White Balance 2"), N_("White balance 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusWhiteBalance)), - TagInfo(0x0501, "WhiteBalanceTemperature", N_("White Balance Temperature"), N_("White balance temperature"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0502, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0503, "CustomSaturation", N_("Custom Saturation"), N_("Custom saturation"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0504, "ModifiedSaturation", N_("Modified Saturation"), N_("Modified saturation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusModifiedSaturation)), - TagInfo(0x0505, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0506, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0507, "ColorSpace", N_("Color Space"), N_("Color space"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusColorSpace)), - TagInfo(0x0509, "SceneMode", N_("Scene Mode"), N_("Scene mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)), - TagInfo(0x050a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x050b, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x050c, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x050d, "CompressionFactor", N_("Compression Factor"), N_("Compression factor"), olympusCsId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x050f, "Gradation", N_("Gradation"), N_("Gradation"), olympusCsId, makerTags, signedShort, -1, print0x050f), - TagInfo(0x0520, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusPictureMode)), - TagInfo(0x0521, "PictureModeSaturation", N_("Picture Mode Saturation"), N_("Picture mode saturation"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0522, "PictureModeHue", N_("Picture Mode Hue"), N_("Picture mode hue"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0523, "PictureModeContrast", N_("Picture Mode Contrast"), N_("Picture mode contrast"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0524, "PictureModeSharpness", N_("Picture Mode Sharpness"), N_("Picture mode sharpness"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0525, "PictureModeBWFilter", N_("Picture Mode BW Filter"), N_("Picture mode BW filter"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeBWFilter)), - TagInfo(0x0526, "PictureModeTone", N_("Picture Mode Tone"), N_("Picture mode tone"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeTone)), - TagInfo(0x0527, "NoiseFilter", N_("Noise Filter"), N_("Noise filter"), olympusCsId, makerTags, signedShort, -1, print0x0527), - TagInfo(0x0529, "ArtFilter", N_("Art Filter"), N_("Art filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529), - TagInfo(0x052c, "MagicFilter", N_("Magic Filter"), N_("Magic filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529), - TagInfo(0x0600, "DriveMode", N_("Drive Mode"), N_("Drive mode"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0601, "PanoramaMode", N_("Panorama Mode"), N_("Panorama mode"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0603, "Quality", N_("Image Quality 2"), N_("Image quality 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCsQuality)), - TagInfo(0x0604, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusImageStabilization)), - TagInfo(0x0900, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), olympusCsId, makerTags, signedLong, -1, printValue), - TagInfo(0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0903, "LevelGaugeRoll", N_("Level Gauge Roll"), N_("Level gauge roll"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0904, "LevelGaugePitch", N_("Level Gauge Pitch"), N_("Level gauge pitch"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + constexpr TagInfo OlympusMakerNote::tagInfoCs_[] = { + {0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), olympusCsId, makerTags, undefined, -1, printExifVersion}, + {0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), olympusCsId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusNoYes)}, + {0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), olympusCsId, makerTags, unsignedLong, -1, printValue}, + {0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), olympusCsId, makerTags, unsignedLong, -1, printValue}, + {0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusExposureMode)}, + {0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0202, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMeteringMode)}, + {0x0203, "ExposureShift", N_("Exposure Shift"), N_("Exposure shift"), olympusCsId, makerTags, signedRational, -1, printValue}, + {0x0300, "MacroMode", N_("Macro Mode"), N_("Macro mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacroMode)}, + {0x0301, "FocusMode", N_("Focus Mode"), N_("Focus mode"), olympusCsId, makerTags, unsignedShort, -1, printCs0x0301}, + {0x0302, "FocusProcess", N_("Focus Process"), N_("Focus process"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusProcess)}, + {0x0303, "AFSearch", N_("AF Search"), N_("AF search"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusAFSearch)}, + {0x0304, "AFAreas", N_("AF Areas"), N_("AF areas"), olympusCsId, makerTags, unsignedLong, -1, printValue}, + {0x0305, "AFPointSelected", N_("AFPointSelected"), N_("AFPointSelected"), olympusCsId, makerTags, signedRational, -1, printValue}, + {0x0307, "AFFineTuneAdj", N_("AF Fine Tune Adjust"), N_("AF fine tune adjust"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0400, "FlashMode", N_("Flash Mode"), N_("Flash mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusFlashMode)}, + {0x0401, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation"), olympusCsId, makerTags, signedRational, -1, printValue}, + {0x0403, "FlashRemoteControl", N_("Flash Remote Control"), N_("Flash remote control"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashRemoteControl)}, + {0x0404, "FlashControlMode", N_("Flash Control Mode"), N_("Flash control mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashControlMode)}, + {0x0405, "FlashIntensity", N_("Flash Intensity"), N_("Flash intensity"), olympusCsId, makerTags, signedRational, -1, printValue}, + {0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), olympusCsId, makerTags, signedRational, -1, printValue}, + {0x0500, "WhiteBalance", N_("White Balance 2"), N_("White balance 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusWhiteBalance)}, + {0x0501, "WhiteBalanceTemperature", N_("White Balance Temperature"), N_("White balance temperature"), olympusCsId, makerTags, unsignedShort, -1, printValue}, + {0x0502, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0503, "CustomSaturation", N_("Custom Saturation"), N_("Custom saturation"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0504, "ModifiedSaturation", N_("Modified Saturation"), N_("Modified saturation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusModifiedSaturation)}, + {0x0505, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0506, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0507, "ColorSpace", N_("Color Space"), N_("Color space"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusColorSpace)}, + {0x0509, "SceneMode", N_("Scene Mode"), N_("Scene mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)}, + {0x050a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x050b, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x050c, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x050d, "CompressionFactor", N_("Compression Factor"), N_("Compression factor"), olympusCsId, makerTags, unsignedRational, -1, printValue}, + {0x050f, "Gradation", N_("Gradation"), N_("Gradation"), olympusCsId, makerTags, signedShort, -1, print0x050f}, + {0x0520, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusPictureMode)}, + {0x0521, "PictureModeSaturation", N_("Picture Mode Saturation"), N_("Picture mode saturation"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0522, "PictureModeHue", N_("Picture Mode Hue"), N_("Picture mode hue"), olympusCsId, makerTags, unsignedShort, -1, printValue}, + {0x0523, "PictureModeContrast", N_("Picture Mode Contrast"), N_("Picture mode contrast"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0524, "PictureModeSharpness", N_("Picture Mode Sharpness"), N_("Picture mode sharpness"), olympusCsId, makerTags, signedShort, -1, printValue}, + {0x0525, "PictureModeBWFilter", N_("Picture Mode BW Filter"), N_("Picture mode BW filter"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeBWFilter)}, + {0x0526, "PictureModeTone", N_("Picture Mode Tone"), N_("Picture mode tone"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeTone)}, + {0x0527, "NoiseFilter", N_("Noise Filter"), N_("Noise filter"), olympusCsId, makerTags, signedShort, -1, print0x0527}, + {0x0529, "ArtFilter", N_("Art Filter"), N_("Art filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529}, + {0x052c, "MagicFilter", N_("Magic Filter"), N_("Magic filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529}, + {0x0600, "DriveMode", N_("Drive Mode"), N_("Drive mode"), olympusCsId, makerTags, unsignedShort, -1, printValue}, + {0x0601, "PanoramaMode", N_("Panorama Mode"), N_("Panorama mode"), olympusCsId, makerTags, unsignedShort, -1, printValue}, + {0x0603, "Quality", N_("Image Quality 2"), N_("Image quality 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCsQuality)}, + {0x0604, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusImageStabilization)}, + {0x0900, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), olympusCsId, makerTags, unsignedShort, -1, printValue}, + {0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), olympusCsId, makerTags, signedLong, -1, printValue}, + {0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0903, "LevelGaugeRoll", N_("Level Gauge Roll"), N_("Level gauge roll"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0904, "LevelGaugePitch", N_("Level Gauge Pitch"), N_("Level gauge pitch"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), olympusCsId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), olympusCsId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListCs() @@ -717,14 +717,14 @@ namespace Exiv2 { } //! OlympusEq FlashType, tag 0x1000 - extern const TagDetails olympusEqFlashType[] = { + constexpr TagDetails olympusEqFlashType[] = { { 0, N_("None") }, { 2, N_("Simple E-System") }, { 3, N_("E-System") } }; //! OlympusEq FlashModel, tag 0x1001 - extern const TagDetails olympusEqFlashModel[] = { + constexpr TagDetails olympusEqFlashModel[] = { { 0, N_("None") }, { 1, "FL-20" }, { 2, "FL-50" }, @@ -738,34 +738,34 @@ namespace Exiv2 { {11, "FL-600R" } // To silence compiler warning }; - const TagInfo OlympusMakerNote::tagInfoEq_[] = { - TagInfo(0x0000, "EquipmentVersion", N_("Equipment Version"), N_("Equipment version"), olympusEqId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "CameraType", N_("Camera Type"), N_("Camera type"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0101, "SerialNumber", N_("Serial Number"), N_("Serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0102, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0103, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), olympusEqId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0201, "LensType", N_("Lens Type"), N_("Lens type"), olympusEqId, makerTags, unsignedByte, -1, print0x0201), - TagInfo(0x0202, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0203, "LensModel", N_("Lens Model"), N_("Lens model"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0204, "LensFirmwareVersion", N_("Lens Firmware Version"), N_("Lens firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0205, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0206, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0207, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0208, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020a, "MaxApertureAtCurrentFocal", N_("Max Aperture At Current Focal"), N_("Max aperture at current focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020b, "LensProperties", N_("Lens Properties"), N_("Lens properties"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "Extender", N_("Extender"), N_("Extender"), olympusEqId, makerTags, unsignedByte, -1, printEq0x0301), - TagInfo(0x0302, "ExtenderSerialNumber", N_("Extender Serial Number"), N_("Extender serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0303, "ExtenderModel", N_("Extender Model"), N_("Extender model"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0304, "ExtenderFirmwareVersion", N_("Extender Firmware Version"), N_("Extender firmwareversion"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0403, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x1000, "FlashType", N_("Flash Type"), N_("Flash type"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashType)), - TagInfo(0x1001, "FlashModel", N_("Flash Model"), N_("Flash model"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashModel)), - TagInfo(0x1002, "FlashFirmwareVersion", N_("Flash Firmware Version"), N_("Flash firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1003, "FlashSerialNumber", N_("FlashSerialNumber"), N_("FlashSerialNumber"), olympusEqId, makerTags, asciiString, -1, printValue), + constexpr TagInfo OlympusMakerNote::tagInfoEq_[] = { + {0x0000, "EquipmentVersion", N_("Equipment Version"), N_("Equipment version"), olympusEqId, makerTags, undefined, -1, printExifVersion}, + {0x0100, "CameraType", N_("Camera Type"), N_("Camera type"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0101, "SerialNumber", N_("Serial Number"), N_("Serial number"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0102, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0103, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), olympusEqId, makerTags, unsignedRational, -1, printValue}, + {0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue}, + {0x0201, "LensType", N_("Lens Type"), N_("Lens type"), olympusEqId, makerTags, unsignedByte, -1, print0x0201}, + {0x0202, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0203, "LensModel", N_("Lens Model"), N_("Lens model"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0204, "LensFirmwareVersion", N_("Lens Firmware Version"), N_("Lens firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue}, + {0x0205, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), olympusEqId, makerTags, unsignedShort, -1, printValue}, + {0x0206, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), olympusEqId, makerTags, unsignedShort, -1, printValue}, + {0x0207, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue}, + {0x0208, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue}, + {0x020a, "MaxApertureAtCurrentFocal", N_("Max Aperture At Current Focal"), N_("Max aperture at current focal"), olympusEqId, makerTags, unsignedShort, -1, printValue}, + {0x020b, "LensProperties", N_("Lens Properties"), N_("Lens properties"), olympusEqId, makerTags, unsignedShort, -1, printValue}, + {0x0301, "Extender", N_("Extender"), N_("Extender"), olympusEqId, makerTags, unsignedByte, -1, printEq0x0301}, + {0x0302, "ExtenderSerialNumber", N_("Extender Serial Number"), N_("Extender serial number"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0303, "ExtenderModel", N_("Extender Model"), N_("Extender model"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x0304, "ExtenderFirmwareVersion", N_("Extender Firmware Version"), N_("Extender firmwareversion"), olympusEqId, makerTags, unsignedLong, -1, printValue}, + {0x0403, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), olympusEqId, makerTags, asciiString, -1, printValue}, + {0x1000, "FlashType", N_("Flash Type"), N_("Flash type"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashType)}, + {0x1001, "FlashModel", N_("Flash Model"), N_("Flash model"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashModel)}, + {0x1002, "FlashFirmwareVersion", N_("Flash Firmware Version"), N_("Flash firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue}, + {0x1003, "FlashSerialNumber", N_("FlashSerialNumber"), N_("FlashSerialNumber"), olympusEqId, makerTags, asciiString, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), olympusEqId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), olympusEqId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListEq() @@ -774,14 +774,14 @@ namespace Exiv2 { } //! OlympusRd ColorSpace, tag 0x0108 - extern const TagDetails olympusRdColorSpace[] = { + constexpr TagDetails olympusRdColorSpace[] = { { 0, N_("sRGB") }, { 1, N_("Adobe RGB") }, { 2, N_("Pro Photo RGB") } }; //! OlympusRd Engine, tag 0x0109 - extern const TagDetails olympusRdEngine[] = { + constexpr TagDetails olympusRdEngine[] = { { 0, N_("High Speed") }, { 1, N_("High Function") }, { 2, N_("Advanced High Speed") }, @@ -789,7 +789,7 @@ namespace Exiv2 { }; //! OlympusRd EditStatus, tag 0x010b - extern const TagDetails olympusRdEditStatus[] = { + constexpr TagDetails olympusRdEditStatus[] = { { 0, N_("Original") }, { 1, N_("Edited (Landscape)") }, { 6, N_("Edited (Portrait)") }, @@ -797,7 +797,7 @@ namespace Exiv2 { }; //! OlympusRd Settings, tag 0x010c - extern const TagDetailsBitmask olympusRdSettings[] = { + constexpr TagDetailsBitmask olympusRdSettings[] = { { 0x0001, N_("WB Color Temp") }, { 0x0004, N_("WB Gray Point") }, { 0x0008, N_("Saturation") }, @@ -808,23 +808,23 @@ namespace Exiv2 { { 0x0100, N_("Noise Reduction") } }; - const TagInfo OlympusMakerNote::tagInfoRd_[] = { - TagInfo(0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), olympusRdId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRdId, makerTags, signedRational, -1, printValue), - TagInfo(0x0101, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRdId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0102, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("WB fine adjustment"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0103, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRdId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0104, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0105, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRdId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0106, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0107, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0108, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdColorSpace)), - TagInfo(0x0109, "Engine", N_("Engine"), N_("Engine"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEngine)), - TagInfo(0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x010b, "EditStatus", N_("Edit Status"), N_("Edit status"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEditStatus)), - TagInfo(0x010c, "Settings", N_("Settings"), N_("Settings"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusRdSettings)), + constexpr TagInfo OlympusMakerNote::tagInfoRd_[] = { + {0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), olympusRdId, makerTags, undefined, -1, printExifVersion}, + {0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRdId, makerTags, signedRational, -1, printValue}, + {0x0101, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRdId, makerTags, unsignedShort, -1, printValue}, + {0x0102, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("WB fine adjustment"), olympusRdId, makerTags, signedShort, -1, printValue}, + {0x0103, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRdId, makerTags, unsignedShort, -1, printValue}, + {0x0104, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRdId, makerTags, signedShort, -1, printValue}, + {0x0105, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRdId, makerTags, unsignedShort, -1, printValue}, + {0x0106, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRdId, makerTags, signedShort, -1, printValue}, + {0x0107, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRdId, makerTags, signedShort, -1, printValue}, + {0x0108, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdColorSpace)}, + {0x0109, "Engine", N_("Engine"), N_("Engine"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEngine)}, + {0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x010b, "EditStatus", N_("Edit Status"), N_("Edit status"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEditStatus)}, + {0x010c, "Settings", N_("Settings"), N_("Settings"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusRdSettings)}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), olympusRdId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), olympusRdId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListRd() @@ -833,26 +833,26 @@ namespace Exiv2 { } //! OlympusRd2 WhiteBalance, tag 0x0101 - extern const TagDetails olympusRd2WhiteBalance[] = { + constexpr TagDetails olympusRd2WhiteBalance[] = { { 1, N_("Color Temperature") }, { 2, N_("Gray Point") } }; //! OlympusRd2 ColorSpace, tag 0x0109 - extern const TagDetails olympusRd2ColorSpace[] = { + constexpr TagDetails olympusRd2ColorSpace[] = { { 0, N_("sRGB") }, { 1, N_("Adobe RGB") }, { 2, N_("Pro Photo RGB") } }; //! OlympusRd2 Engine, tag 0x010b - extern const TagDetails olympusRd2Engine[] = { + constexpr TagDetails olympusRd2Engine[] = { { 0, N_("High Speed") }, { 1, N_("High Function") } }; //! OlympusRd2 PictureMode, tag 0x010c - extern const TagDetails olympusRd2PictureMode[] = { + constexpr TagDetails olympusRd2PictureMode[] = { { 1, N_("Vivid") }, { 2, N_("Natural") }, { 3, N_("Muted") }, @@ -861,7 +861,7 @@ namespace Exiv2 { }; //! OlympusRd2 PM_BWFilter, tag 0x0110 - extern const TagDetails olympusRd2PM_BWFilter[] = { + constexpr TagDetails olympusRd2PM_BWFilter[] = { { 1, N_("Neutral") }, { 2, N_("Yellow") }, { 3, N_("Orange") }, @@ -870,7 +870,7 @@ namespace Exiv2 { }; //! OlympusRd2 PMPictureTone, tag 0x0111 - extern const TagDetails olympusRd2PMPictureTone[] = { + constexpr TagDetails olympusRd2PMPictureTone[] = { { 1, N_("Neutral") }, { 2, N_("Sepia") }, { 3, N_("Blue") }, @@ -878,32 +878,32 @@ namespace Exiv2 { { 5, N_("Green") } }; - const TagInfo OlympusMakerNote::tagInfoRd2_[] = { - TagInfo(0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), olympusRd2Id, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRd2Id, makerTags, signedRational, -1, printValue), - TagInfo(0x0101, "WhiteBalance", N_("White Balance"), N_("White balance"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2WhiteBalance)), - TagInfo(0x0102, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0103, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("White balance fine adjustment"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0104, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0105, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0106, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0107, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0108, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0109, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2ColorSpace)), - TagInfo(0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x010b, "Engine", N_("Engine"), N_("Engine"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2Engine)), - TagInfo(0x010c, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PictureMode)), - TagInfo(0x010d, "PMSaturation", N_("PM Saturation"), N_("Picture mode saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x010e, "PMContrast", N_("PM Contrast"), N_("Picture mode contrast"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x010f, "PMSharpness", N_("PM Sharpness"), N_("Picture mode sharpness"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0110, "PM_BWFilter", N_("PM BW Filter"), N_("PM BW filter"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PM_BWFilter)), - TagInfo(0x0111, "PMPictureTone", N_("PM Picture Tone"), N_("PM picture tone"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PMPictureTone)), - TagInfo(0x0112, "Gradation", N_("Gradation"), N_("Gradation"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0113, "Saturation", N_("Saturation"), N_("Saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0119, "AutoGradation", N_("Auto Gradation"), N_("Auto gradation"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0120, "PMNoiseFilter", N_("PM Noise Filter"), N_("Picture mode noise filter"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), + constexpr TagInfo OlympusMakerNote::tagInfoRd2_[] = { + {0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), olympusRd2Id, makerTags, undefined, -1, printExifVersion}, + {0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRd2Id, makerTags, signedRational, -1, printValue}, + {0x0101, "WhiteBalance", N_("White Balance"), N_("White balance"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2WhiteBalance)}, + {0x0102, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRd2Id, makerTags, unsignedShort, -1, printValue}, + {0x0103, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("White balance fine adjustment"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0104, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRd2Id, makerTags, unsignedShort, -1, printValue}, + {0x0105, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0106, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0107, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0108, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRd2Id, makerTags, unsignedShort, -1, printValue}, + {0x0109, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2ColorSpace)}, + {0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x010b, "Engine", N_("Engine"), N_("Engine"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2Engine)}, + {0x010c, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PictureMode)}, + {0x010d, "PMSaturation", N_("PM Saturation"), N_("Picture mode saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x010e, "PMContrast", N_("PM Contrast"), N_("Picture mode contrast"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x010f, "PMSharpness", N_("PM Sharpness"), N_("Picture mode sharpness"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0110, "PM_BWFilter", N_("PM BW Filter"), N_("PM BW filter"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PM_BWFilter)}, + {0x0111, "PMPictureTone", N_("PM Picture Tone"), N_("PM picture tone"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PMPictureTone)}, + {0x0112, "Gradation", N_("Gradation"), N_("Gradation"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0113, "Saturation", N_("Saturation"), N_("Saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue}, + {0x0119, "AutoGradation", N_("Auto Gradation"), N_("Auto gradation"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0120, "PMNoiseFilter", N_("PM Noise Filter"), N_("Picture mode noise filter"), olympusRd2Id, makerTags, unsignedShort, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), olympusRd2Id, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), olympusRd2Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListRd2() @@ -912,14 +912,14 @@ namespace Exiv2 { } //! OlympusIp MultipleExposureMode, tag 0x101c - extern const TagDetails olympusIpMultipleExposureMode[] = { + constexpr TagDetails olympusIpMultipleExposureMode[] = { { 0, N_("Off") }, { 2, N_("On (2 frames)") }, { 3, N_("On (3 frames)") } }; //! OlympusIp olympusIpAspectRatio, tag 0x101c - extern const TagDetails olympusIpAspectRatio[] = { + constexpr TagDetails olympusIpAspectRatio[] = { { 1, "4:3" }, { 2, "3:2" }, { 3, "16:9" }, @@ -931,60 +931,60 @@ namespace Exiv2 { { 9, "3:4" } }; - const TagInfo OlympusMakerNote::tagInfoIp_[] = { - TagInfo(0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), olympusIpId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0102, "WB_RBLevels3000K", N_("WB RB Levels 3000K"), N_("WB RB levels 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010e, "WB_RBLevelsCWB1", N_("WB RB Levels CWB1"), N_("WB RB levels CWB1"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010f, "WB_RBLevelsCWB2", N_("WB RB Levels CWB2"), N_("WB RB levels CWB2"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0110, "WB_RBLevelsCWB3", N_("WB RB Levels CWB3"), N_("WB RB levels CWB3"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0111, "WB_RBLevelsCWB4", N_("WB RB Levels CWB4"), N_("WB RB levels CWB4"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0113, "WB_GLevel3000K", N_("WB G Level 3000K"), N_("WB G level 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0114, "WB_GLevel3300K", N_("WB G Level 3300K"), N_("WB G level 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0115, "WB_GLevel3600K", N_("WB G Level 3600K"), N_("WB G level 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0116, "WB_GLevel3900K", N_("WB G Level 3900K"), N_("WB G level 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0117, "WB_GLevel4000K", N_("WB G Level 4000K"), N_("WB G level 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0118, "WB_GLevel4300K", N_("WB G Level 4300K"), N_("WB G level 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0119, "WB_GLevel4500K", N_("WB G Level 4500K"), N_("WB G level 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011a, "WB_GLevel4800K", N_("WB G Level 4800K"), N_("WB G level 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011b, "WB_GLevel5300K", N_("WB G Level 5300K"), N_("WB G level 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011c, "WB_GLevel6000K", N_("WB G Level 6000K"), N_("WB G level 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011d, "WB_GLevel6600K", N_("WB G Level 6600K"), N_("WB G level 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011e, "WB_GLevel7500K", N_("WB G Level 7500K"), N_("WB G level 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011f, "WB_GLevel", N_("WB G Level"), N_("WB G level"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0200, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0300, "Enhancer", N_("Enhancer"), N_("Enhancer"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "EnhancerValues", N_("Enhancer Values"), N_("Enhancer values"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0600, "BlackLevel", N_("Black Level"), N_("Black level"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0610, "GainBase", N_("Gain Base"), N_("Gain base"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0611, "ValidBits", N_("Valid Bits"), N_("Valid bits"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusIpId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusIpId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1010, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x1011, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1012, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x101c, "MultipleExposureMode", N_("Multiple Exposure Mode"), N_("Multiple exposure mode"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusIpMultipleExposureMode)), - TagInfo(0x1112, "AspectRatio", N_("Aspect Ratio"), N_("Aspect ratio"), olympusIpId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(olympusIpAspectRatio)), - TagInfo(0x1113, "AspectFrame", N_("Aspect Frame"), N_("Aspect frame"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1200, "FaceDetect", N_("Face Detect"), N_("Face detect"), olympusIpId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1201, "FaceDetectArea", N_("Face Detect Area"), N_("Face detect area"), olympusIpId, makerTags, signedShort, -1, printValue), + constexpr TagInfo OlympusMakerNote::tagInfoIp_[] = { + {0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), olympusIpId, makerTags, undefined, -1, printExifVersion}, + {0x0100, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0102, "WB_RBLevels3000K", N_("WB RB Levels 3000K"), N_("WB RB levels 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x010e, "WB_RBLevelsCWB1", N_("WB RB Levels CWB1"), N_("WB RB levels CWB1"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x010f, "WB_RBLevelsCWB2", N_("WB RB Levels CWB2"), N_("WB RB levels CWB2"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0110, "WB_RBLevelsCWB3", N_("WB RB Levels CWB3"), N_("WB RB levels CWB3"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0111, "WB_RBLevelsCWB4", N_("WB RB Levels CWB4"), N_("WB RB levels CWB4"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0113, "WB_GLevel3000K", N_("WB G Level 3000K"), N_("WB G level 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0114, "WB_GLevel3300K", N_("WB G Level 3300K"), N_("WB G level 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0115, "WB_GLevel3600K", N_("WB G Level 3600K"), N_("WB G level 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0116, "WB_GLevel3900K", N_("WB G Level 3900K"), N_("WB G level 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0117, "WB_GLevel4000K", N_("WB G Level 4000K"), N_("WB G level 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0118, "WB_GLevel4300K", N_("WB G Level 4300K"), N_("WB G level 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0119, "WB_GLevel4500K", N_("WB G Level 4500K"), N_("WB G level 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x011a, "WB_GLevel4800K", N_("WB G Level 4800K"), N_("WB G level 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x011b, "WB_GLevel5300K", N_("WB G Level 5300K"), N_("WB G level 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x011c, "WB_GLevel6000K", N_("WB G Level 6000K"), N_("WB G level 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x011d, "WB_GLevel6600K", N_("WB G Level 6600K"), N_("WB G level 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x011e, "WB_GLevel7500K", N_("WB G Level 7500K"), N_("WB G level 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x011f, "WB_GLevel", N_("WB G Level"), N_("WB G level"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0200, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0300, "Enhancer", N_("Enhancer"), N_("Enhancer"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0301, "EnhancerValues", N_("Enhancer Values"), N_("Enhancer values"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0600, "BlackLevel", N_("Black Level"), N_("Black level"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0610, "GainBase", N_("Gain Base"), N_("Gain base"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0611, "ValidBits", N_("Valid Bits"), N_("Valid bits"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusIpId, makerTags, unsignedLong, -1, printValue}, + {0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusIpId, makerTags, unsignedLong, -1, printValue}, + {0x1010, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x1011, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1012, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x101c, "MultipleExposureMode", N_("Multiple Exposure Mode"), N_("Multiple exposure mode"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusIpMultipleExposureMode)}, + {0x1112, "AspectRatio", N_("Aspect Ratio"), N_("Aspect ratio"), olympusIpId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(olympusIpAspectRatio)}, + {0x1113, "AspectFrame", N_("Aspect Frame"), N_("Aspect frame"), olympusIpId, makerTags, unsignedShort, -1, printValue}, + {0x1200, "FaceDetect", N_("Face Detect"), N_("Face detect"), olympusIpId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1201, "FaceDetectArea", N_("Face Detect Area"), N_("Face detect area"), olympusIpId, makerTags, signedShort, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), olympusIpId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), olympusIpId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListIp() @@ -993,33 +993,33 @@ namespace Exiv2 { } //! OlympusFi ExternalFlashBounce, tag 0x1204 - extern const TagDetails olympusFiExternalFlashBounce[] = { + constexpr TagDetails olympusFiExternalFlashBounce[] = { { 0, N_("Bounce or Off") }, { 1, N_("Direct") } }; - const TagInfo OlympusMakerNote::tagInfoFi_[] = { - TagInfo(0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), olympusFiId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0209, "AutoFocus", N_("Auto Focus"), N_("Auto focus"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0210, "SceneDetect", N_("Scene Detect"), N_("Scene detect"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0211, "SceneArea", N_("Scene Area"), N_("Scene area"), olympusFiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0212, "SceneDetectData", N_("Scene Detect Data"), N_("Scene detect data"), olympusFiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0300, "ZoomStepCount", N_("Zoom Step Count"), N_("Zoom step count"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "FocusStepCount", N_("Focus Step Count"), N_("Focus step count"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0303, "FocusStepInfinity", N_("Focus Step Infinity"), N_("Focus step infinity"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0304, "FocusStepNear", N_("Focus Step Near"), N_("Focus step near"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0305, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), olympusFiId, makerTags, unsignedRational, -1, print0x0305), - TagInfo(0x0308, "AFPoint", N_("AF Point"), N_("AF point"), olympusFiId, makerTags, unsignedShort, -1, print0x0308), - TagInfo(0x1201, "ExternalFlash", N_("External Flash"), N_("External flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1203, "ExternalFlashGuideNumber", N_("External Flash Guide Number"), N_("External flash guide number"), olympusFiId, makerTags, signedRational, -1, printValue), - TagInfo(0x1204, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFiExternalFlashBounce)), - TagInfo(0x1205, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), olympusFiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1208, "InternalFlash", N_("Internal Flash"), N_("Internal flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1209, "ManualFlash", N_("Manual Flash"), N_("Manual flash"), olympusFiId, makerTags, unsignedShort, -1, print0x1209), - TagInfo(0x1500, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), olympusFiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1600, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusFiId, makerTags, unsignedLong, -1, printValue), + constexpr TagInfo OlympusMakerNote::tagInfoFi_[] = { + {0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), olympusFiId, makerTags, undefined, -1, printExifVersion}, + {0x0209, "AutoFocus", N_("Auto Focus"), N_("Auto focus"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0210, "SceneDetect", N_("Scene Detect"), N_("Scene detect"), olympusFiId, makerTags, unsignedShort, -1, printValue}, + {0x0211, "SceneArea", N_("Scene Area"), N_("Scene area"), olympusFiId, makerTags, unsignedLong, -1, printValue}, + {0x0212, "SceneDetectData", N_("Scene Detect Data"), N_("Scene detect data"), olympusFiId, makerTags, unsignedLong, -1, printValue}, + {0x0300, "ZoomStepCount", N_("Zoom Step Count"), N_("Zoom step count"), olympusFiId, makerTags, unsignedShort, -1, printValue}, + {0x0301, "FocusStepCount", N_("Focus Step Count"), N_("Focus step count"), olympusFiId, makerTags, unsignedShort, -1, printValue}, + {0x0303, "FocusStepInfinity", N_("Focus Step Infinity"), N_("Focus step infinity"), olympusFiId, makerTags, unsignedShort, -1, printValue}, + {0x0304, "FocusStepNear", N_("Focus Step Near"), N_("Focus step near"), olympusFiId, makerTags, unsignedShort, -1, printValue}, + {0x0305, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), olympusFiId, makerTags, unsignedRational, -1, print0x0305}, + {0x0308, "AFPoint", N_("AF Point"), N_("AF point"), olympusFiId, makerTags, unsignedShort, -1, print0x0308}, + {0x1201, "ExternalFlash", N_("External Flash"), N_("External flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1203, "ExternalFlashGuideNumber", N_("External Flash Guide Number"), N_("External flash guide number"), olympusFiId, makerTags, signedRational, -1, printValue}, + {0x1204, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFiExternalFlashBounce)}, + {0x1205, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), olympusFiId, makerTags, unsignedRational, -1, printValue}, + {0x1208, "InternalFlash", N_("Internal Flash"), N_("Internal flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1209, "ManualFlash", N_("Manual Flash"), N_("Manual flash"), olympusFiId, makerTags, unsignedShort, -1, print0x1209}, + {0x1500, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), olympusFiId, makerTags, signedShort, -1, printValue}, + {0x1600, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusFiId, makerTags, unsignedLong, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), olympusFiId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), olympusFiId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListFi() @@ -1027,10 +1027,10 @@ namespace Exiv2 { return tagInfoFi_; } - const TagInfo OlympusMakerNote::tagInfoFe_[] = { - TagInfo(0x0100, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusFe1Id, makerTags, asciiString, -1, printValue), + constexpr TagInfo OlympusMakerNote::tagInfoFe_[] = { + {0x0100, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusFe1Id, makerTags, asciiString, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusFeTag)", "(UnknownOlympusFeTag)", N_("Unknown OlympusFe tag"), olympusFe1Id, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusFeTag)", "(UnknownOlympusFeTag)", N_("Unknown OlympusFe tag"), olympusFe1Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListFe() @@ -1039,7 +1039,7 @@ namespace Exiv2 { } //! OlympusRi LightSource, tag 0x1000 - extern const TagDetails olympusRiLightSource[] = { + constexpr TagDetails olympusRiLightSource[] = { { 0, N_("Unknown") }, { 16, N_("Shade") }, { 17, N_("Cloudy") }, @@ -1054,45 +1054,45 @@ namespace Exiv2 { { 512, N_("Custom 1-4") } }; - const TagInfo OlympusMakerNote::tagInfoRi_[] = { - TagInfo(0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), olympusRiId, makerTags, undefined, -1, printValue), - TagInfo(0x0100, "WB_RBLevelsUsed", N_("WB_RB Levels Used"), N_("WB_RB levels used"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0110, "WB_RBLevelsAuto", N_("WB_RB Levels Auto"), N_("WB_RB levels auto"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0120, "WB_RBLevelsShade", N_("WB_RB Levels Shade"), N_("WB_RB levels shade"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0121, "WB_RBLevelsCloudy", N_("WB_RB Levels Cloudy"), N_("WB_RB levels cloudy"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0122, "WB_RBLevelsFineWeather", N_("WB_RB Levels Fine Weather"), N_("WB_RB levels fine weather"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0123, "WB_RBLevelsTungsten", N_("WB_RB Levels Tungsten"), N_("WB_RB levels tungsten"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0124, "WB_RBLevelsEveningSunlight", N_("WB_RB Levels Evening Sunlight"), N_("WB_RB levels evening sunlight"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0130, "WB_RBLevelsDaylightFluor", N_("WB_RB Levels Daylight Fluor"), N_("WB_RB levels daylight fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0131, "WB_RBLevelsDayWhiteFluor", N_("WB_RB Levels Day White Fluor"), N_("WB_RB levels day white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0132, "WB_RBLevelsCoolWhiteFluor", N_("WB_RB Levels Cool White Fluor"), N_("WB_RB levels cool white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0133, "WB_RBLevelsWhiteFluorescent", N_("WB_RB Levels White Fluorescent"), N_("WB_RB levels white fluorescent"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0200, "ColorMatrix2", N_("Color Matrix2"), N_("Color matrix 2"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0600, "BlackLevel2", N_("Black Level 2"), N_("Black level 2"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0601, "YCbCrCoefficients", N_("YCbCr Coefficients"), N_("YCbCr coefficients"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0611, "ValidPixelDepth", N_("Valid Pixel Depth"), N_("Valid pixel depth"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusRiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusRiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1000, "LightSource", N_("Light Source"), N_("Light source"), olympusRiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRiLightSource)), - TagInfo(0x1001, "WhiteBalanceComp", N_("White Balance Comp"), N_("White balance comp"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1010, "SaturationSetting", N_("Saturation Setting"), N_("Saturation setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1011, "HueSetting", N_("Hue Setting"), N_("Hue setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1012, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1013, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2000, "CMExposureCompensation", N_("CM Exposure Compensation"), N_("CM exposure compensation"), olympusRiId, makerTags, signedRational, -1, printValue), - TagInfo(0x2001, "CMWhiteBalance", N_("CM White Balance"), N_("CM white balance"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2002, "CMWhiteBalanceComp", N_("CM White Balance Comp"), N_("CM white balance comp"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2010, "CMWhiteBalanceGrayPoint", N_("CM White Balance Gray Point"), N_("CM white balance gray point"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2020, "CMSaturation", N_("CM Saturation"), N_("CM saturation"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2021, "CMHue", N_("CM Hue"), N_("CM hue"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2022, "CMContrast", N_("CM Contrast"), N_("CM contrast"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2023, "CMSharpness", N_("CM Sharpness"), N_("CM sharpness"), olympusRiId, makerTags, signedShort, -1, printValue), + constexpr TagInfo OlympusMakerNote::tagInfoRi_[] = { + {0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), olympusRiId, makerTags, undefined, -1, printValue}, + {0x0100, "WB_RBLevelsUsed", N_("WB_RB Levels Used"), N_("WB_RB levels used"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0110, "WB_RBLevelsAuto", N_("WB_RB Levels Auto"), N_("WB_RB levels auto"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0120, "WB_RBLevelsShade", N_("WB_RB Levels Shade"), N_("WB_RB levels shade"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0121, "WB_RBLevelsCloudy", N_("WB_RB Levels Cloudy"), N_("WB_RB levels cloudy"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0122, "WB_RBLevelsFineWeather", N_("WB_RB Levels Fine Weather"), N_("WB_RB levels fine weather"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0123, "WB_RBLevelsTungsten", N_("WB_RB Levels Tungsten"), N_("WB_RB levels tungsten"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0124, "WB_RBLevelsEveningSunlight", N_("WB_RB Levels Evening Sunlight"), N_("WB_RB levels evening sunlight"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0130, "WB_RBLevelsDaylightFluor", N_("WB_RB Levels Daylight Fluor"), N_("WB_RB levels daylight fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0131, "WB_RBLevelsDayWhiteFluor", N_("WB_RB Levels Day White Fluor"), N_("WB_RB levels day white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0132, "WB_RBLevelsCoolWhiteFluor", N_("WB_RB Levels Cool White Fluor"), N_("WB_RB levels cool white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0133, "WB_RBLevelsWhiteFluorescent", N_("WB_RB Levels White Fluorescent"), N_("WB_RB levels white fluorescent"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0200, "ColorMatrix2", N_("Color Matrix2"), N_("Color matrix 2"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0600, "BlackLevel2", N_("Black Level 2"), N_("Black level 2"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0601, "YCbCrCoefficients", N_("YCbCr Coefficients"), N_("YCbCr coefficients"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0611, "ValidPixelDepth", N_("Valid Pixel Depth"), N_("Valid pixel depth"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusRiId, makerTags, unsignedLong, -1, printValue}, + {0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusRiId, makerTags, unsignedLong, -1, printValue}, + {0x1000, "LightSource", N_("Light Source"), N_("Light source"), olympusRiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRiLightSource)}, + {0x1001, "WhiteBalanceComp", N_("White Balance Comp"), N_("White balance comp"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x1010, "SaturationSetting", N_("Saturation Setting"), N_("Saturation setting"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x1011, "HueSetting", N_("Hue Setting"), N_("Hue setting"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x1012, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x1013, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x2000, "CMExposureCompensation", N_("CM Exposure Compensation"), N_("CM exposure compensation"), olympusRiId, makerTags, signedRational, -1, printValue}, + {0x2001, "CMWhiteBalance", N_("CM White Balance"), N_("CM white balance"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x2002, "CMWhiteBalanceComp", N_("CM White Balance Comp"), N_("CM white balance comp"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x2010, "CMWhiteBalanceGrayPoint", N_("CM White Balance Gray Point"), N_("CM white balance gray point"), olympusRiId, makerTags, unsignedShort, -1, printValue}, + {0x2020, "CMSaturation", N_("CM Saturation"), N_("CM saturation"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x2021, "CMHue", N_("CM Hue"), N_("CM hue"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x2022, "CMContrast", N_("CM Contrast"), N_("CM contrast"), olympusRiId, makerTags, signedShort, -1, printValue}, + {0x2023, "CMSharpness", N_("CM Sharpness"), N_("CM sharpness"), olympusRiId, makerTags, signedShort, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownOlympusRiTag)", "(UnknownOlympusRiTag)", N_("Unknown OlympusRi tag"), olympusRiId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownOlympusRiTag)", "(UnknownOlympusRiTag)", N_("Unknown OlympusRi tag"), olympusRiId, makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListRi() diff --git a/src/panasonicmn_int.cpp b/src/panasonicmn_int.cpp index 67830d9c..617c5d20 100644 --- a/src/panasonicmn_int.cpp +++ b/src/panasonicmn_int.cpp @@ -38,7 +38,7 @@ namespace Exiv2 { namespace Internal { //! Quality, tag 0x0001 - extern const TagDetails panasonicQuality[] = { + constexpr TagDetails panasonicQuality[] = { { 1, N_("TIFF") }, { 2, N_("High") }, { 3, N_("Normal") }, @@ -50,7 +50,7 @@ namespace Exiv2 { }; //! WhiteBalance, tag 0x0003 - extern const TagDetails panasonicWhiteBalance[] = { + constexpr TagDetails panasonicWhiteBalance[] = { { 1, N_("Auto") }, { 2, N_("Daylight") }, { 3, N_("Cloudy") }, @@ -64,7 +64,7 @@ namespace Exiv2 { }; //! FocusMode, tag 0x0007 - extern const TagDetails panasonicFocusMode[] = { + constexpr TagDetails panasonicFocusMode[] = { { 1, N_("Auto") }, { 2, N_("Manual") }, { 4, N_("Auto, focus button") }, @@ -75,7 +75,7 @@ namespace Exiv2 { }; //! ImageStabilizer, tag 0x001a - extern const TagDetails panasonicImageStabilizer[] = { + constexpr TagDetails panasonicImageStabilizer[] = { { 2, N_("On, Mode 1") }, { 3, N_("Off") }, { 4, N_("On, Mode 2") }, @@ -84,7 +84,7 @@ namespace Exiv2 { }; //! Macro, tag 0x001c - extern const TagDetails panasonicMacro[] = { + constexpr TagDetails panasonicMacro[] = { { 1, N_("On") }, { 2, N_("Off") }, { 257, N_("Tele-macro") }, @@ -92,7 +92,7 @@ namespace Exiv2 { }; //! ShootingMode, tag 0x001f and SceneMode, tag 0x8001 - extern const TagDetails panasonicShootingMode[] = { + constexpr TagDetails panasonicShootingMode[] = { { 0, N_("Off") }, // only SceneMode { 1, N_("Normal") }, { 2, N_("Portrait") }, @@ -173,14 +173,14 @@ namespace Exiv2 { }; //! Audio, tag 0x0020 - extern const TagDetails panasonicAudio[] = { + constexpr TagDetails panasonicAudio[] = { { 1, N_("Yes") }, { 2, N_("No") }, { 3, N_("Stereo") } }; //! ColorEffect, tag 0x0028 - extern const TagDetails panasonicColorEffect[] = { + constexpr TagDetails panasonicColorEffect[] = { { 1, N_("Off") }, { 2, N_("Warm") }, { 3, N_("Cool") }, @@ -190,14 +190,14 @@ namespace Exiv2 { }; //! BustMode, tag 0x002a - extern const TagDetails panasonicBurstMode[] = { + constexpr TagDetails panasonicBurstMode[] = { { 0, N_("Off") }, { 1, N_("Low/High quality") }, { 2, N_("Infinite") } }; //! Contrast, tag 0x002c - extern const TagDetails panasonicContrast[] = { + constexpr TagDetails panasonicContrast[] = { { 0, N_("Normal") }, { 1, N_("Low") }, { 2, N_("High") }, @@ -210,7 +210,7 @@ namespace Exiv2 { }; //! NoiseReduction, tag 0x002d - extern const TagDetails panasonicNoiseReduction[] = { + constexpr TagDetails panasonicNoiseReduction[] = { { 0, N_("Standard") }, { 1, N_("Low (-1)") }, { 2, N_("High (+1)") }, @@ -219,7 +219,7 @@ namespace Exiv2 { }; //! SelfTimer, tag 0x002e - extern const TagDetails panasonicSelfTimer[] = { + constexpr TagDetails panasonicSelfTimer[] = { { 1, N_("Off") }, { 2, "10 s" }, { 3, "2 s" }, @@ -227,7 +227,7 @@ namespace Exiv2 { }; //! Rotation, tag 0x0030 - extern const TagDetails panasonicRotation[] = { + constexpr TagDetails panasonicRotation[] = { { 1, N_("Horizontal (normal)") }, { 3, N_("Rotate 180") }, { 6, N_("Rotate 90 CW") }, @@ -235,7 +235,7 @@ namespace Exiv2 { }; //! AFAssistLamp, tag 0x0031 - extern const TagDetails panasonicAFAssistLamp[] = { + constexpr TagDetails panasonicAFAssistLamp[] = { { 1, N_("Fired") }, { 2, N_("Enabled but Not Used") }, { 3, N_("Disabled but Required") }, @@ -243,20 +243,20 @@ namespace Exiv2 { }; //! ColorMode, tag 0x0032 - extern const TagDetails panasonicColorMode[] = { + constexpr TagDetails panasonicColorMode[] = { { 0, N_("Normal") }, { 1, N_("Natural") }, { 2, N_("Vivid") } }; //! OpticalZoomMode, tag 0x0034 - extern const TagDetails panasonicOpticalZoomMode[] = { + constexpr TagDetails panasonicOpticalZoomMode[] = { { 1, N_("Standard") }, { 2, N_("EX optics") } }; //! ConversionLens, tag 0x0035 - extern const TagDetails panasonicConversionLens[] = { + constexpr TagDetails panasonicConversionLens[] = { { 1, N_("Off") }, { 2, N_("Wide") }, { 3, N_("Telephoto") }, @@ -265,19 +265,19 @@ namespace Exiv2 { }; //! WorldTimeLocation, tag 0x003a - extern const TagDetails panasonicWorldTimeLocation[] = { + constexpr TagDetails panasonicWorldTimeLocation[] = { { 1, N_("Home") }, { 2, N_("Destination") } }; //! TextStamp, tag 0x003b, 0x003e, 000x8008 and 0x8009 - extern const TagDetails panasonicTextStamp[] = { + constexpr TagDetails panasonicTextStamp[] = { { 1, N_("Off") }, { 2, N_("On") } }; //! FilmMode, tag 0x0042 - extern const TagDetails panasonicFilmMode[] = { + constexpr TagDetails panasonicFilmMode[] = { { 1, N_("Standard (color)") }, { 2, N_("Dynamic (color)") }, { 3, N_("Nature (color)") }, @@ -290,7 +290,7 @@ namespace Exiv2 { }; //! Bracket Settings, tag 0x0045 - extern const TagDetails panasonicBracketSettings[] = { + constexpr TagDetails panasonicBracketSettings[] = { { 0, N_("No Bracket") }, { 1, N_("3 images, Sequence 0/-/+") }, { 2, N_("3 images, Sequence -/0/+") }, @@ -301,20 +301,20 @@ namespace Exiv2 { }; //! Flash curtain, tag 0x0048 - extern const TagDetails panasonicFlashCurtain[] = { + constexpr TagDetails panasonicFlashCurtain[] = { { 0, N_("n/a") }, { 1, N_("1st") }, { 2, N_("2nd") } }; //! Long Shutter Noise Reduction, tag 0x0049 - extern const TagDetails panasonicLongShutterNoiseReduction[] = { + constexpr TagDetails panasonicLongShutterNoiseReduction[] = { { 1, N_("Off") }, { 2, N_("On") } }; //! Intelligent exposure, tag 0x005d - extern const TagDetails panasonicIntelligentExposure[] = { + constexpr TagDetails panasonicIntelligentExposure[] = { { 0, N_("Off") }, { 1, N_("Low") }, { 2, N_("Standard") }, @@ -322,13 +322,13 @@ namespace Exiv2 { }; //! Flash warning, tag 0x0062 - extern const TagDetails panasonicFlashWarning[] = { + constexpr TagDetails panasonicFlashWarning[] = { { 0, N_("No") }, { 1, N_("Yes (flash required but disabled") } }; //! Intelligent resolution, tag 0x0070 - extern const TagDetails panasonicIntelligentResolution[] = { + constexpr TagDetails panasonicIntelligentResolution[] = { { 0, N_("Off") }, { 1, N_("Low") }, { 2, N_("Standard") }, @@ -337,7 +337,7 @@ namespace Exiv2 { }; //! Intelligent D-Range, tag 0x0079 - extern const TagDetails panasonicIntelligentDRange[] = { + constexpr TagDetails panasonicIntelligentDRange[] = { { 0, N_("Off") }, { 1, N_("Low") }, { 2, N_("Standard") }, @@ -345,13 +345,13 @@ namespace Exiv2 { }; //! Clear Retouch, tag 0x007c - extern const TagDetails panasonicClearRetouch[] = { + constexpr TagDetails panasonicClearRetouch[] = { { 0, N_("Off") }, { 1, N_("On") } }; //! Photo Style, tag 0x0089 - extern const TagDetails panasonicPhotoStyle[] = { + constexpr TagDetails panasonicPhotoStyle[] = { { 0, N_("NoAuto") }, { 1, N_("Standard or Custom") }, { 2, N_("Vivid") }, @@ -362,13 +362,13 @@ namespace Exiv2 { }; //! Shading compensation, tag 0x008a - extern const TagDetails panasonicShadingCompensation[] = { + constexpr TagDetails panasonicShadingCompensation[] = { { 0, N_("Off") }, { 1, N_("On") } }; //! Camera orientation, tag 0x008f - extern const TagDetails panasonicCameraOrientation[] = { + constexpr TagDetails panasonicCameraOrientation[] = { { 0, N_("Normal") }, { 1, N_("Rotate CW") }, { 2, N_("Rotate 180") }, @@ -378,7 +378,7 @@ namespace Exiv2 { }; //! Sweep panorama direction, tag 0x0093 - extern const TagDetails panasonicSweepPanoramaDirection[] = { + constexpr TagDetails panasonicSweepPanoramaDirection[] = { { 0, N_("Off") }, { 1, N_("Left to Right") }, { 2, N_("Right to Left") }, @@ -387,14 +387,14 @@ namespace Exiv2 { }; //! Timer recording, tag 0x0096 - extern const TagDetails panasonicTimerRecording[] = { + constexpr TagDetails panasonicTimerRecording[] = { { 0, N_("Off") }, { 1, N_("Time Lapse") }, { 2, N_("Stop-Motion Animation") } }; //! HDR, tag 0x009e - extern const TagDetails panasonicHDR[] = { + constexpr TagDetails panasonicHDR[] = { { 0, N_("Off") }, { 100, N_("1 EV") }, { 200, N_("2 EV") }, @@ -405,130 +405,130 @@ namespace Exiv2 { }; //! Shutter Type, tag 0x009f - extern const TagDetails panasonicShutterType[] = { + constexpr TagDetails panasonicShutterType[] = { { 0, N_("Mechanical") }, { 1, N_("Electronic") }, { 2, N_("Hybrid") } }; //! Touch AE, tag 0x00ab - extern const TagDetails panasonicTouchAE[] = { + constexpr TagDetails panasonicTouchAE[] = { { 0, N_("Off") }, { 1, N_("On") } }; //! Flash Fired, tag 0x8007 - extern const TagDetails panasonicFlashFired[] = { + constexpr TagDetails panasonicFlashFired[] = { { 1, N_("No") }, { 2, N_("Yes") } }; // Panasonic MakerNote Tag Info - const TagInfo PanasonicMakerNote::tagInfo_[] = { - TagInfo(0x0001, "Quality", N_("Quality"), N_("Image Quality"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicQuality)), - TagInfo(0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0003, "WhiteBalance", N_("White Balance"), N_("White balance setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWhiteBalance)), - TagInfo(0x0004, "0x0004", "0x0004", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFocusMode)), - TagInfo(0x000f, "AFMode", N_("AF Mode"), N_("AF mode"), panasonicId, makerTags, unsignedByte, -1, print0x000f), - TagInfo(0x001a, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicImageStabilizer)), - TagInfo(0x001c, "Macro", N_("Macro"), N_("Macro mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicMacro)), - TagInfo(0x001f, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)), - TagInfo(0x0020, "Audio", N_("Audio"), N_("Audio"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAudio)), - TagInfo(0x0021, "DataDump", N_("Data Dump"), N_("Data dump"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0022, "0x0022", "0x0022", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), panasonicId, makerTags, signedShort, -1, print0x0023), - TagInfo(0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), panasonicId, makerTags, signedShort, -1, printValue), - TagInfo(0x0025, "InternalSerialNumber", N_("Internal Serial Number"), N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed on the camera body."), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x0026, "ExifVersion", "Exif Version", N_("Exif version"), panasonicId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0027, "0x0027", "0x0027", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorEffect)), - TagInfo(0x0029, "TimeSincePowerOn", "Time since Power On", N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), panasonicId, makerTags, unsignedLong, -1, print0x0029), - TagInfo(0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBurstMode)), - TagInfo(0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), panasonicId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)), - TagInfo(0x002d, "NoiseReduction", N_("NoiseReduction"), N_("Noise reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicNoiseReduction)), - TagInfo(0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicSelfTimer)), - TagInfo(0x002f, "0x002f", "0x002f", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0030, "Rotation", N_("Rotation"), N_("Rotation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicRotation)), - TagInfo(0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)), - TagInfo(0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorMode)), - TagInfo(0x0033, "BabyAge1", N_("Baby Age 1"), N_("Baby (or pet) age 1"), panasonicId, makerTags, asciiString, -1, print0x0033), - TagInfo(0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)), - TagInfo(0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)), - TagInfo(0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, print0x0036), - TagInfo(0x0039, "Contrast", N_("Contrast"), N_("Contrast"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)), - TagInfo(0x003b, "TextStamp1", N_("Text Stamp 1"), N_("Text Stamp 1"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), - TagInfo(0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, print0x003c), - TagInfo(0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x003e, "TextStamp2", N_("Text Stamp 2"), N_("Text Stamp 2"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), - TagInfo(0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)), - TagInfo(0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperatur in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)), - TagInfo(0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashCurtain)), - TagInfo(0x0049, "LongShutterNoiseReduction", N_("Long Shutter Noise Reduction"), N_("Long Shutter Noise Reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicLongShutterNoiseReduction)), - TagInfo(0x004b, "ImageWidth", N_("Image width"), N_("Image width"), panasonicId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x004c, "ImageHeight", N_("Image height"), N_("Image height"), panasonicId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), panasonicId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0051, "LensType", N_("Lens Type"), N_("Lens type"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0054, "AccessorySerialNumber", N_("Accessory Serial Number"), N_("Accessory Serial Number"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0059, "Transform1", N_("Transform 1"), N_("Transform 1"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)), - TagInfo(0x0060, "LensFirmwareVersion", N_("Firmware Version of the Lens"), N_("Firmware Version of the Lens"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0061, "FaceRecInfo", N_("Face recognition info"), N_("Face recognition info"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)), - TagInfo(0x0065, "Title", N_("Title"), N_("Title"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x0067, "Location", N_("Location"), N_("Location"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x0069, "Country", N_("Country"), N_("Country"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x006b, "State", N_("State"), N_("State"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x006d, "City", N_("City"), N_("City"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x006f, "Landmark", N_("Landmark"), N_("Landmark"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)), - TagInfo(0x0077, "BurstSpeed", N_("Burst Speed"), N_("Burst Speed in pictures per second"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)), - TagInfo(0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)), - TagInfo(0x0080, "City2", N_("City2"), N_("City2"), panasonicId, makerTags, undefined, -1, printPanasonicText), - TagInfo(0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), panasonicId, makerTags, unsignedShort, -1, printPressure), - TagInfo(0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)), - TagInfo(0x008a, "ShadingCompensation", N_("Shading Compensation"), N_("Shading Compensation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShadingCompensation)), - TagInfo(0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer), - TagInfo(0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer), - TagInfo(0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer), - TagInfo(0x008f, "CameraOrientation", N_("Camera Orientation"), N_("Camera Orientation"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicCameraOrientation)), - TagInfo(0x0090, "RollAngle", N_("Roll Angle"), N_("degress of clockwise camera rotation"), panasonicId, makerTags, unsignedShort, -1, printRollAngle), - TagInfo(0x0091, "PitchAngle", N_("Pitch Angle"), N_("degress of upwards camera tilt"), panasonicId, makerTags, unsignedShort, -1, printPitchAngle), - TagInfo(0x0093, "SweepPanoramaDirection", N_("Sweep Panorama Direction"), N_("Sweep Panorama Direction"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicSweepPanoramaDirection)), - TagInfo(0x0094, "PanoramaFieldOfView", N_("Field of View of Panorama"), N_("Field of View of Panorama"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)), - TagInfo(0x009d, "InternalNDFilter", N_("Internal ND Filter"), N_("Internal ND Filter"), panasonicId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x009e, "HDR", N_("HDR"), N_("HDR"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicHDR)), - TagInfo(0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)), - TagInfo(0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), panasonicId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTouchAE)), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x4449, "0x4449", "0x4449", N_("Unknown"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), panasonicId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x8001, "SceneMode", N_("Scene Mode"), N_("Scene mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)), - TagInfo(0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)), - TagInfo(0x8008, "TextStamp3", N_("Text Stamp 3"), N_("Text Stamp 3"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), - TagInfo(0x8009, "TextStamp4", N_("Text Stamp 4"), N_("Text Stamp 4"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), - TagInfo(0x8010, "BabyAge2", N_("Baby Age 2"), N_("Baby (or pet) age 2"), panasonicId, makerTags, asciiString, -1, print0x0033), - TagInfo(0x8012, "Transform2", N_("Transform 2"), N_("Transform 2"), panasonicId, makerTags, undefined, -1, printValue), + constexpr TagInfo PanasonicMakerNote::tagInfo_[] = { + {0x0001, "Quality", N_("Quality"), N_("Image Quality"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicQuality)}, + {0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), panasonicId, makerTags, undefined, -1, printValue}, + {0x0003, "WhiteBalance", N_("White Balance"), N_("White balance setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWhiteBalance)}, + {0x0004, "0x0004", "0x0004", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFocusMode)}, + {0x000f, "AFMode", N_("AF Mode"), N_("AF mode"), panasonicId, makerTags, unsignedByte, -1, print0x000f}, + {0x001a, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicImageStabilizer)}, + {0x001c, "Macro", N_("Macro"), N_("Macro mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicMacro)}, + {0x001f, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)}, + {0x0020, "Audio", N_("Audio"), N_("Audio"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAudio)}, + {0x0021, "DataDump", N_("Data Dump"), N_("Data dump"), panasonicId, makerTags, undefined, -1, printValue}, + {0x0022, "0x0022", "0x0022", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), panasonicId, makerTags, signedShort, -1, print0x0023}, + {0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), panasonicId, makerTags, signedShort, -1, printValue}, + {0x0025, "InternalSerialNumber", N_("Internal Serial Number"), N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed on the camera body."), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x0026, "ExifVersion", "Exif Version", N_("Exif version"), panasonicId, makerTags, undefined, -1, printExifVersion}, + {0x0027, "0x0027", "0x0027", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorEffect)}, + {0x0029, "TimeSincePowerOn", "Time since Power On", N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), panasonicId, makerTags, unsignedLong, -1, print0x0029}, + {0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBurstMode)}, + {0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), panasonicId, makerTags, unsignedLong, -1, printValue}, + {0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)}, + {0x002d, "NoiseReduction", N_("NoiseReduction"), N_("Noise reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicNoiseReduction)}, + {0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicSelfTimer)}, + {0x002f, "0x002f", "0x002f", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0030, "Rotation", N_("Rotation"), N_("Rotation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicRotation)}, + {0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)}, + {0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorMode)}, + {0x0033, "BabyAge1", N_("Baby Age 1"), N_("Baby (or pet) age 1"), panasonicId, makerTags, asciiString, -1, print0x0033}, + {0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)}, + {0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)}, + {0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, print0x0036}, + {0x0039, "Contrast", N_("Contrast"), N_("Contrast"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)}, + {0x003b, "TextStamp1", N_("Text Stamp 1"), N_("Text Stamp 1"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, print0x003c}, + {0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x003e, "TextStamp2", N_("Text Stamp 2"), N_("Text Stamp 2"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)}, + {0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperatur in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)}, + {0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashCurtain)}, + {0x0049, "LongShutterNoiseReduction", N_("Long Shutter Noise Reduction"), N_("Long Shutter Noise Reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicLongShutterNoiseReduction)}, + {0x004b, "ImageWidth", N_("Image width"), N_("Image width"), panasonicId, makerTags, unsignedLong, -1, printValue}, + {0x004c, "ImageHeight", N_("Image height"), N_("Image height"), panasonicId, makerTags, unsignedLong, -1, printValue}, + {0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), panasonicId, makerTags, unsignedRational, -1, printValue}, + {0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), panasonicId, makerTags, undefined, -1, printValue}, + {0x0051, "LensType", N_("Lens Type"), N_("Lens type"), panasonicId, makerTags, asciiString, -1, printValue}, + {0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), panasonicId, makerTags, asciiString, -1, printValue}, + {0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), panasonicId, makerTags, asciiString, -1, printValue}, + {0x0054, "AccessorySerialNumber", N_("Accessory Serial Number"), N_("Accessory Serial Number"), panasonicId, makerTags, asciiString, -1, printValue}, + {0x0059, "Transform1", N_("Transform 1"), N_("Transform 1"), panasonicId, makerTags, undefined, -1, printValue}, + {0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)}, + {0x0060, "LensFirmwareVersion", N_("Firmware Version of the Lens"), N_("Firmware Version of the Lens"), panasonicId, makerTags, undefined, -1, printValue}, + {0x0061, "FaceRecInfo", N_("Face recognition info"), N_("Face recognition info"), panasonicId, makerTags, undefined, -1, printValue}, + {0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)}, + {0x0065, "Title", N_("Title"), N_("Title"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x0067, "Location", N_("Location"), N_("Location"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x0069, "Country", N_("Country"), N_("Country"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x006b, "State", N_("State"), N_("State"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x006d, "City", N_("City"), N_("City"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x006f, "Landmark", N_("Landmark"), N_("Landmark"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)}, + {0x0077, "BurstSpeed", N_("Burst Speed"), N_("Burst Speed in pictures per second"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)}, + {0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)}, + {0x0080, "City2", N_("City2"), N_("City2"), panasonicId, makerTags, undefined, -1, printPanasonicText}, + {0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), panasonicId, makerTags, unsignedShort, -1, printPressure}, + {0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)}, + {0x008a, "ShadingCompensation", N_("Shading Compensation"), N_("Shading Compensation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShadingCompensation)}, + {0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer}, + {0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer}, + {0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer}, + {0x008f, "CameraOrientation", N_("Camera Orientation"), N_("Camera Orientation"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicCameraOrientation)}, + {0x0090, "RollAngle", N_("Roll Angle"), N_("degress of clockwise camera rotation"), panasonicId, makerTags, unsignedShort, -1, printRollAngle}, + {0x0091, "PitchAngle", N_("Pitch Angle"), N_("degress of upwards camera tilt"), panasonicId, makerTags, unsignedShort, -1, printPitchAngle}, + {0x0093, "SweepPanoramaDirection", N_("Sweep Panorama Direction"), N_("Sweep Panorama Direction"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicSweepPanoramaDirection)}, + {0x0094, "PanoramaFieldOfView", N_("Field of View of Panorama"), N_("Field of View of Panorama"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)}, + {0x009d, "InternalNDFilter", N_("Internal ND Filter"), N_("Internal ND Filter"), panasonicId, makerTags, unsignedRational, -1, printValue}, + {0x009e, "HDR", N_("HDR"), N_("HDR"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicHDR)}, + {0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)}, + {0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), panasonicId, makerTags, unsignedRational, -1, printValue}, + {0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTouchAE)}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), panasonicId, makerTags, undefined, -1, printValue}, + {0x4449, "0x4449", "0x4449", N_("Unknown"), panasonicId, makerTags, undefined, -1, printValue}, + {0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), panasonicId, makerTags, undefined, -1, printExifVersion}, + {0x8001, "SceneMode", N_("Scene Mode"), N_("Scene mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)}, + {0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panasonicId, makerTags, unsignedShort, -1, printValue}, + {0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)}, + {0x8008, "TextStamp3", N_("Text Stamp 3"), N_("Text Stamp 3"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x8009, "TextStamp4", N_("Text Stamp 4"), N_("Text Stamp 4"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x8010, "BabyAge2", N_("Baby Age 2"), N_("Baby (or pet) age 2"), panasonicId, makerTags, asciiString, -1, print0x0033}, + {0x8012, "Transform2", N_("Transform 2"), N_("Transform 2"), panasonicId, makerTags, undefined, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), panasonicId, makerTags, asciiString, -1, printValue) + {0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), panasonicId, makerTags, asciiString, -1, printValue}, }; const TagInfo* PanasonicMakerNote::tagList() @@ -725,32 +725,32 @@ namespace Exiv2 { } // PanasonicMakerNote::printPitchAngle // Panasonic MakerNote Tag Info - const TagInfo PanasonicMakerNote::tagInfoRaw_[] = { - TagInfo(0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, printExifVersion), - TagInfo(0x0002, "SensorWidth", N_("Sensor Width"), N_("Sensor width"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0003, "SensorHeight", N_("Sensor Height"), N_("Sensor height"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0004, "SensorTopBorder", N_("Sensor Top Border"), N_("Sensor top border"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0005, "SensorLeftBorder", N_("Sensor Left Border"), N_("Sensor left border"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0006, "ImageHeight", N_("Image Height"), N_("Image height"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0007, "ImageWidth", N_("Image Width"), N_("Image width"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0011, "RedBalance", N_("Red Balance"), N_("Red balance (found in Digilux 2 RAW images)"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0012, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0017, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0024, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0025, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0026, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x002e, "PreviewImage", N_("Preview Image"), N_("Preview image"), panaRawId, panaRaw, undefined, -1, printValue), - TagInfo(0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording equipment"), panaRawId, panaRaw, asciiString, -1, printValue), - TagInfo(0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment"), panaRawId, panaRaw, asciiString, -1, printValue), - TagInfo(0x0111, "StripOffsets", N_("Strip Offsets"), N_("Strip offsets"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x0112, "Orientation", N_("Orientation"), N_("Orientation"), panaRawId, panaRaw, unsignedShort, -1, print0x0112), - TagInfo(0x0116, "RowsPerStrip", N_("Rows Per Strip"), N_("The number of rows per strip"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0117, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip byte counts"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue), + constexpr TagInfo PanasonicMakerNote::tagInfoRaw_[] = { + {0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, printExifVersion}, + {0x0002, "SensorWidth", N_("Sensor Width"), N_("Sensor width"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0003, "SensorHeight", N_("Sensor Height"), N_("Sensor height"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0004, "SensorTopBorder", N_("Sensor Top Border"), N_("Sensor top border"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0005, "SensorLeftBorder", N_("Sensor Left Border"), N_("Sensor left border"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0006, "ImageHeight", N_("Image Height"), N_("Image height"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0007, "ImageWidth", N_("Image Width"), N_("Image width"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0011, "RedBalance", N_("Red Balance"), N_("Red balance (found in Digilux 2 RAW images)"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0012, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0017, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0024, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0025, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0026, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x002e, "PreviewImage", N_("Preview Image"), N_("Preview image"), panaRawId, panaRaw, undefined, -1, printValue}, + {0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording equipment"), panaRawId, panaRaw, asciiString, -1, printValue}, + {0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment"), panaRawId, panaRaw, asciiString, -1, printValue}, + {0x0111, "StripOffsets", N_("Strip Offsets"), N_("Strip offsets"), panaRawId, panaRaw, unsignedLong, -1, printValue}, + {0x0112, "Orientation", N_("Orientation"), N_("Orientation"), panaRawId, panaRaw, unsignedShort, -1, print0x0112}, + {0x0116, "RowsPerStrip", N_("Rows Per Strip"), N_("The number of rows per strip"), panaRawId, panaRaw, unsignedShort, -1, printValue}, + {0x0117, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip byte counts"), panaRawId, panaRaw, unsignedLong, -1, printValue}, + {0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), panaRawId, panaRaw, unsignedLong, -1, printValue}, + {0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue}, + {0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), panaRawId, panaRaw, asciiString, -1, printValue) + {0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), panaRawId, panaRaw, asciiString, -1, printValue}, }; const TagInfo* PanasonicMakerNote::tagListRaw() diff --git a/src/pentaxmn_int.cpp b/src/pentaxmn_int.cpp index 3b6202bd..e1e2ffd5 100644 --- a/src/pentaxmn_int.cpp +++ b/src/pentaxmn_int.cpp @@ -37,14 +37,14 @@ namespace Exiv2 { namespace Internal { //! ShootingMode, tag 0x0001 - extern const TagDetails pentaxShootingMode[] = { + constexpr TagDetails pentaxShootingMode[] = { { 0, N_("Auto") }, { 1, N_("Night-Scene") }, { 2, N_("Manual") }, }; //! CameraModel, tag 0x0005 - extern const TagDetails pentaxModel[] = { + constexpr TagDetails pentaxModel[] = { { 0x0000d, "Optio 330/430" }, { 0x12926, "Optio 230" }, { 0x12958, "Optio 330GS" }, @@ -185,7 +185,7 @@ namespace Exiv2 { }; //! Quality, tag 0x0008 - extern const TagDetails pentaxQuality[] = { + constexpr TagDetails pentaxQuality[] = { { 0, N_("Good") }, { 1, N_("Better") }, { 2, N_("Best") }, @@ -196,7 +196,7 @@ namespace Exiv2 { }; //! Size, tag 0x0009 - extern const TagDetails pentaxSize[] = { + constexpr TagDetails pentaxSize[] = { { 0, "640x480" }, { 1, N_("Full") }, { 2, "1024x768" }, @@ -233,7 +233,7 @@ namespace Exiv2 { }; //! Flash, tag 0x000c - extern const TagDetails pentaxFlash[] = { + constexpr TagDetails pentaxFlash[] = { { 0x000, N_("Auto, Did not fire") }, { 0x001, N_("Off, Did not fire") }, { 0x002, N_("Off, Did not fire") }, @@ -253,7 +253,7 @@ namespace Exiv2 { }; //! Focus, tag 0x000d - extern const TagDetails pentaxFocus[] = { + constexpr TagDetails pentaxFocus[] = { { 0, N_("Normal") }, { 1, N_("Macro") }, { 2, N_("Infinity") }, @@ -269,7 +269,7 @@ namespace Exiv2 { }; //! AFPoint, tag 0x000e - extern const TagDetails pentaxAFPoint[] = { + constexpr TagDetails pentaxAFPoint[] = { { 0xffff, N_("Auto") }, { 0xfffe, N_("Fixed Center") }, { 0xfffd, N_("Automatic Tracking AF") }, @@ -290,7 +290,7 @@ namespace Exiv2 { }; //! AFPointInFocus, tag 0x000f - extern const TagDetails pentaxAFPointFocus[] = { + constexpr TagDetails pentaxAFPointFocus[] = { { 0xffff, N_("None") }, { 0, N_("Fixed Center or multiple") }, { 1, N_("Top-left") }, @@ -305,7 +305,7 @@ namespace Exiv2 { }; //! ISO, tag 0x0014 - extern const TagDetails pentaxISO[] = { + constexpr TagDetails pentaxISO[] = { { 3, "50" }, { 4, "64" }, { 5, "80" }, @@ -389,26 +389,26 @@ namespace Exiv2 { }; //! Generic for Off/On switches - extern const TagDetails pentaxOffOn[] = { + constexpr TagDetails pentaxOffOn[] = { { 0, N_("Off") }, { 1, N_("On") }, }; //! Generic for Yes/No switches - extern const TagDetails pentaxYesNo[] = { + constexpr TagDetails pentaxYesNo[] = { { 0, N_("No") }, { 1, N_("Yes") }, }; //! MeteringMode, tag 0x0017 - extern const TagDetails pentaxMeteringMode[] = { + constexpr TagDetails pentaxMeteringMode[] = { { 0, N_("Multi Segment") }, { 1, N_("Center Weighted") }, { 2, N_("Spot") }, }; //! WhiteBalance, tag 0x0019 - extern const TagDetails pentaxWhiteBalance[] = { + constexpr TagDetails pentaxWhiteBalance[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Shade") }, @@ -427,7 +427,7 @@ namespace Exiv2 { }; //! WhiteBalance, tag 0x001a - extern const TagDetails pentaxWhiteBalanceMode[] = { + constexpr TagDetails pentaxWhiteBalanceMode[] = { { 1, N_("Auto (Daylight)") }, { 2, N_("Auto (Shade)") }, { 3, N_("Auto (Flash)") }, @@ -441,7 +441,7 @@ namespace Exiv2 { }; //! Saturation, tag 0x001f - extern const TagDetails pentaxSaturation[] = { + constexpr TagDetails pentaxSaturation[] = { { 0, N_("Low") }, { 1, N_("Normal") }, { 2, N_("High") }, @@ -456,7 +456,7 @@ namespace Exiv2 { }; //! Contrast, tag 0x0020 - extern const TagDetails pentaxContrast[] = { + constexpr TagDetails pentaxContrast[] = { { 0, N_("Low") }, { 1, N_("Normal") }, { 2, N_("High") }, @@ -469,7 +469,7 @@ namespace Exiv2 { }; //! Sharpness, tag 0x0021 - extern const TagDetails pentaxSharpness[] = { + constexpr TagDetails pentaxSharpness[] = { { 0, N_("Soft") }, { 1, N_("Normal") }, { 2, N_("Hard") }, @@ -482,13 +482,13 @@ namespace Exiv2 { }; //! Location, tag 0x0022 - extern const TagDetails pentaxLocation[] = { + constexpr TagDetails pentaxLocation[] = { { 0, N_("Home town") }, { 1, N_("Destination") }, }; //! City names, tags 0x0023 and 0x0024 - extern const TagDetails pentaxCities[] = { + constexpr TagDetails pentaxCities[] = { { 0, N_("Pago Pago") }, { 1, N_("Honolulu") }, { 2, N_("Anchorage") }, @@ -567,7 +567,7 @@ namespace Exiv2 { }; //! ImageProcessing, combi-tag 0x0032 (4 bytes) - extern const TagDetails pentaxImageProcessing[] = { + constexpr TagDetails pentaxImageProcessing[] = { { 0x00000000, N_("Unprocessed") }, { 0x00000004, N_("Digital Filter") }, { 0x01000000, N_("Resized") }, @@ -578,7 +578,7 @@ namespace Exiv2 { }; //! PictureMode, combi-tag 0x0033 (3 bytes) - extern const TagDetails pentaxPictureMode[] = { + constexpr TagDetails pentaxPictureMode[] = { { 0x000000, N_("Program") }, { 0x000100, N_("Hi-speed Program") }, { 0x000200, N_("DOF Program") }, @@ -659,7 +659,7 @@ namespace Exiv2 { }; //! DriveMode, combi-tag 0x0034 (4 bytes) - extern const TagDetails pentaxDriveMode[] = { + constexpr TagDetails pentaxDriveMode[] = { { 0x00000000, N_("Single-frame") }, { 0x01000000, N_("Continuous") }, { 0x02000000, N_("Continuous (Hi)") }, @@ -683,13 +683,13 @@ namespace Exiv2 { }; //! ColorSpace, tag 0x0037 - extern const TagDetails pentaxColorSpace[] = { + constexpr TagDetails pentaxColorSpace[] = { { 0, N_("sRGB") }, { 1, N_("Adobe RGB") }, }; //! LensType, combi-tag 0x003f (2 unsigned long) - extern const TagDetails pentaxLensType[] = { + constexpr TagDetails pentaxLensType[] = { { 0x0000, N_("M-42 or No Lens") }, { 0x0100, N_("K or M Lens") }, { 0x0200, N_("A Series Lens") }, @@ -983,7 +983,7 @@ namespace Exiv2 { }; //! ImageTone, tag 0x004f - extern const TagDetails pentaxImageTone[] = { + constexpr TagDetails pentaxImageTone[] = { { 0, N_("Natural") }, { 1, N_("Bright") }, { 2, N_("Portrait") }, @@ -997,13 +997,13 @@ namespace Exiv2 { }; //! DynamicRangeExpansion, tag 0x0069 - extern const TagDetails pentaxDynamicRangeExpansion[] = { + constexpr TagDetails pentaxDynamicRangeExpansion[] = { { 0, N_("Off") }, { 0x1000000, N_("On") }, }; //! HighISONoiseReduction, tag 0x0071 - extern const TagDetails pentaxHighISONoiseReduction[] = { + constexpr TagDetails pentaxHighISONoiseReduction[] = { { 0, N_("Off") }, { 1, N_("Weakest") }, { 2, N_("Weak") }, @@ -1424,269 +1424,269 @@ namespace Exiv2 { // ---------------------------------------------------------------------- // Pentax MakerNote Tag Info - const TagInfo PentaxMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", N_("Version"), + constexpr TagInfo PentaxMakerNote::tagInfo_[] = { + {0x0000, "Version", N_("Version"), N_("Pentax Makernote version"), - pentaxId, makerTags, undefined, -1, printVersion), - TagInfo(0x0001, "Mode", N_("Shooting mode"), + pentaxId, makerTags, undefined, -1, printVersion}, + {0x0001, "Mode", N_("Shooting mode"), N_("Camera shooting mode"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxShootingMode)), - TagInfo(0x0002, "PreviewResolution", N_("Resolution of a preview image"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxShootingMode)}, + {0x0002, "PreviewResolution", N_("Resolution of a preview image"), N_("Resolution of a preview image"), - pentaxId, makerTags, undefined, -1, printResolution), - TagInfo(0x0003, "PreviewLength", N_("Length of a preview image"), + pentaxId, makerTags, undefined, -1, printResolution}, + {0x0003, "PreviewLength", N_("Length of a preview image"), N_("Size of an IFD containing a preview image"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x0004, "PreviewOffset", N_("Pointer to a preview image"), + pentaxId, makerTags, undefined, -1, printValue}, + {0x0004, "PreviewOffset", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x0005, "ModelID", N_("Model identification"), + pentaxId, makerTags, undefined, -1, printValue}, + {0x0005, "ModelID", N_("Model identification"), N_("Pentax model identification"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)), - TagInfo(0x0006, "Date", N_("Date"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)}, + {0x0006, "Date", N_("Date"), N_("Date"), - pentaxId, makerTags, undefined, -1, printDate), - TagInfo(0x0007, "Time", N_("Time"), + pentaxId, makerTags, undefined, -1, printDate}, + {0x0007, "Time", N_("Time"), N_("Time"), - pentaxId, makerTags, undefined, -1, printTime), - TagInfo(0x0008, "Quality", N_("Image quality"), + pentaxId, makerTags, undefined, -1, printTime}, + {0x0008, "Quality", N_("Image quality"), N_("Image quality settings"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxQuality)), - TagInfo(0x0009, "Size", N_("Image size"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxQuality)}, + {0x0009, "Size", N_("Image size"), N_("Image size settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxSize)), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxSize)}, /* Some missing ! */ - TagInfo(0x000c, "Flash", N_("Flash mode"), + {0x000c, "Flash", N_("Flash mode"), N_("Flash mode settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFlash)), - TagInfo(0x000d, "Focus", N_("Focus mode"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFlash)}, + {0x000d, "Focus", N_("Focus mode"), N_("Focus mode settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFocus)), - TagInfo(0x000e, "AFPoint", N_("AF point"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFocus)}, + {0x000e, "AFPoint", N_("AF point"), N_("Selected AF point"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPoint)), - TagInfo(0x000F, "AFPointInFocus", N_("AF point in focus"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPoint)}, + {0x000F, "AFPointInFocus", N_("AF point in focus"), N_("AF point in focus"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPointFocus)), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPointFocus)}, /* Some missing ! */ - TagInfo(0x0012, "ExposureTime", N_("Exposure time"), + {0x0012, "ExposureTime", N_("Exposure time"), N_("Exposure time"), - pentaxId, makerTags, unsignedLong, -1, printExposure), - TagInfo(0x0013, "FNumber", N_("F-Number"), + pentaxId, makerTags, unsignedLong, -1, printExposure}, + {0x0013, "FNumber", N_("F-Number"), N_("F-Number"), - pentaxId, makerTags, unsignedLong, -1, printFValue), - TagInfo(0x0014, "ISO", N_("ISO sensitivity"), + pentaxId, makerTags, unsignedLong, -1, printFValue}, + {0x0014, "ISO", N_("ISO sensitivity"), N_("ISO sensitivity settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxISO)), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxISO)}, /* Some missing ! */ - TagInfo(0x0016, "ExposureCompensation", N_("Exposure compensation"), + {0x0016, "ExposureCompensation", N_("Exposure compensation"), N_("Exposure compensation"), - pentaxId, makerTags, unsignedLong, -1, printCompensation), + pentaxId, makerTags, unsignedLong, -1, printCompensation}, /* Some missing ! */ - TagInfo(0x0017, "MeteringMode", N_("MeteringMode"), + {0x0017, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxMeteringMode)), - TagInfo(0x0018, "AutoBracketing", N_("AutoBracketing"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxMeteringMode)}, + {0x0018, "AutoBracketing", N_("AutoBracketing"), N_("AutoBracketing"), - pentaxId, makerTags, undefined, -1, printBracketing), - TagInfo(0x0019, "WhiteBalance", N_("White balance"), + pentaxId, makerTags, undefined, -1, printBracketing}, + {0x0019, "WhiteBalance", N_("White balance"), N_("White balance"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalance)), - TagInfo(0x001a, "WhiteBalanceMode", N_("White balance mode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalance)}, + {0x001a, "WhiteBalanceMode", N_("White balance mode"), N_("White balance mode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalanceMode)), - TagInfo(0x001b, "BlueBalance", N_("Blue balance"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalanceMode)}, + {0x001b, "BlueBalance", N_("Blue balance"), N_("Blue color balance"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001c, "RedBalance", N_("Red balance"), + pentaxId, makerTags, unsignedLong, -1, printValue}, + {0x001c, "RedBalance", N_("Red balance"), N_("Red color balance"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001d, "FocalLength", N_("FocalLength"), + pentaxId, makerTags, unsignedLong, -1, printValue}, + {0x001d, "FocalLength", N_("FocalLength"), N_("FocalLength"), - pentaxId, makerTags, undefined, -1, printFocalLength), - TagInfo(0x001e, "DigitalZoom", N_("Digital zoom"), + pentaxId, makerTags, undefined, -1, printFocalLength}, + {0x001e, "DigitalZoom", N_("Digital zoom"), N_("Digital zoom"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001f, "Saturation", N_("Saturation"), + pentaxId, makerTags, unsignedLong, -1, printValue}, + {0x001f, "Saturation", N_("Saturation"), N_("Saturation"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSaturation)), - TagInfo(0x0020, "Contrast", N_("Contrast"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSaturation)}, + {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxContrast)), - TagInfo(0x0021, "Sharpness", N_("Sharpness"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxContrast)}, + {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSharpness)), - TagInfo(0x0022, "Location", N_("Location"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSharpness)}, + {0x0022, "Location", N_("Location"), N_("Location"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxLocation)), - TagInfo(0x0023, "Hometown", N_("Hometown"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxLocation)}, + {0x0023, "Hometown", N_("Hometown"), N_("Home town"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)), - TagInfo(0x0024, "Destination", N_("Destination"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)}, + {0x0024, "Destination", N_("Destination"), N_("Destination"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)), - TagInfo(0x0025, "HometownDST", N_("Hometown DST"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)}, + {0x0025, "HometownDST", N_("Hometown DST"), N_("Whether day saving time is active in home town"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)), - TagInfo(0x0026, "DestinationDST", N_("Destination DST"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)}, + {0x0026, "DestinationDST", N_("Destination DST"), N_("Whether day saving time is active in destination"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)), - TagInfo(0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)}, + {0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), N_("DSPFirmwareVersion"), - pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), + pentaxId, makerTags, unsignedByte, -1, printValue}, /* TODO: Decoding missing */ + {0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), N_("CPUFirmwareVersion"), - pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0029, "FrameNumber", N_("Frame number"), + pentaxId, makerTags, unsignedByte, -1, printValue}, /* TODO: Decoding missing */ + {0x0029, "FrameNumber", N_("Frame number"), N_("Frame number"), - pentaxId, makerTags, undefined, -1, printValue), + pentaxId, makerTags, undefined, -1, printValue}, /* Some missing ! */ - TagInfo(0x002d, "EffectiveLV", N_("Light value"), + {0x002d, "EffectiveLV", N_("Light value"), N_("Camera calculated light value, includes exposure compensation"), - pentaxId, makerTags, unsignedShort, -1, printValue), + pentaxId, makerTags, unsignedShort, -1, printValue}, /* Some missing ! */ - TagInfo(0x0032, "ImageProcessing", N_("Image processing"), + {0x0032, "ImageProcessing", N_("Image processing"), N_("Image processing"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)), - TagInfo(0x0033, "PictureMode", N_("Picture mode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)}, + {0x0033, "PictureMode", N_("Picture mode"), N_("Picture mode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)), - TagInfo(0x0034, "DriveMode", N_("Drive mode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)}, + {0x0034, "DriveMode", N_("Drive mode"), N_("Drive mode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)}, /* Some missing ! */ - TagInfo(0x0037, "ColorSpace", N_("Color space"), + {0x0037, "ColorSpace", N_("Color space"), N_("Color space"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxColorSpace)), - TagInfo(0x0038, "ImageAreaOffset", N_("Image area offset"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxColorSpace)}, + {0x0038, "ImageAreaOffset", N_("Image area offset"), N_("Image area offset"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0039, "RawImageSize", N_("Raw image size"), + pentaxId, makerTags, unsignedLong, -1, printValue}, + {0x0039, "RawImageSize", N_("Raw image size"), N_("Raw image size"), - pentaxId, makerTags, unsignedLong, -1, printValue), + pentaxId, makerTags, unsignedLong, -1, printValue}, /* Some missing ! */ - TagInfo(0x003e, "PreviewImageBorders", N_("Preview image borders"), + {0x003e, "PreviewImageBorders", N_("Preview image borders"), N_("Preview image borders"), - pentaxId, makerTags, unsignedByte, -1, printValue), - TagInfo(0x003f, "LensType", N_("Lens type"), + pentaxId, makerTags, unsignedByte, -1, printValue}, + {0x003f, "LensType", N_("Lens type"), N_("Lens type"), - pentaxId, makerTags, unsignedByte, -1, printLensType), // #816 - TagInfo(0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), + pentaxId, makerTags, unsignedByte, -1, printLensType}, // #816 + {0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), N_("Sensitivity adjust"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0041, "DigitalFilter", N_("Digital filter"), + pentaxId, makerTags, unsignedLong, -1, printValue}, + {0x0041, "DigitalFilter", N_("Digital filter"), N_("Digital filter"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)}, /* Some missing ! */ - TagInfo(0x0047, "Temperature", N_("Temperature"), + {0x0047, "Temperature", N_("Temperature"), N_("Camera temperature"), - pentaxId, makerTags, signedByte, -1, printTemperature), - TagInfo(0x0048, "AELock", N_("AE lock"), + pentaxId, makerTags, signedByte, -1, printTemperature}, + {0x0048, "AELock", N_("AE lock"), N_("AE lock"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), - TagInfo(0x0049, "NoiseReduction", N_("Noise reduction"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)}, + {0x0049, "NoiseReduction", N_("Noise reduction"), N_("Noise reduction"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)}, /* Some missing ! */ - TagInfo(0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"), + {0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"), N_("Flash exposure compensation"), - pentaxId, makerTags, signedLong, -1, printFlashCompensation), + pentaxId, makerTags, signedLong, -1, printFlashCompensation}, /* Some missing ! */ - TagInfo(0x004f, "ImageTone", N_("Image tone"), + {0x004f, "ImageTone", N_("Image tone"), N_("Image tone"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxImageTone)), - TagInfo(0x0050, "ColorTemperature", N_("Color temperature"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxImageTone)}, + {0x0050, "ColorTemperature", N_("Color temperature"), N_("Color temperature"), - pentaxId, makerTags, unsignedShort, -1, printValue), + pentaxId, makerTags, unsignedShort, -1, printValue}, /* Some missing ! */ - TagInfo(0x005c, "ShakeReduction", N_("Shake reduction"), + {0x005c, "ShakeReduction", N_("Shake reduction"), N_("Shake reduction information"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x005d, "ShutterCount", N_("Shutter count"), + pentaxId, makerTags, undefined, -1, printValue}, + {0x005d, "ShutterCount", N_("Shutter count"), N_("Shutter count"), - pentaxId, makerTags, undefined, -1, printShutterCount), - TagInfo(0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"), + pentaxId, makerTags, undefined, -1, printShutterCount}, + {0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"), N_("Dynamic range expansion"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)), - TagInfo(0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)}, + {0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), N_("High ISO noise reduction"), - pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)), - TagInfo(0x0072, "AFAdjustment", N_("AF Adjustment"), + pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)}, + {0x0072, "AFAdjustment", N_("AF Adjustment"), N_("AF Adjustment"), - pentaxId, makerTags, undefined, -1, printValue), + pentaxId, makerTags, undefined, -1, printValue}, /* Many missing ! */ - TagInfo(0x0200, "BlackPoint", N_("Black point"), + {0x0200, "BlackPoint", N_("Black point"), N_("Black point"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x0201, "WhitePoint", N_("White point"), + pentaxId, makerTags, undefined, -1, printValue}, + {0x0201, "WhitePoint", N_("White point"), N_("White point"), - pentaxId, makerTags, undefined, -1, printValue), + pentaxId, makerTags, undefined, -1, printValue}, /* Some missing ! */ - TagInfo(0x0205, "ShotInfo", N_("ShotInfo"), + {0x0205, "ShotInfo", N_("ShotInfo"), N_("ShotInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0206, "AEInfo", N_("AEInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0206, "AEInfo", N_("AEInfo"), N_("AEInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0207, "LensInfo", N_("LensInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0207, "LensInfo", N_("LensInfo"), N_("LensInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0208, "FlashInfo", N_("FlashInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0208, "FlashInfo", N_("FlashInfo"), N_("FlashInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), N_("AEMeteringSegments"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020a, "FlashADump", N_("FlashADump"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020a, "FlashADump", N_("FlashADump"), N_("FlashADump"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020b, "FlashBDump", N_("FlashBDump"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020b, "FlashBDump", N_("FlashBDump"), N_("FlashBDump"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ /* Some missing ! */ - TagInfo(0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), + {0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), N_("WB_RGGBLevelsDaylight"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"), N_("WB_RGGBLevelsShade"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), N_("WB_RGGBLevelsCloudy"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"), N_("WB_RGGBLevelsTungsten"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), N_("WB_RGGBLevelsFluorescentD"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"), N_("WB_RGGBLevelsFluorescentN"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), N_("WB_RGGBLevelsFluorescentW"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"), N_("WB_RGGBLevelsFlash"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0215, "CameraInfo", N_("CameraInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0215, "CameraInfo", N_("CameraInfo"), N_("CameraInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0216, "BatteryInfo", N_("BatteryInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0216, "BatteryInfo", N_("BatteryInfo"), N_("BatteryInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x021f, "AFInfo", N_("AFInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x021f, "AFInfo", N_("AFInfo"), N_("AFInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0222, "ColorInfo", N_("ColorInfo"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0222, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0229, "SerialNumber", N_("Serial Number"), + pentaxId, makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0229, "SerialNumber", N_("Serial Number"), N_("Serial Number"), - pentaxId, makerTags, asciiString, -1, printValue), + pentaxId, makerTags, asciiString, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", + {0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", N_("Unknown PentaxMakerNote tag"), - pentaxId, makerTags, asciiString, -1, printValue) + pentaxId, makerTags, asciiString, -1, printValue}, }; const TagInfo* PentaxMakerNote::tagList() diff --git a/src/preview.cpp b/src/preview.cpp index d713369e..be8a7d16 100644 --- a/src/preview.cpp +++ b/src/preview.cpp @@ -1032,6 +1032,8 @@ namespace Exiv2 { PreviewImage::PreviewImage(PreviewProperties properties, DataBuf data) : properties_(std::move(properties)), pData_(data.pData_), size_(data.size_) { + pData_ = data.pData_; + size_ = data.size_; std::pair ret = data.release(); UNUSED(ret); } diff --git a/src/properties.cpp b/src/properties.cpp index 3be1b5ac..1663fbfc 100644 --- a/src/properties.cpp +++ b/src/properties.cpp @@ -95,7 +95,7 @@ namespace Exiv2 { extern const XmpPropertyInfo xmpAcdseeInfo[]; extern const XmpPropertyInfo xmpGPanoInfo[]; - extern const XmpNsInfo xmpNsInfo[] = { + constexpr XmpNsInfo xmpNsInfo[] = { // Schemas - NOTE: Schemas which the XMP-SDK doesn't know must be registered in XmpParser::initialize - Todo: Automate this { "http://purl.org/dc/elements/1.1/", "dc", xmpDcInfo, N_("Dublin Core schema") }, { "http://www.digikam.org/ns/1.0/", "digiKam", xmpDigikamInfo, N_("digiKam Photo Management schema") }, @@ -486,7 +486,7 @@ namespace Exiv2 { }; //! XMP crs:CropUnits - extern const TagDetails crsCropUnits[] = { + constexpr TagDetails crsCropUnits[] = { { 0, N_("pixels") }, { 1, N_("inches") }, { 2, N_("cm") } @@ -999,7 +999,7 @@ namespace Exiv2 { }; //! XMP iptcExt:DigitalSourcefileType - extern const TagVocabulary iptcExtDigitalSourcefileType[] = { + constexpr TagVocabulary iptcExtDigitalSourcefileType[] = { { "scanfilm", N_("Scan from film") }, { "scantransparency", N_("Scan from transparency (including slide)") }, { "scanprint", N_("Scan from print") }, @@ -1099,21 +1099,21 @@ namespace Exiv2 { }; //! XMP plus:AdultContentWarning - extern const TagVocabulary plusAdultContentWarning[] = { + constexpr TagVocabulary plusAdultContentWarning[] = { { "CW-AWR", N_("Adult Content Warning Required") }, { "CW-NRQ", N_("Not Required") }, { "CW-UNK", N_("Unknown") } }; //! XMP plus:CopyrightStatus - extern const TagVocabulary plusCopyrightStatus[] = { + constexpr TagVocabulary plusCopyrightStatus[] = { { "CS-PRO", N_("Protected") }, { "CS-PUB", N_("Public Domain") }, { "CS-UNK", N_("Unknown") } }; //! XMP plus:CreditLineRequired - extern const TagVocabulary plusCreditLineRequired[] = { + constexpr TagVocabulary plusCreditLineRequired[] = { { "CR-CAI", N_("Credit Adjacent To Image") }, { "CR-CCA", N_("Credit in Credits Area") }, { "CR-COI", N_("Credit on Image") }, @@ -1121,7 +1121,7 @@ namespace Exiv2 { }; //! XMP plus:ImageAlterationConstraints - extern const TagVocabulary plusImageAlterationConstraints[] = { + constexpr TagVocabulary plusImageAlterationConstraints[] = { { "AL-CLR", N_("No Colorization") }, { "AL-CRP", N_("No Cropping") }, { "AL-DCL", N_("No De-Colorization") }, @@ -1131,14 +1131,14 @@ namespace Exiv2 { }; //! XMP plus:ImageDuplicationConstraints - extern const TagVocabulary plusImageDuplicationConstraints[] = { + constexpr TagVocabulary plusImageDuplicationConstraints[] = { { "DP-LIC", N_("Duplication Only as Necessary Under License") }, { "DP-NDC", N_("No Duplication Constraints") }, { "DP-NOD", N_("No Duplication") } }; //! XMP plus:ImageFileConstraints - extern const TagVocabulary plusImageFileConstraints[] = { + constexpr TagVocabulary plusImageFileConstraints[] = { { "IF-MFN", N_("Maintain File Name") }, { "IF-MFT", N_("Maintain File Type") }, { "IF-MID", N_("Maintain ID in File Name") }, @@ -1146,7 +1146,7 @@ namespace Exiv2 { }; //! XMP plus:ImageFileFormatAsDelivered - extern const TagVocabulary plusImageFileFormatAsDelivered[] = { + constexpr TagVocabulary plusImageFileFormatAsDelivered[] = { { "FF-BMP", N_("Windows Bitmap (BMP)") }, { "FF-DNG", N_("Digital Negative (DNG)") }, { "FF-EPS", N_("Encapsulated PostScript (EPS)") }, @@ -1162,7 +1162,7 @@ namespace Exiv2 { }; //! XMP plus:ImageFileSizeAsDelivered - extern const TagVocabulary plusImageFileSizeAsDelivered[] = { + constexpr TagVocabulary plusImageFileSizeAsDelivered[] = { { "SZ-G50", N_("Greater than 50 MB") }, { "SZ-U01", N_("Up to 1 MB") }, { "SZ-U10", N_("Up to 10 MB") }, @@ -1171,7 +1171,7 @@ namespace Exiv2 { }; //! XMP plus:ImageType - extern const TagVocabulary plusImageType[] = { + constexpr TagVocabulary plusImageType[] = { { "TY-ILL", N_("Illustrated Image") }, { "TY-MCI", N_("Multimedia or Composited Image") }, { "TY-OTR", N_("Other") }, @@ -1180,7 +1180,7 @@ namespace Exiv2 { }; //! XMP plus:LicensorTelephoneType - extern const TagVocabulary plusLicensorTelephoneType[] = { + constexpr TagVocabulary plusLicensorTelephoneType[] = { { "cell", N_("Cell") }, { "fax", N_("FAX") }, { "home", N_("Home") }, @@ -1189,7 +1189,7 @@ namespace Exiv2 { }; //! XMP plus:MinorModelAgeDisclosure - extern const TagVocabulary plusMinorModelAgeDisclosure[] = { + constexpr TagVocabulary plusMinorModelAgeDisclosure[] = { { "AG-UNK", N_("Age Unknown") }, { "AG-A25", N_("Age 25 or Over") }, { "AG-A24", N_("Age 24") }, @@ -1206,7 +1206,7 @@ namespace Exiv2 { }; //! XMP plus:ModelReleaseStatus - extern const TagVocabulary plusModelReleaseStatus[] = { + constexpr TagVocabulary plusModelReleaseStatus[] = { { "MR-NON", N_("None") }, { "MR-NAP", N_("Not Applicable") }, { "MR-UMR", N_("Unlimited Model Releases") }, @@ -1214,7 +1214,7 @@ namespace Exiv2 { }; //! XMP plus:PropertyReleaseStatus - extern const TagVocabulary plusPropertyReleaseStatus[] = { + constexpr TagVocabulary plusPropertyReleaseStatus[] = { { "PR-NON", N_("None") }, { "PR-NAP", N_("Not Applicable") }, { "PR-UPR", N_("Unlimited Property Releases") }, @@ -1222,7 +1222,7 @@ namespace Exiv2 { }; //! XMP plus:Reuse - extern const TagVocabulary plusReuse[] = { + constexpr TagVocabulary plusReuse[] = { { "RE-NAP", N_("Not Applicable") }, { "RE-REU", N_("Repeat Use") } }; diff --git a/src/samsungmn_int.cpp b/src/samsungmn_int.cpp index 213d4b17..ff695533 100644 --- a/src/samsungmn_int.cpp +++ b/src/samsungmn_int.cpp @@ -38,7 +38,7 @@ namespace Exiv2 { namespace Internal { //! LensType, tag 0xa003 - extern const TagDetails samsung2LensType[] = { + constexpr TagDetails samsung2LensType[] = { { 0, N_("Built-in") }, { 1, "Samsung NX 30mm F2 Pancake" }, { 2, "Samsung NX 18-55mm F3.5-5.6 OIS" }, @@ -60,13 +60,13 @@ namespace Exiv2 { }; //! ColorSpace, tag 0xa011 - extern const TagDetails samsung2ColorSpace[] = { + constexpr TagDetails samsung2ColorSpace[] = { { 0, N_("sRGB") }, { 1, N_("Adobe RGB") } }; //! SmartRange, tag 0xa012 - extern const TagDetails samsung2SmartRange[] = { + constexpr TagDetails samsung2SmartRange[] = { { 0, N_("Off") }, { 1, N_("On") } }; @@ -102,39 +102,39 @@ namespace Exiv2 { } // Samsung MakerNote Tag Info - const TagInfo Samsung2MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", N_("Version"), N_("Makernote version"), samsung2Id, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0021, "PictureWizard", N_("Picture Wizard"), N_("Picture wizard composite tag"), samsung2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0030, "LocalLocationName", N_("Local Location Name"), N_("Local location name"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0031, "LocationName", N_("Location Name"), N_("Location name"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0035, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0043, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), samsung2Id, makerTags, signedRational, -1, printCameraTemperature), - TagInfo(0xa001, "FirmwareName", N_("Firmware Name"), N_("Firmware name"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0xa003, "LensType", N_("Lens Type"), N_("Lens type"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2LensType)), - TagInfo(0xa004, "LensFirmware", N_("Lens Firmware"), N_("Lens firmware"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0xa010, "SensorAreas", N_("Sensor Areas"), N_("Sensor areas"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa011, "ColorSpace", N_("Color Space"), N_("Color space"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2ColorSpace)), - TagInfo(0xa012, "SmartRange", N_("Smart Range"), N_("Smart range"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2SmartRange)), - TagInfo(0xa013, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), samsung2Id, makerTags, signedRational, -1, print0x9204), - TagInfo(0xa014, "ISO", N_("ISO"), N_("ISO"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa018, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), samsung2Id, makerTags, unsignedRational, -1, print0x829a), - TagInfo(0xa019, "FNumber", N_("FNumber"), N_("The F number."), samsung2Id, makerTags, unsignedRational, -1, print0x829d), - TagInfo(0xa01a, "FocalLengthIn35mmFormat", N_("Focal Length In 35mm Format"), N_("Focal length in 35mm format"), samsung2Id, makerTags, unsignedLong, -1, printFocalLength35), - TagInfo(0xa020, "EncryptionKey", N_("Encryption Key"), N_("Encryption key"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa021, "WB_RGGBLevelsUncorrected", N_("WB RGGB Levels Uncorrected"), N_("WB RGGB levels not corrected for WB_RGGBLevelsBlack"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa022, "WB_RGGBLevelsAuto", N_("WB RGGB Levels Auto"), N_("WB RGGB levels auto"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa023, "WB_RGGBLevelsIlluminator1", N_("WB RGGB Levels Illuminator1"), N_("WB RGGB levels illuminator1"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa024, "WB_RGGBLevelsIlluminator2", N_("WB RGGB Levels Illuminator2"), N_("WB RGGB levels illuminator2"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa028, "WB_RGGBLevelsBlack", N_("WB RGGB Levels Black"), N_("WB RGGB levels black"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa030, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa031, "ColorMatrixSRGB", N_("Color Matrix sRGB"), N_("Color matrix sRGB"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa032, "ColorMatrixAdobeRGB", N_("Color Matrix Adobe RGB"), N_("Color matrix Adobe RGB"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa040, "ToneCurve1", N_("Tone Curve 1"), N_("Tone curve 1"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa041, "ToneCurve2", N_("Tone Curve 2"), N_("Tone curve 2"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa042, "ToneCurve3", N_("Tone Curve 3"), N_("Tone curve 3"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa043, "ToneCurve4", N_("Tone Curve 4"), N_("Tone curve 4"), samsung2Id, makerTags, unsignedLong, -1, printValue), + constexpr TagInfo Samsung2MakerNote::tagInfo_[] = { + {0x0001, "Version", N_("Version"), N_("Makernote version"), samsung2Id, makerTags, undefined, -1, printExifVersion}, + {0x0021, "PictureWizard", N_("Picture Wizard"), N_("Picture wizard composite tag"), samsung2Id, makerTags, unsignedShort, -1, printValue}, + {0x0030, "LocalLocationName", N_("Local Location Name"), N_("Local location name"), samsung2Id, makerTags, asciiString, -1, printValue}, + {0x0031, "LocationName", N_("Location Name"), N_("Location name"), samsung2Id, makerTags, asciiString, -1, printValue}, + {0x0035, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0x0043, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), samsung2Id, makerTags, signedRational, -1, printCameraTemperature}, + {0xa001, "FirmwareName", N_("Firmware Name"), N_("Firmware name"), samsung2Id, makerTags, asciiString, -1, printValue}, + {0xa003, "LensType", N_("Lens Type"), N_("Lens type"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2LensType)}, + {0xa004, "LensFirmware", N_("Lens Firmware"), N_("Lens firmware"), samsung2Id, makerTags, asciiString, -1, printValue}, + {0xa010, "SensorAreas", N_("Sensor Areas"), N_("Sensor areas"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa011, "ColorSpace", N_("Color Space"), N_("Color space"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2ColorSpace)}, + {0xa012, "SmartRange", N_("Smart Range"), N_("Smart range"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2SmartRange)}, + {0xa013, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), samsung2Id, makerTags, signedRational, -1, print0x9204}, + {0xa014, "ISO", N_("ISO"), N_("ISO"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa018, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), samsung2Id, makerTags, unsignedRational, -1, print0x829a}, + {0xa019, "FNumber", N_("FNumber"), N_("The F number."), samsung2Id, makerTags, unsignedRational, -1, print0x829d}, + {0xa01a, "FocalLengthIn35mmFormat", N_("Focal Length In 35mm Format"), N_("Focal length in 35mm format"), samsung2Id, makerTags, unsignedLong, -1, printFocalLength35}, + {0xa020, "EncryptionKey", N_("Encryption Key"), N_("Encryption key"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa021, "WB_RGGBLevelsUncorrected", N_("WB RGGB Levels Uncorrected"), N_("WB RGGB levels not corrected for WB_RGGBLevelsBlack"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa022, "WB_RGGBLevelsAuto", N_("WB RGGB Levels Auto"), N_("WB RGGB levels auto"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa023, "WB_RGGBLevelsIlluminator1", N_("WB RGGB Levels Illuminator1"), N_("WB RGGB levels illuminator1"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa024, "WB_RGGBLevelsIlluminator2", N_("WB RGGB Levels Illuminator2"), N_("WB RGGB levels illuminator2"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa028, "WB_RGGBLevelsBlack", N_("WB RGGB Levels Black"), N_("WB RGGB levels black"), samsung2Id, makerTags, signedLong, -1, printValue}, + {0xa030, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), samsung2Id, makerTags, signedLong, -1, printValue}, + {0xa031, "ColorMatrixSRGB", N_("Color Matrix sRGB"), N_("Color matrix sRGB"), samsung2Id, makerTags, signedLong, -1, printValue}, + {0xa032, "ColorMatrixAdobeRGB", N_("Color Matrix Adobe RGB"), N_("Color matrix Adobe RGB"), samsung2Id, makerTags, signedLong, -1, printValue}, + {0xa040, "ToneCurve1", N_("Tone Curve 1"), N_("Tone curve 1"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa041, "ToneCurve2", N_("Tone Curve 2"), N_("Tone curve 2"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa042, "ToneCurve3", N_("Tone Curve 3"), N_("Tone curve 3"), samsung2Id, makerTags, unsignedLong, -1, printValue}, + {0xa043, "ToneCurve4", N_("Tone Curve 4"), N_("Tone curve 4"), samsung2Id, makerTags, unsignedLong, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownSamsung2MakerNoteTag)", "(UnknownSamsung2MakerNoteTag)", N_("Unknown Samsung2MakerNote tag"), samsung2Id, makerTags, undefined, -1, printValue) + {0xffff, "(UnknownSamsung2MakerNoteTag)", "(UnknownSamsung2MakerNoteTag)", N_("Unknown Samsung2MakerNote tag"), samsung2Id, makerTags, undefined, -1, printValue}, }; const TagInfo* Samsung2MakerNote::tagList() @@ -143,7 +143,7 @@ namespace Exiv2 { } //! PictureWizard Mode - extern const TagDetails samsungPwMode[] = { + constexpr TagDetails samsungPwMode[] = { { 0, N_("Standard") }, { 1, N_("Vivid") }, { 2, N_("Portrait") }, @@ -182,14 +182,14 @@ namespace Exiv2 { } // Samsung PictureWizard Tag Info - const TagInfo Samsung2MakerNote::tagInfoPw_[] = { - TagInfo(0x0000, "Mode", N_("Mode"), N_("Mode"), samsungPwId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(samsungPwMode)), - TagInfo(0x0001, "Color", N_("Color"), N_("Color"), samsungPwId, makerTags, unsignedShort, 1, printPwColor), - TagInfo(0x0002, "Saturation", N_("Saturation"), N_("Saturation"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), - TagInfo(0x0003, "Sharpness", N_("Sharpness"), N_("Sharpness"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), - TagInfo(0x0004, "Contrast", N_("Contrast"), N_("Contrast"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), + constexpr TagInfo Samsung2MakerNote::tagInfoPw_[] = { + {0x0000, "Mode", N_("Mode"), N_("Mode"), samsungPwId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(samsungPwMode)}, + {0x0001, "Color", N_("Color"), N_("Color"), samsungPwId, makerTags, unsignedShort, 1, printPwColor}, + {0x0002, "Saturation", N_("Saturation"), N_("Saturation"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4}, + {0x0003, "Sharpness", N_("Sharpness"), N_("Sharpness"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4}, + {0x0004, "Contrast", N_("Contrast"), N_("Contrast"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4}, // End of list marker - TagInfo(0xffff, "(UnknownSamsungPictureWizardTag)", "(UnknownSamsungPictureWizardTag)", N_("Unknown SamsungPictureWizard tag"), samsungPwId, makerTags, unsignedShort, 1, printValue) + {0xffff, "(UnknownSamsungPictureWizardTag)", "(UnknownSamsungPictureWizardTag)", N_("Unknown SamsungPictureWizard tag"), samsungPwId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Samsung2MakerNote::tagListPw() diff --git a/src/sigmamn_int.cpp b/src/sigmamn_int.cpp index 1d6107bf..c5e22f5b 100644 --- a/src/sigmamn_int.cpp +++ b/src/sigmamn_int.cpp @@ -38,80 +38,80 @@ namespace Exiv2 { namespace Internal { // Sigma (Foveon) MakerNote Tag Info - const TagInfo SigmaMakerNote::tagInfo_[] = { - TagInfo(0x0002, "SerialNumber", N_("Serial Number"), + constexpr TagInfo SigmaMakerNote::tagInfo_[] = { + {0x0002, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0003, "DriveMode", N_("Drive Mode"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0003, "DriveMode", N_("Drive Mode"), N_("Drive mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0004, "ResolutionMode", N_("Resolution Mode"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0004, "ResolutionMode", N_("Resolution Mode"), N_("Resolution mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0005, "AutofocusMode", N_("Autofocus Mode"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0005, "AutofocusMode", N_("Autofocus Mode"), N_("Autofocus mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0006, "FocusSetting", N_("Focus Setting"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0006, "FocusSetting", N_("Focus Setting"), N_("Focus setting"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0008, "ExposureMode", N_("Exposure Mode"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0008, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), - sigmaId, makerTags, asciiString, -1, print0x0008), - TagInfo(0x0009, "MeteringMode", N_("Metering Mode"), + sigmaId, makerTags, asciiString, -1, print0x0008}, + {0x0009, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), - sigmaId, makerTags, asciiString, -1, print0x0009), - TagInfo(0x000a, "LensRange", N_("Lens Range"), + sigmaId, makerTags, asciiString, -1, print0x0009}, + {0x000a, "LensRange", N_("Lens Range"), N_("Lens focal length range"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x000b, "ColorSpace", N_("Color Space"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x000b, "ColorSpace", N_("Color Space"), N_("Color space"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x000c, "Exposure", N_("Exposure"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x000c, "Exposure", N_("Exposure"), N_("Exposure"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x000d, "Contrast", N_("Contrast"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x000d, "Contrast", N_("Contrast"), N_("Contrast"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x000e, "Shadow", N_("Shadow"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x000e, "Shadow", N_("Shadow"), N_("Shadow"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x000f, "Highlight", N_("Highlight"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x000f, "Highlight", N_("Highlight"), N_("Highlight"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0010, "Saturation", N_("Saturation"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x0010, "Saturation", N_("Saturation"), N_("Saturation"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0011, "Sharpness", N_("Sharpness"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x0011, "Sharpness", N_("Sharpness"), N_("Sharpness"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0012, "FillLight", N_("Fill Light"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x0012, "FillLight", N_("Fill Light"), N_("X3 Fill light"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0014, "ColorAdjustment", N_("Color Adjustment"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x0014, "ColorAdjustment", N_("Color Adjustment"), N_("Color adjustment"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0015, "AdjustmentMode", N_("Adjustment Mode"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x0015, "AdjustmentMode", N_("Adjustment Mode"), N_("Adjustment mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0016, "Quality", N_("Quality"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0016, "Quality", N_("Quality"), N_("Quality"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0017, "Firmware", N_("Firmware"), + sigmaId, makerTags, asciiString, -1, printStripLabel}, + {0x0017, "Firmware", N_("Firmware"), N_("Firmware"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0018, "Software", N_("Software"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0018, "Software", N_("Software"), N_("Software"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0019, "AutoBracket", N_("Auto Bracket"), + sigmaId, makerTags, asciiString, -1, printValue}, + {0x0019, "AutoBracket", N_("Auto Bracket"), N_("Auto bracket"), - sigmaId, makerTags, asciiString, -1, printValue), + sigmaId, makerTags, asciiString, -1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "(UnknownSigmaMakerNoteTag)", + {0xffff, "(UnknownSigmaMakerNoteTag)", "(UnknownSigmaMakerNoteTag)", N_("Unknown SigmaMakerNote tag"), - sigmaId, makerTags, asciiString, -1, printValue) + sigmaId, makerTags, asciiString, -1, printValue}, }; const TagInfo* SigmaMakerNote::tagList() diff --git a/src/sonymn_int.cpp b/src/sonymn_int.cpp index ad53b2be..f48e3f61 100644 --- a/src/sonymn_int.cpp +++ b/src/sonymn_int.cpp @@ -42,7 +42,7 @@ namespace Exiv2 { // -- Standard Sony Makernotes tags --------------------------------------------------------------- //! Lookup table to translate Sony Auto HDR values to readable labels - extern const TagDetails sonyHDRMode[] = { + constexpr TagDetails sonyHDRMode[] = { { 0x00000, N_("Off") }, { 0x10001, N_("Auto") }, { 0x10010, "1" }, @@ -53,7 +53,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony model ID values to readable labels - extern const TagDetails sonyModelId[] = { + constexpr TagDetails sonyModelId[] = { { 2, "DSC-R1" }, { 256, "DSLR-A100" }, { 257, "DSLR-A900" }, @@ -124,7 +124,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony dynamic range optimizer values to readable labels - extern const TagDetails print0xb025[] = { + constexpr TagDetails print0xb025[] = { { 0, N_("Off") }, { 1, N_("Standard") }, { 2, N_("Advanced Auto") }, @@ -142,7 +142,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony exposure mode values to readable labels - extern const TagDetails sonyExposureMode[] = { + constexpr TagDetails sonyExposureMode[] = { { 0, N_("Auto") }, { 1, N_("Portrait") }, { 2, N_("Beach") }, @@ -177,7 +177,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony JPEG Quality values to readable labels - extern const TagDetails sonyJPEGQuality[] = { + constexpr TagDetails sonyJPEGQuality[] = { { 0, N_("Normal") }, { 1, N_("Fine") }, { 2, N_("Extra Fine") }, @@ -185,7 +185,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony anti-blur values to readable labels - extern const TagDetails sonyAntiBlur[] = { + constexpr TagDetails sonyAntiBlur[] = { { 0, N_("Off") }, { 1, N_("On (Continuous)") }, { 2, N_("On (Shooting)") }, @@ -193,21 +193,21 @@ namespace Exiv2 { }; //! Lookup table to translate Sony dynamic range optimizer values to readable labels - extern const TagDetails print0xb04f[] = { + constexpr TagDetails print0xb04f[] = { { 0, N_("Off") }, { 1, N_("Standard") }, { 2, N_("Plus") } }; //! Lookup table to translate Sony Intelligent Auto values to readable labels - extern const TagDetails sonyIntelligentAuto[] = { + constexpr TagDetails sonyIntelligentAuto[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("Advanced") } }; //! Lookup table to translate Sony WB values to readable labels - extern const TagDetails sonyWhiteBalance[] = { + constexpr TagDetails sonyWhiteBalance[] = { { 0, N_("Auto") }, { 4, N_("Manual") }, { 5, N_("Daylight") }, @@ -224,7 +224,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony AF mode values to readable labels - extern const TagDetails sonyFocusMode[] = { + constexpr TagDetails sonyFocusMode[] = { { 1, "AF-S" }, { 2, "AF-C" }, { 4, N_("Permanent-AF") }, @@ -232,7 +232,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony AF mode values to readable labels - extern const TagDetails sonyAFMode[] = { + constexpr TagDetails sonyAFMode[] = { { 0, N_("Default") }, { 1, N_("Multi AF") }, { 2, N_("Center AF") }, @@ -245,14 +245,14 @@ namespace Exiv2 { }; //! Lookup table to translate Sony AF illuminator values to readable labels - extern const TagDetails sonyAFIlluminator[] = { + constexpr TagDetails sonyAFIlluminator[] = { { 0, N_("Off") }, { 1, N_("Auto") }, { 65535, N_("n/a") } }; //! Lookup table to translate Sony macro mode values to readable labels - extern const TagDetails sonyMacroMode[] = { + constexpr TagDetails sonyMacroMode[] = { { 0, N_("Off") }, { 1, N_("On") }, { 2, N_("Close Focus") }, @@ -260,7 +260,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony flash level values to readable labels - extern const TagDetails sonyFlashLevel[] = { + constexpr TagDetails sonyFlashLevel[] = { { -32768, N_("Low") }, { -1, N_("n/a") }, { 0, N_("Normal") }, @@ -268,7 +268,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony release mode values to readable labels - extern const TagDetails sonyReleaseMode[] = { + constexpr TagDetails sonyReleaseMode[] = { { 0, N_("Normal") }, { 2, N_("Burst") }, { 5, N_("Exposure Bracketing") }, @@ -277,13 +277,13 @@ namespace Exiv2 { }; //! Lookup table to translate Sony sequence number values to readable labels - extern const TagDetails sonySequenceNumber[] = { + constexpr TagDetails sonySequenceNumber[] = { { 0, N_("Single") }, { 65535, N_("n/a") } }; //! Lookup table to translate Sony long exposure noise reduction values to readable labels - extern const TagDetails sonyLongExposureNoiseReduction[] = { + constexpr TagDetails sonyLongExposureNoiseReduction[] = { { 0, N_("Off") }, { 1, N_("On") }, { 65535, N_("n/a") } @@ -323,169 +323,169 @@ namespace Exiv2 { } // Sony MakerNote Tag Info - const TagInfo SonyMakerNote::tagInfo_[] = { - TagInfo(0x0102, "Quality", N_("Image Quality"), + constexpr TagInfo SonyMakerNote::tagInfo_[] = { + {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality), - TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality}, + {0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), - sony1Id, makerTags, signedRational, -1, print0x9204), - TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"), + sony1Id, makerTags, signedRational, -1, print0x9204}, + {0x0105, "Teleconverter", N_("Teleconverter Model"), N_("Teleconverter Model"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel), - TagInfo(0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel}, + {0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune Value"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0114, "CameraSettings", N_("Camera Settings"), + sony1Id, makerTags, unsignedLong, -1, printValue}, + {0x0114, "CameraSettings", N_("Camera Settings"), N_("Camera Settings"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0115, "WhiteBalance", N_("White Balance"), + sony1Id, makerTags, undefined, -1, printValue}, + {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd), - TagInfo(0x0116, "0x0116", "0x0116", + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd}, + {0x0116, "0x0116", "0x0116", N_("Unknown"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0E00, "PrintIM", N_("Print IM"), + sony1Id, makerTags, undefined, -1, printValue}, + {0x0E00, "PrintIM", N_("Print IM"), N_("PrintIM information"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x1000, "MultiBurstMode", N_("Multi Burst Mode"), + sony1Id, makerTags, undefined, -1, printValue}, + {0x1000, "MultiBurstMode", N_("Multi Burst Mode"), N_("Multi Burst Mode"), - sony1Id, makerTags, undefined, -1, printMinoltaSonyBoolValue), - TagInfo(0x1001, "MultiBurstImageWidth", N_("Multi Burst Image Width"), + sony1Id, makerTags, undefined, -1, printMinoltaSonyBoolValue}, + {0x1001, "MultiBurstImageWidth", N_("Multi Burst Image Width"), N_("Multi Burst Image Width"), - sony1Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1002, "MultiBurstImageHeight", N_("Multi Burst Image Height"), + sony1Id, makerTags, unsignedShort, -1, printValue}, + {0x1002, "MultiBurstImageHeight", N_("Multi Burst Image Height"), N_("Multi Burst Image Height"), - sony1Id, makerTags, unsignedShort, -1, printValue), + sony1Id, makerTags, unsignedShort, -1, printValue}, // TODO : Implement Panorama tags decoding. - TagInfo(0x1003, "Panorama", N_("Panorama"), + {0x1003, "Panorama", N_("Panorama"), N_("Panorama"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x2000, "0x2000", "0x2000", + sony1Id, makerTags, undefined, -1, printValue}, + {0x2000, "0x2000", "0x2000", N_("Unknown"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x2001, "PreviewImage", N_("Preview Image"), + sony1Id, makerTags, undefined, -1, printValue}, + {0x2001, "PreviewImage", N_("Preview Image"), N_("JPEG preview image"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x2002, "0x2002", "0x2002", + sony1Id, makerTags, undefined, -1, printValue}, + {0x2002, "0x2002", "0x2002", N_("Unknown"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2003, "0x2003", "0x2003", + sony1Id, makerTags, unsignedLong, -1, printValue}, + {0x2003, "0x2003", "0x2003", N_("Unknown"), - sony1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x2004, "Contrast", "Contrast", + sony1Id, makerTags, asciiString, -1, printValue}, + {0x2004, "Contrast", "Contrast", N_("Contrast"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2005, "Saturation", "Saturation", + sony1Id, makerTags, signedLong, -1, printValue}, + {0x2005, "Saturation", "Saturation", N_("Saturation"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2006, "0x2006", "0x2006", + sony1Id, makerTags, signedLong, -1, printValue}, + {0x2006, "0x2006", "0x2006", N_("Unknown"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2007, "0x2007", "0x2007", + sony1Id, makerTags, signedLong, -1, printValue}, + {0x2007, "0x2007", "0x2007", N_("Unknown"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2008, "0x2008", "0x2008", + sony1Id, makerTags, signedLong, -1, printValue}, + {0x2008, "0x2008", "0x2008", N_("Unknown"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2009, "0x2009", "0x2009", + sony1Id, makerTags, signedLong, -1, printValue}, + {0x2009, "0x2009", "0x2009", N_("Unknown"), - sony1Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x200A, "AutoHDR", N_("Auto HDR"), + sony1Id, makerTags, unsignedShort, -1, printValue}, + {0x200A, "AutoHDR", N_("Auto HDR"), N_("High Definition Range Mode"), - sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(sonyHDRMode)), + sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(sonyHDRMode)}, // TODO : Implement Shot Info tags decoding. - TagInfo(0x3000, "ShotInfo", N_("Shot Info"), + {0x3000, "ShotInfo", N_("Shot Info"), N_("Shot Information"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0xB000, "FileFormat", N_("File Format"), + sony1Id, makerTags, undefined, -1, printValue}, + {0xB000, "FileFormat", N_("File Format"), N_("File Format"), - sony1Id, makerTags, unsignedByte, -1, print0xb000), - TagInfo(0xB001, "SonyModelID", N_("Sony Model ID"), + sony1Id, makerTags, unsignedByte, -1, print0xb000}, + {0xB001, "SonyModelID", N_("Sony Model ID"), N_("Sony Model ID"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyModelId)), - TagInfo(0xB020, "ColorReproduction", N_("Color Reproduction"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyModelId)}, + {0xB020, "ColorReproduction", N_("Color Reproduction"), N_("Color Reproduction"), - sony1Id, makerTags, asciiString, -1, printValue), - TagInfo(0xb021, "ColorTemperature", N_("Color Temperature"), + sony1Id, makerTags, asciiString, -1, printValue}, + {0xb021, "ColorTemperature", N_("Color Temperature"), N_("Color Temperature"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xB022, "ColorCompensationFilter", N_("Color Compensation Filter"), + sony1Id, makerTags, unsignedLong, -1, printValue}, + {0xB022, "ColorCompensationFilter", N_("Color Compensation Filter"), N_("Color Compensation Filter: negative is green, positive is magenta"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xB023, "SceneMode", N_("Scene Mode"), + sony1Id, makerTags, unsignedLong, -1, printValue}, + {0xB023, "SceneMode", N_("Scene Mode"), N_("Scene Mode"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonySceneMode), - TagInfo(0xB024, "ZoneMatching", N_("Zone Matching"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonySceneMode}, + {0xB024, "ZoneMatching", N_("Zone Matching"), N_("Zone Matching"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching), - TagInfo(0xB025, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching}, + {0xB025, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), N_("Dynamic Range Optimizer"), - sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(print0xb025)), - TagInfo(0xB026, "ImageStabilization", N_("Image Stabilization"), + sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(print0xb025)}, + {0xB026, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), - TagInfo(0xB027, "LensID", N_("Lens ID"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, + {0xB027, "LensID", N_("Lens ID"), N_("Lens identifier"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyLensID), - TagInfo(0xB028, "MinoltaMakerNote", N_("Minolta MakerNote"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyLensID}, + {0xB028, "MinoltaMakerNote", N_("Minolta MakerNote"), N_("Minolta MakerNote"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0xB029, "ColorMode", N_("Color Mode"), + sony1Id, makerTags, undefined, -1, printValue}, + {0xB029, "ColorMode", N_("Color Mode"), N_("Color Mode"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyColorMode), - TagInfo(0xB02B, "FullImageSize", N_("Full Image Size"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyColorMode}, + {0xB02B, "FullImageSize", N_("Full Image Size"), N_("Full Image Size"), - sony1Id, makerTags, unsignedLong, -1, printImageSize), - TagInfo(0xB02C, "PreviewImageSize", N_("Preview Image Size"), + sony1Id, makerTags, unsignedLong, -1, printImageSize}, + {0xB02C, "PreviewImageSize", N_("Preview Image Size"), N_("Preview image size"), - sony1Id, makerTags, unsignedLong, -1, printImageSize), - TagInfo(0xB040, "Macro", N_("Macro"), + sony1Id, makerTags, unsignedLong, -1, printImageSize}, + {0xB040, "Macro", N_("Macro"), N_("Macro"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyMacroMode)), - TagInfo(0xB041, "ExposureMode", N_("Exposure Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyMacroMode)}, + {0xB041, "ExposureMode", N_("Exposure Mode"), N_("Exposure Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyExposureMode)), - TagInfo(0xB042, "FocusMode", N_("Focus Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyExposureMode)}, + {0xB042, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyFocusMode)), - TagInfo(0xB043, "AFMode", N_("AF Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyFocusMode)}, + {0xB043, "AFMode", N_("AF Mode"), N_("AF Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFMode)), - TagInfo(0xB044, "AFIlluminator", N_("AF Illuminator"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFMode)}, + {0xB044, "AFIlluminator", N_("AF Illuminator"), N_("AF Illuminator"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFIlluminator)), - TagInfo(0xB047, "JPEGQuality", N_("JPEG Quality"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFIlluminator)}, + {0xB047, "JPEGQuality", N_("JPEG Quality"), N_("JPEG Quality"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyJPEGQuality)), - TagInfo(0xB048, "FlashLevel", N_("Flash Level"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyJPEGQuality)}, + {0xB048, "FlashLevel", N_("Flash Level"), N_("Flash Level"), - sony1Id, makerTags, signedShort, -1, EXV_PRINT_TAG(sonyFlashLevel)), - TagInfo(0xB049, "ReleaseMode", N_("Release Mode"), + sony1Id, makerTags, signedShort, -1, EXV_PRINT_TAG(sonyFlashLevel)}, + {0xB049, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyReleaseMode)), - TagInfo(0xB04A, "SequenceNumber", N_("Sequence Number"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyReleaseMode)}, + {0xB04A, "SequenceNumber", N_("Sequence Number"), N_("Shot number in continuous burst mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonySequenceNumber)), - TagInfo(0xB04B, "AntiBlur", N_("Anti-Blur"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonySequenceNumber)}, + {0xB04B, "AntiBlur", N_("Anti-Blur"), N_("Anti-Blur"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAntiBlur)), - TagInfo(0xB04E, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAntiBlur)}, + {0xB04E, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), N_("Long Exposure Noise Reduction"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyLongExposureNoiseReduction)), - TagInfo(0xB04F, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyLongExposureNoiseReduction)}, + {0xB04F, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), N_("Dynamic Range Optimizer"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(print0xb04f)), - TagInfo(0xB052, "IntelligentAuto", N_("Intelligent Auto"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(print0xb04f)}, + {0xB052, "IntelligentAuto", N_("Intelligent Auto"), N_("Intelligent Auto"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyIntelligentAuto)), - TagInfo(0xB054, "WhiteBalance2", N_("White Balance 2"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyIntelligentAuto)}, + {0xB054, "WhiteBalance2", N_("White Balance 2"), N_("White balance 2"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyWhiteBalance)), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyWhiteBalance)}, // End of list marker - TagInfo(0xffff, "(UnknownSony1MakerNoteTag)", "(UnknownSony1MakerNoteTag)", + {0xffff, "(UnknownSony1MakerNoteTag)", "(UnknownSony1MakerNoteTag)", N_("Unknown Sony1MakerNote tag"), - sony1Id, makerTags, asciiString, -1, printValue) + sony1Id, makerTags, asciiString, -1, printValue}, }; const TagInfo* SonyMakerNote::tagList() @@ -496,7 +496,7 @@ namespace Exiv2 { // -- Sony camera settings --------------------------------------------------------------- //! Lookup table to translate Sony camera settings drive mode values to readable labels - extern const TagDetails sonyDriveModeStd[] = { + constexpr TagDetails sonyDriveModeStd[] = { { 0x01, N_("Single Frame") }, { 0x02, N_("Continuous High") }, { 0x04, N_("Self-timer 10 sec") }, @@ -514,7 +514,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony camera settings focus mode values to readable labels - extern const TagDetails sonyCSFocusMode[] = { + constexpr TagDetails sonyCSFocusMode[] = { { 0, N_("Manual") }, { 1, "AF-S" }, { 2, "AF-C" }, @@ -522,14 +522,14 @@ namespace Exiv2 { }; //! Lookup table to translate Sony camera settings metering mode values to readable labels - extern const TagDetails sonyMeteringMode[] = { + constexpr TagDetails sonyMeteringMode[] = { { 1, N_("Multi-segment") }, { 2, N_("Center weighted average") }, { 4, N_("Spot") } }; //! Lookup table to translate Sony camera settings creative style values to readable labels - extern const TagDetails sonyCreativeStyle[] = { + constexpr TagDetails sonyCreativeStyle[] = { { 1, N_("Standard") }, { 2, N_("Vivid") }, { 3, N_("Portrait") }, @@ -547,19 +547,19 @@ namespace Exiv2 { }; //! Lookup table to translate Sony camera settings flash mode values to readable labels - extern const TagDetails sonyFlashMode[] = { + constexpr TagDetails sonyFlashMode[] = { { 0, N_("ADI") }, { 1, N_("TTL") }, }; //! Lookup table to translate Sony AF illuminator values to readable labels - extern const TagDetails sonyAFIlluminatorCS[] = { + constexpr TagDetails sonyAFIlluminatorCS[] = { { 0, N_("Auto") }, { 1, N_("Off") } }; //! Lookup table to translate Sony camera settings image style values to readable labels - extern const TagDetails sonyImageStyle[] = { + constexpr TagDetails sonyImageStyle[] = { { 1, N_("Standard") }, { 2, N_("Vivid") }, { 3, N_("Portrait") }, @@ -578,7 +578,7 @@ namespace Exiv2 { }; //! Lookup table to translate Sony camera settings exposure program values to readable labels - extern const TagDetails sonyExposureProgram[] = { + constexpr TagDetails sonyExposureProgram[] = { { 0, N_("Auto") }, { 1, N_("Manual") }, { 2, N_("Program AE") }, @@ -596,20 +596,20 @@ namespace Exiv2 { }; //! Lookup table to translate Sony camera settings image size values to readable labels - extern const TagDetails sonyImageSize[] = { + constexpr TagDetails sonyImageSize[] = { { 1, N_("Large") }, { 2, N_("Medium") }, { 3, N_("Small") } }; //! Lookup table to translate Sony aspect ratio values to readable labels - extern const TagDetails sonyAspectRatio[] = { + constexpr TagDetails sonyAspectRatio[] = { { 1, "3:2" }, { 2, "16:9" } }; //! Lookup table to translate Sony exposure level increments values to readable labels - extern const TagDetails sonyExposureLevelIncrements[] = { + constexpr TagDetails sonyExposureLevelIncrements[] = { { 33, "1/3 EV" }, { 50, "1/2 EV" } }; @@ -620,106 +620,106 @@ namespace Exiv2 { // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. - const TagInfo SonyMakerNote::tagInfoCs_[] = { + constexpr TagInfo SonyMakerNote::tagInfoCs_[] = { // NOTE: A700 only - TagInfo(0x0004, "DriveMode", N_("Drive Mode"), + {0x0004, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeStd)), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeStd)}, // NOTE: A700 only - TagInfo(0x0006, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + {0x0006, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune"), - sony1CsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0010, "FocusMode", N_("Focus Mode"), + sony1CsId, makerTags, signedShort, 1, printValue}, + {0x0010, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)), - TagInfo(0x0011, "AFAreaMode", N_("AF Area Mode"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)}, + {0x0011, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), - TagInfo(0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode}, + {0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), - TagInfo(0x0015, "MeteringMode", N_("Metering Mode"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, + {0x0015, "MeteringMode", N_("Metering Mode"), N_("Metering Mode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)), - TagInfo(0x0016, "ISOSetting", N_("ISO Setting"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)}, + {0x0016, "ISOSetting", N_("ISO Setting"), N_("ISO Setting"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0018, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x0018, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), N_("Dynamic Range Optimizer Mode"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0019, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + {0x0019, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), N_("Dynamic Range Optimizer Level"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001A, "CreativeStyle", N_("Creative Style"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x001A, "CreativeStyle", N_("Creative Style"), N_("Creative Style"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)), - TagInfo(0x001C, "Sharpness", N_("Sharpness"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)}, + {0x001C, "Sharpness", N_("Sharpness"), N_("Sharpness"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001D, "Contrast", N_("Contrast"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x001D, "Contrast", N_("Contrast"), N_("Contrast"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001E, "Saturation", N_("Saturation"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x001E, "Saturation", N_("Saturation"), N_("Saturation"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001F, "ZoneMatchingValue", N_("Zone Matching Value"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x001F, "ZoneMatchingValue", N_("Zone Matching Value"), N_("Zone Matching Value"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0022, "Brightness", N_("Brightness"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x0022, "Brightness", N_("Brightness"), N_("Brightness"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0023, "FlashMode", N_("FlashMode"), + sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x0023, "FlashMode", N_("FlashMode"), N_("FlashMode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)}, // NOTE: A700 only - TagInfo(0x0028, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), + {0x0028, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), N_("Priority Setup Shutter Release"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease}, // NOTE: A700 only - TagInfo(0x0029, "AFIlluminator", N_("AF Illuminator"), + {0x0029, "AFIlluminator", N_("AF Illuminator"), N_("AF Illuminator"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFIlluminatorCS)), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFIlluminatorCS)}, // NOTE: A700 only - TagInfo(0x002A, "AFWithShutter", N_("AF With Shutter"), + {0x002A, "AFWithShutter", N_("AF With Shutter"), N_("AF With Shutter"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, // NOTE: A700 only - TagInfo(0x002B, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), + {0x002B, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), N_("Long Exposure Noise Reduction"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, // NOTE: A700 only - TagInfo(0x002C, "HighISONoiseReduction", N_("High ISO NoiseReduction"), + {0x002C, "HighISONoiseReduction", N_("High ISO NoiseReduction"), N_("High ISO NoiseReduction"), - sony1CsId, makerTags, unsignedShort, 1, printValue), + sony1CsId, makerTags, unsignedShort, 1, printValue}, // NOTE: A700 only - TagInfo(0x002D, "ImageStyle", N_("Image Style"), + {0x002D, "ImageStyle", N_("Image Style"), N_("Image Style"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageStyle)), - TagInfo(0x003C, "ExposureProgram", N_("Exposure Program"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageStyle)}, + {0x003C, "ExposureProgram", N_("Exposure Program"), N_("Exposure Program"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)), - TagInfo(0x003D, "ImageStabilization", N_("Image Stabilization"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)}, + {0x003D, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x003F, "Rotation", N_("Rotation"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x003F, "Rotation", N_("Rotation"), N_("Rotation"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyRotation), - TagInfo(0x0054, "SonyImageSize", N_("Sony Image Size"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyRotation}, + {0x0054, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)), - TagInfo(0x0055, "AspectRatio", N_("Aspect Ratio"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)}, + {0x0055, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAspectRatio)), - TagInfo(0x0056, "Quality", N_("Quality"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAspectRatio)}, + {0x0056, "Quality", N_("Quality"), N_("Quality"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs), - TagInfo(0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs}, + {0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Exposure Level Increments"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureLevelIncrements)), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureLevelIncrements)}, // End of list marker - TagInfo(0xffff, "(UnknownSony1CsTag)", "(UnknownSony1CsTag)", + {0xffff, "(UnknownSony1CsTag)", "(UnknownSony1CsTag)", N_("Unknown Sony1 Camera Settings tag"), - sony1CsId, makerTags, unsignedShort, 1, printValue) + sony1CsId, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* SonyMakerNote::tagListCs() @@ -734,56 +734,56 @@ namespace Exiv2 { // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. - const TagInfo SonyMakerNote::tagInfoCs2_[] = { - TagInfo(0x0010, "FocusMode", N_("Focus Mode"), + constexpr TagInfo SonyMakerNote::tagInfoCs2_[] = { + {0x0010, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)), - TagInfo(0x0011, "AFAreaMode", N_("AF Area Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)}, + {0x0011, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), - TagInfo(0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode}, + {0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), - TagInfo(0x0013, "MeteringMode", N_("Metering Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, + {0x0013, "MeteringMode", N_("Metering Mode"), N_("Metering Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)), - TagInfo(0x0014, "ISOSetting", N_("ISO Setting"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)}, + {0x0014, "ISOSetting", N_("ISO Setting"), N_("ISO Setting"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0016, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, + {0x0016, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), N_("Dynamic Range Optimizer Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0017, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + {0x0017, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), N_("Dynamic Range Optimizer Level"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0018, "CreativeStyle", N_("Creative Style"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, + {0x0018, "CreativeStyle", N_("Creative Style"), N_("Creative Style"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)), - TagInfo(0x0019, "Sharpness", N_("Sharpness"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)}, + {0x0019, "Sharpness", N_("Sharpness"), N_("Sharpness"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001A, "Contrast", N_("Contrast"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, + {0x001A, "Contrast", N_("Contrast"), N_("Contrast"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001B, "Saturation", N_("Saturation"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, + {0x001B, "Saturation", N_("Saturation"), N_("Saturation"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0023, "FlashMode", N_("FlashMode"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, + {0x0023, "FlashMode", N_("FlashMode"), N_("FlashMode"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)), - TagInfo(0x003C, "ExposureProgram", N_("Exposure Program"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)}, + {0x003C, "ExposureProgram", N_("Exposure Program"), N_("Exposure Program"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)), - TagInfo(0x003F, "Rotation", N_("Rotation"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)}, + {0x003F, "Rotation", N_("Rotation"), N_("Rotation"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation), - TagInfo(0x0054, "SonyImageSize", N_("Sony Image Size"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation}, + {0x0054, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)}, // End of list marker - TagInfo(0xffff, "(UnknownSony1Cs2Tag)", "(UnknownSony1Cs2Tag)", + {0xffff, "(UnknownSony1Cs2Tag)", "(UnknownSony1Cs2Tag)", N_("Unknown Sony1 Camera Settings 2 tag"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue) + sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, }; const TagInfo* SonyMakerNote::tagListCs2() @@ -792,13 +792,13 @@ namespace Exiv2 { } //! Sony Tag 9402 Sony2Fp (FocusPosition) - const TagInfo SonyMakerNote::tagInfoFp_[] = { - TagInfo( 0x04, "AmbientTemperature", N_("Ambient Temperature"), N_("Ambient Temperature"), sony2FpId, makerTags, signedByte, 1, printValue), - TagInfo( 0x16, "FocusMode" , N_("Focus Mode") , N_("Focus Mode") , sony2FpId, makerTags, unsignedByte, 1, printValue), - TagInfo( 0x17, "AFAreaMode" , N_("AF Area Mode") , N_("AF Area Mode") , sony2FpId, makerTags, unsignedByte, 1, printValue), - TagInfo( 0x2d, "FocusPosition2" , N_("Focus Position 2") , N_("Focus Position 2") , sony2FpId, makerTags, unsignedByte, 1, printValue), + constexpr TagInfo SonyMakerNote::tagInfoFp_[] = { + { 0x04, "AmbientTemperature", N_("Ambient Temperature"), N_("Ambient Temperature"), sony2FpId, makerTags, signedByte, 1, printValue}, + { 0x16, "FocusMode" , N_("Focus Mode") , N_("Focus Mode") , sony2FpId, makerTags, unsignedByte, 1, printValue}, + { 0x17, "AFAreaMode" , N_("AF Area Mode") , N_("AF Area Mode") , sony2FpId, makerTags, unsignedByte, 1, printValue}, + { 0x2d, "FocusPosition2" , N_("Focus Position 2") , N_("Focus Position 2") , sony2FpId, makerTags, unsignedByte, 1, printValue}, // End of list marker - TagInfo(0xffff, "(Unknownsony2FpTag)", "(Unknownsony2FpTag)" , "(Unknownsony2FpTag)" , sony2FpId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(Unknownsony2FpTag)", "(Unknownsony2FpTag)" , "(Unknownsony2FpTag)" , sony2FpId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* SonyMakerNote::tagListFp() @@ -807,45 +807,45 @@ namespace Exiv2 { } //! Sony Tag 2010 Sony2010 (Miscellaneous) - const TagInfo SonyMakerNote::tagInfo2010e_[] = { - TagInfo(0, "SequenceImageNumber", N_("Sequence Image Number"), N_("Sequence Image Number"), sony2010eId, makerTags, unsignedLong, 1, printValue), - TagInfo(4, "SequenceFileNumber", N_("SequenceFileNumber"), N_("SequenceFileNumber"), sony2010eId, makerTags, unsignedLong, 1, printValue), - TagInfo(8, "ReleaseMode2", N_("ReleaseMode2"), N_("ReleaseMode2"), sony2010eId, makerTags, unsignedLong, 1, printValue), - TagInfo(540, "DigitalZoomRatio", N_("DigitalZoomRatio"), N_("DigitalZoomRatio"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(556, "SonyDateTime", N_("SonyDateTime"), N_("SonyDateTime"), sony2010eId, makerTags, undefined, 1, printValue), - TagInfo(808, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(1208, "MeterInfo", N_("MeterInfo"), N_("MeterInfo"), sony2010eId, makerTags, undefined, 1, printValue), - TagInfo(4444, "ReleaseMode3", N_("ReleaseMode3"), N_("ReleaseMode3"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4448, "ReleaseMode2", N_("ReleaseMode2"), N_("ReleaseMode2"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4456, "SelfTimer", N_("SelfTimer"), N_("SelfTimer"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4460, "FlashMode", N_("FlashMode"), N_("FlashMode"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4466, "StopsAboveBaseISO", N_("StopsAboveBaseISO"), N_("StopsAboveBaseISO"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4468, "BrightnessValue", N_("BrightnessValue"), N_("BrightnessValue"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4472, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4476, "HDRSetting", N_("HDRSetting"), N_("HDRSetting"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4480, "ExposureCompensation", N_("ExposureCompensation"), N_("ExposureCompensation"), sony2010eId, makerTags, signedShort, 1, printValue), - TagInfo(4502, "PictureProfile", N_("PictureProfile"), N_("PictureProfile"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4503, "PictureProfile2", N_("PictureProfile2"), N_("PictureProfile2"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4507, "PictureEffect2", N_("PictureEffect2"), N_("PictureEffect2"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4520, "Quality2", N_("Quality2"), N_("Quality2"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4524, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4525, "ExposureProgram", N_("ExposureProgram"), N_("ExposureProgram"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(4532, "WB_RGBLevels", N_("WB_RGBLevels"), N_("WB_RGBLevels"), sony2010eId, makerTags, unsignedShort, 3, printValue), - TagInfo(4692, "SonyISO", N_("SonyISO"), N_("SonyISO"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4696, "SonyISO2", N_("SonyISO2"), N_("SonyISO2"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4728, "FocalLength", N_("FocalLength"), N_("FocalLength"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4730, "MinFocalLength", N_("MinFocalLength"), N_("MinFocalLength"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4732, "MaxFocalLength", N_("MaxFocalLength"), N_("MaxFocalLength"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(4736, "SonyISO3", N_("SonyISO3"), N_("SonyISO3"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(6256, "DistortionCorrParams", N_("DistortionCorrParams"), N_("DistortionCorrParams"), sony2010eId, makerTags, signedShort, 16, printValue), - TagInfo(6289, "LensFormat", N_("LensFormat"), N_("LensFormat"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(6290, "LensMount", N_("LensMount"), N_("LensMount"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(6291, "LensType2", N_("LensType2"), N_("LensType2"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(6294, "LensType", N_("LensType"), N_("LensType"), sony2010eId, makerTags, unsignedShort, 1, printValue), - TagInfo(6296, "DistortionCorrParamsPresent", N_("DistortionCorrParamsPresent"), N_("DistortionCorrParamsPresent"), sony2010eId, makerTags, unsignedByte, 1, printValue), - TagInfo(6297, "DistortionCorrParamsNumber", N_("DistortionCorrParamsNumber"), N_("DistortionCorrParamsNumber"), sony2010eId, makerTags, unsignedByte, 1, printValue), + constexpr TagInfo SonyMakerNote::tagInfo2010e_[] = { + {0, "SequenceImageNumber", N_("Sequence Image Number"), N_("Sequence Image Number"), sony2010eId, makerTags, unsignedLong, 1, printValue}, + {4, "SequenceFileNumber", N_("SequenceFileNumber"), N_("SequenceFileNumber"), sony2010eId, makerTags, unsignedLong, 1, printValue}, + {8, "ReleaseMode2", N_("ReleaseMode2"), N_("ReleaseMode2"), sony2010eId, makerTags, unsignedLong, 1, printValue}, + {540, "DigitalZoomRatio", N_("DigitalZoomRatio"), N_("DigitalZoomRatio"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {556, "SonyDateTime", N_("SonyDateTime"), N_("SonyDateTime"), sony2010eId, makerTags, undefined, 1, printValue}, + {808, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {1208, "MeterInfo", N_("MeterInfo"), N_("MeterInfo"), sony2010eId, makerTags, undefined, 1, printValue}, + {4444, "ReleaseMode3", N_("ReleaseMode3"), N_("ReleaseMode3"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4448, "ReleaseMode2", N_("ReleaseMode2"), N_("ReleaseMode2"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4456, "SelfTimer", N_("SelfTimer"), N_("SelfTimer"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4460, "FlashMode", N_("FlashMode"), N_("FlashMode"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4466, "StopsAboveBaseISO", N_("StopsAboveBaseISO"), N_("StopsAboveBaseISO"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4468, "BrightnessValue", N_("BrightnessValue"), N_("BrightnessValue"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4472, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4476, "HDRSetting", N_("HDRSetting"), N_("HDRSetting"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4480, "ExposureCompensation", N_("ExposureCompensation"), N_("ExposureCompensation"), sony2010eId, makerTags, signedShort, 1, printValue}, + {4502, "PictureProfile", N_("PictureProfile"), N_("PictureProfile"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4503, "PictureProfile2", N_("PictureProfile2"), N_("PictureProfile2"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4507, "PictureEffect2", N_("PictureEffect2"), N_("PictureEffect2"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4520, "Quality2", N_("Quality2"), N_("Quality2"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4524, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4525, "ExposureProgram", N_("ExposureProgram"), N_("ExposureProgram"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {4532, "WB_RGBLevels", N_("WB_RGBLevels"), N_("WB_RGBLevels"), sony2010eId, makerTags, unsignedShort, 3, printValue}, + {4692, "SonyISO", N_("SonyISO"), N_("SonyISO"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4696, "SonyISO2", N_("SonyISO2"), N_("SonyISO2"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4728, "FocalLength", N_("FocalLength"), N_("FocalLength"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4730, "MinFocalLength", N_("MinFocalLength"), N_("MinFocalLength"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4732, "MaxFocalLength", N_("MaxFocalLength"), N_("MaxFocalLength"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {4736, "SonyISO3", N_("SonyISO3"), N_("SonyISO3"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {6256, "DistortionCorrParams", N_("DistortionCorrParams"), N_("DistortionCorrParams"), sony2010eId, makerTags, signedShort, 16, printValue}, + {6289, "LensFormat", N_("LensFormat"), N_("LensFormat"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {6290, "LensMount", N_("LensMount"), N_("LensMount"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {6291, "LensType2", N_("LensType2"), N_("LensType2"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {6294, "LensType", N_("LensType"), N_("LensType"), sony2010eId, makerTags, unsignedShort, 1, printValue}, + {6296, "DistortionCorrParamsPresent", N_("DistortionCorrParamsPresent"), N_("DistortionCorrParamsPresent"), sony2010eId, makerTags, unsignedByte, 1, printValue}, + {6297, "DistortionCorrParamsNumber", N_("DistortionCorrParamsNumber"), N_("DistortionCorrParamsNumber"), sony2010eId, makerTags, unsignedByte, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownSony2010eTag)", "(UnknownSony2010eTag)" , "(UnknownSony2010eTag)" , sony2010eId, makerTags, unsignedByte, 1, printValue) + {0xffff, "(UnknownSony2010eTag)", "(UnknownSony2010eTag)" , "(UnknownSony2010eTag)" , sony2010eId, makerTags, unsignedByte, 1, printValue}, }; const TagInfo* SonyMakerNote::tagList2010e() diff --git a/src/tags.cpp b/src/tags.cpp index 943a5a9f..267d35de 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -57,7 +57,7 @@ namespace Exiv2 { //! List of all defined Exif sections. - extern const SectionInfo sectionInfo[] = { + constexpr SectionInfo sectionInfo[] = { { sectionIdNotSet, "(UnknownSection)", N_("Unknown section") }, { imgStruct, "ImageStructure", N_("Image data structure") }, { recOffset, "RecordingOffset", N_("Recording offset") }, @@ -94,9 +94,9 @@ namespace Exiv2 { } // Unknown Tag - static const TagInfo unknownTag(0xffff, "Unknown tag", N_("Unknown tag"), + static const TagInfo unknownTag{0xffff, "Unknown tag", N_("Unknown tag"), N_("Unknown tag"), - ifdIdNotSet, sectionIdNotSet, asciiString, -1, printValue); + ifdIdNotSet, sectionIdNotSet, asciiString, -1, printValue}; } // namespace Internal } // namespace Exiv2 @@ -119,22 +119,6 @@ namespace Exiv2 { return 0 == strcmp(groupName.g_.c_str(), groupName_); } - TagInfo::TagInfo( - uint16_t tag, - const char* name, - const char* title, - const char* desc, - int ifdId, - int sectionId, - TypeId typeId, - int16_t count, - PrintFct printFct - ) - : tag_(tag), name_(name), title_(title), desc_(desc), ifdId_(ifdId), - sectionId_(sectionId), typeId_(typeId), count_(count), printFct_(printFct) - { - } - const char* ExifTags::sectionName(const ExifKey& key) { const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); diff --git a/src/tags_int.cpp b/src/tags_int.cpp index cac13f94..f72e68dd 100644 --- a/src/tags_int.cpp +++ b/src/tags_int.cpp @@ -58,7 +58,7 @@ namespace Exiv2 { namespace Internal { //! List of all known Exif groups. Important: Group name (3rd column) must be unique! - extern const GroupInfo groupInfo[] = { + constexpr GroupInfo groupInfo[] = { { ifdIdNotSet, "Unknown IFD", "Unknown", 0 }, { ifd0Id, "IFD0", "Image", ifdTagList }, { ifd1Id, "IFD1", "Thumbnail", ifdTagList }, @@ -172,14 +172,14 @@ namespace Exiv2 { }; //! Units for measuring X and Y resolution, tags 0x0128, 0xa210 - extern const TagDetails exifUnit[] = { + constexpr TagDetails exifUnit[] = { { 1, N_("none") }, { 2, N_("inch") }, { 3, N_("cm") } }; //! Orientation, tag 0x0112 - extern const TagDetails exifOrientation[] = { + constexpr TagDetails exifOrientation[] = { { 1, N_("top, left") }, { 2, N_("top, right") }, { 3, N_("bottom, right") }, @@ -192,13 +192,13 @@ namespace Exiv2 { }; //! PlanarConfiguration, tag 0x011c - extern const TagDetails exifPlanarConfiguration[] = { + constexpr TagDetails exifPlanarConfiguration[] = { { 1, N_("Chunky") }, { 2, N_("Planar") } }; //! Predictor, tag 0x013d - extern const TagDetails exifPredictor[] = { + constexpr TagDetails exifPredictor[] = { { 1, N_("No prediction scheme used") }, { 2, N_("Horizontal differencing") }, { 3, N_("Floating point horizontal differencing") }, // TIFF Technical Note 3 @@ -209,13 +209,13 @@ namespace Exiv2 { }; //! InkSet, tag 0x014c - extern const TagDetails exifInkSet[] = { + constexpr TagDetails exifInkSet[] = { { 1, N_("CMYK") }, { 2, N_("not CMYK") } }; //! NewSubfileType, TIFF tag 0x00fe - this is actually a bitmask - extern const TagDetails exifNewSubfileType[] = { + constexpr TagDetails exifNewSubfileType[] = { { 0, N_("Primary image") }, { 1, N_("Thumbnail/Preview image") }, { 2, N_("Primary image, Multi page file") }, @@ -232,14 +232,14 @@ namespace Exiv2 { }; //! SubfileType, TIFF tag 0x00ff - extern const TagDetails exifSubfileType[] = { + constexpr TagDetails exifSubfileType[] = { { 1, N_("Full-resolution image data") }, { 2, N_("Reduced-resolution image data") }, { 3, N_("A single page of a multi-page image") } }; //! Compression, tag 0x0103 - extern const TagDetails exifCompression[] = { + constexpr TagDetails exifCompression[] = { { 1, N_("Uncompressed") }, { 2, N_("CCITT RLE") }, { 3, N_("T4/Group 3 Fax") }, @@ -276,7 +276,7 @@ namespace Exiv2 { }; //! PhotometricInterpretation, tag 0x0106 - extern const TagDetails exifPhotometricInterpretation[] = { + constexpr TagDetails exifPhotometricInterpretation[] = { { 0, N_("White Is Zero") }, { 1, N_("Black Is Zero") }, { 2, N_("RGB") }, @@ -296,7 +296,7 @@ namespace Exiv2 { }; //! Thresholding, tag 0x0107 - extern const TagDetails exifThresholding[] = { + constexpr TagDetails exifThresholding[] = { { 1, N_("No dithering or halftoning") }, { 2, N_("Ordered dither or halftone technique") }, { 3, N_("Randomized process") } @@ -304,7 +304,7 @@ namespace Exiv2 { //! SampleFormat, tag 0x0153 - extern const TagDetails exifSampleFormat[] = { + constexpr TagDetails exifSampleFormat[] = { { 1, N_("Unsigned integer data") }, { 2, N_("Two's complement signed integer data") }, { 3, N_("IEEE floating point data") }, @@ -313,13 +313,13 @@ namespace Exiv2 { }; //! Indexed, tag 0x015a - extern const TagDetails exifIndexed[] = { + constexpr TagDetails exifIndexed[] = { { 0, N_("Not indexed") }, { 1, N_("Indexed") } }; //! exifJpegLosslessPredictor, tag 0x0205 - extern const TagDetails exifJpegLosslessPredictor[] = { + constexpr TagDetails exifJpegLosslessPredictor[] = { { 1, N_("A") }, { 2, N_("B") }, { 3, N_("C") }, @@ -330,7 +330,7 @@ namespace Exiv2 { }; //! LightSource, tag 0x9208 - extern const TagDetails exifLightSource[] = { + constexpr TagDetails exifLightSource[] = { { 0, N_("Unknown") }, { 1, N_("Daylight") }, { 2, N_("Fluorescent") }, @@ -355,7 +355,7 @@ namespace Exiv2 { }; //! Flash, Exif tag 0x9209 - extern const TagDetails exifFlash[] = { + constexpr TagDetails exifFlash[] = { { 0x00, N_("No flash") }, { 0x01, N_("Fired") }, { 0x05, N_("Fired, return light not detected") }, @@ -386,7 +386,7 @@ namespace Exiv2 { }; //! FocalPlaneResolutionUnit, TIFF/EP tag 0x9210 - extern const TagDetails tiffFocalPlaneResolutionUnit[] = { + constexpr TagDetails tiffFocalPlaneResolutionUnit[] = { { 1, N_("inch") }, { 2, N_("meter") }, { 3, N_("centimeter") }, @@ -395,7 +395,7 @@ namespace Exiv2 { }; //! SensingMethod, TIFF/EP tag 0x9217 - extern const TagDetails tiffSensingMethod[] = { + constexpr TagDetails tiffSensingMethod[] = { { 0, N_("Undefined") }, { 1, N_("Monochrome area") }, { 2, N_("One-chip color area") }, @@ -408,7 +408,7 @@ namespace Exiv2 { }; //! CFALayout, DNG tag 0xc617 - extern const TagDetails dngCfaLayout[] = { + constexpr TagDetails dngCfaLayout[] = { { 1, N_("Rectangular (or square) layout") }, { 2, N_("Staggered layout A: even columns are offset down by 1/2 row") }, { 3, N_("Staggered layout B: even columns are offset up by 1/2 row") }, @@ -421,19 +421,19 @@ namespace Exiv2 { }; //! MakerNoteSafety, DNG tag 0xc635 - extern const TagDetails dngMakerNoteSafety[] = { + constexpr TagDetails dngMakerNoteSafety[] = { { 0, N_("Unsafe") }, { 1, N_("Safe") } }; //! ColorimetricReference, DNG 1.2 tag 0xc6bf - extern const TagDetails dngColorimetricReference[] = { + constexpr TagDetails dngColorimetricReference[] = { { 0, N_("XYZ values are scene-referred") }, { 1, N_("XYZ values are output-referred") } }; //! ProfileEmbedPolicy, DNG 1.2 tag 0xc6fd - extern const TagDetails dngProfileEmbedPolicy[] = { + constexpr TagDetails dngProfileEmbedPolicy[] = { { 0, N_("Allow copying") }, { 1, N_("Embed if used") }, { 2, N_("Embed never") }, @@ -441,7 +441,7 @@ namespace Exiv2 { }; //! PreviewColorSpace, DNG 1.2 tag 0xc71a - extern const TagDetails dngPreviewColorSpace[] = { + constexpr TagDetails dngPreviewColorSpace[] = { { 0, N_("Unknown") }, { 1, N_("Gray Gamma 2.2") }, { 2, N_("sRGB") }, @@ -450,32 +450,32 @@ namespace Exiv2 { }; //! ProfileEncoding, DNG 1.4 tags 0xc7a3, 0xc7a4 - extern const TagDetails dngProfileEncoding[] = { + constexpr TagDetails dngProfileEncoding[] = { { 0, N_("Linear") }, { 1, N_("sRGB") } }; //! DefaultBlackRender, DNG 1.4 tag 0xc7a6 - extern const TagDetails dngDefaultBlackRender[] = { + constexpr TagDetails dngDefaultBlackRender[] = { { 0, N_("Auto") }, { 1, N_("None") } }; //! DepthFormat, DNG 1.5 tag 0xc7e9 - extern const TagDetails dngDepthFormat[] = { + constexpr TagDetails dngDepthFormat[] = { { 0, N_("Unknown") }, { 1, N_("Linear") }, { 2, N_("Inverse") } }; //! DepthUnits, DNG 1.5 tag 0xc7ec - extern const TagDetails dngDepthUnits[] = { + constexpr TagDetails dngDepthUnits[] = { { 0, N_("Unknown") }, { 1, N_("meters") } }; //! DepthMeasureType, DNG 1.5 tag 0xc7ed - extern const TagDetails dngDepthMeasureType[] = { + constexpr TagDetails dngDepthMeasureType[] = { { 0, N_("Unknown") }, { 1, N_("Optical axis") }, { 2, N_("Optical ray") } @@ -483,306 +483,306 @@ namespace Exiv2 { //! Base IFD Tags (IFD0 and IFD1) - static const TagInfo ifdTagInfo[] = { - TagInfo(0x000b, "ProcessingSoftware", N_("Processing Software"), + constexpr TagInfo ifdTagInfo[] = { + {0x000b, "ProcessingSoftware", N_("Processing Software"), N_("The name and version of the software used to post-process " "the picture."), // ACD Systems Digital Imaging tag - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x00fe, "NewSubfileType", N_("New Subfile Type"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x00fe, "NewSubfileType", N_("New Subfile Type"), N_("A general indication of the kind of data contained in this subfile."), - ifd0Id, imgStruct, unsignedLong, 1, EXV_PRINT_TAG(exifNewSubfileType)), // TIFF tag - TagInfo(0x00ff, "SubfileType", N_("Subfile Type"), + ifd0Id, imgStruct, unsignedLong, 1, EXV_PRINT_TAG(exifNewSubfileType)}, // TIFF tag + {0x00ff, "SubfileType", N_("Subfile Type"), N_("A general indication of the kind of data contained in this subfile. " "This field is deprecated. The NewSubfileType field should be used instead."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifSubfileType)), // TIFF tag - TagInfo(0x0100, "ImageWidth", N_("Image Width"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifSubfileType)}, // TIFF tag + {0x0100, "ImageWidth", N_("Image Width"), N_("The number of columns of image data, equal to the number of " "pixels per row. In JPEG compressed data a JPEG marker is " "used instead of this tag."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), - TagInfo(0x0101, "ImageLength", N_("Image Length"), + ifd0Id, imgStruct, unsignedLong, 1, printValue}, + {0x0101, "ImageLength", N_("Image Length"), N_("The number of rows of image data. In JPEG compressed data a " "JPEG marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), - TagInfo(0x0102, "BitsPerSample", N_("Bits per Sample"), + ifd0Id, imgStruct, unsignedLong, 1, printValue}, + {0x0102, "BitsPerSample", N_("Bits per Sample"), N_("The number of bits per image component. In this standard each " "component of the image is 8 bits, so the value for this " "tag is 8. See also . In JPEG compressed data " "a JPEG marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 3, printValue), - TagInfo(0x0103, "Compression", N_("Compression"), + ifd0Id, imgStruct, unsignedShort, 3, printValue}, + {0x0103, "Compression", N_("Compression"), N_("The compression scheme used for the image data. When a " "primary image is JPEG compressed, this designation is " "not necessary and is omitted. When thumbnails use JPEG " "compression, this tag value is set to 6."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifCompression)), - TagInfo(0x0106, "PhotometricInterpretation", N_("Photometric Interpretation"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifCompression)}, + {0x0106, "PhotometricInterpretation", N_("Photometric Interpretation"), N_("The pixel composition. In JPEG compressed data a JPEG " "marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPhotometricInterpretation)), - TagInfo(0x0107, "Thresholding", N_("Thresholding"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPhotometricInterpretation)}, + {0x0107, "Thresholding", N_("Thresholding"), N_("For black and white TIFF files that represent shades of gray, " "the technique used to convert from gray to black and white pixels."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifThresholding)), // TIFF tag - TagInfo(0x0108, "CellWidth", N_("Cell Width"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifThresholding)}, // TIFF tag + {0x0108, "CellWidth", N_("Cell Width"), N_("The width of the dithering or halftoning matrix used to create a " "dithered or halftoned bilevel file."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0109, "CellLength", N_("Cell Length"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x0109, "CellLength", N_("Cell Length"), N_("The length of the dithering or halftoning matrix used to create a " "dithered or halftoned bilevel file."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x010a, "FillOrder", N_("Fill Order"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x010a, "FillOrder", N_("Fill Order"), N_("The logical order of bits within a byte"), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x010d, "DocumentName", N_("Document Name"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x010d, "DocumentName", N_("Document Name"), N_("The name of the document from which this image was scanned"), - ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag - TagInfo(0x010e, "ImageDescription", N_("Image Description"), + ifd0Id, imgStruct, asciiString, 0, printValue}, // TIFF tag + {0x010e, "ImageDescription", N_("Image Description"), N_("A character string giving the title of the image. It may be " "a comment such as \"1988 company picnic\" or " "the like. Two-bytes character codes cannot be used. " "When a 2-bytes code is necessary, the Exif Private tag " " is to be used."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x010f, "Make", N_("Manufacturer"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording " "equipment. This is the manufacturer of the DSC, scanner, " "video digitizer or other equipment that generated the " "image. When the field is left blank, it is treated as unknown."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x0110, "Model", N_("Model"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment. This is the " "model name or number of the DSC, scanner, video digitizer " "or other equipment that generated the image. When the field " "is left blank, it is treated as unknown."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x0111, "StripOffsets", N_("Strip Offsets"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x0111, "StripOffsets", N_("Strip Offsets"), N_("For each strip, the byte offset of that strip. It is " "recommended that this be selected so the number of strip " "bytes does not exceed 64 Kbytes. With JPEG compressed " "data this designation is not needed and is omitted. See also " " and ."), - ifd0Id, recOffset, unsignedLong, -1, printValue), - TagInfo(0x0112, "Orientation", N_("Orientation"), + ifd0Id, recOffset, unsignedLong, -1, printValue}, + {0x0112, "Orientation", N_("Orientation"), N_("The image orientation viewed in terms of rows and columns."), - ifd0Id, imgStruct, unsignedShort, 1, print0x0112), - TagInfo(0x0115, "SamplesPerPixel", N_("Samples per Pixel"), + ifd0Id, imgStruct, unsignedShort, 1, print0x0112}, + {0x0115, "SamplesPerPixel", N_("Samples per Pixel"), N_("The number of components per pixel. Since this standard applies " "to RGB and YCbCr images, the value set for this tag is 3. " "In JPEG compressed data a JPEG marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), - TagInfo(0x0116, "RowsPerStrip", N_("Rows per Strip"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, + {0x0116, "RowsPerStrip", N_("Rows per Strip"), N_("The number of rows per strip. This is the number of rows " "in the image of one strip when an image is divided into " "strips. With JPEG compressed data this designation is not " "needed and is omitted. See also and ."), - ifd0Id, recOffset, unsignedLong, 1, printValue), - TagInfo(0x0117, "StripByteCounts", N_("Strip Byte Count"), + ifd0Id, recOffset, unsignedLong, 1, printValue}, + {0x0117, "StripByteCounts", N_("Strip Byte Count"), N_("The total number of bytes in each strip. With JPEG compressed " "data this designation is not needed and is omitted."), - ifd0Id, recOffset, unsignedLong, -1, printValue), - TagInfo(0x011a, "XResolution", N_("X-Resolution"), + ifd0Id, recOffset, unsignedLong, -1, printValue}, + {0x011a, "XResolution", N_("X-Resolution"), N_("The number of pixels per in the " "direction. When the image resolution is unknown, 72 [dpi] is designated."), - ifd0Id, imgStruct, unsignedRational, 1, printLong), - TagInfo(0x011b, "YResolution", N_("Y-Resolution"), + ifd0Id, imgStruct, unsignedRational, 1, printLong}, + {0x011b, "YResolution", N_("Y-Resolution"), N_("The number of pixels per in the " "direction. The same value as is designated."), - ifd0Id, imgStruct, unsignedRational, 1, printLong), - TagInfo(0x011c, "PlanarConfiguration", N_("Planar Configuration"), + ifd0Id, imgStruct, unsignedRational, 1, printLong}, + {0x011c, "PlanarConfiguration", N_("Planar Configuration"), N_("Indicates whether pixel components are recorded in a chunky " "or planar format. In JPEG compressed files a JPEG marker " "is used instead of this tag. If this field does not exist, " "the TIFF default of 1 (chunky) is assumed."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPlanarConfiguration)), - TagInfo(0x0122, "GrayResponseUnit", N_("Gray Response Unit"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPlanarConfiguration)}, + {0x0122, "GrayResponseUnit", N_("Gray Response Unit"), N_("The precision of the information contained in the GrayResponseCurve."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0123, "GrayResponseCurve", N_("Gray Response Curve"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x0123, "GrayResponseCurve", N_("Gray Response Curve"), N_("For grayscale data, the optical density of each possible pixel value."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0124, "T4Options", N_("T4 Options"), + ifd0Id, imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0124, "T4Options", N_("T4 Options"), N_("T.4-encoding options."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0125, "T6Options", N_("T6 Options"), + ifd0Id, imgStruct, unsignedLong, 1, printValue}, // TIFF tag + {0x0125, "T6Options", N_("T6 Options"), N_("T.6-encoding options."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0128, "ResolutionUnit", N_("Resolution Unit"), + ifd0Id, imgStruct, unsignedLong, 1, printValue}, // TIFF tag + {0x0128, "ResolutionUnit", N_("Resolution Unit"), N_("The unit for measuring and . The same " "unit is used for both and . If " "the image resolution is unknown, 2 (inches) is designated."), - ifd0Id, imgStruct, unsignedShort, 1, printExifUnit), - TagInfo(0x0129, "PageNumber", N_("Page Number"), + ifd0Id, imgStruct, unsignedShort, 1, printExifUnit}, + {0x0129, "PageNumber", N_("Page Number"), N_("The page number of the page from which this image was scanned."), - ifd0Id, imgStruct, unsignedShort, 2, printValue), - TagInfo(0x012d, "TransferFunction", N_("Transfer Function"), + ifd0Id, imgStruct, unsignedShort, 2, printValue}, + {0x012d, "TransferFunction", N_("Transfer Function"), N_("A transfer function for the image, described in tabular style. " "Normally this tag is not necessary, since color space is " "specified in the color space information tag ()."), - ifd0Id, imgCharacter, unsignedShort, 3*256, printValue), - TagInfo(0x0131, "Software", N_("Software"), + ifd0Id, imgCharacter, unsignedShort, 3*256, printValue}, + {0x0131, "Software", N_("Software"), N_("This tag records the name and version of the software or " "firmware of the camera or image input device used to " "generate the image. The detailed format is not specified, but " "it is recommended that the example shown below be " "followed. When the field is left blank, it is treated as unknown."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x0132, "DateTime", N_("Date and Time"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x0132, "DateTime", N_("Date and Time"), N_("The date and time of image creation. In Exif standard, " "it is the date and time the file was changed."), - ifd0Id, otherTags, asciiString, 20, printValue), - TagInfo(0x013b, "Artist", N_("Artist"), + ifd0Id, otherTags, asciiString, 20, printValue}, + {0x013b, "Artist", N_("Artist"), N_("This tag records the name of the camera owner, photographer or " "image creator. The detailed format is not specified, but it is " "recommended that the information be written as in the example " "below for ease of Interoperability. When the field is " "left blank, it is treated as unknown. Ex.) \"Camera owner, John " "Smith; Photographer, Michael Brown; Image creator, Ken James\""), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x013c, "HostComputer", N_("Host Computer"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x013c, "HostComputer", N_("Host Computer"), N_("This tag records information about the host computer used " "to generate the image."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x013d, "Predictor", N_("Predictor"), + ifd0Id, otherTags, asciiString, 0, printValue}, + {0x013d, "Predictor", N_("Predictor"), N_("A predictor is a mathematical operator that is applied to " "the image data before an encoding scheme is applied."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPredictor)), // TIFF tag - TagInfo(0x013e, "WhitePoint", N_("White Point"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPredictor)}, // TIFF tag + {0x013e, "WhitePoint", N_("White Point"), N_("The chromaticity of the white point of the image. Normally " "this tag is not necessary, since color space is specified " "in the colorspace information tag ()."), - ifd0Id, imgCharacter, unsignedRational, 2, printValue), - TagInfo(0x013f, "PrimaryChromaticities", N_("Primary Chromaticities"), + ifd0Id, imgCharacter, unsignedRational, 2, printValue}, + {0x013f, "PrimaryChromaticities", N_("Primary Chromaticities"), N_("The chromaticity of the three primary colors of the image. " "Normally this tag is not necessary, since colorspace is " "specified in the colorspace information tag ()."), - ifd0Id, imgCharacter, unsignedRational, 6, printValue), - TagInfo(0x0140, "ColorMap", N_("Color Map"), + ifd0Id, imgCharacter, unsignedRational, 6, printValue}, + {0x0140, "ColorMap", N_("Color Map"), N_("A color map for palette color images. This field defines " "a Red-Green-Blue color map (often called a lookup table) " "for palette-color images. In a palette-color image, a " "pixel value is used to index into an RGB lookup table."), - ifd0Id, imgCharacter, unsignedShort, -1, printValue), - TagInfo(0x0141, "HalftoneHints", N_("Halftone Hints"), + ifd0Id, imgCharacter, unsignedShort, -1, printValue}, + {0x0141, "HalftoneHints", N_("Halftone Hints"), N_("The purpose of the HalftoneHints field is to convey to the " "halftone function the range of gray levels within a " "colorimetrically-specified image that should retain tonal detail."), - ifd0Id, imgStruct, unsignedShort, 2, printValue), // TIFF tag - TagInfo(0x0142, "TileWidth", N_("Tile Width"), + ifd0Id, imgStruct, unsignedShort, 2, printValue}, // TIFF tag + {0x0142, "TileWidth", N_("Tile Width"), N_("The tile width in pixels. This is the number of columns in each tile."), - ifd0Id, recOffset, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0143, "TileLength", N_("Tile Length"), + ifd0Id, recOffset, unsignedLong, 1, printValue}, // TIFF tag + {0x0143, "TileLength", N_("Tile Length"), N_("The tile length (height) in pixels. This is the number of rows in each tile."), - ifd0Id, recOffset, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0144, "TileOffsets", N_("Tile Offsets"), + ifd0Id, recOffset, unsignedLong, 1, printValue}, // TIFF tag + {0x0144, "TileOffsets", N_("Tile Offsets"), N_("For each tile, the byte offset of that tile, as compressed and " "stored on disk. The offset is specified with respect to the " "beginning of the TIFF file. Note that this implies that each " "tile has a location independent of the locations of other tiles."), - ifd0Id, recOffset, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0145, "TileByteCounts", N_("Tile Byte Counts"), + ifd0Id, recOffset, unsignedShort, -1, printValue}, // TIFF tag + {0x0145, "TileByteCounts", N_("Tile Byte Counts"), N_("For each tile, the number of (compressed) bytes in that tile. See " "TileOffsets for a description of how the byte counts are ordered."), - ifd0Id, recOffset, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x014a, "SubIFDs", N_("SubIFD Offsets"), + ifd0Id, recOffset, unsignedLong, -1, printValue}, // TIFF tag + {0x014a, "SubIFDs", N_("SubIFD Offsets"), N_("Defined by Adobe Corporation to enable TIFF Trees within a TIFF file."), - ifd0Id, tiffEp, unsignedLong, -1, printValue), - TagInfo(0x014c, "InkSet", N_("Ink Set"), + ifd0Id, tiffEp, unsignedLong, -1, printValue}, + {0x014c, "InkSet", N_("Ink Set"), N_("The set of inks used in a separated (PhotometricInterpretation=5) image."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifInkSet)), // TIFF tag - TagInfo(0x014d, "InkNames", N_("Ink Names"), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifInkSet)}, // TIFF tag + {0x014d, "InkNames", N_("Ink Names"), N_("The name of each ink used in a separated (PhotometricInterpretation=5) image."), - ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag - TagInfo(0x014e, "NumberOfInks", N_("Number Of Inks"), + ifd0Id, imgStruct, asciiString, 0, printValue}, // TIFF tag + {0x014e, "NumberOfInks", N_("Number Of Inks"), N_("The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0150, "DotRange", N_("Dot Range"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x0150, "DotRange", N_("Dot Range"), N_("The component values that correspond to a 0% dot and 100% dot."), - ifd0Id, imgStruct, unsignedByte, -1, printValue), // TIFF tag - TagInfo(0x0151, "TargetPrinter", N_("Target Printer"), + ifd0Id, imgStruct, unsignedByte, -1, printValue}, // TIFF tag + {0x0151, "TargetPrinter", N_("Target Printer"), N_("A description of the printing environment for which this separation is intended."), - ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag - TagInfo(0x0152, "ExtraSamples", N_("Extra Samples"), + ifd0Id, imgStruct, asciiString, 0, printValue}, // TIFF tag + {0x0152, "ExtraSamples", N_("Extra Samples"), N_("Specifies that each pixel has m extra components whose interpretation " "is defined by one of the values listed below."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0153, "SampleFormat", N_("Sample Format"), + ifd0Id, imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0153, "SampleFormat", N_("Sample Format"), N_("This field specifies how to interpret each data sample in a pixel."), - ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifSampleFormat)), // TIFF tag - TagInfo(0x0154, "SMinSampleValue", N_("SMin Sample Value"), + ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifSampleFormat)}, // TIFF tag + {0x0154, "SMinSampleValue", N_("SMin Sample Value"), N_("This field specifies the minimum sample value."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0155, "SMaxSampleValue", N_("SMax Sample Value"), + ifd0Id, imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0155, "SMaxSampleValue", N_("SMax Sample Value"), N_("This field specifies the maximum sample value."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0156, "TransferRange", N_("Transfer Range"), + ifd0Id, imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0156, "TransferRange", N_("Transfer Range"), N_("Expands the range of the TransferFunction"), - ifd0Id, imgCharacter, unsignedShort, 6, printValue), // TIFF tag - TagInfo(0x0157, "ClipPath", N_("Clip Path"), + ifd0Id, imgCharacter, unsignedShort, 6, printValue}, // TIFF tag + {0x0157, "ClipPath", N_("Clip Path"), N_("A TIFF ClipPath is intended to mirror the essentials of PostScript's " "path creation functionality."), - ifd0Id, tiffPm6, unsignedByte, -1, printValue), // TIFF&PM6 tag - TagInfo(0x0158, "XClipPathUnits", N_("X Clip Path Units"), + ifd0Id, tiffPm6, unsignedByte, -1, printValue}, // TIFF&PM6 tag + {0x0158, "XClipPathUnits", N_("X Clip Path Units"), N_("The number of units that span the width of the image, in terms of " "integer ClipPath coordinates."), - ifd0Id, tiffPm6, signedShort, 1, printValue), // TIFF&PM6 tag - TagInfo(0x0159, "YClipPathUnits", N_("Y Clip Path Units"), + ifd0Id, tiffPm6, signedShort, 1, printValue}, // TIFF&PM6 tag + {0x0159, "YClipPathUnits", N_("Y Clip Path Units"), N_("The number of units that span the height of the image, in terms of " "integer ClipPath coordinates."), - ifd0Id, tiffPm6, signedShort, 1, printValue), // TIFF&PM6 tag - TagInfo(0x015a, "Indexed", N_("Indexed"), + ifd0Id, tiffPm6, signedShort, 1, printValue}, // TIFF&PM6 tag + {0x015a, "Indexed", N_("Indexed"), N_("Indexed images are images where the 'pixels' do not represent color " "values, but rather an index (usually 8-bit) into a separate color " "table, the ColorMap."), - ifd0Id, tiffPm6, unsignedShort, 1, EXV_PRINT_TAG(exifIndexed)), // TIFF&PM6 tag - TagInfo(0x015b, "JPEGTables", N_("JPEG tables"), + ifd0Id, tiffPm6, unsignedShort, 1, EXV_PRINT_TAG(exifIndexed)}, // TIFF&PM6 tag + {0x015b, "JPEGTables", N_("JPEG tables"), N_("This optional tag may be used to encode the JPEG quantization and " "Huffman tables for subsequent use by the JPEG decompression process."), - ifd0Id, imgStruct, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x015F, "OPIProxy", N_("OPI Proxy"), + ifd0Id, imgStruct, undefined, 0, printValue}, // TIFF/EP tag + {0x015F, "OPIProxy", N_("OPI Proxy"), N_("OPIProxy gives information concerning whether this image is a " "low-resolution proxy of a high-resolution image (Adobe OPI)."), - ifd0Id, adobeOpi, unsignedShort, 1, printValue), // Adobe OPI tag - TagInfo(0x0200, "JPEGProc", N_("JPEG Process"), + ifd0Id, adobeOpi, unsignedShort, 1, printValue}, // Adobe OPI tag + {0x0200, "JPEGProc", N_("JPEG Process"), N_("This field indicates the process used to produce the compressed data"), - ifd0Id, recOffset, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0201, "JPEGInterchangeFormat", N_("JPEG Interchange Format"), + ifd0Id, recOffset, unsignedLong, 1, printValue}, // TIFF tag + {0x0201, "JPEGInterchangeFormat", N_("JPEG Interchange Format"), N_("The offset to the start byte (SOI) of JPEG compressed " "thumbnail data. This is not used for primary image JPEG data."), - ifd0Id, recOffset, unsignedLong, 1, printValue), - TagInfo(0x0202, "JPEGInterchangeFormatLength", N_("JPEG Interchange Format Length"), + ifd0Id, recOffset, unsignedLong, 1, printValue}, + {0x0202, "JPEGInterchangeFormatLength", N_("JPEG Interchange Format Length"), N_("The number of bytes of JPEG compressed thumbnail data. This " "is not used for primary image JPEG data. JPEG thumbnails " "are not divided but are recorded as a continuous JPEG " "bitstream from SOI to EOI. Appn and COM markers should " "not be recorded. Compressed thumbnails must be recorded in no " "more than 64 Kbytes, including all other data to be recorded in APP1."), - ifd0Id, recOffset, unsignedLong, 1, printValue), - TagInfo(0x0203, "JPEGRestartInterval", N_("JPEG Restart Interval"), + ifd0Id, recOffset, unsignedLong, 1, printValue}, + {0x0203, "JPEGRestartInterval", N_("JPEG Restart Interval"), N_("This Field indicates the length of the restart interval used " "in the compressed image data."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0205, "JPEGLosslessPredictors", N_("JPEG Lossless Predictors"), + ifd0Id, imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x0205, "JPEGLosslessPredictors", N_("JPEG Lossless Predictors"), N_("This Field points to a list of lossless predictor-selection " "values, one per component."), - ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifJpegLosslessPredictor)), // TIFF tag - TagInfo(0x0206, "JPEGPointTransforms", N_("JPEG Point Transforms"), + ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifJpegLosslessPredictor)}, // TIFF tag + {0x0206, "JPEGPointTransforms", N_("JPEG Point Transforms"), N_("This Field points to a list of point transform values, one per component."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0207, "JPEGQTables", N_("JPEG Q-Tables"), + ifd0Id, imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0207, "JPEGQTables", N_("JPEG Q-Tables"), N_("This Field points to a list of offsets to the quantization tables, " "one per component."), - ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x0208, "JPEGDCTables", N_("JPEG DC-Tables"), + ifd0Id, imgStruct, unsignedLong, -1, printValue}, // TIFF tag + {0x0208, "JPEGDCTables", N_("JPEG DC-Tables"), N_("This Field points to a list of offsets to the DC Huffman tables or " "the lossless Huffman tables, one per component."), - ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x0209, "JPEGACTables", N_("JPEG AC-Tables"), + ifd0Id, imgStruct, unsignedLong, -1, printValue}, // TIFF tag + {0x0209, "JPEGACTables", N_("JPEG AC-Tables"), N_("This Field points to a list of offsets to the Huffman AC tables, " "one per component."), - ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x0211, "YCbCrCoefficients", N_("YCbCr Coefficients"), + ifd0Id, imgStruct, unsignedLong, -1, printValue}, // TIFF tag + {0x0211, "YCbCrCoefficients", N_("YCbCr Coefficients"), N_("The matrix coefficients for transformation from RGB to YCbCr " "image data. No default is given in TIFF; but here the " "value given in Appendix E, \"Color Space Guidelines\", is used " @@ -790,13 +790,13 @@ namespace Exiv2 { "color space information tag, with the default being the value " "that gives the optimal image characteristics " "Interoperability this condition."), - ifd0Id, imgCharacter, unsignedRational, 3, printValue), - TagInfo(0x0212, "YCbCrSubSampling", N_("YCbCr Sub-Sampling"), + ifd0Id, imgCharacter, unsignedRational, 3, printValue}, + {0x0212, "YCbCrSubSampling", N_("YCbCr Sub-Sampling"), N_("The sampling ratio of chrominance components in relation to the " "luminance component. In JPEG compressed data a JPEG marker " "is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 2, printValue), - TagInfo(0x0213, "YCbCrPositioning", N_("YCbCr Positioning"), + ifd0Id, imgStruct, unsignedShort, 2, printValue}, + {0x0213, "YCbCrPositioning", N_("YCbCr Positioning"), N_("The position of chrominance components in relation to the " "luminance component. This field is designated only for " "JPEG compressed data or uncompressed YCbCr data. The TIFF " @@ -810,54 +810,54 @@ namespace Exiv2 { ", it shall follow the TIFF default regardless " "of the value in this field. It is preferable that readers " "be able to support both centered and co-sited positioning."), - ifd0Id, imgStruct, unsignedShort, 1, print0x0213), - TagInfo(0x0214, "ReferenceBlackWhite", N_("Reference Black/White"), + ifd0Id, imgStruct, unsignedShort, 1, print0x0213}, + {0x0214, "ReferenceBlackWhite", N_("Reference Black/White"), N_("The reference black point value and reference white point " "value. No defaults are given in TIFF, but the values " "below are given as defaults here. The color space is declared " "in a color space information tag, with the default " "being the value that gives the optimal image characteristics " "Interoperability these conditions."), - ifd0Id, imgCharacter, unsignedRational, 6, printValue), - TagInfo(0x02bc, "XMLPacket", N_("XML Packet"), + ifd0Id, imgCharacter, unsignedRational, 6, printValue}, + {0x02bc, "XMLPacket", N_("XML Packet"), N_("XMP Metadata (Adobe technote 9-14-02)"), - ifd0Id, otherTags, unsignedByte, -1, printValue), - TagInfo(0x4746, "Rating", N_("Windows Rating"), + ifd0Id, otherTags, unsignedByte, -1, printValue}, + {0x4746, "Rating", N_("Windows Rating"), N_("Rating tag used by Windows"), - ifd0Id, otherTags, unsignedShort, -1, printValue), // Windows Tag - TagInfo(0x4749, "RatingPercent", N_("Windows Rating Percent"), + ifd0Id, otherTags, unsignedShort, -1, printValue}, // Windows Tag + {0x4749, "RatingPercent", N_("Windows Rating Percent"), N_("Rating tag used by Windows, value in percent"), - ifd0Id, otherTags, unsignedShort, -1, printValue), // Windows Tag - TagInfo(0x7032, "VignettingCorrParams", + ifd0Id, otherTags, unsignedShort, -1, printValue}, // Windows Tag + {0x7032, "VignettingCorrParams", N_("Vignetting Correction Params"), N_("Sony vignetting correction parameters"), - ifd0Id, otherTags, signedShort, 17, printValue), // Sony Tag - TagInfo(0x7035, "ChromaticAberrationCorrParams", + ifd0Id, otherTags, signedShort, 17, printValue}, // Sony Tag + {0x7035, "ChromaticAberrationCorrParams", N_("Chromatic Aberration Correction Params"), N_("Sony chromatic aberration correction parameters"), - ifd0Id, otherTags, signedShort, 33, printValue), // Sony Tag - TagInfo(0x7037, "DistortionCorrParams", + ifd0Id, otherTags, signedShort, 33, printValue}, // Sony Tag + {0x7037, "DistortionCorrParams", N_("Distortion Correction Params"), N_("Sony distortion correction parameters"), - ifd0Id, otherTags, signedShort, 17, printValue), // Sony Tag - TagInfo(0x800d, "ImageID", N_("Image ID"), + ifd0Id, otherTags, signedShort, 17, printValue}, // Sony Tag + {0x800d, "ImageID", N_("Image ID"), N_("ImageID is the full pathname of the original, high-resolution image, " "or any other identifying string that uniquely identifies the original " "image (Adobe OPI)."), - ifd0Id, adobeOpi, asciiString, 0, printValue), // Adobe OPI tag - TagInfo(0x828d, "CFARepeatPatternDim", N_("CFA Repeat Pattern Dimension"), + ifd0Id, adobeOpi, asciiString, 0, printValue}, // Adobe OPI tag + {0x828d, "CFARepeatPatternDim", N_("CFA Repeat Pattern Dimension"), N_("Contains two values representing the minimum rows and columns " "to define the repeating patterns of the color filter array"), - ifd0Id, tiffEp, unsignedShort, 2, printValue), // TIFF/EP Tag - TagInfo(0x828e, "CFAPattern", N_("CFA Pattern"), + ifd0Id, tiffEp, unsignedShort, 2, printValue}, // TIFF/EP Tag + {0x828e, "CFAPattern", N_("CFA Pattern"), N_("Indicates the color filter array (CFA) geometric pattern of the image " "sensor when a one-chip color area sensor is used. It does not apply to " "all sensing methods"), - ifd0Id, tiffEp, unsignedByte, -1, printValue), // TIFF/EP Tag - TagInfo(0x828f, "BatteryLevel", N_("Battery Level"), + ifd0Id, tiffEp, unsignedByte, -1, printValue}, // TIFF/EP Tag + {0x828f, "BatteryLevel", N_("Battery Level"), "Contains a value of the battery level as a fraction or string", - ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP Tag - TagInfo(0x8298, "Copyright", N_("Copyright"), + ifd0Id, tiffEp, unsignedRational, 1, printValue}, // TIFF/EP Tag + {0x8298, "Copyright", N_("Copyright"), N_("Copyright information. In this standard the tag is used to " "indicate both the photographer and editor copyrights. It is " "the copyright notice of the person or organization claiming " @@ -876,96 +876,96 @@ namespace Exiv2 { "consists of one space followed by a terminating NULL code, then " "the editor copyright is given. When the field is left blank, it is " "treated as unknown."), - ifd0Id, otherTags, asciiString, 0, print0x8298), - TagInfo(0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds."), ifd0Id, tiffEp, unsignedRational, 1, print0x829a), // TIFF/EP tag - TagInfo(0x829d, "FNumber", N_("FNumber"), N_("The F number."), ifd0Id, tiffEp, unsignedRational, 1, print0x829d), // TIFF/EP tag - TagInfo(0x83bb, "IPTCNAA", N_("IPTC/NAA"), + ifd0Id, otherTags, asciiString, 0, print0x8298}, + {0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds."), ifd0Id, tiffEp, unsignedRational, 1, print0x829a}, // TIFF/EP tag + {0x829d, "FNumber", N_("FNumber"), N_("The F number."), ifd0Id, tiffEp, unsignedRational, 1, print0x829d}, // TIFF/EP tag + {0x83bb, "IPTCNAA", N_("IPTC/NAA"), N_("Contains an IPTC/NAA record"), - ifd0Id, tiffEp, unsignedLong, 0, printValue), // TIFF/EP Tag - TagInfo(0x8649, "ImageResources", N_("Image Resources Block"), + ifd0Id, tiffEp, unsignedLong, 0, printValue}, // TIFF/EP Tag + {0x8649, "ImageResources", N_("Image Resources Block"), N_("Contains information embedded by the Adobe Photoshop application"), - ifd0Id, otherTags, unsignedByte, -1, printValue), - TagInfo(0x8769, "ExifTag", N_("Exif IFD Pointer"), + ifd0Id, otherTags, unsignedByte, -1, printValue}, + {0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD. Interoperability, Exif IFD has the " "same structure as that of the IFD specified in TIFF. " "ordinarily, however, it does not contain image data as in " "the case of TIFF."), - ifd0Id, exifFormat, unsignedLong, 1, printValue), - TagInfo(0x8773, "InterColorProfile", N_("Inter Color Profile"), + ifd0Id, exifFormat, unsignedLong, 1, printValue}, + {0x8773, "InterColorProfile", N_("Inter Color Profile"), N_("Contains an InterColor Consortium (ICC) format color space characterization/profile"), - ifd0Id, tiffEp, undefined, -1, printValue), - TagInfo(0x8822, "ExposureProgram", N_("Exposure Program"), N_("The class of the program used by the camera to set exposure when the picture is taken."), ifd0Id, tiffEp, unsignedShort, 1, print0x8822), // TIFF/EP tag - TagInfo(0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), N_("Indicates the spectral sensitivity of each channel of the camera used."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag - TagInfo(0x8825, "GPSTag", N_("GPS Info IFD Pointer"), + ifd0Id, tiffEp, undefined, -1, printValue}, + {0x8822, "ExposureProgram", N_("Exposure Program"), N_("The class of the program used by the camera to set exposure when the picture is taken."), ifd0Id, tiffEp, unsignedShort, 1, print0x8822}, // TIFF/EP tag + {0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), N_("Indicates the spectral sensitivity of each channel of the camera used."), ifd0Id, tiffEp, asciiString, 0, printValue}, // TIFF/EP tag + {0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD. The " "Interoperability structure of the GPS Info IFD, like that of " "Exif IFD, has no image data."), - ifd0Id, exifFormat, unsignedLong, 1, printValue), - TagInfo(0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), N_("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232."), ifd0Id, tiffEp, unsignedShort, 0, print0x8827), // TIFF/EP tag - TagInfo(0x8828, "OECF", N_("OECF"), N_("Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x8829, "Interlace", N_("Interlace"), N_("Indicates the field number of multifield images."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag - TagInfo(0x882a, "TimeZoneOffset", N_("Time Zone Offset"), + ifd0Id, exifFormat, unsignedLong, 1, printValue}, + {0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), N_("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232."), ifd0Id, tiffEp, unsignedShort, 0, print0x8827}, // TIFF/EP tag + {0x8828, "OECF", N_("OECF"), N_("Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524."), ifd0Id, tiffEp, undefined, 0, printValue}, // TIFF/EP tag + {0x8829, "Interlace", N_("Interlace"), N_("Indicates the field number of multifield images."), ifd0Id, tiffEp, unsignedShort, 1, printValue}, // TIFF/EP tag + {0x882a, "TimeZoneOffset", N_("Time Zone Offset"), N_("This optional tag encodes the time zone of the camera clock (relative " "to Greenwich Mean Time) used to create the DataTimeOriginal tag-value " "when the picture was taken. It may also contain the time zone offset " "of the clock used to create the DateTime tag-value when the image was " "modified."), - ifd0Id, tiffEp, signedShort, -1, printValue), - TagInfo(0x882b, "SelfTimerMode", N_("Self Timer Mode"), N_("Number of seconds image capture was delayed from button press."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag - TagInfo(0x9003, "DateTimeOriginal", N_("Date Time Original"), N_("The date and time when the original image data was generated."), ifd0Id, tiffEp, asciiString, 20, printValue), // TIFF/EP tag - TagInfo(0x9102, "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), N_("Specific to compressed data; states the compressed bits per pixel."), ifd0Id, tiffEp, unsignedRational, 1, printFloat), // TIFF/EP tag - TagInfo(0x9201, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed."), ifd0Id, tiffEp, signedRational, 1, print0x9201), // TIFF/EP tag - TagInfo(0x9202, "ApertureValue", N_("Aperture Value"), N_("The lens aperture."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202), // TIFF/EP tag - TagInfo(0x9203, "BrightnessValue", N_("Brightness Value"), N_("The value of brightness."), ifd0Id, tiffEp, signedRational, 1, printFloat), // TIFF/EP tag - TagInfo(0x9204, "ExposureBiasValue", N_("Exposure Bias Value"), N_("The exposure bias."), ifd0Id, tiffEp, signedRational, 1, print0x9204), // TIFF/EP tag - TagInfo(0x9205, "MaxApertureValue", N_("Max Aperture Value"), N_("The smallest F number of the lens."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202), // TIFF/EP tag - TagInfo(0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), ifd0Id, tiffEp, signedRational, 1, print0x9206), // TIFF/EP tag - TagInfo(0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), ifd0Id, tiffEp, unsignedShort, 1, print0x9207), // TIFF/EP tag - TagInfo(0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), ifd0Id, tiffEp, unsignedShort, 1, print0x9208), // TIFF/EP tag - TagInfo(0x9209, "Flash", N_("Flash"), N_("Indicates the status of flash when the image was shot."), ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)), // TIFF/EP tag - TagInfo(0x920a, "FocalLength", N_("Focal Length"), N_("The actual focal length of the lens, in mm."), ifd0Id, tiffEp, unsignedRational, 1, print0x920a), // TIFF/EP tag - TagInfo(0x920b, "FlashEnergy", N_("Flash Energy"), N_("Amount of flash energy (BCPS)."), ifd0Id, tiffEp, unsignedRational, 0, printValue), // TIFF/EP tag - TagInfo(0x920c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), N_("SFR of the camera."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x920d, "Noise", N_("Noise"), N_("Noise measurement values."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x920e, "FocalPlaneXResolution", N_("Focal Plane X Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printFloat), // TIFF/EP tag - TagInfo(0x920f, "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printFloat), // TIFF/EP tag - TagInfo(0x9210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), N_("Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391)."), ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(tiffFocalPlaneResolutionUnit)), // TIFF/EP tag - TagInfo(0x9211, "ImageNumber", N_("Image Number"), N_("Number assigned to an image, e.g., in a chained image burst."), ifd0Id, tiffEp, unsignedLong, 1, printValue), // TIFF/EP tag - TagInfo(0x9212, "SecurityClassification", N_("Security Classification"), N_("Security classification assigned to the image."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag - TagInfo(0x9213, "ImageHistory", N_("Image History"), N_("Record of what has been done to the image."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag - TagInfo(0x9214, "SubjectLocation", N_("Subject Location"), N_("Indicates the location and area of the main subject in the overall scene."), ifd0Id, tiffEp, unsignedShort, 2, printValue), // TIFF/EP tag - TagInfo(0x9215, "ExposureIndex", N_("Exposure Index"), N_("Encodes the camera exposure index setting when image was captured."), ifd0Id, tiffEp, unsignedRational, 0, printValue), // TIFF/EP tag - TagInfo(0x9216, "TIFFEPStandardID", N_("TIFF/EP Standard ID"), + ifd0Id, tiffEp, signedShort, -1, printValue}, + {0x882b, "SelfTimerMode", N_("Self Timer Mode"), N_("Number of seconds image capture was delayed from button press."), ifd0Id, tiffEp, unsignedShort, 1, printValue}, // TIFF/EP tag + {0x9003, "DateTimeOriginal", N_("Date Time Original"), N_("The date and time when the original image data was generated."), ifd0Id, tiffEp, asciiString, 20, printValue}, // TIFF/EP tag + {0x9102, "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), N_("Specific to compressed data; states the compressed bits per pixel."), ifd0Id, tiffEp, unsignedRational, 1, printFloat}, // TIFF/EP tag + {0x9201, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed."), ifd0Id, tiffEp, signedRational, 1, print0x9201}, // TIFF/EP tag + {0x9202, "ApertureValue", N_("Aperture Value"), N_("The lens aperture."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202}, // TIFF/EP tag + {0x9203, "BrightnessValue", N_("Brightness Value"), N_("The value of brightness."), ifd0Id, tiffEp, signedRational, 1, printFloat}, // TIFF/EP tag + {0x9204, "ExposureBiasValue", N_("Exposure Bias Value"), N_("The exposure bias."), ifd0Id, tiffEp, signedRational, 1, print0x9204}, // TIFF/EP tag + {0x9205, "MaxApertureValue", N_("Max Aperture Value"), N_("The smallest F number of the lens."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202}, // TIFF/EP tag + {0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), ifd0Id, tiffEp, signedRational, 1, print0x9206}, // TIFF/EP tag + {0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), ifd0Id, tiffEp, unsignedShort, 1, print0x9207}, // TIFF/EP tag + {0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), ifd0Id, tiffEp, unsignedShort, 1, print0x9208}, // TIFF/EP tag + {0x9209, "Flash", N_("Flash"), N_("Indicates the status of flash when the image was shot."), ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)}, // TIFF/EP tag + {0x920a, "FocalLength", N_("Focal Length"), N_("The actual focal length of the lens, in mm."), ifd0Id, tiffEp, unsignedRational, 1, print0x920a}, // TIFF/EP tag + {0x920b, "FlashEnergy", N_("Flash Energy"), N_("Amount of flash energy (BCPS)."), ifd0Id, tiffEp, unsignedRational, 0, printValue}, // TIFF/EP tag + {0x920c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), N_("SFR of the camera."), ifd0Id, tiffEp, undefined, 0, printValue}, // TIFF/EP tag + {0x920d, "Noise", N_("Noise"), N_("Noise measurement values."), ifd0Id, tiffEp, undefined, 0, printValue}, // TIFF/EP tag + {0x920e, "FocalPlaneXResolution", N_("Focal Plane X Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printFloat}, // TIFF/EP tag + {0x920f, "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printFloat}, // TIFF/EP tag + {0x9210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), N_("Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391)."), ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(tiffFocalPlaneResolutionUnit)}, // TIFF/EP tag + {0x9211, "ImageNumber", N_("Image Number"), N_("Number assigned to an image, e.g., in a chained image burst."), ifd0Id, tiffEp, unsignedLong, 1, printValue}, // TIFF/EP tag + {0x9212, "SecurityClassification", N_("Security Classification"), N_("Security classification assigned to the image."), ifd0Id, tiffEp, asciiString, 0, printValue}, // TIFF/EP tag + {0x9213, "ImageHistory", N_("Image History"), N_("Record of what has been done to the image."), ifd0Id, tiffEp, asciiString, 0, printValue}, // TIFF/EP tag + {0x9214, "SubjectLocation", N_("Subject Location"), N_("Indicates the location and area of the main subject in the overall scene."), ifd0Id, tiffEp, unsignedShort, 2, printValue}, // TIFF/EP tag + {0x9215, "ExposureIndex", N_("Exposure Index"), N_("Encodes the camera exposure index setting when image was captured."), ifd0Id, tiffEp, unsignedRational, 0, printValue}, // TIFF/EP tag + {0x9216, "TIFFEPStandardID", N_("TIFF/EP Standard ID"), N_("Contains four ASCII characters representing the TIFF/EP standard " "version of a TIFF/EP file, eg '1', '0', '0', '0'"), - ifd0Id, tiffEp, unsignedByte, 4, printValue), // TIFF/EP Tag - TagInfo(0x9217, "SensingMethod", N_("Sensing Method"), + ifd0Id, tiffEp, unsignedByte, 4, printValue}, // TIFF/EP Tag + {0x9217, "SensingMethod", N_("Sensing Method"), N_("Type of image sensor."), - ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(tiffSensingMethod)), // TIFF/EP tag - TagInfo(0x9c9b, "XPTitle", N_("Windows Title"), + ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(tiffSensingMethod)}, // TIFF/EP tag + {0x9c9b, "XPTitle", N_("Windows Title"), N_("Title tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9c, "XPComment", N_("Windows Comment"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9c, "XPComment", N_("Windows Comment"), N_("Comment tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9d, "XPAuthor", N_("Windows Author"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9d, "XPAuthor", N_("Windows Author"), N_("Author tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9e, "XPKeywords", N_("Windows Keywords"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9e, "XPKeywords", N_("Windows Keywords"), N_("Keywords tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9f, "XPSubject", N_("Windows Subject"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9f, "XPSubject", N_("Windows Subject"), N_("Subject tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0xc4a5, "PrintImageMatching", N_("Print Image Matching"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0xc4a5, "PrintImageMatching", N_("Print Image Matching"), N_("Print Image Matching, description needed."), - ifd0Id, otherTags, undefined, -1, printValue), - TagInfo(0xc612, "DNGVersion", N_("DNG version"), + ifd0Id, otherTags, undefined, -1, printValue}, + {0xc612, "DNGVersion", N_("DNG version"), N_("This tag encodes the DNG four-tier version number. For files " "compliant with version 1.1.0.0 of the DNG specification, this " "tag should contain the bytes: 1, 1, 0, 0."), - ifd0Id, dngTags, unsignedByte, 4, printValue), // DNG tag - TagInfo(0xc613, "DNGBackwardVersion", N_("DNG backward version"), + ifd0Id, dngTags, unsignedByte, 4, printValue}, // DNG tag + {0xc613, "DNGBackwardVersion", N_("DNG backward version"), N_("This tag specifies the oldest version of the Digital Negative " "specification for which a file is compatible. Readers should" "not attempt to read a file if this tag specifies a version " @@ -973,101 +973,101 @@ namespace Exiv2 { "the reader was based on. In addition to checking the version tags, " "readers should, for all tags, check the types, counts, and values, " "to verify it is able to correctly read the file."), - ifd0Id, dngTags, unsignedByte, 4, printValue), // DNG tag - TagInfo(0xc614, "UniqueCameraModel", N_("Unique Camera Model"), + ifd0Id, dngTags, unsignedByte, 4, printValue}, // DNG tag + {0xc614, "UniqueCameraModel", N_("Unique Camera Model"), N_("Defines a unique, non-localized name for the camera model that " "created the image in the raw file. This name should include the " "manufacturer's name to avoid conflicts, and should not be localized, " "even if the camera name itself is localized for different markets " "(see LocalizedCameraModel). This string may be used by reader " "software to index into per-model preferences and replacement profiles."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag - TagInfo(0xc615, "LocalizedCameraModel", N_("Localized Camera Model"), + ifd0Id, dngTags, asciiString, 0, printValue}, // DNG tag + {0xc615, "LocalizedCameraModel", N_("Localized Camera Model"), N_("Similar to the UniqueCameraModel field, except the name can be " "localized for different markets to match the localization of the " "camera name."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc616, "CFAPlaneColor", N_("CFA Plane Color"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc616, "CFAPlaneColor", N_("CFA Plane Color"), N_("Provides a mapping between the values in the CFAPattern tag and the " "plane numbers in LinearRaw space. This is a required tag for non-RGB " "CFA images."), - ifd0Id, dngTags, unsignedByte, -1, printValue), // DNG tag - TagInfo(0xc617, "CFALayout", N_("CFA Layout"), + ifd0Id, dngTags, unsignedByte, -1, printValue}, // DNG tag + {0xc617, "CFALayout", N_("CFA Layout"), N_("Describes the spatial layout of the CFA."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngCfaLayout)), // DNG tag - TagInfo(0xc618, "LinearizationTable", N_("Linearization Table"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngCfaLayout)}, // DNG tag + {0xc618, "LinearizationTable", N_("Linearization Table"), N_("Describes a lookup table that maps stored values into linear values. " "This tag is typically used to increase compression ratios by storing " "the raw data in a non-linear, more visually uniform space with fewer " "total encoding levels. If SamplesPerPixel is not equal to one, this " "single table applies to all the samples for each pixel."), - ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag - TagInfo(0xc619, "BlackLevelRepeatDim", N_("Black Level Repeat Dim"), + ifd0Id, dngTags, unsignedShort, -1, printValue}, // DNG tag + {0xc619, "BlackLevelRepeatDim", N_("Black Level Repeat Dim"), N_("Specifies repeat pattern size for the BlackLevel tag."), - ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag - TagInfo(0xc61a, "BlackLevel", N_("Black Level"), + ifd0Id, dngTags, unsignedShort, 2, printValue}, // DNG tag + {0xc61a, "BlackLevel", N_("Black Level"), N_("Specifies the zero light (a.k.a. thermal black or black current) " "encoding level, as a repeating pattern. The origin of this pattern " "is the top-left corner of the ActiveArea rectangle. The values are " "stored in row-column-sample scan order."), - ifd0Id, dngTags, unsignedRational, -1, printValue), // DNG tag - TagInfo(0xc61b, "BlackLevelDeltaH", N_("Black Level Delta H"), + ifd0Id, dngTags, unsignedRational, -1, printValue}, // DNG tag + {0xc61b, "BlackLevelDeltaH", N_("Black Level Delta H"), N_("If the zero light encoding level is a function of the image column, " "BlackLevelDeltaH specifies the difference between the zero light " "encoding level for each column and the baseline zero light encoding " "level. If SamplesPerPixel is not equal to one, this single table " "applies to all the samples for each pixel."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc61c, "BlackLevelDeltaV", N_("Black Level Delta V"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc61c, "BlackLevelDeltaV", N_("Black Level Delta V"), N_("If the zero light encoding level is a function of the image row, " "this tag specifies the difference between the zero light encoding " "level for each row and the baseline zero light encoding level. If " "SamplesPerPixel is not equal to one, this single table applies to " "all the samples for each pixel."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc61d, "WhiteLevel", N_("White Level"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc61d, "WhiteLevel", N_("White Level"), N_("This tag specifies the fully saturated encoding level for the raw " "sample values. Saturation is caused either by the sensor itself " "becoming highly non-linear in response, or by the camera's analog " "to digital converter clipping."), - ifd0Id, dngTags, unsignedLong, -1, printValue), // DNG tag - TagInfo(0xc61e, "DefaultScale", N_("Default Scale"), + ifd0Id, dngTags, unsignedLong, -1, printValue}, // DNG tag + {0xc61e, "DefaultScale", N_("Default Scale"), N_("DefaultScale is required for cameras with non-square pixels. It " "specifies the default scale factors for each direction to convert " "the image to square pixels. Typically these factors are selected " "to approximately preserve total pixel count. For CFA images that " "use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, " "these two values should usually differ by a factor of 2.0."), - ifd0Id, dngTags, unsignedRational, 2, printValue), // DNG tag - TagInfo(0xc61f, "DefaultCropOrigin", N_("Default Crop Origin"), + ifd0Id, dngTags, unsignedRational, 2, printValue}, // DNG tag + {0xc61f, "DefaultCropOrigin", N_("Default Crop Origin"), N_("Raw images often store extra pixels around the edges of the final " "image. These extra pixels help prevent interpolation artifacts near " "the edges of the final image. DefaultCropOrigin specifies the origin " "of the final image area, in raw image coordinates (i.e., before the " "DefaultScale has been applied), relative to the top-left corner of " "the ActiveArea rectangle."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG tag - TagInfo(0xc620, "DefaultCropSize", N_("Default Crop Size"), + ifd0Id, dngTags, unsignedLong, 2, printValue}, // DNG tag + {0xc620, "DefaultCropSize", N_("Default Crop Size"), N_("Raw images often store extra pixels around the edges of the final " "image. These extra pixels help prevent interpolation artifacts near " "the edges of the final image. DefaultCropSize specifies the size of " "the final image area, in raw image coordinates (i.e., before the " "DefaultScale has been applied)."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG tag - TagInfo(0xc621, "ColorMatrix1", N_("Color Matrix 1"), + ifd0Id, dngTags, unsignedLong, 2, printValue}, // DNG tag + {0xc621, "ColorMatrix1", N_("Color Matrix 1"), N_("ColorMatrix1 defines a transformation matrix that converts XYZ " "values to reference camera native color space values, under the " "first calibration illuminant. The matrix values are stored in row " "scan order. The ColorMatrix1 tag is required for all non-monochrome " "DNG files."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc622, "ColorMatrix2", N_("Color Matrix 2"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc622, "ColorMatrix2", N_("Color Matrix 2"), N_("ColorMatrix2 defines a transformation matrix that converts XYZ " "values to reference camera native color space values, under the " "second calibration illuminant. The matrix values are stored in row " "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc623, "CameraCalibration1", N_("Camera Calibration 1"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc623, "CameraCalibration1", N_("Camera Calibration 1"), N_("CameraCalibration1 defines a calibration matrix that transforms " "reference camera native space values to individual camera native " "space values under the first calibration illuminant. The matrix is " @@ -1076,8 +1076,8 @@ namespace Exiv2 { "swap in replacement color matrices based on UniqueCameraModel tag, " "while still taking advantage of any per-individual camera calibration " "performed by the camera manufacturer."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc624, "CameraCalibration2", N_("Camera Calibration 2"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc624, "CameraCalibration2", N_("Camera Calibration 2"), N_("CameraCalibration2 defines a calibration matrix that transforms " "reference camera native space values to individual camera native " "space values under the second calibration illuminant. The matrix is " @@ -1086,22 +1086,22 @@ namespace Exiv2 { "swap in replacement color matrices based on UniqueCameraModel tag, " "while still taking advantage of any per-individual camera calibration " "performed by the camera manufacturer."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc625, "ReductionMatrix1", N_("Reduction Matrix 1"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc625, "ReductionMatrix1", N_("Reduction Matrix 1"), N_("ReductionMatrix1 defines a dimensionality reduction matrix for use as " "the first stage in converting color camera native space values to XYZ " "values, under the first calibration illuminant. This tag may only be " "used if ColorPlanes is greater than 3. The matrix is stored in row " "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc626, "ReductionMatrix2", N_("Reduction Matrix 2"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc626, "ReductionMatrix2", N_("Reduction Matrix 2"), N_("ReductionMatrix2 defines a dimensionality reduction matrix for use as " "the first stage in converting color camera native space values to XYZ " "values, under the second calibration illuminant. This tag may only be " "used if ColorPlanes is greater than 3. The matrix is stored in row " "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc627, "AnalogBalance", N_("Analog Balance"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc627, "AnalogBalance", N_("Analog Balance"), N_("Normally the stored raw values are not white balanced, since any " "digital white balancing will reduce the dynamic range of the final " "image if the user decides to later adjust the white balance; " @@ -1110,19 +1110,19 @@ namespace Exiv2 { "range of the final image. AnalogBalance defines the gain, either " "analog (recommended) or digital (not recommended) that has been " "applied the stored raw values."), - ifd0Id, dngTags, unsignedRational, -1, printValue), // DNG tag - TagInfo(0xc628, "AsShotNeutral", N_("As Shot Neutral"), + ifd0Id, dngTags, unsignedRational, -1, printValue}, // DNG tag + {0xc628, "AsShotNeutral", N_("As Shot Neutral"), N_("Specifies the selected white balance at time of capture, encoded as " "the coordinates of a perfectly neutral color in linear reference " "space values. The inclusion of this tag precludes the inclusion of " "the AsShotWhiteXY tag."), - ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag - TagInfo(0xc629, "AsShotWhiteXY", N_("As Shot White XY"), + ifd0Id, dngTags, unsignedShort, -1, printValue}, // DNG tag + {0xc629, "AsShotWhiteXY", N_("As Shot White XY"), N_("Specifies the selected white balance at time of capture, encoded as " "x-y chromaticity coordinates. The inclusion of this tag precludes " "the inclusion of the AsShotNeutral tag."), - ifd0Id, dngTags, unsignedRational, 2, printValue), // DNG tag - TagInfo(0xc62a, "BaselineExposure", N_("Baseline Exposure"), + ifd0Id, dngTags, unsignedRational, 2, printValue}, // DNG tag + {0xc62a, "BaselineExposure", N_("Baseline Exposure"), N_("Camera models vary in the trade-off they make between highlight " "headroom and shadow noise. Some leave a significant amount of " "highlight headroom during a normal exposure. This allows significant " @@ -1136,22 +1136,22 @@ namespace Exiv2 { "(in EV units) to move the zero point. Positive values result in " "brighter default results, while negative values result in darker " "default results."), - ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag - TagInfo(0xc62b, "BaselineNoise", N_("Baseline Noise"), + ifd0Id, dngTags, signedRational, 1, printValue}, // DNG tag + {0xc62b, "BaselineNoise", N_("Baseline Noise"), N_("Specifies the relative noise level of the camera model at a baseline " "ISO value of 100, compared to a reference camera model. Since noise " "levels tend to vary approximately with the square root of the ISO " "value, a raw converter can use this value, combined with the current " "ISO, to estimate the relative noise level of the current image."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc62c, "BaselineSharpness", N_("Baseline Sharpness"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc62c, "BaselineSharpness", N_("Baseline Sharpness"), N_("Specifies the relative amount of sharpening required for this camera " "model, compared to a reference camera model. Camera models vary in " "the strengths of their anti-aliasing filters. Cameras with weak or " "no filters require less sharpening than cameras with strong " "anti-aliasing filters."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc62d, "BayerGreenSplit", N_("Bayer Green Split"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc62d, "BayerGreenSplit", N_("Bayer Green Split"), N_("Only applies to CFA images using a Bayer pattern filter array. This " "tag specifies, in arbitrary units, how closely the values of the " "green pixels in the blue/green rows track the values of the green " @@ -1159,24 +1159,24 @@ namespace Exiv2 { "of green pixels track closely, while a non-zero value means they " "sometimes diverge. The useful range for this tag is from 0 (no " "divergence) to about 5000 (quite large divergence)."), - ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag - TagInfo(0xc62e, "LinearResponseLimit", N_("Linear Response Limit"), + ifd0Id, dngTags, unsignedLong, 1, printValue}, // DNG tag + {0xc62e, "LinearResponseLimit", N_("Linear Response Limit"), N_("Some sensors have an unpredictable non-linearity in their response " "as they near the upper limit of their encoding range. This " "non-linearity results in color shifts in the highlight areas of the " "resulting image unless the raw converter compensates for this effect. " "LinearResponseLimit specifies the fraction of the encoding range " "above which the response may become significantly non-linear."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc62f, "CameraSerialNumber", N_("Camera Serial Number"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc62f, "CameraSerialNumber", N_("Camera Serial Number"), N_("CameraSerialNumber contains the serial number of the camera or camera " "body that captured the image."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag - TagInfo(0xc630, "LensInfo", N_("Lens Info"), + ifd0Id, dngTags, asciiString, 0, printValue}, // DNG tag + {0xc630, "LensInfo", N_("Lens Info"), N_("Contains information about the lens that captured the image. If the " "minimum f-stops are unknown, they should be encoded as 0/0."), - ifd0Id, dngTags, unsignedRational, 4, printValue), // DNG tag - TagInfo(0xc631, "ChromaBlurRadius", N_("Chroma Blur Radius"), + ifd0Id, dngTags, unsignedRational, 4, printValue}, // DNG tag + {0xc631, "ChromaBlurRadius", N_("Chroma Blur Radius"), N_("ChromaBlurRadius provides a hint to the DNG reader about how much " "chroma blur should be applied to the image. If this tag is omitted, " "the reader will use its default amount of chroma blurring. " @@ -1184,40 +1184,40 @@ namespace Exiv2 { "amount of chroma blur required for mosaic images is highly dependent " "on the de-mosaic algorithm, in which case the DNG reader's default " "value is likely optimized for its particular de-mosaic algorithm."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc632, "AntiAliasStrength", N_("Anti Alias Strength"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc632, "AntiAliasStrength", N_("Anti Alias Strength"), N_("Provides a hint to the DNG reader about how strong the camera's " "anti-alias filter is. A value of 0.0 means no anti-alias filter " "(i.e., the camera is prone to aliasing artifacts with some subjects), " "while a value of 1.0 means a strong anti-alias filter (i.e., the " "camera almost never has aliasing artifacts)."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc633, "ShadowScale", N_("Shadow Scale"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc633, "ShadowScale", N_("Shadow Scale"), N_("This tag is used by Adobe Camera Raw to control the sensitivity of " "its 'Shadows' slider."), - ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag - TagInfo(0xc634, "DNGPrivateData", N_("DNG Private Data"), + ifd0Id, dngTags, signedRational, 1, printValue}, // DNG tag + {0xc634, "DNGPrivateData", N_("DNG Private Data"), N_("Provides a way for camera manufacturers to store private data in the " "DNG file for use by their own raw converters, and to have that data " "preserved by programs that edit DNG files."), - ifd0Id, dngTags, unsignedByte, -1, printValue), // DNG tag - TagInfo(0xc635, "MakerNoteSafety", N_("MakerNote Safety"), + ifd0Id, dngTags, unsignedByte, -1, printValue}, // DNG tag + {0xc635, "MakerNoteSafety", N_("MakerNote Safety"), N_("MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote " "tag is safe to preserve along with the rest of the EXIF data. File " "browsers and other image management software processing an image " "with a preserved MakerNote should be aware that any thumbnail " "image embedded in the MakerNote may be stale, and may not reflect " "the current state of the full size image."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngMakerNoteSafety)), // DNG tag - TagInfo(0xc65a, "CalibrationIlluminant1", N_("Calibration Illuminant 1"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngMakerNoteSafety)}, // DNG tag + {0xc65a, "CalibrationIlluminant1", N_("Calibration Illuminant 1"), N_("The illuminant used for the first set of color calibration tags " "(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal " "values for this tag are the same as the legal values for the " "LightSource EXIF tag. If set to 255 (Other), then the IFD must " "also include a IlluminantData1 tag to specify the x-y chromaticity " "or spectral power distribution function for this illuminant."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifLightSource)), // DNG tag - TagInfo(0xc65b, "CalibrationIlluminant2", N_("Calibration Illuminant 2"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifLightSource)}, // DNG tag + {0xc65b, "CalibrationIlluminant2", N_("Calibration Illuminant 2"), N_("The illuminant used for an optional second set of color calibration " "tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal " "values for this tag are the same as the legal values for the " @@ -1225,16 +1225,16 @@ namespace Exiv2 { "is allowed to have a value of 0 (unknown). If set to 255 (Other), then " "the IFD must also include a IlluminantData2 tag to specify the x-y " "chromaticity or spectral power distribution function for this illuminant."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifLightSource)), // DNG tag - TagInfo(0xc65c, "BestQualityScale", N_("Best Quality Scale"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifLightSource)}, // DNG tag + {0xc65c, "BestQualityScale", N_("Best Quality Scale"), N_("For some cameras, the best possible image quality is not achieved " "by preserving the total pixel count during conversion. For example, " "Fujifilm SuperCCD images have maximum detail when their total pixel " "count is doubled. This tag specifies the amount by which the values " "of the DefaultScale tag need to be multiplied to achieve the best " "quality image size."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc65d, "RawDataUniqueID", N_("Raw Data Unique ID"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc65d, "RawDataUniqueID", N_("Raw Data Unique ID"), N_("This tag contains a 16-byte unique identifier for the raw image data " "in the DNG file. DNG readers can use this tag to recognize a " "particular raw image, even if the file's name or the metadata " @@ -1242,12 +1242,12 @@ namespace Exiv2 { "an identifier, it should do so using an algorithm that will ensure " "that it is very unlikely two different images will end up having the " "same identifier."), - ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag - TagInfo(0xc68b, "OriginalRawFileName", N_("Original Raw File Name"), + ifd0Id, dngTags, unsignedByte, 16, printValue}, // DNG tag + {0xc68b, "OriginalRawFileName", N_("Original Raw File Name"), N_("If the DNG file was converted from a non-DNG raw file, then this tag " "contains the file name of that original raw file."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc68c, "OriginalRawFileData", N_("Original Raw File Data"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc68c, "OriginalRawFileData", N_("Original Raw File Data"), N_("If the DNG file was converted from a non-DNG raw file, then this tag " "contains the compressed contents of that original raw file. The " "contents of this tag always use the big-endian byte order. The tag " @@ -1257,20 +1257,20 @@ namespace Exiv2 { "also detect the case where data blocks are missing from the end of " "the sequence, and should assume a default value for all the missing " "blocks. There are no padding or alignment bytes between data blocks."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc68d, "ActiveArea", N_("Active Area"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG tag + {0xc68d, "ActiveArea", N_("Active Area"), N_("This rectangle defines the active (non-masked) pixels of the sensor. " "The order of the rectangle coordinates is: top, left, bottom, right."), - ifd0Id, dngTags, unsignedLong, 4, printValue), // DNG tag - TagInfo(0xc68e, "MaskedAreas", N_("Masked Areas"), + ifd0Id, dngTags, unsignedLong, 4, printValue}, // DNG tag + {0xc68e, "MaskedAreas", N_("Masked Areas"), N_("This tag contains a list of non-overlapping rectangle coordinates of " "fully masked pixels, which can be optionally used by DNG readers " "to measure the black encoding level. The order of each rectangle's " "coordinates is: top, left, bottom, right. If the raw image data has " "already had its black encoding level subtracted, then this tag should " "not be used, since the masked pixels are no longer useful."), - ifd0Id, dngTags, unsignedLong, -1, printValue), // DNG tag - TagInfo(0xc68f, "AsShotICCProfile", N_("As-Shot ICC Profile"), + ifd0Id, dngTags, unsignedLong, -1, printValue}, // DNG tag + {0xc68f, "AsShotICCProfile", N_("As-Shot ICC Profile"), N_("This tag contains an ICC profile that, in conjunction with the " "AsShotPreProfileMatrix tag, provides the camera manufacturer with a " "way to specify a default color rendering from camera color space " @@ -1281,8 +1281,8 @@ namespace Exiv2 { "means that the rendering in this profile should include any desired " "tone and gamut mapping needed to convert between scene referred " "values and output referred values."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc690, "AsShotPreProfileMatrix", N_("As-Shot Pre-Profile Matrix"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG tag + {0xc690, "AsShotPreProfileMatrix", N_("As-Shot Pre-Profile Matrix"), N_("This tag is used in conjunction with the AsShotICCProfile tag. It " "specifies a matrix that should be applied to the camera color space " "coordinates before processing the values through the ICC profile " @@ -1291,75 +1291,75 @@ namespace Exiv2 { "matrix can (but is not required to) reduce the dimensionality of the " "color data down to three components, in which case the AsShotICCProfile " "should have three rather than ColorPlanes input components."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc691, "CurrentICCProfile", N_("Current ICC Profile"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc691, "CurrentICCProfile", N_("Current ICC Profile"), N_("This tag is used in conjunction with the CurrentPreProfileMatrix tag. " "The CurrentICCProfile and CurrentPreProfileMatrix tags have the same " "purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix " "tag pair, except they are for use by raw file editors rather than " "camera manufacturers."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc692, "CurrentPreProfileMatrix", N_("Current Pre-Profile Matrix"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG tag + {0xc692, "CurrentPreProfileMatrix", N_("Current Pre-Profile Matrix"), N_("This tag is used in conjunction with the CurrentICCProfile tag. " "The CurrentICCProfile and CurrentPreProfileMatrix tags have the same " "purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix " "tag pair, except they are for use by raw file editors rather than " "camera manufacturers."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc6bf, "ColorimetricReference", N_("Colorimetric Reference"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc6bf, "ColorimetricReference", N_("Colorimetric Reference"), N_("The DNG color model documents a transform between camera colors and " "CIE XYZ values. This tag describes the colorimetric reference for the " "CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values " "are output-referred, using the ICC profile perceptual dynamic range. This " "tag allows output-referred data to be stored in DNG files and still processed " "correctly by DNG readers."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngColorimetricReference)), // DNG tag - TagInfo(0xc6f3, "CameraCalibrationSignature", N_("Camera Calibration Signature"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngColorimetricReference)}, // DNG tag + {0xc6f3, "CameraCalibrationSignature", N_("Camera Calibration Signature"), N_("A UTF-8 encoded string associated with the CameraCalibration1 and " "CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " "should only be used in the DNG color transform if the string stored in the " "CameraCalibrationSignature tag exactly matches the string stored in the " "ProfileCalibrationSignature tag for the selected camera profile."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f4, "ProfileCalibrationSignature", N_("Profile Calibration Signature"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc6f4, "ProfileCalibrationSignature", N_("Profile Calibration Signature"), N_("A UTF-8 encoded string associated with the camera profile tags. The " "CameraCalibration1 and CameraCalibration2 tags should only be used in the " "DNG color transfer if the string stored in the CameraCalibrationSignature " "tag exactly matches the string stored in the ProfileCalibrationSignature tag " "for the selected camera profile."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f5, "ExtraCameraProfiles", N_("Extra Camera Profiles"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc6f5, "ExtraCameraProfiles", N_("Extra Camera Profiles"), N_("A list of file offsets to extra Camera Profile IFDs. Note that the primary " "camera profile tags should be stored in IFD 0, and the ExtraCameraProfiles " "tag should only be used if there is more than one camera profile stored in " "the DNG file."), - ifd0Id, dngTags, unsignedLong, -1, printValue), // DNG 1.2 tag - TagInfo(0xc6f6, "AsShotProfileName", N_("As Shot Profile Name"), + ifd0Id, dngTags, unsignedLong, -1, printValue}, // DNG 1.2 tag + {0xc6f6, "AsShotProfileName", N_("As Shot Profile Name"), N_("A UTF-8 encoded string containing the name of the \"as shot\" camera " "profile, if any."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f7, "NoiseReductionApplied", N_("Noise Reduction Applied"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc6f7, "NoiseReductionApplied", N_("Noise Reduction Applied"), N_("This tag indicates how much noise reduction has been applied to the raw " "data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction " "has been applied. A 1.0 value indicates that the \"ideal\" amount of noise " "reduction has been applied, i.e. that the DNG reader should not apply " "additional noise reduction by default. A value of 0/0 indicates that this " "parameter is unknown."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc6f8, "ProfileName", N_("Profile Name"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG tag + {0xc6f8, "ProfileName", N_("Profile Name"), N_("A UTF-8 encoded string containing the name of the camera profile. This " "tag is optional if there is only a single camera profile stored in the file " "but is required for all camera profiles if there is more than one camera " "profile stored in the file."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f9, "ProfileHueSatMapDims", N_("Profile Hue Sat Map Dims"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc6f9, "ProfileHueSatMapDims", N_("Profile Hue Sat Map Dims"), N_("This tag specifies the number of input samples in each dimension of the " "hue/saturation/value mapping tables. The data for these tables are stored " "in ProfileHueSatMapData1, ProfileHueSatMapData2 and ProfileHueSatMapData3 " "tags. The most common case has ValueDivisions equal to 1, so only hue and " "saturation are used as inputs to the mapping table."), - ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag - TagInfo(0xc6fa, "ProfileHueSatMapData1", N_("Profile Hue Sat Map Data 1"), + ifd0Id, dngTags, unsignedLong, 3, printValue}, // DNG tag + {0xc6fa, "ProfileHueSatMapData1", N_("Profile Hue Sat Map Data 1"), N_("This tag contains the data for the first hue/saturation/value mapping " "table. Each entry of the table contains three 32-bit IEEE floating-point " "values. The first entry is hue shift in degrees; the second entry is " @@ -1368,8 +1368,8 @@ namespace Exiv2 { "divisions in the outer loop, the hue divisions in the middle loop, and the " "saturation divisions in the inner loop. All zero input saturation entries " "are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag - TagInfo(0xc6fb, "ProfileHueSatMapData2", N_("Profile Hue Sat Map Data 2"), + ifd0Id, dngTags, tiffFloat, 0, printValue}, // DNG tag + {0xc6fb, "ProfileHueSatMapData2", N_("Profile Hue Sat Map Data 2"), N_("This tag contains the data for the second hue/saturation/value mapping " "table. Each entry of the table contains three 32-bit IEEE floating-point " "values. The first entry is hue shift in degrees; the second entry is a " @@ -1378,8 +1378,8 @@ namespace Exiv2 { "divisions in the outer loop, the hue divisions in the middle loop, and the " "saturation divisions in the inner loop. All zero input saturation entries " "are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag - TagInfo(0xc6fc, "ProfileToneCurve", N_("Profile Tone Curve"), + ifd0Id, dngTags, tiffFloat, 0, printValue}, // DNG tag + {0xc6fc, "ProfileToneCurve", N_("Profile Tone Curve"), N_("This tag contains a default tone curve that can be applied while " "processing the image as a starting point for user adjustments. The curve " "is specified as a list of 32-bit IEEE floating-point value pairs in linear " @@ -1387,80 +1387,80 @@ namespace Exiv2 { "output value in the range of 0.0 to 1.0. The first sample is required to be " "(0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated " "the curve using a cubic spline."), - ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag - TagInfo(0xc6fd, "ProfileEmbedPolicy", N_("Profile Embed Policy"), + ifd0Id, dngTags, tiffFloat, -1, printValue}, // DNG tag + {0xc6fd, "ProfileEmbedPolicy", N_("Profile Embed Policy"), N_("This tag contains information about the usage rules for the associated " "camera profile."), - ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngProfileEmbedPolicy)), // DNG tag - TagInfo(0xc6fe, "ProfileCopyright", N_("Profile Copyright"), + ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngProfileEmbedPolicy)}, // DNG tag + {0xc6fe, "ProfileCopyright", N_("Profile Copyright"), N_("A UTF-8 encoded string containing the copyright information for the " "camera profile. This string always should be preserved along with the other " "camera profile tags."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc714, "ForwardMatrix1", N_("Forward Matrix 1"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc714, "ForwardMatrix1", N_("Forward Matrix 1"), N_("This tag defines a matrix that maps white balanced camera colors to XYZ " "D50 colors."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc715, "ForwardMatrix2", N_("Forward Matrix 2"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc715, "ForwardMatrix2", N_("Forward Matrix 2"), N_("This tag defines a matrix that maps white balanced camera colors to XYZ " "D50 colors."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc716, "PreviewApplicationName", N_("Preview Application Name"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG tag + {0xc716, "PreviewApplicationName", N_("Preview Application Name"), N_("A UTF-8 encoded string containing the name of the application that " "created the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc717, "PreviewApplicationVersion", N_("Preview Application Version"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc717, "PreviewApplicationVersion", N_("Preview Application Version"), N_("A UTF-8 encoded string containing the version number of the application " "that created the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc718, "PreviewSettingsName", N_("Preview Settings Name"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc718, "PreviewSettingsName", N_("Preview Settings Name"), N_("A UTF-8 encoded string containing the name of the conversion settings " "(for example, snapshot name) used for the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc719, "PreviewSettingsDigest", N_("Preview Settings Digest"), + ifd0Id, dngTags, unsignedByte, 0, printValue}, // DNG tag + {0xc719, "PreviewSettingsDigest", N_("Preview Settings Digest"), N_("A unique ID of the conversion settings (for example, MD5 digest) used " "to render the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag - TagInfo(0xc71a, "PreviewColorSpace", N_("Preview Color Space"), + ifd0Id, dngTags, unsignedByte, 16, printValue}, // DNG tag + {0xc71a, "PreviewColorSpace", N_("Preview Color Space"), N_("This tag specifies the color space in which the rendered preview in this " "IFD is stored. The default value for this tag is sRGB for color previews " "and Gray Gamma 2.2 for monochrome previews."), - ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngPreviewColorSpace)), // DNG tag - TagInfo(0xc71b, "PreviewDateTime", N_("Preview Date Time"), + ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngPreviewColorSpace)}, // DNG tag + {0xc71b, "PreviewDateTime", N_("Preview Date Time"), N_("This tag is an ASCII string containing the name of the date/time at which " "the preview stored in the IFD was rendered. The date/time is encoded using " "ISO 8601 format."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag - TagInfo(0xc71c, "RawImageDigest", N_("Raw Image Digest"), + ifd0Id, dngTags, asciiString, 0, printValue}, // DNG tag + {0xc71c, "RawImageDigest", N_("Raw Image Digest"), N_("This tag is an MD5 digest of the raw image data. All pixels in the image " "are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits " "deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). " "The data for each pixel is processed in little-endian byte order."), - ifd0Id, dngTags, undefined, 16, printValue), // DNG tag - TagInfo(0xc71d, "OriginalRawFileDigest", N_("Original Raw File Digest"), + ifd0Id, dngTags, undefined, 16, printValue}, // DNG tag + {0xc71d, "OriginalRawFileDigest", N_("Original Raw File Digest"), N_("This tag is an MD5 digest of the data stored in the OriginalRawFileData " "tag."), - ifd0Id, dngTags, undefined, 16, printValue), // DNG tag - TagInfo(0xc71e, "SubTileBlockSize", N_("Sub Tile Block Size"), + ifd0Id, dngTags, undefined, 16, printValue}, // DNG tag + {0xc71e, "SubTileBlockSize", N_("Sub Tile Block Size"), N_("Normally, the pixels within a tile are stored in simple row-scan order. " "This tag specifies that the pixels within a tile should be grouped first " "into rectangular blocks of the specified size. These blocks are stored in " "row-scan order. Within each block, the pixels are stored in row-scan order. " "The use of a non-default value for this tag requires setting the " "DNGBackwardVersion tag to at least 1.2.0.0."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG tag - TagInfo(0xc71f, "RowInterleaveFactor", N_("Row Interleave Factor"), + ifd0Id, dngTags, unsignedLong, 2, printValue}, // DNG tag + {0xc71f, "RowInterleaveFactor", N_("Row Interleave Factor"), N_("This tag specifies that rows of the image are stored in interleaved " "order. The value of the tag specifies the number of interleaved fields. " "The use of a non-default value for this tag requires setting the " "DNGBackwardVersion tag to at least 1.2.0.0."), - ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag - TagInfo(0xc725, "ProfileLookTableDims", N_("Profile Look Table Dims"), + ifd0Id, dngTags, unsignedLong, 1, printValue}, // DNG tag + {0xc725, "ProfileLookTableDims", N_("Profile Look Table Dims"), N_("This tag specifies the number of input samples in each dimension of a " "default \"look\" table. The data for this table is stored in the " "ProfileLookTableData tag."), - ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag - TagInfo(0xc726, "ProfileLookTableData", N_("Profile Look Table Data"), + ifd0Id, dngTags, unsignedLong, 3, printValue}, // DNG tag + {0xc726, "ProfileLookTableData", N_("Profile Look Table Data"), N_("This tag contains a default \"look\" table that can be applied while " "processing the image as a starting point for user adjustment. This table " "uses the same format as the tables stored in the ProfileHueSatMapData1 " @@ -1474,31 +1474,31 @@ namespace Exiv2 { "value divisions in the outer loop, the hue divisions in the middle loop, " "and the saturation divisions in the inner loop. All zero input saturation " "entries are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag - TagInfo(0xc740, "OpcodeList1", N_("Opcode List 1"), + ifd0Id, dngTags, tiffFloat, -1, printValue}, // DNG tag + {0xc740, "OpcodeList1", N_("Opcode List 1"), N_("Specifies the list of opcodes that should be applied to the raw image, " "as read directly from the file."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc741, "OpcodeList2", N_("Opcode List 2"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG tag + {0xc741, "OpcodeList2", N_("Opcode List 2"), N_("Specifies the list of opcodes that should be applied to the raw image, " "just after it has been mapped to linear reference values."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc74e, "OpcodeList3", N_("Opcode List 3"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG tag + {0xc74e, "OpcodeList3", N_("Opcode List 3"), N_("Specifies the list of opcodes that should be applied to the raw image, " "just after it has been demosaiced."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc761, "NoiseProfile", N_("Noise Profile"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG tag + {0xc761, "NoiseProfile", N_("Noise Profile"), N_("NoiseProfile describes the amount of noise in a raw image. Specifically, " "this tag models the amount of signal-dependent photon (shot) noise and " "signal-independent sensor readout noise, two common sources of noise in " "raw images. The model assumes that the noise is white and spatially " "independent, ignoring fixed pattern effects and other sources of noise (e.g., " "pixel response non-uniformity, spatially-dependent thermal effects, etc.)."), - ifd0Id, dngTags, tiffDouble, -1, printValue), // DNG tag + ifd0Id, dngTags, tiffDouble, -1, printValue}, // DNG tag //////////////////////////////////////// // http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/cinemadng/pdfs/CinemaDNG_Format_Specification_v1_1.pdf - TagInfo(0xc763, "TimeCodes", N_("TimeCodes"), + {0xc763, "TimeCodes", N_("TimeCodes"), N_("The optional TimeCodes tag shall contain an ordered array of time codes. " "All time codes shall be 8 bytes long and in binary format. The tag may " "contain from 1 to 10 time codes. When the tag contains more than one time " @@ -1506,15 +1506,15 @@ namespace Exiv2 { "does not prescribe how to use multiple time codes. " "Each time code shall be as defined for the 8-byte time code structure in " "SMPTE 331M-2004, Section 8.3. See also SMPTE 12-1-2008 and SMPTE 309-1999."), - ifd0Id, dngTags, unsignedByte, 8, printValue), // DNG tag - TagInfo(0xc764, "FrameRate", N_("FrameRate"), + ifd0Id, dngTags, unsignedByte, 8, printValue}, // DNG tag + {0xc764, "FrameRate", N_("FrameRate"), N_("The optional FrameRate tag shall specify the video frame " "rate in number of image frames per second, expressed as a " "signed rational number. The numerator shall be non-negative " "and the denominator shall be positive. This field value is " "identical to the sample rate field in SMPTE 377-1-2009."), - ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag - TagInfo(0xc772, "TStop", N_("TStop"), + ifd0Id, dngTags, signedRational, 1, printValue}, // DNG tag + {0xc772, "TStop", N_("TStop"), N_("The optional TStop tag shall specify the T-stop of the " "actual lens, expressed as an unsigned rational number. " "T-stop is also known as T-number or the photometric " @@ -1524,116 +1524,116 @@ namespace Exiv2 { "two numbers shall be used to indicate a T-stop range, " "in which case the first number shall be the minimum " "T-stop and the second number shall be the maximum T-stop."), - ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag - TagInfo(0xc789, "ReelName", N_("ReelName"), + ifd0Id, dngTags, signedRational, 1, printValue}, // DNG tag + {0xc789, "ReelName", N_("ReelName"), N_("The optional ReelName tag shall specify a name for a " "sequence of images, where each image in the sequence has " "a unique image identifier (including but not limited to file " "name, frame number, date time, time code)."), - ifd0Id, dngTags, asciiString, -1, printValue), // DNG tag - TagInfo(0xc7a1, "CameraLabel", N_("CameraLabel"), + ifd0Id, dngTags, asciiString, -1, printValue}, // DNG tag + {0xc7a1, "CameraLabel", N_("CameraLabel"), N_("The optional CameraLabel tag shall specify a text label " "for how the camera is used or assigned in this clip. " "This tag is similar to CameraLabel in XMP."), - ifd0Id, dngTags, asciiString, -1, printValue), // DNG tag - TagInfo(0xc791, "OriginalDefaultFinalSize", N_("Original Default Final Size"), + ifd0Id, dngTags, asciiString, -1, printValue}, // DNG tag + {0xc791, "OriginalDefaultFinalSize", N_("Original Default Final Size"), N_("If this file is a proxy for a larger original DNG file, this tag specifics the " "default final size of the larger original file from which this proxy was generated. " "The default value for this tag is default final size of the current DNG file, which " "is DefaultCropSize * DefaultScale."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG 1.4 tag - TagInfo(0xc792, "OriginalBestQualityFinalSize", N_("Original Best Quality Final Size"), + ifd0Id, dngTags, unsignedLong, 2, printValue}, // DNG 1.4 tag + {0xc792, "OriginalBestQualityFinalSize", N_("Original Best Quality Final Size"), N_("If this file is a proxy for a larger original DNG file, this tag specifics the " "best quality final size of the larger original file from which this proxy was " "generated. The default value for this tag is the OriginalDefaultFinalSize, if " "specified. Otherwise the default value for this tag is the best quality size of " "the current DNG file, which is DefaultCropSize * DefaultScale * BestQualityScale."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG 1.4 tag - TagInfo(0xc793, "OriginalDefaultCropSize", N_("Original Default Crop Size"), + ifd0Id, dngTags, unsignedLong, 2, printValue}, // DNG 1.4 tag + {0xc793, "OriginalDefaultCropSize", N_("Original Default Crop Size"), N_("If this file is a proxy for a larger original DNG file, this tag specifics the " "DefaultCropSize of the larger original file from which this proxy was generated. " "The default value for this tag is OriginalDefaultFinalSize, if specified. Otherwise, " "the default value for this tag is the DefaultCropSize of the current DNG file."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG 1.4 tag - TagInfo(0xc7a3, "ProfileHueSatMapEncoding", N_("Profile Hue Sat Map Encoding"), + ifd0Id, dngTags, unsignedLong, 2, printValue}, // DNG 1.4 tag + {0xc7a3, "ProfileHueSatMapEncoding", N_("Profile Hue Sat Map Encoding"), N_("Provides a way for color profiles to specify how indexing into a 3D HueSatMap is " "performed during raw conversion. This tag is not applicable to 2.5D HueSatMap tables " "(i.e., where the Value dimension is 1)."), - ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngProfileEncoding)), // DNG 1.4 tag - TagInfo(0xc7a4, "ProfileLookTableEncoding", N_("Profile Look Table Encoding"), + ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngProfileEncoding)}, // DNG 1.4 tag + {0xc7a4, "ProfileLookTableEncoding", N_("Profile Look Table Encoding"), N_("Provides a way for color profiles to specify how indexing into a 3D LookTable is " "performed during raw conversion. This tag is not applicable to a 2.5D LookTable " "(i.e., where the Value dimension is 1)."), - ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngProfileEncoding)), // DNG 1.4 tag - TagInfo(0xc7a5, "BaselineExposureOffset", N_("Baseline Exposure Offset"), + ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngProfileEncoding)}, // DNG 1.4 tag + {0xc7a5, "BaselineExposureOffset", N_("Baseline Exposure Offset"), N_("Provides a way for color profiles to increase or decrease exposure during raw conversion. " "BaselineExposureOffset specifies the amount (in EV units) to add to the BaselineExposure tag " "during image rendering. For example, if the BaselineExposure value for a given camera model " "is +0.3, and the BaselineExposureOffset value for a given camera profile used to render an " "image for that camera model is -0.7, then the actual default exposure value used during " "rendering will be +0.3 - 0.7 = -0.4."), - ifd0Id, dngTags, signedRational, 1, printFloat), // DNG 1.4 tag - TagInfo(0xc7a6, "DefaultBlackRender", N_("Default Black Render"), + ifd0Id, dngTags, signedRational, 1, printFloat}, // DNG 1.4 tag + {0xc7a6, "DefaultBlackRender", N_("Default Black Render"), N_("This optional tag in a color profile provides a hint to the raw converter " "regarding how to handle the black point (e.g., flare subtraction) during rendering. " "If set to Auto, the raw converter should perform black subtraction during " "rendering. If set to None, the raw converter should not perform any black " "subtraction during rendering."), - ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngDefaultBlackRender)), // DNG 1.4 tag - TagInfo(0xc7a7, "NewRawImageDigest", N_("New Raw Image Digest"), + ifd0Id, dngTags, unsignedLong, 1, EXV_PRINT_TAG(dngDefaultBlackRender)}, // DNG 1.4 tag + {0xc7a7, "NewRawImageDigest", N_("New Raw Image Digest"), N_("This tag is a modified MD5 digest of the raw image data. It has been updated " "from the algorithm used to compute the RawImageDigest tag be more multi-processor " "friendly, and to support lossy compression algorithms."), - ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG 1.4 tag - TagInfo(0xc7a8, "RawToPreviewGain", N_("Raw To Preview Gain"), + ifd0Id, dngTags, unsignedByte, 16, printValue}, // DNG 1.4 tag + {0xc7a8, "RawToPreviewGain", N_("Raw To Preview Gain"), N_("The gain (what number the sample values are multiplied by) between the main " "raw IFD and the preview IFD containing this tag."), - ifd0Id, dngTags, tiffDouble, 1, printValue), // DNG 1.4 tag - TagInfo(0xc7b5, "DefaultUserCrop", N_("Default User Crop"), + ifd0Id, dngTags, tiffDouble, 1, printValue}, // DNG 1.4 tag + {0xc7b5, "DefaultUserCrop", N_("Default User Crop"), N_("Specifies a default user crop rectangle in relative coordinates. " "The values must satisfy: 0.0 <= top < bottom <= 1.0, 0.0 <= left < right <= 1.0." "The default values of (top = 0, left = 0, bottom = 1, right = 1) correspond exactly to the default " "crop rectangle (as specified by the DefaultCropOrigin and DefaultCropSize tags)."), - ifd0Id, dngTags, unsignedRational, 4, printFloat), // DNG 1.4 tag - TagInfo(0xc7e9, "DepthFormat", N_("Depth Format"), + ifd0Id, dngTags, unsignedRational, 4, printFloat}, // DNG 1.4 tag + {0xc7e9, "DepthFormat", N_("Depth Format"), N_("Specifies the encoding of any depth data in the file. Can be unknown (apart " "from nearer distances being closer to zero, and farther distances being closer to " "the maximum value), linear (values vary linearly from zero representing DepthNear " "to the maximum value representing DepthFar), or inverse (values are stored inverse " "linearly, with zero representing DepthNear and the maximum value representing " "DepthFar)."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngDepthFormat)), // DNG 1.5 tag - TagInfo(0xc7ea, "DepthNear", N_("Depth Near"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngDepthFormat)}, // DNG 1.5 tag + {0xc7ea, "DepthNear", N_("Depth Near"), N_("Specifies distance from the camera represented by the zero value in the depth map. " "0/0 means unknown."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG 1.5 tag - TagInfo(0xc7eb, "DepthFar", N_("Depth Far"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG 1.5 tag + {0xc7eb, "DepthFar", N_("Depth Far"), N_("Specifies distance from the camera represented by the maximum value in the depth " "map. 0/0 means unknown. 1/0 means infinity, which is valid for unknown and inverse " "depth formats."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG 1.5 tag - TagInfo(0xc7ec, "DepthUnits", N_("Depth Units"), + ifd0Id, dngTags, unsignedRational, 1, printValue}, // DNG 1.5 tag + {0xc7ec, "DepthUnits", N_("Depth Units"), N_("Specifies the measurement units for the DepthNear and DepthFar tags."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngDepthUnits)), // DNG 1.5 tag - TagInfo(0xc7ed, "DepthMeasureType", N_("Depth Measure Type"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngDepthUnits)}, // DNG 1.5 tag + {0xc7ed, "DepthMeasureType", N_("Depth Measure Type"), N_("Specifies the measurement geometry for the depth map. Can be unknown, measured " "along the optical axis, or measured along the optical ray passing through each " "pixel."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngDepthMeasureType)), // DNG 1.5 tag - TagInfo(0xc7ee, "EnhanceParams", N_("Enhance Params"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(dngDepthMeasureType)}, // DNG 1.5 tag + {0xc7ee, "EnhanceParams", N_("Enhance Params"), N_("A string that documents how the enhanced image data was processed."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG 1.5 tag - TagInfo(0xcd2d, "ProfileGainTableMap", N_("Profile Gain Table Map"), + ifd0Id, dngTags, asciiString, 0, printValue}, // DNG 1.5 tag + {0xcd2d, "ProfileGainTableMap", N_("Profile Gain Table Map"), N_("Contains spatially varying gain tables that can be applied while processing the " "image as a starting point for user adjustments."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd2e, "SemanticName", N_("Semantic Name"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG 1.6 tag + {0xcd2e, "SemanticName", N_("Semantic Name"), N_("A string that identifies the semantic mask."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG 1.6 tag - TagInfo(0xcd30, "SemanticInstanceID", N_("Semantic Instance ID"), + ifd0Id, dngTags, asciiString, 0, printValue}, // DNG 1.6 tag + {0xcd30, "SemanticInstanceID", N_("Semantic Instance ID"), N_("A string that identifies a specific instance in a semantic mask."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG 1.6 tag - TagInfo(0xcd31, "CalibrationIlluminant3", N_("Calibration Illuminant 3"), + ifd0Id, dngTags, asciiString, 0, printValue}, // DNG 1.6 tag + {0xcd31, "CalibrationIlluminant3", N_("Calibration Illuminant 3"), N_("The illuminant used for an optional thrid set of color calibration " "tags (ColorMatrix3, CameraCalibration3, ReductionMatrix3). The legal " "values for this tag are the same as the legal values for the " @@ -1641,8 +1641,8 @@ namespace Exiv2 { "must also be present. If set to 255 (Other), then the IFD must also " "include a IlluminantData3 tag to specify the x-y chromaticity or " "spectral power distribution function for this illuminant."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifLightSource)), // DNG 1.6 tag - TagInfo(0xcd32, "CameraCalibration3", N_("Camera Calibration 3"), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifLightSource)}, // DNG 1.6 tag + {0xcd32, "CameraCalibration3", N_("Camera Calibration 3"), N_("CameraCalibration3 defines a calibration matrix that transforms " "reference camera native space values to individual camera native " "space values under the third calibration illuminant. The matrix is " @@ -1651,37 +1651,37 @@ namespace Exiv2 { "swap in replacement color matrices based on UniqueCameraModel tag, " "while still taking advantage of any per-individual camera calibration " "performed by the camera manufacturer."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd33, "ColorMatrix3", N_("Color Matrix 3"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG 1.6 tag + {0xcd33, "ColorMatrix3", N_("Color Matrix 3"), N_("ColorMatrix3 defines a transformation matrix that converts XYZ " "values to reference camera native color space values, under the " "third calibration illuminant. The matrix values are stored in row " "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd34, "ForwardMatrix3", N_("Forward Matrix 3"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG 1.6 tag + {0xcd34, "ForwardMatrix3", N_("Forward Matrix 3"), N_("This tag defines a matrix that maps white balanced camera colors to XYZ " "D50 colors."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd35, "IlluminantData1", N_("Illuminant Data 1"), + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG 1.6 tag + {0xcd35, "IlluminantData1", N_("Illuminant Data 1"), N_("When the CalibrationIlluminant1 tag is set to 255 (Other), " "then the IlluminantData1 tag is required and specifies the data " "for the first illuminant. Otherwise, this tag is ignored. The " "illuminant data may be specified as either a x-y chromaticity " "coordinate or as a spectral power distribution function."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd36, "IlluminantData2", N_("Illuminant Data 2"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG 1.6 tag + {0xcd36, "IlluminantData2", N_("Illuminant Data 2"), N_("When the CalibrationIlluminant2 tag is set to 255 (Other), " "then the IlluminantData2 tag is required and specifies the data " "for the second illuminant. Otherwise, this tag is ignored. The " "format of the data is the same as IlluminantData1."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd37, "IlluminantData3", N_("Illuminant Data 3"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG 1.6 tag + {0xcd37, "IlluminantData3", N_("Illuminant Data 3"), N_("When the CalibrationIlluminant3 tag is set to 255 (Other), " "then the IlluminantData3 tag is required and specifies the data " "for the third illuminant. Otherwise, this tag is ignored. The " "format of the data is the same as IlluminantData1."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG 1.6 tag - TagInfo(0xcd39, "ProfileHueSatMapData3", N_("Profile Hue Sat Map Data 3"), + ifd0Id, dngTags, undefined, -1, printValue}, // DNG 1.6 tag + {0xcd39, "ProfileHueSatMapData3", N_("Profile Hue Sat Map Data 3"), N_("This tag contains the data for the third hue/saturation/value mapping " "table. Each entry of the table contains three 32-bit IEEE floating-point " "values. The first entry is hue shift in degrees; the second entry is " @@ -1690,20 +1690,20 @@ namespace Exiv2 { "divisions in the outer loop, the hue divisions in the middle loop, and the " "saturation divisions in the inner loop. All zero input saturation entries " "are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG 1.6 tag - TagInfo(0xcd3a, "ReductionMatrix3", N_("Reduction Matrix 3"), + ifd0Id, dngTags, tiffFloat, 0, printValue}, // DNG 1.6 tag + {0xcd3a, "ReductionMatrix3", N_("Reduction Matrix 3"), N_("ReductionMatrix3 defines a dimensionality reduction matrix for use as " "the first stage in converting color camera native space values to XYZ " "values, under the third calibration illuminant. This tag may only be " "used if ColorPlanes is greater than 3. The matrix is stored in row " "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG 1.6 tag + ifd0Id, dngTags, signedRational, -1, printValue}, // DNG 1.6 tag //////////////////////////////////////// // End of list marker - TagInfo(0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"), + {0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"), N_("Unknown IFD tag"), - ifd0Id, sectionIdNotSet, asciiString, -1, printValue) + ifd0Id, sectionIdNotSet, asciiString, -1, printValue}, }; const TagInfo* ifdTagList() @@ -1712,7 +1712,7 @@ namespace Exiv2 { } //! CompositeImage, tag 0xa460 - extern const TagDetails exifCompositeImage[] = { + constexpr TagDetails exifCompositeImage[] = { { 0, N_("Unknown") }, { 1, N_("NonComposite") }, { 2, N_("GeneralComposite") }, @@ -1720,84 +1720,84 @@ namespace Exiv2 { }; // Exif IFD Tags - static const TagInfo exifTagInfo[] = { - TagInfo(0x829a, "ExposureTime", N_("Exposure Time"), + constexpr TagInfo exifTagInfo[] = { + {0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds (sec)."), - exifId, captureCond, unsignedRational, 1, print0x829a), - TagInfo(0x829d, "FNumber", N_("FNumber"), + exifId, captureCond, unsignedRational, 1, print0x829a}, + {0x829d, "FNumber", N_("FNumber"), N_("The F number."), - exifId, captureCond, unsignedRational, 1, print0x829d), - TagInfo(0x8822, "ExposureProgram", N_("Exposure Program"), + exifId, captureCond, unsignedRational, 1, print0x829d}, + {0x8822, "ExposureProgram", N_("Exposure Program"), N_("The class of the program used by the camera to set exposure " "when the picture is taken."), - exifId, captureCond, unsignedShort, 1, print0x8822), - TagInfo(0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), + exifId, captureCond, unsignedShort, 1, print0x8822}, + {0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), N_("Indicates the spectral sensitivity of each channel of the " "camera used. The tag value is an ASCII string compatible " "with the standard developed by the ASTM Technical Committee."), - exifId, captureCond, asciiString, 0, printValue), - TagInfo(0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), + exifId, captureCond, asciiString, 0, printValue}, + {0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), N_("Indicates the ISO Speed and ISO Latitude of the camera or " "input device as specified in ISO 12232."), - exifId, captureCond, unsignedShort, 0, print0x8827), - TagInfo(0x8828, "OECF", N_("Opto-Electoric Conversion Function"), + exifId, captureCond, unsignedShort, 0, print0x8827}, + {0x8828, "OECF", N_("Opto-Electoric Conversion Function"), N_("Indicates the Opto-Electoric Conversion Function (OECF) " "specified in ISO 14524. is the relationship between " "the camera optical input and the image values."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0x8830, "SensitivityType", N_("Sensitivity Type"), + exifId, captureCond, undefined, 0, printValue}, + {0x8830, "SensitivityType", N_("Sensitivity Type"), N_("The SensitivityType tag indicates which one of the parameters of " "ISO12232 is the PhotographicSensitivity tag. Although it is an optional tag, " "it should be recorded when a PhotographicSensitivity tag is recorded. " "Value = 4, 5, 6, or 7 may be used in case that the values of plural " "parameters are the same."), - exifId, captureCond, unsignedShort, 1, printValue), - TagInfo(0x8831, "StandardOutputSensitivity", N_("Standard Output Sensitivity"), + exifId, captureCond, unsignedShort, 1, printValue}, + {0x8831, "StandardOutputSensitivity", N_("Standard Output Sensitivity"), N_("This tag indicates the standard output sensitivity value of a camera or " "input device defined in ISO 12232. When recording this tag, the " "PhotographicSensitivity and SensitivityType tags shall also be recorded."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8832, "RecommendedExposureIndex", N_("Recommended Exposure Index"), + exifId, captureCond, unsignedLong, 1, printValue}, + {0x8832, "RecommendedExposureIndex", N_("Recommended Exposure Index"), N_("This tag indicates the recommended exposure index value of a camera or " "input device defined in ISO 12232. When recording this tag, the " "PhotographicSensitivity and SensitivityType tags shall also be recorded."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8833, "ISOSpeed", N_("ISO Speed"), + exifId, captureCond, unsignedLong, 1, printValue}, + {0x8833, "ISOSpeed", N_("ISO Speed"), N_("This tag indicates the ISO speed value of a camera or input device that " "is defined in ISO 12232. When recording this tag, the PhotographicSensitivity " "and SensitivityType tags shall also be recorded."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8834, "ISOSpeedLatitudeyyy", N_("ISO Speed Latitude yyy"), + exifId, captureCond, unsignedLong, 1, printValue}, + {0x8834, "ISOSpeedLatitudeyyy", N_("ISO Speed Latitude yyy"), N_("This tag indicates the ISO speed latitude yyy value of a camera or input " "device that is defined in ISO 12232. However, this tag shall not be recorded " "without ISOSpeed and ISOSpeedLatitudezzz."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8835, "ISOSpeedLatitudezzz", N_("ISO Speed Latitude zzz"), + exifId, captureCond, unsignedLong, 1, printValue}, + {0x8835, "ISOSpeedLatitudezzz", N_("ISO Speed Latitude zzz"), N_("This tag indicates the ISO speed latitude zzz value of a camera or input " "device that is defined in ISO 12232. However, this tag shall not be recorded " "without ISOSpeed and ISOSpeedLatitudeyyy."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x9000, "ExifVersion", N_("Exif Version"), + exifId, captureCond, unsignedLong, 1, printValue}, + {0x9000, "ExifVersion", N_("Exif Version"), N_("The version of this standard supported. Nonexistence of this " "field is taken to mean nonconformance to the standard."), - exifId, exifVersion, undefined, 4, printExifVersion), - TagInfo(0x9003, "DateTimeOriginal", N_("Date and Time (original)"), + exifId, exifVersion, undefined, 4, printExifVersion}, + {0x9003, "DateTimeOriginal", N_("Date and Time (original)"), N_("The date and time when the original image data was generated. " "For a digital still camera the date and time the picture was taken are recorded."), - exifId, dateTime, asciiString, 20, printValue), - TagInfo(0x9004, "DateTimeDigitized", N_("Date and Time (digitized)"), + exifId, dateTime, asciiString, 20, printValue}, + {0x9004, "DateTimeDigitized", N_("Date and Time (digitized)"), N_("The date and time when the image was stored as digital data."), - exifId, dateTime, asciiString, 20, printValue), - TagInfo(0x9010, "OffsetTime", N_("Offset Time"), + exifId, dateTime, asciiString, 20, printValue}, + {0x9010, "OffsetTime", N_("Offset Time"), N_("Time difference from Universal Time Coordinated including daylight saving time of DateTime tag."), - exifId, dateTime, asciiString, 7, printValue), // Exif 2.31 - TagInfo(0x9011, "OffsetTimeOriginal", N_("Offset Time Original"), + exifId, dateTime, asciiString, 7, printValue}, // Exif 2.31 + {0x9011, "OffsetTimeOriginal", N_("Offset Time Original"), N_("Time difference from Universal Time Coordinated including daylight saving time of DateTimeOriginal tag."), - exifId, dateTime, asciiString, 7, printValue), // Exif 2.31 - TagInfo(0x9012, "OffsetTimeDigitized", N_("Offset Time Digitized"), + exifId, dateTime, asciiString, 7, printValue}, // Exif 2.31 + {0x9012, "OffsetTimeDigitized", N_("Offset Time Digitized"), N_("Time difference from Universal Time Coordinated including daylight saving time of DateTimeDigitized tag."), - exifId, dateTime, asciiString, 7, printValue), // Exif 2.31 - TagInfo(0x9101, "ComponentsConfiguration", N_("Components Configuration"), + exifId, dateTime, asciiString, 7, printValue}, // Exif 2.31 + {0x9101, "ComponentsConfiguration", N_("Components Configuration"), N_("Information specific to compressed data. The channels of " "each component are arranged in order from the 1st " "component to the 4th. For uncompressed data the data " @@ -1806,100 +1806,100 @@ namespace Exiv2 { "express the order of Y, Cb and Cr, this tag is provided " "for cases when compressed data uses components other than " "Y, Cb, and Cr and to enable support of other sequences."), - exifId, imgConfig, undefined, 4, print0x9101), - TagInfo(0x9102, "CompressedBitsPerPixel", N_("Compressed Bits per Pixel"), + exifId, imgConfig, undefined, 4, print0x9101}, + {0x9102, "CompressedBitsPerPixel", N_("Compressed Bits per Pixel"), N_("Information specific to compressed data. The compression mode " "used for a compressed image is indicated in unit bits per pixel."), - exifId, imgConfig, unsignedRational, 1, printFloat), - TagInfo(0x9201, "ShutterSpeedValue", N_("Shutter speed"), + exifId, imgConfig, unsignedRational, 1, printFloat}, + {0x9201, "ShutterSpeedValue", N_("Shutter speed"), N_("Shutter speed. The unit is the APEX (Additive System of " "Photographic Exposure) setting."), - exifId, captureCond, signedRational, 1, print0x9201), - TagInfo(0x9202, "ApertureValue", N_("Aperture"), + exifId, captureCond, signedRational, 1, print0x9201}, + {0x9202, "ApertureValue", N_("Aperture"), N_("The lens aperture. The unit is the APEX value."), - exifId, captureCond, unsignedRational, 1, print0x9202), - TagInfo(0x9203, "BrightnessValue", N_("Brightness"), + exifId, captureCond, unsignedRational, 1, print0x9202}, + {0x9203, "BrightnessValue", N_("Brightness"), N_("The value of brightness. The unit is the APEX value. " "Ordinarily it is given in the range of -99.99 to 99.99."), - exifId, captureCond, signedRational, 1, printFloat), - TagInfo(0x9204, "ExposureBiasValue", N_("Exposure Bias"), + exifId, captureCond, signedRational, 1, printFloat}, + {0x9204, "ExposureBiasValue", N_("Exposure Bias"), N_("The exposure bias. The units is the APEX value. Ordinarily " "it is given in the range of -99.99 to 99.99."), - exifId, captureCond, signedRational, 1, print0x9204), - TagInfo(0x9205, "MaxApertureValue", N_("Max Aperture Value"), + exifId, captureCond, signedRational, 1, print0x9204}, + {0x9205, "MaxApertureValue", N_("Max Aperture Value"), N_("The smallest F number of the lens. The unit is the APEX value. " "Ordinarily it is given in the range of 00.00 to 99.99, " "but it is not limited to this range."), - exifId, captureCond, unsignedRational, 1, print0x9202), - TagInfo(0x9206, "SubjectDistance", N_("Subject Distance"), + exifId, captureCond, unsignedRational, 1, print0x9202}, + {0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), - exifId, captureCond, unsignedRational, 1, print0x9206), - TagInfo(0x9207, "MeteringMode", N_("Metering Mode"), + exifId, captureCond, unsignedRational, 1, print0x9206}, + {0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), - exifId, captureCond, unsignedShort, 1, print0x9207), - TagInfo(0x9208, "LightSource", N_("Light Source"), + exifId, captureCond, unsignedShort, 1, print0x9207}, + {0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), - exifId, captureCond, unsignedShort, 1, print0x9208), - TagInfo(0x9209, "Flash", N_("Flash"), + exifId, captureCond, unsignedShort, 1, print0x9208}, + {0x9209, "Flash", N_("Flash"), N_("This tag is recorded when an image is taken using a strobe light (flash)."), - exifId, captureCond, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)), - TagInfo(0x920a, "FocalLength", N_("Focal Length"), + exifId, captureCond, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)}, + {0x920a, "FocalLength", N_("Focal Length"), N_("The actual focal length of the lens, in mm. Conversion is not " "made to the focal length of a 35 mm film camera."), - exifId, captureCond, unsignedRational, 1, print0x920a), - TagInfo(0x9214, "SubjectArea", N_("Subject Area"), + exifId, captureCond, unsignedRational, 1, print0x920a}, + {0x9214, "SubjectArea", N_("Subject Area"), N_("This tag indicates the location and area of the main subject " "in the overall scene."), - exifId, captureCond, unsignedShort, -1, printValue), - TagInfo(0x927c, "MakerNote", N_("Maker Note"), + exifId, captureCond, unsignedShort, -1, printValue}, + {0x927c, "MakerNote", N_("Maker Note"), N_("A tag for manufacturers of Exif writers to record any desired " "information. The contents are up to the manufacturer."), - exifId, userInfo, undefined, 0, printValue), - TagInfo(0x9286, "UserComment", N_("User Comment"), + exifId, userInfo, undefined, 0, printValue}, + {0x9286, "UserComment", N_("User Comment"), N_("A tag for Exif users to write keywords or comments on the image " "besides those in , and without the " "character code limitations of the tag."), - exifId, userInfo, comment, 0, printValue), - TagInfo(0x9290, "SubSecTime", N_("Sub-seconds Time"), + exifId, userInfo, comment, 0, printValue}, + {0x9290, "SubSecTime", N_("Sub-seconds Time"), N_("A tag used to record fractions of seconds for the tag."), - exifId, dateTime, asciiString, 0, printValue), - TagInfo(0x9291, "SubSecTimeOriginal", N_("Sub-seconds Time Original"), + exifId, dateTime, asciiString, 0, printValue}, + {0x9291, "SubSecTimeOriginal", N_("Sub-seconds Time Original"), N_("A tag used to record fractions of seconds for the tag."), - exifId, dateTime, asciiString, 0, printValue), - TagInfo(0x9292, "SubSecTimeDigitized", N_("Sub-seconds Time Digitized"), + exifId, dateTime, asciiString, 0, printValue}, + {0x9292, "SubSecTimeDigitized", N_("Sub-seconds Time Digitized"), N_("A tag used to record fractions of seconds for the tag."), - exifId, dateTime, asciiString, 0, printValue), - TagInfo(0x9400, "Temperature", N_("Temperature"), + exifId, dateTime, asciiString, 0, printValue}, + {0x9400, "Temperature", N_("Temperature"), N_("Temperature as the ambient situation at the shot, for example the room " "temperature where the photographer was holding the camera. The unit is " "degrees C."), - exifId, captureCond, signedRational, 1, printValue), // Exif 2.31 - TagInfo(0x9401, "Humidity", N_("Humidity"), + exifId, captureCond, signedRational, 1, printValue}, // Exif 2.31 + {0x9401, "Humidity", N_("Humidity"), N_("Humidity as the ambient situation at the shot, for example the room humidity " "where the photographer was holding the camera. The unit is %."), - exifId, captureCond, unsignedRational, 1, printValue), // Exif 2.31 - TagInfo(0x9402, "Pressure", N_("Pressure"), + exifId, captureCond, unsignedRational, 1, printValue}, // Exif 2.31 + {0x9402, "Pressure", N_("Pressure"), N_("Pressure as the ambient situation at the shot, for example the room atmosphere " "where the photographer was holding the camera or the water pressure under the sea. " "The unit is hPa."), - exifId, captureCond, unsignedRational, 1, printValue), // Exif 2.31 - TagInfo(0x9403, "WaterDepth", N_("WaterDepth"), + exifId, captureCond, unsignedRational, 1, printValue}, // Exif 2.31 + {0x9403, "WaterDepth", N_("WaterDepth"), N_("Water depth as the ambient situation at the shot, for example the water depth " "of the camera at underwater photography. The unit is m."), - exifId, captureCond, signedRational, 1, printValue), // Exif 2.31 - TagInfo(0x9404, "Acceleration", N_("Acceleration"), + exifId, captureCond, signedRational, 1, printValue}, // Exif 2.31 + {0x9404, "Acceleration", N_("Acceleration"), N_("Acceleration (a scalar regardless of direction) as the ambient situation at the " "shot, for example the driving acceleration of the vehicle which the photographer " "rode on at the shot. The unit is mGal (10e-5 m/s^2)."), - exifId, captureCond, unsignedRational, 1, printValue), // Exif 2.31 - TagInfo(0x9405, "CameraElevationAngle", N_("Camera elevation angle"), + exifId, captureCond, unsignedRational, 1, printValue}, // Exif 2.31 + {0x9405, "CameraElevationAngle", N_("Camera elevation angle"), N_("Elevation/depression. angle of the orientation of the camera(imaging optical " "axis) as the ambient situation at the shot. The unit is degrees."), - exifId, captureCond, signedRational, 1, printValue), // Exif 2.31 - TagInfo(0xa000, "FlashpixVersion", N_("FlashPix Version"), + exifId, captureCond, signedRational, 1, printValue}, // Exif 2.31 + {0xa000, "FlashpixVersion", N_("FlashPix Version"), N_("The FlashPix format version supported by a FPXR file."), - exifId, exifVersion, undefined, 4, printExifVersion), - TagInfo(0xa001, "ColorSpace", N_("Color Space"), + exifId, exifVersion, undefined, 4, printExifVersion}, + {0xa001, "ColorSpace", N_("Color Space"), N_("The color space information tag is always " "recorded as the color space specifier. Normally sRGB " "is used to define the color space based on the PC monitor " @@ -1907,15 +1907,15 @@ namespace Exiv2 { "sRGB is used, Uncalibrated is set. Image data " "recorded as Uncalibrated can be treated as sRGB when it is " "converted to FlashPix."), - exifId, imgCharacter, unsignedShort, 1, print0xa001), - TagInfo(0xa002, "PixelXDimension", N_("Pixel X Dimension"), + exifId, imgCharacter, unsignedShort, 1, print0xa001}, + {0xa002, "PixelXDimension", N_("Pixel X Dimension"), N_("Information specific to compressed data. When a " "compressed file is recorded, the valid width of the " "meaningful image must be recorded in this tag, whether or " "not there is padding data or a restart marker. This tag " "should not exist in an uncompressed file."), - exifId, imgConfig, unsignedLong, 1, printValue), - TagInfo(0xa003, "PixelYDimension", N_("Pixel Y Dimension"), + exifId, imgConfig, unsignedLong, 1, printValue}, + {0xa003, "PixelYDimension", N_("Pixel Y Dimension"), N_("Information specific to compressed data. When a compressed " "file is recorded, the valid height of the meaningful image " "must be recorded in this tag, whether or not there is padding " @@ -1923,174 +1923,174 @@ namespace Exiv2 { "uncompressed file. Since data padding is unnecessary in the vertical " "direction, the number of lines recorded in this valid image height tag " "will in fact be the same as that recorded in the SOF."), - exifId, imgConfig, unsignedLong, 1, printValue), - TagInfo(0xa004, "RelatedSoundFile", N_("Related Sound File"), + exifId, imgConfig, unsignedLong, 1, printValue}, + {0xa004, "RelatedSoundFile", N_("Related Sound File"), N_("This tag is used to record the name of an audio file related " "to the image data. The only relational information " "recorded here is the Exif audio file name and extension (an " "ASCII string consisting of 8 characters + '.' + 3 " "characters). The path is not recorded."), - exifId, relatedFile, asciiString, 13, printValue), - TagInfo(0xa005, "InteroperabilityTag", N_("Interoperability IFD Pointer"), + exifId, relatedFile, asciiString, 13, printValue}, + {0xa005, "InteroperabilityTag", N_("Interoperability IFD Pointer"), N_("Interoperability IFD is composed of tags which stores the " "information to ensure the Interoperability and pointed " "by the following tag located in Exif IFD. " "The Interoperability structure of Interoperability IFD is " "the same as TIFF defined IFD structure but does not contain the " "image data characteristically compared with normal TIFF IFD."), - exifId, exifFormat, unsignedLong, 1, printValue), - TagInfo(0xa20b, "FlashEnergy", N_("Flash Energy"), + exifId, exifFormat, unsignedLong, 1, printValue}, + {0xa20b, "FlashEnergy", N_("Flash Energy"), N_("Indicates the strobe energy at the time the image is " "captured, as measured in Beam Candle Power Seconds (BCPS)."), - exifId, captureCond, unsignedRational, 1, printValue), - TagInfo(0xa20c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), + exifId, captureCond, unsignedRational, 1, printValue}, + {0xa20c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), N_("This tag records the camera or input device spatial frequency " "table and SFR values in the direction of image width, " "image height, and diagonal direction, as specified in ISO 12233."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0xa20e, "FocalPlaneXResolution", N_("Focal Plane X-Resolution"), + exifId, captureCond, undefined, 0, printValue}, + {0xa20e, "FocalPlaneXResolution", N_("Focal Plane X-Resolution"), N_("Indicates the number of pixels in the image width (X) direction " "per on the camera focal plane."), - exifId, captureCond, unsignedRational, 1, printFloat), - TagInfo(0xa20f, "FocalPlaneYResolution", N_("Focal Plane Y-Resolution"), + exifId, captureCond, unsignedRational, 1, printFloat}, + {0xa20f, "FocalPlaneYResolution", N_("Focal Plane Y-Resolution"), N_("Indicates the number of pixels in the image height (V) direction " "per on the camera focal plane."), - exifId, captureCond, unsignedRational, 1, printFloat), - TagInfo(0xa210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), + exifId, captureCond, unsignedRational, 1, printFloat}, + {0xa210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), N_("Indicates the unit for measuring and " ". This value is the same as the ."), - exifId, captureCond, unsignedShort, 1, printExifUnit), - TagInfo(0xa214, "SubjectLocation", N_("Subject Location"), + exifId, captureCond, unsignedShort, 1, printExifUnit}, + {0xa214, "SubjectLocation", N_("Subject Location"), N_("Indicates the location of the main subject in the scene. The " "value of this tag represents the pixel at the center of the " "main subject relative to the left edge, prior to rotation " "processing as per the tag. The first value " "indicates the X column number and second indicates the Y row number."), - exifId, captureCond, unsignedShort, 2, printValue), - TagInfo(0xa215, "ExposureIndex", N_("Exposure index"), + exifId, captureCond, unsignedShort, 2, printValue}, + {0xa215, "ExposureIndex", N_("Exposure index"), N_("Indicates the exposure index selected on the camera or " "input device at the time the image is captured."), - exifId, captureCond, unsignedRational, 1, printValue), - TagInfo(0xa217, "SensingMethod", N_("Sensing Method"), + exifId, captureCond, unsignedRational, 1, printValue}, + {0xa217, "SensingMethod", N_("Sensing Method"), N_("Indicates the image sensor type on the camera or input device."), - exifId, captureCond, unsignedShort, 1, print0xa217), - TagInfo(0xa300, "FileSource", N_("File Source"), + exifId, captureCond, unsignedShort, 1, print0xa217}, + {0xa300, "FileSource", N_("File Source"), N_("Indicates the image source. If a DSC recorded the image, " "this tag value of this tag always be set to 3, indicating " "that the image was recorded on a DSC."), - exifId, captureCond, undefined, 1, print0xa300), - TagInfo(0xa301, "SceneType", N_("Scene Type"), + exifId, captureCond, undefined, 1, print0xa300}, + {0xa301, "SceneType", N_("Scene Type"), N_("Indicates the type of scene. If a DSC recorded the image, " "this tag value must always be set to 1, indicating that the " "image was directly photographed."), - exifId, captureCond, undefined, 1, print0xa301), - TagInfo(0xa302, "CFAPattern", N_("Color Filter Array Pattern"), + exifId, captureCond, undefined, 1, print0xa301}, + {0xa302, "CFAPattern", N_("Color Filter Array Pattern"), N_("Indicates the color filter array (CFA) geometric pattern of the " "image sensor when a one-chip color area sensor is used. " "It does not apply to all sensing methods."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0xa401, "CustomRendered", N_("Custom Rendered"), + exifId, captureCond, undefined, 0, printValue}, + {0xa401, "CustomRendered", N_("Custom Rendered"), N_("This tag indicates the use of special processing on image " "data, such as rendering geared to output. When special " "processing is performed, the reader is expected to disable " "or minimize any further processing."), - exifId, captureCond, unsignedShort, 1, print0xa401), - TagInfo(0xa402, "ExposureMode", N_("Exposure Mode"), + exifId, captureCond, unsignedShort, 1, print0xa401}, + {0xa402, "ExposureMode", N_("Exposure Mode"), N_("This tag indicates the exposure mode set when the image was " "shot. In auto-bracketing mode, the camera shoots a series of " "frames of the same scene at different exposure settings."), - exifId, captureCond, unsignedShort, 1, print0xa402), - TagInfo(0xa403, "WhiteBalance", N_("White Balance"), + exifId, captureCond, unsignedShort, 1, print0xa402}, + {0xa403, "WhiteBalance", N_("White Balance"), N_("This tag indicates the white balance mode set when the image was shot."), - exifId, captureCond, unsignedShort, 1, print0xa403), - TagInfo(0xa404, "DigitalZoomRatio", N_("Digital Zoom Ratio"), + exifId, captureCond, unsignedShort, 1, print0xa403}, + {0xa404, "DigitalZoomRatio", N_("Digital Zoom Ratio"), N_("This tag indicates the digital zoom ratio when the image was " "shot. If the numerator of the recorded value is 0, this " "indicates that digital zoom was not used."), - exifId, captureCond, unsignedRational, 1, print0xa404), - TagInfo(0xa405, "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), + exifId, captureCond, unsignedRational, 1, print0xa404}, + {0xa405, "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), N_("This tag indicates the equivalent focal length assuming a " "35mm film camera, in mm. A value of 0 means the focal " "length is unknown. Note that this tag differs from the " " tag."), - exifId, captureCond, unsignedShort, 1, print0xa405), - TagInfo(0xa406, "SceneCaptureType", N_("Scene Capture Type"), + exifId, captureCond, unsignedShort, 1, print0xa405}, + {0xa406, "SceneCaptureType", N_("Scene Capture Type"), N_("This tag indicates the type of scene that was shot. It can " "also be used to record the mode in which the image was " "shot. Note that this differs from the tag."), - exifId, captureCond, unsignedShort, 1, print0xa406), - TagInfo(0xa407, "GainControl", N_("Gain Control"), + exifId, captureCond, unsignedShort, 1, print0xa406}, + {0xa407, "GainControl", N_("Gain Control"), N_("This tag indicates the degree of overall image gain adjustment."), - exifId, captureCond, unsignedShort, 1, print0xa407), - TagInfo(0xa408, "Contrast", N_("Contrast"), + exifId, captureCond, unsignedShort, 1, print0xa407}, + {0xa408, "Contrast", N_("Contrast"), N_("This tag indicates the direction of contrast processing " "applied by the camera when the image was shot."), - exifId, captureCond, unsignedShort, 1, printNormalSoftHard), - TagInfo(0xa409, "Saturation", N_("Saturation"), + exifId, captureCond, unsignedShort, 1, printNormalSoftHard}, + {0xa409, "Saturation", N_("Saturation"), N_("This tag indicates the direction of saturation processing " "applied by the camera when the image was shot."), - exifId, captureCond, unsignedShort, 1, print0xa409), - TagInfo(0xa40a, "Sharpness", N_("Sharpness"), + exifId, captureCond, unsignedShort, 1, print0xa409}, + {0xa40a, "Sharpness", N_("Sharpness"), N_("This tag indicates the direction of sharpness processing " "applied by the camera when the image was shot."), - exifId, captureCond, unsignedShort, 1, printNormalSoftHard), - TagInfo(0xa40b, "DeviceSettingDescription", N_("Device Setting Description"), + exifId, captureCond, unsignedShort, 1, printNormalSoftHard}, + {0xa40b, "DeviceSettingDescription", N_("Device Setting Description"), N_("This tag indicates information on the picture-taking " "conditions of a particular camera model. The tag is used " "only to indicate the picture-taking conditions in the reader."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0xa40c, "SubjectDistanceRange", N_("Subject Distance Range"), + exifId, captureCond, undefined, 0, printValue}, + {0xa40c, "SubjectDistanceRange", N_("Subject Distance Range"), N_("This tag indicates the distance to the subject."), - exifId, captureCond, unsignedShort, 1, print0xa40c), - TagInfo(0xa420, "ImageUniqueID", N_("Image Unique ID"), + exifId, captureCond, unsignedShort, 1, print0xa40c}, + {0xa420, "ImageUniqueID", N_("Image Unique ID"), N_("This tag indicates an identifier assigned uniquely to " "each image. It is recorded as an ASCII string equivalent " "to hexadecimal notation and 128-bit fixed length."), - exifId, otherTags, asciiString, 33, printValue), - TagInfo(0xa430, "CameraOwnerName", N_("Camera Owner Name"), + exifId, otherTags, asciiString, 33, printValue}, + {0xa430, "CameraOwnerName", N_("Camera Owner Name"), N_("This tag records the owner of a camera used in " "photography as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa431, "BodySerialNumber", N_("Body Serial Number"), + exifId, otherTags, asciiString, 0, printValue}, + {0xa431, "BodySerialNumber", N_("Body Serial Number"), N_("This tag records the serial number of the body of the camera " "that was used in photography as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa432, "LensSpecification", N_("Lens Specification"), + exifId, otherTags, asciiString, 0, printValue}, + {0xa432, "LensSpecification", N_("Lens Specification"), N_("This tag notes minimum focal length, maximum focal length, " "minimum F number in the minimum focal length, and minimum F number " "in the maximum focal length, which are specification information " "for the lens that was used in photography. When the minimum F " "number is unknown, the notation is 0/0"), - exifId, otherTags, unsignedRational, 4, printValue), - TagInfo(0xa433, "LensMake", N_("Lens Make"), + exifId, otherTags, unsignedRational, 4, printValue}, + {0xa433, "LensMake", N_("Lens Make"), N_("This tag records the lens manufactor as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa434, "LensModel", N_("Lens Model"), + exifId, otherTags, asciiString, 0, printValue}, + {0xa434, "LensModel", N_("Lens Model"), N_("This tag records the lens's model name and model number as an " "ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa435, "LensSerialNumber", N_("Lens Serial Number"), + exifId, otherTags, asciiString, 0, printValue}, + {0xa435, "LensSerialNumber", N_("Lens Serial Number"), N_("This tag records the serial number of the interchangeable lens " "that was used in photography as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa460, "CompositeImage", N_("Composite Image"), + exifId, otherTags, asciiString, 0, printValue}, + {0xa460, "CompositeImage", N_("Composite Image"), N_("Indicates whether the recorded image is a composite image or not."), - exifId, captureCond, unsignedShort, 1, EXV_PRINT_TAG(exifCompositeImage)), // Exif 2.32 - TagInfo(0xa461, "SourceImageNumberOfCompositeImage", N_("Source Image Number Of Composite Image"), + exifId, captureCond, unsignedShort, 1, EXV_PRINT_TAG(exifCompositeImage)}, // Exif 2.32 + {0xa461, "SourceImageNumberOfCompositeImage", N_("Source Image Number Of Composite Image"), N_("Indicates the number of the source images (tentatively recorded images) captured for a composite Image."), - exifId, captureCond, unsignedShort, 2, printValue), // Exif 2.32 - TagInfo(0xa462, "SourceExposureTimesOfCompositeImage", N_("Source Exposure Times Of Composite Image"), + exifId, captureCond, unsignedShort, 2, printValue}, // Exif 2.32 + {0xa462, "SourceExposureTimesOfCompositeImage", N_("Source Exposure Times Of Composite Image"), N_("For a composite image, records the parameters relating exposure time of the exposures for generating the said composite image, such as respective exposure times of captured source images (tentatively recorded images)."), - exifId, captureCond, undefined, 0, printValue), // Exif 2.32 - TagInfo(0xa500, "Gamma", N_("Gamma"), + exifId, captureCond, undefined, 0, printValue}, // Exif 2.32 + {0xa500, "Gamma", N_("Gamma"), N_("Indicates the value of coefficient gamma. The formula of transfer function used for image reproduction " "is expressed as follows: (reproduced value) = (input value)^gamma. Both reproduced value and input value " "indicate normalized value, whose minimum value is 0 and maximum value is 1."), - exifId, imgCharacter, unsignedRational, 1, printFloat), + exifId, imgCharacter, unsignedRational, 1, printFloat}, // End of list marker - TagInfo(0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"), + {0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"), N_("Unknown Exif tag"), - exifId, sectionIdNotSet, asciiString, -1, printValue) + exifId, sectionIdNotSet, asciiString, -1, printValue}, }; const TagInfo* exifTagList() @@ -2099,218 +2099,218 @@ namespace Exiv2 { } //! GPS latitude reference, tag 0x0001; also GPSDestLatitudeRef, tag 0x0013 - extern const TagDetails exifGPSLatitudeRef[] = { + constexpr TagDetails exifGPSLatitudeRef[] = { { 78, N_("North") }, { 83, N_("South") } }; //! GPS longitude reference, tag 0x0003; also GPSDestLongitudeRef, tag 0x0015 - extern const TagDetails exifGPSLongitudeRef[] = { + constexpr TagDetails exifGPSLongitudeRef[] = { { 69, N_("East") }, { 87, N_("West") } }; //! GPS altitude reference, tag 0x0005 - extern const TagDetails exifGPSAltitudeRef[] = { + constexpr TagDetails exifGPSAltitudeRef[] = { { 0, N_("Above sea level") }, { 1, N_("Below sea level") } }; //! GPS status, tag 0x0009 - extern const TagDetails exifGPSStatus[] = { + constexpr TagDetails exifGPSStatus[] = { { 'A', N_("Measurement in progress") }, { 'V', N_("Measurement interrupted") } }; //! GPS measurement mode, tag 0x000a - extern const TagDetails exifGPSMeasureMode[] = { + constexpr TagDetails exifGPSMeasureMode[] = { { '2', N_("2-dimensional measurement") }, { '3', N_("3-dimensional measurement") } }; //! GPS speed reference, tag 0x000c - extern const TagDetails exifGPSSpeedRef[] = { + constexpr TagDetails exifGPSSpeedRef[] = { { 'K', N_("km/h") }, { 'M', N_("mph") }, { 'N', N_("knots") } }; //! GPS direction reference, tags 0x000e, 0x0010, 0x0017 - extern const TagDetails exifGPSDirRef[] = { + constexpr TagDetails exifGPSDirRef[] = { { 'T', N_("True direction") }, { 'M', N_("Magnetic direction") } }; //! GPS destination distance reference, tag 0x0019 - extern const TagDetails exifGPSDestDistanceRef[] = { + constexpr TagDetails exifGPSDestDistanceRef[] = { { 'K', N_("km") }, { 'M', N_("miles") }, { 'N', N_("nautical miles") } }; //! GPS differential correction, tag 0x001e - extern const TagDetails exifGPSDifferential[] = { + constexpr TagDetails exifGPSDifferential[] = { { 0, N_("Without correction") }, { 1, N_("Correction applied") } }; // GPS Info Tags - static const TagInfo gpsTagInfo[] = { - TagInfo(0x0000, "GPSVersionID", N_("GPS Version ID"), + constexpr TagInfo gpsTagInfo[] = { + {0x0000, "GPSVersionID", N_("GPS Version ID"), N_("Indicates the version of . The version is given " "as 2.0.0.0. This tag is mandatory when tag is " "present. (Note: The tag is given in bytes, " "unlike the tag. When the version is " "2.0.0.0, the tag value is 02000000.H)."), - gpsId, gpsTags, unsignedByte, 4, print0x0000), - TagInfo(0x0001, "GPSLatitudeRef", N_("GPS Latitude Reference"), + gpsId, gpsTags, unsignedByte, 4, print0x0000}, + {0x0001, "GPSLatitudeRef", N_("GPS Latitude Reference"), N_("Indicates whether the latitude is north or south latitude. The " "ASCII value 'N' indicates north latitude, and 'S' is south latitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)), - TagInfo(0x0002, "GPSLatitude", N_("GPS Latitude"), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)}, + {0x0002, "GPSLatitude", N_("GPS Latitude"), N_("Indicates the latitude. The latitude is expressed as three " "RATIONAL values giving the degrees, minutes, and seconds, " "respectively. When degrees, minutes and seconds are expressed, " "the format is dd/1,mm/1,ss/1. When degrees and minutes are used " "and, for example, fractions of minutes are given up to two " "decimal places, the format is dd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0003, "GPSLongitudeRef", N_("GPS Longitude Reference"), + gpsId, gpsTags, unsignedRational, 3, printDegrees}, + {0x0003, "GPSLongitudeRef", N_("GPS Longitude Reference"), N_("Indicates whether the longitude is east or west longitude. " "ASCII 'E' indicates east longitude, and 'W' is west longitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)), - TagInfo(0x0004, "GPSLongitude", N_("GPS Longitude"), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)}, + {0x0004, "GPSLongitude", N_("GPS Longitude"), N_("Indicates the longitude. The longitude is expressed as three " "RATIONAL values giving the degrees, minutes, and seconds, " "respectively. When degrees, minutes and seconds are expressed, " "the format is ddd/1,mm/1,ss/1. When degrees and minutes are " "used and, for example, fractions of minutes are given up to " "two decimal places, the format is ddd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0005, "GPSAltitudeRef", N_("GPS Altitude Reference"), + gpsId, gpsTags, unsignedRational, 3, printDegrees}, + {0x0005, "GPSAltitudeRef", N_("GPS Altitude Reference"), N_("Indicates the altitude used as the reference altitude. If the " "reference is sea level and the altitude is above sea level, 0 " "is given. If the altitude is below sea level, a value of 1 is given " "and the altitude is indicated as an absolute value in the " "GSPAltitude tag. The reference unit is meters. Note that this tag " "is BYTE type, unlike other reference tags."), - gpsId, gpsTags, unsignedByte, 1, print0x0005), - TagInfo(0x0006, "GPSAltitude", N_("GPS Altitude"), + gpsId, gpsTags, unsignedByte, 1, print0x0005}, + {0x0006, "GPSAltitude", N_("GPS Altitude"), N_("Indicates the altitude based on the reference in GPSAltitudeRef. " "Altitude is expressed as one RATIONAL value. The reference unit is meters."), - gpsId, gpsTags, unsignedRational, 1, print0x0006), - TagInfo(0x0007, "GPSTimeStamp", N_("GPS Time Stamp"), + gpsId, gpsTags, unsignedRational, 1, print0x0006}, + {0x0007, "GPSTimeStamp", N_("GPS Time Stamp"), N_("Indicates the time as UTC (Coordinated Universal Time). " " is expressed as three RATIONAL values " "giving the hour, minute, and second (atomic clock)."), - gpsId, gpsTags, unsignedRational, 3, print0x0007), - TagInfo(0x0008, "GPSSatellites", N_("GPS Satellites"), + gpsId, gpsTags, unsignedRational, 3, print0x0007}, + {0x0008, "GPSSatellites", N_("GPS Satellites"), N_("Indicates the GPS satellites used for measurements. This tag can be used " "to describe the number of satellites, their ID number, angle of elevation, " "azimuth, SNR and other information in ASCII notation. The format is not " "specified. If the GPS receiver is incapable of taking measurements, value " "of the tag is set to NULL."), - gpsId, gpsTags, asciiString, 0, printValue), - TagInfo(0x0009, "GPSStatus", N_("GPS Status"), + gpsId, gpsTags, asciiString, 0, printValue}, + {0x0009, "GPSStatus", N_("GPS Status"), N_("Indicates the status of the GPS receiver when the image is recorded. " "\"A\" means measurement is in progress, and \"V\" means the measurement " "is Interoperability."), - gpsId, gpsTags, asciiString, 2, print0x0009), - TagInfo(0x000a, "GPSMeasureMode", N_("GPS Measure Mode"), + gpsId, gpsTags, asciiString, 2, print0x0009}, + {0x000a, "GPSMeasureMode", N_("GPS Measure Mode"), N_("Indicates the GPS measurement mode. \"2\" means two-dimensional measurement and \"3\" " "means three-dimensional measurement is in progress."), - gpsId, gpsTags, asciiString, 2, print0x000a), - TagInfo(0x000b, "GPSDOP", N_("GPS Data Degree of Precision"), + gpsId, gpsTags, asciiString, 2, print0x000a}, + {0x000b, "GPSDOP", N_("GPS Data Degree of Precision"), N_("Indicates the GPS DOP (data degree of precision). An HDOP value is written " "during two-dimensional measurement, and PDOP during three-dimensional measurement."), - gpsId, gpsTags, unsignedRational, 1, printFloat), - TagInfo(0x000c, "GPSSpeedRef", N_("GPS Speed Reference"), + gpsId, gpsTags, unsignedRational, 1, printFloat}, + {0x000c, "GPSSpeedRef", N_("GPS Speed Reference"), N_("Indicates the unit used to express the GPS receiver speed of movement. " "\"K\" \"M\" and \"N\" represents kilometers per hour, miles per hour, and knots."), - gpsId, gpsTags, asciiString, 2, print0x000c), - TagInfo(0x000d, "GPSSpeed", N_("GPS Speed"), + gpsId, gpsTags, asciiString, 2, print0x000c}, + {0x000d, "GPSSpeed", N_("GPS Speed"), N_("Indicates the speed of GPS receiver movement."), - gpsId, gpsTags, unsignedRational, 1, printFloat), - TagInfo(0x000e, "GPSTrackRef", N_("GPS Track Ref"), + gpsId, gpsTags, unsignedRational, 1, printFloat}, + {0x000e, "GPSTrackRef", N_("GPS Track Ref"), N_("Indicates the reference for giving the direction of GPS receiver movement. " "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsId, gpsTags, asciiString, 2, printGPSDirRef), - TagInfo(0x000f, "GPSTrack", N_("GPS Track"), + gpsId, gpsTags, asciiString, 2, printGPSDirRef}, + {0x000f, "GPSTrack", N_("GPS Track"), N_("Indicates the direction of GPS receiver movement. The range of values is " "from 0.00 to 359.99."), - gpsId, gpsTags, unsignedRational, 1, printFloat), - TagInfo(0x0010, "GPSImgDirectionRef", N_("GPS Image Direction Reference"), + gpsId, gpsTags, unsignedRational, 1, printFloat}, + {0x0010, "GPSImgDirectionRef", N_("GPS Image Direction Reference"), N_("Indicates the reference for giving the direction of the image when it is captured. " "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsId, gpsTags, asciiString, 2, printGPSDirRef), - TagInfo(0x0011, "GPSImgDirection", N_("GPS Image Direction"), + gpsId, gpsTags, asciiString, 2, printGPSDirRef}, + {0x0011, "GPSImgDirection", N_("GPS Image Direction"), N_("Indicates the direction of the image when it was captured. The range of values " "is from 0.00 to 359.99."), - gpsId, gpsTags, unsignedRational, 1, printFloat), - TagInfo(0x0012, "GPSMapDatum", N_("GPS Map Datum"), + gpsId, gpsTags, unsignedRational, 1, printFloat}, + {0x0012, "GPSMapDatum", N_("GPS Map Datum"), N_("Indicates the geodetic survey data used by the GPS receiver. If the survey data " "is restricted to Japan, the value of this tag is \"TOKYO\" or \"WGS-84\"."), - gpsId, gpsTags, asciiString, 0, printValue), - TagInfo(0x0013, "GPSDestLatitudeRef", N_("GPS Destination Latitude Reference"), + gpsId, gpsTags, asciiString, 0, printValue}, + {0x0013, "GPSDestLatitudeRef", N_("GPS Destination Latitude Reference"), N_("Indicates whether the latitude of the destination point is north or south latitude. " "The ASCII value \"N\" indicates north latitude, and \"S\" is south latitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)), - TagInfo(0x0014, "GPSDestLatitude", N_("GPS Destination Latitude"), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)}, + {0x0014, "GPSDestLatitude", N_("GPS Destination Latitude"), N_("Indicates the latitude of the destination point. The latitude is expressed as " "three RATIONAL values giving the degrees, minutes, and seconds, respectively. " "If latitude is expressed as degrees, minutes and seconds, a typical format would " "be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, " "fractions of minutes are given up to two decimal places, the format would be " "dd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0015, "GPSDestLongitudeRef", N_("GPS Destination Longitude Reference"), + gpsId, gpsTags, unsignedRational, 3, printDegrees}, + {0x0015, "GPSDestLongitudeRef", N_("GPS Destination Longitude Reference"), N_("Indicates whether the longitude of the destination point is east or west longitude. " "ASCII \"E\" indicates east longitude, and \"W\" is west longitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)), - TagInfo(0x0016, "GPSDestLongitude", N_("GPS Destination Longitude"), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)}, + {0x0016, "GPSDestLongitude", N_("GPS Destination Longitude"), N_("Indicates the longitude of the destination point. The longitude is expressed " "as three RATIONAL values giving the degrees, minutes, and seconds, respectively. " "If longitude is expressed as degrees, minutes and seconds, a typical format would be " "ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of " "minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0017, "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), + gpsId, gpsTags, unsignedRational, 3, printDegrees}, + {0x0017, "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), N_("Indicates the reference used for giving the bearing to the destination point. " "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsId, gpsTags, asciiString, 2, printGPSDirRef), - TagInfo(0x0018, "GPSDestBearing", N_("GPS Destination Bearing"), + gpsId, gpsTags, asciiString, 2, printGPSDirRef}, + {0x0018, "GPSDestBearing", N_("GPS Destination Bearing"), N_("Indicates the bearing to the destination point. The range of values is from " "0.00 to 359.99."), - gpsId, gpsTags, unsignedRational, 1, printFloat), - TagInfo(0x0019, "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), + gpsId, gpsTags, unsignedRational, 1, printFloat}, + {0x0019, "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), N_("Indicates the unit used to express the distance to the destination point. " "\"K\", \"M\" and \"N\" represent kilometers, miles and nautical miles."), - gpsId, gpsTags, asciiString, 2, print0x0019), - TagInfo(0x001a, "GPSDestDistance", N_("GPS Destination Distance"), + gpsId, gpsTags, asciiString, 2, print0x0019}, + {0x001a, "GPSDestDistance", N_("GPS Destination Distance"), N_("Indicates the distance to the destination point."), - gpsId, gpsTags, unsignedRational, 1, printFloat), - TagInfo(0x001b, "GPSProcessingMethod", N_("GPS Processing Method"), + gpsId, gpsTags, unsignedRational, 1, printFloat}, + {0x001b, "GPSProcessingMethod", N_("GPS Processing Method"), N_("A character string recording the name of the method used for location finding. " "The string encoding is defined using the same scheme as UserComment."), - gpsId, gpsTags, comment, 0, printValue), - TagInfo(0x001c, "GPSAreaInformation", N_("GPS Area Information"), + gpsId, gpsTags, comment, 0, printValue}, + {0x001c, "GPSAreaInformation", N_("GPS Area Information"), N_("A character string recording the name of the GPS area." "The string encoding is defined using the same scheme as UserComment."), - gpsId, gpsTags, comment, 0, printValue), - TagInfo(0x001d, "GPSDateStamp", N_("GPS Date Stamp"), + gpsId, gpsTags, comment, 0, printValue}, + {0x001d, "GPSDateStamp", N_("GPS Date Stamp"), N_("A character string recording date and time information relative to UTC " "(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"."), - gpsId, gpsTags, asciiString, 11, printValue), - TagInfo(0x001e, "GPSDifferential", N_("GPS Differential"), + gpsId, gpsTags, asciiString, 11, printValue}, + {0x001e, "GPSDifferential", N_("GPS Differential"), N_("Indicates whether differential correction is applied to the GPS receiver."), - gpsId, gpsTags, unsignedShort, 1, print0x001e), - TagInfo(0x001f, "GPSHPositioningError", N_("GPS Horizontal positioning error"), + gpsId, gpsTags, unsignedShort, 1, print0x001e}, + {0x001f, "GPSHPositioningError", N_("GPS Horizontal positioning error"), N_("This tag indicates horizontal positioning errors in meters."), - gpsId, gpsTags, unsignedRational, 1, printFloat), + gpsId, gpsTags, unsignedRational, 1, printFloat}, // End of list marker - TagInfo(0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), + {0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), N_("Unknown GPSInfo tag"), - gpsId, gpsTags, asciiString, -1, printValue) + gpsId, gpsTags, asciiString, -1, printValue}, }; const TagInfo* gpsTagList() @@ -2319,68 +2319,68 @@ namespace Exiv2 { } // MPF Tags http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html - static const TagInfo mpfTagInfo[] = { - TagInfo(0xb000, "MPFVersion", N_("MPFVersion"), + constexpr TagInfo mpfTagInfo[] = { + {0xb000, "MPFVersion", N_("MPFVersion"), N_("MPF Version"), - mpfId, mpfTags, asciiString, 0, printValue), - TagInfo(0xb001, "MPFNumberOfImages", N_("MPFNumberOfImages"), + mpfId, mpfTags, asciiString, 0, printValue}, + {0xb001, "MPFNumberOfImages", N_("MPFNumberOfImages"), N_("MPF Number of Images"), - mpfId, mpfTags, undefined, -1, printExifVersion), - TagInfo(0xb002, "MPFImageList", N_("MPFImageList"), + mpfId, mpfTags, undefined, -1, printExifVersion}, + {0xb002, "MPFImageList", N_("MPFImageList"), N_("MPF Image List"), - mpfId, mpfTags, asciiString, 0, printValue), - TagInfo(0xb003, "MPFImageUIDList", N_("MPFImageUIDList "), + mpfId, mpfTags, asciiString, 0, printValue}, + {0xb003, "MPFImageUIDList", N_("MPFImageUIDList "), N_("MPF Image UID List"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb004, "MPFTotalFrames", N_("MPFTotalFrames"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb004, "MPFTotalFrames", N_("MPFTotalFrames"), N_("MPF Total Frames"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb101, "MPFIndividualNum", N_("MPFIndividualNum"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb101, "MPFIndividualNum", N_("MPFIndividualNum"), N_("MPF Individual Num"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb201, "MPFPanOrientation", N_("MPFPanOrientation"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb201, "MPFPanOrientation", N_("MPFPanOrientation"), N_("MPFPanOrientation"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb202, "MPFPanOverlapH", N_("MPFPanOverlapH"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb202, "MPFPanOverlapH", N_("MPFPanOverlapH"), N_("MPF Pan Overlap Horizonal"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb203, "MPFPanOverlapV", N_("MPFPanOverlapV"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb203, "MPFPanOverlapV", N_("MPFPanOverlapV"), N_("MPF Pan Overlap Vertical"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb204, "MPFBaseViewpointNum", N_("MPFBaseViewpointNum"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb204, "MPFBaseViewpointNum", N_("MPFBaseViewpointNum"), N_("MPF Base Viewpoint Number"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb205, "MPFConvergenceAngle", N_("MPFConvergenceAngle"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb205, "MPFConvergenceAngle", N_("MPFConvergenceAngle"), N_("MPF Convergence Angle"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb206, "MPFBaselineLength", N_("MPFBaselineLength"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb206, "MPFBaselineLength", N_("MPFBaselineLength"), N_("MPF Baseline Length"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb207, "MPFVerticalDivergence", N_("MPFVerticalDivergence"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb207, "MPFVerticalDivergence", N_("MPFVerticalDivergence"), N_("MPF Vertical Divergence"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb208, "MPFAxisDistanceX", N_("MPFAxisDistanceX"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb208, "MPFAxisDistanceX", N_("MPFAxisDistanceX"), N_("MPF Axis Distance X"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb209, "MPFAxisDistanceY", N_("MPFAxisDistanceY"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb209, "MPFAxisDistanceY", N_("MPFAxisDistanceY"), N_("MPF Axis Distance Y"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb20a, "MPFAxisDistanceZ", N_("MPFAxisDistanceZ"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb20a, "MPFAxisDistanceZ", N_("MPFAxisDistanceZ"), N_("MPF Axis Distance Z"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb20b, "MPFYawAngle", N_("MPFYawAngle"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb20b, "MPFYawAngle", N_("MPFYawAngle"), N_("MPF Yaw Angle"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb20c, "MPFPitchAngle", N_("MPFPitchAngle"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb20c, "MPFPitchAngle", N_("MPFPitchAngle"), N_("MPF Pitch Angle"), - mpfId, mpfTags, unsignedLong, 1, printValue), - TagInfo(0xb20d, "MPFRollAngle", N_("MPFRollAngle"), + mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb20d, "MPFRollAngle", N_("MPFRollAngle"), N_("MPF Roll Angle"), - mpfId, mpfTags, unsignedLong, 1, printValue), + mpfId, mpfTags, unsignedLong, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownMpfTag)", N_("Unknown MPF tag"), + {0xffff, "(UnknownMpfTag)", N_("Unknown MPF tag"), N_("Unknown MPF tag"), - mpfId, mpfTags, asciiString, -1, printValue) + mpfId, mpfTags, asciiString, -1, printValue}, }; const TagInfo* mpfTagList() @@ -2389,30 +2389,30 @@ namespace Exiv2 { } // Exif Interoperability IFD Tags - static const TagInfo iopTagInfo[] = { - TagInfo(0x0001, "InteroperabilityIndex", N_("Interoperability Index"), + constexpr TagInfo iopTagInfo[] = { + {0x0001, "InteroperabilityIndex", N_("Interoperability Index"), N_("Indicates the identification of the Interoperability rule. " "Use \"R98\" for stating ExifR98 Rules. Four bytes used " "including the termination code (NULL). see the separate " "volume of Recommended Exif Interoperability Rules (ExifR98) " "for other tags used for ExifR98."), - iopId, iopTags, asciiString, 0, printValue), - TagInfo(0x0002, "InteroperabilityVersion", N_("Interoperability Version"), + iopId, iopTags, asciiString, 0, printValue}, + {0x0002, "InteroperabilityVersion", N_("Interoperability Version"), N_("Interoperability version"), - iopId, iopTags, undefined, -1, printExifVersion), - TagInfo(0x1000, "RelatedImageFileFormat", N_("Related Image File Format"), + iopId, iopTags, undefined, -1, printExifVersion}, + {0x1000, "RelatedImageFileFormat", N_("Related Image File Format"), N_("File format of image file"), - iopId, iopTags, asciiString, 0, printValue), - TagInfo(0x1001, "RelatedImageWidth", N_("Related Image Width"), + iopId, iopTags, asciiString, 0, printValue}, + {0x1001, "RelatedImageWidth", N_("Related Image Width"), N_("Image width"), - iopId, iopTags, unsignedLong, 1, printValue), - TagInfo(0x1002, "RelatedImageLength", N_("Related Image Length"), + iopId, iopTags, unsignedLong, 1, printValue}, + {0x1002, "RelatedImageLength", N_("Related Image Length"), N_("Image height"), - iopId, iopTags, unsignedLong, 1, printValue), + iopId, iopTags, unsignedLong, 1, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownIopTag)", N_("Unknown Exif Interoperability tag"), + {0xffff, "(UnknownIopTag)", N_("Unknown Exif Interoperability tag"), N_("Unknown Exif Interoperability tag"), - iopId, iopTags, asciiString, -1, printValue) + iopId, iopTags, asciiString, -1, printValue}, }; @@ -2422,17 +2422,17 @@ namespace Exiv2 { } // Synthesized Exiv2 Makernote info Tags (read-only) - static const TagInfo mnTagInfo[] = { - TagInfo(0x0001, "Offset", N_("Offset"), + constexpr TagInfo mnTagInfo[] = { + {0x0001, "Offset", N_("Offset"), N_("Offset of the makernote from the start of the TIFF header."), - mnId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0002, "ByteOrder", N_("Byte Order"), + mnId, makerTags, unsignedLong, 1, printValue}, + {0x0002, "ByteOrder", N_("Byte Order"), N_("Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-endian)."), - mnId, makerTags, asciiString, 0, printValue), + mnId, makerTags, asciiString, 0, printValue}, // End of list marker - TagInfo(0xffff, "(UnknownMnTag)", N_("Unknown Exiv2 Makernote info tag"), + {0xffff, "(UnknownMnTag)", N_("Unknown Exiv2 Makernote info tag"), N_("Unknown Exiv2 Makernote info tag"), - mnId, makerTags, asciiString, -1, printValue) + mnId, makerTags, asciiString, -1, printValue}, }; const TagInfo* mnTagList() @@ -2791,7 +2791,7 @@ namespace Exiv2 { } //! YCbCrPositioning, tag 0x0213 - extern const TagDetails exifYCbCrPositioning[] = { + constexpr TagDetails exifYCbCrPositioning[] = { { 1, N_("Centered") }, { 2, N_("Co-sited") } }; @@ -2862,7 +2862,7 @@ namespace Exiv2 { } //! ExposureProgram, tag 0x8822 - extern const TagDetails exifExposureProgram[] = { + constexpr TagDetails exifExposureProgram[] = { { 0, N_("Not defined") }, { 1, N_("Manual") }, { 2, N_("Auto") }, @@ -2977,7 +2977,7 @@ namespace Exiv2 { } //! MeteringMode, tag 0x9207 - extern const TagDetails exifMeteringMode[] = { + constexpr TagDetails exifMeteringMode[] = { { 0, N_("Unknown") }, { 1, N_("Average") }, { 2, N_("Center weighted average") }, @@ -3019,7 +3019,7 @@ namespace Exiv2 { } //! ColorSpace, tag 0xa001 - extern const TagDetails exifColorSpace[] = { + constexpr TagDetails exifColorSpace[] = { { 1, N_("sRGB") }, { 2, N_("Adobe RGB") }, // Not defined to Exif 2.2 spec. But used by a lot of cameras. { 0xffff, N_("Uncalibrated") } @@ -3031,7 +3031,7 @@ namespace Exiv2 { } //! SensingMethod, tag 0xa217 - extern const TagDetails exifSensingMethod[] = { + constexpr TagDetails exifSensingMethod[] = { { 1, N_("Not defined") }, { 2, N_("One-chip color area") }, { 3, N_("Two-chip color area") }, @@ -3047,7 +3047,7 @@ namespace Exiv2 { } //! FileSource, tag 0xa300 - extern const TagDetails exifFileSource[] = { + constexpr TagDetails exifFileSource[] = { { 1, N_("Film scanner") }, // Not defined to Exif 2.2 spec. { 2, N_("Reflexion print scanner") }, // but used by some scanner device softwares. { 3, N_("Digital still camera") } @@ -3059,7 +3059,7 @@ namespace Exiv2 { } //! SceneType, tag 0xa301 - extern const TagDetails exifSceneType[] = { + constexpr TagDetails exifSceneType[] = { { 1, N_("Directly photographed") } }; @@ -3069,7 +3069,7 @@ namespace Exiv2 { } //! CustomRendered, tag 0xa401 - extern const TagDetails exifCustomRendered[] = { + constexpr TagDetails exifCustomRendered[] = { { 0, N_("Normal process") }, { 1, N_("Custom process") } }; @@ -3080,7 +3080,7 @@ namespace Exiv2 { } //! ExposureMode, tag 0xa402 - extern const TagDetails exifExposureMode[] = { + constexpr TagDetails exifExposureMode[] = { { 0, N_("Auto") }, { 1, N_("Manual") }, { 2, N_("Auto bracket") } @@ -3092,7 +3092,7 @@ namespace Exiv2 { } //! WhiteBalance, tag 0xa403 - extern const TagDetails exifWhiteBalance[] = { + constexpr TagDetails exifWhiteBalance[] = { { 0, N_("Auto") }, { 1, N_("Manual") } }; @@ -3133,7 +3133,7 @@ namespace Exiv2 { } //! SceneCaptureType, tag 0xa406 - extern const TagDetails exifSceneCaptureType[] = { + constexpr TagDetails exifSceneCaptureType[] = { { 0, N_("Standard") }, { 1, N_("Landscape") }, { 2, N_("Portrait") }, @@ -3147,7 +3147,7 @@ namespace Exiv2 { } //! GainControl, tag 0xa407 - extern const TagDetails exifGainControl[] = { + constexpr TagDetails exifGainControl[] = { { 0, N_("None") }, { 1, N_("Low gain up") }, { 2, N_("High gain up") }, @@ -3161,7 +3161,7 @@ namespace Exiv2 { } //! Saturation, tag 0xa409 - extern const TagDetails exifSaturation[] = { + constexpr TagDetails exifSaturation[] = { { 0, N_("Normal") }, { 1, N_("Low") }, { 2, N_("High") } @@ -3173,7 +3173,7 @@ namespace Exiv2 { } //! SubjectDistanceRange, tag 0xa40c - extern const TagDetails exifSubjectDistanceRange[] = { + constexpr TagDetails exifSubjectDistanceRange[] = { { 0, N_("Unknown") }, { 1, N_("Macro") }, { 2, N_("Close view") }, @@ -3192,7 +3192,7 @@ namespace Exiv2 { } //! Contrast, tag 0xa408 and Sharpness, tag 0xa40a - extern const TagDetails exifNormalSoftHard[] = { + constexpr TagDetails exifNormalSoftHard[] = { { 0, N_("Normal") }, { 1, N_("Soft") }, { 2, N_("Hard") } diff --git a/src/tiffimage_int.cpp b/src/tiffimage_int.cpp index 50c5f2b8..8c049a1c 100644 --- a/src/tiffimage_int.cpp +++ b/src/tiffimage_int.cpp @@ -35,10 +35,10 @@ namespace Exiv2 { namespace Internal { //! Constant for non-encrypted binary arrays - const CryptFct notEncrypted = 0; + constexpr CryptFct notEncrypted = 0; //! Canon Camera Settings binary array - configuration - extern const ArrayCfg canonCsCfg = { + constexpr ArrayCfg canonCsCfg = { canonCsId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -49,12 +49,12 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Canon Camera Settings binary array - definition - extern const ArrayDef canonCsDef[] = { + constexpr ArrayDef canonCsDef[] = { { 46, ttUnsignedShort, 3 } // Exif.CanonCs.Lens }; //! Canon Shot Info binary array - configuration - extern const ArrayCfg canonSiCfg = { + constexpr ArrayCfg canonSiCfg = { canonSiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -66,7 +66,7 @@ namespace Exiv2 { }; //! Canon Panorama binary array - configuration - extern const ArrayCfg canonPaCfg = { + constexpr ArrayCfg canonPaCfg = { canonPaId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -78,7 +78,7 @@ namespace Exiv2 { }; //! Canon Custom Function binary array - configuration - extern const ArrayCfg canonCfCfg = { + constexpr ArrayCfg canonCfCfg = { canonCfId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -90,7 +90,7 @@ namespace Exiv2 { }; //! Canon Picture Info binary array - configuration - extern const ArrayCfg canonPiCfg = { + constexpr ArrayCfg canonPiCfg = { canonPiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -102,7 +102,7 @@ namespace Exiv2 { }; //! Canon Time Info binary array - configuration - extern const ArrayCfg canonTiCfg = { + constexpr ArrayCfg canonTiCfg = { canonTiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttSignedLong, // Type for array entry and size element @@ -114,7 +114,7 @@ namespace Exiv2 { }; //! Canon File Info binary array - configuration - extern const ArrayCfg canonFiCfg = { + constexpr ArrayCfg canonFiCfg = { canonFiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -125,12 +125,12 @@ namespace Exiv2 { { 0, ttSignedShort, 1 } }; //! Canon File Info binary array - definition - extern const ArrayDef canonFiDef[] = { + constexpr ArrayDef canonFiDef[] = { { 2, ttUnsignedLong, 1 } }; //! Canon Processing Info binary array - configuration - extern const ArrayCfg canonPrCfg = { + constexpr ArrayCfg canonPrCfg = { canonPrId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element @@ -142,7 +142,7 @@ namespace Exiv2 { }; //! Nikon Vibration Reduction binary array - configuration - extern const ArrayCfg nikonVrCfg = { + constexpr ArrayCfg nikonVrCfg = { nikonVrId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -153,13 +153,13 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Vibration Reduction binary array - definition - extern const ArrayDef nikonVrDef[] = { + constexpr ArrayDef nikonVrDef[] = { { 0, ttUndefined, 4 }, // Version { 7, ttUnsignedByte, 1 } // The array contains 8 bytes }; //! Nikon Picture Control binary array - configuration - extern const ArrayCfg nikonPcCfg = { + constexpr ArrayCfg nikonPcCfg = { nikonPcId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -170,7 +170,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Picture Control binary array - definition - extern const ArrayDef nikonPcDef[] = { + constexpr ArrayDef nikonPcDef[] = { { 0, ttUndefined, 4 }, // Version { 4, ttAsciiString, 20 }, { 24, ttAsciiString, 20 }, @@ -187,7 +187,7 @@ namespace Exiv2 { }; //! Nikon World Time binary array - configuration - extern const ArrayCfg nikonWtCfg = { + constexpr ArrayCfg nikonWtCfg = { nikonWtId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -198,14 +198,14 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon World Time binary array - definition - extern const ArrayDef nikonWtDef[] = { + constexpr ArrayDef nikonWtDef[] = { { 0, ttSignedShort, 1 }, { 2, ttUnsignedByte, 1 }, { 3, ttUnsignedByte, 1 } }; //! Nikon ISO info binary array - configuration - extern const ArrayCfg nikonIiCfg = { + constexpr ArrayCfg nikonIiCfg = { nikonIiId, // Group for the elements bigEndian, // Byte order ttUndefined, // Type for array entry @@ -216,7 +216,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon ISO info binary array - definition - extern const ArrayDef nikonIiDef[] = { + constexpr ArrayDef nikonIiDef[] = { { 0, ttUnsignedByte, 1 }, { 4, ttUnsignedShort, 1 }, { 6, ttUnsignedByte, 1 }, @@ -225,7 +225,7 @@ namespace Exiv2 { }; //! Nikon Auto Focus binary array - configuration - extern const ArrayCfg nikonAfCfg = { + constexpr ArrayCfg nikonAfCfg = { nikonAfId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -236,14 +236,14 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Auto Focus binary array - definition - extern const ArrayDef nikonAfDef[] = { + constexpr ArrayDef nikonAfDef[] = { { 0, ttUnsignedByte, 1 }, { 1, ttUnsignedByte, 1 }, { 2, ttUnsignedShort, 1 } // The array contains 4 bytes }; //! Nikon Auto Focus 21 binary array - configuration - extern const ArrayCfg nikonAf21Cfg = { + constexpr ArrayCfg nikonAf21Cfg = { nikonAf21Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -254,7 +254,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Auto Focus 21 binary array - definition - extern const ArrayDef nikonAf21Def[] = { + constexpr ArrayDef nikonAf21Def[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedByte, 1 }, // ContrastDetectAF { 5, ttUnsignedByte, 1 }, // AFAreaMode @@ -270,7 +270,7 @@ namespace Exiv2 { { 28, ttUnsignedShort, 1 }, // ContrastDetectAFInFocus }; //! Nikon Auto Focus 22 binary array - configuration - extern const ArrayCfg nikonAf22Cfg = { + constexpr ArrayCfg nikonAf22Cfg = { nikonAf22Id, // Group for the elements invalidByteOrder, // Byte order ttUndefined, // Type for array entry @@ -281,7 +281,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Auto Focus 22 binary array - definition - extern const ArrayDef nikonAf22Def[] = { + constexpr ArrayDef nikonAf22Def[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedByte, 1 }, // ContrastDetectAF { 5, ttUnsignedByte, 1 }, // AFAreaMode @@ -298,13 +298,13 @@ namespace Exiv2 { //! Nikon AF2 configuration and definitions // https://github.com/Exiv2/exiv2/issues/646 - extern const ArraySet nikonAf2Set[] = { + constexpr ArraySet nikonAf2Set[] = { { nikonAf21Cfg, nikonAf21Def, EXV_COUNTOF(nikonAf21Def) }, { nikonAf22Cfg, nikonAf22Def, EXV_COUNTOF(nikonAf22Def) }, }; //! Nikon AF Fine Tune binary array - configuration - extern const ArrayCfg nikonAFTCfg = { + constexpr ArrayCfg nikonAFTCfg = { nikonAFTId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -315,14 +315,14 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon AF Fine Tune binary array - definition - extern const ArrayDef nikonAFTDef[] = { + constexpr ArrayDef nikonAFTDef[] = { { 0, ttUnsignedByte, 1 }, // AF Fine Tune on/off { 1, ttUnsignedByte, 1 }, // AF Fine Tune index { 2, ttUnsignedByte, 1 } // AF Fine Tune value }; //! Nikon File Info binary array - configuration - extern const ArrayCfg nikonFiCfg = { + constexpr ArrayCfg nikonFiCfg = { nikonFiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -333,14 +333,14 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon File Info binary array - definition - extern const ArrayDef nikonFiDef[] = { + constexpr ArrayDef nikonFiDef[] = { { 0, ttUndefined, 4 }, // Version { 6, ttUnsignedShort, 1 }, // Directory Number { 8, ttUnsignedShort, 1 } // File Number }; //! Nikon Multi Exposure binary array - configuration - extern const ArrayCfg nikonMeCfg = { + constexpr ArrayCfg nikonMeCfg = { nikonMeId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -351,7 +351,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Multi Exposure binary array - definition - extern const ArrayDef nikonMeDef[] = { + constexpr ArrayDef nikonMeDef[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedLong, 1 }, // MultiExposureMode { 8, ttUnsignedLong, 1 }, // MultiExposureShots @@ -359,7 +359,7 @@ namespace Exiv2 { }; //! Nikon Flash Info binary array - configuration 1 - extern const ArrayCfg nikonFl1Cfg = { + constexpr ArrayCfg nikonFl1Cfg = { nikonFl1Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -370,7 +370,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Flash Info binary array - definition 1 - extern const ArrayDef nikonFl1Def[] = { + constexpr ArrayDef nikonFl1Def[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedByte, 1 }, // FlashSource { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware @@ -383,7 +383,7 @@ namespace Exiv2 { { 16, ttUnsignedByte, 1 } // FlashGroupBControlMode }; //! Nikon Flash Info binary array - configuration 2 - extern const ArrayCfg nikonFl2Cfg = { + constexpr ArrayCfg nikonFl2Cfg = { nikonFl2Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -394,7 +394,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Flash Info binary array - definition 2 - extern const ArrayDef nikonFl2Def[] = { + constexpr ArrayDef nikonFl2Def[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedByte, 1 }, // FlashSource { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware @@ -405,7 +405,7 @@ namespace Exiv2 { { 15, ttUnsignedByte, 1 }, // FlashGNDistance }; //! Nikon Flash Info binary array - configuration 3 - extern const ArrayCfg nikonFl3Cfg = { + constexpr ArrayCfg nikonFl3Cfg = { nikonFl3Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -416,7 +416,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Flash Info binary array - definition - extern const ArrayDef nikonFl3Def[] = { + constexpr ArrayDef nikonFl3Def[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedByte, 1 }, // FlashSource { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware @@ -428,14 +428,14 @@ namespace Exiv2 { { 16, ttUnsignedByte, 1 }, // FlashColorFilter }; //! Nikon Lens Data configurations and definitions - extern const ArraySet nikonFlSet[] = { + constexpr ArraySet nikonFlSet[] = { { nikonFl1Cfg, nikonFl1Def, EXV_COUNTOF(nikonFl1Def) }, { nikonFl2Cfg, nikonFl2Def, EXV_COUNTOF(nikonFl2Def) }, { nikonFl3Cfg, nikonFl3Def, EXV_COUNTOF(nikonFl3Def) } }; //! Nikon Shot Info binary array - configuration 1 (D80) - extern const ArrayCfg nikonSi1Cfg = { + constexpr ArrayCfg nikonSi1Cfg = { nikonSi1Id, // Group for the elements bigEndian, // Use byte order from parent ttUndefined, // Type for array entry @@ -446,13 +446,13 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Shot Info binary array - definition 1 (D80) - extern const ArrayDef nikonSi1Def[] = { + constexpr ArrayDef nikonSi1Def[] = { { 0, ttUndefined, 4 }, // Version { 586, ttUnsignedLong, 1 }, // ShutterCount { 1155, ttUnsignedByte, 1 } // The array contains 1156 bytes }; //! Nikon Shot Info binary array - configuration 2 (D40) - extern const ArrayCfg nikonSi2Cfg = { + constexpr ArrayCfg nikonSi2Cfg = { nikonSi2Id, // Group for the elements bigEndian, // Use byte order from parent ttUndefined, // Type for array entry @@ -463,14 +463,14 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Shot Info binary array - definition 2 (D40) - extern const ArrayDef nikonSi2Def[] = { + constexpr ArrayDef nikonSi2Def[] = { { 0, ttUndefined, 4 }, // Version { 582, ttUnsignedLong, 1 }, // ShutterCount { 738, ttUnsignedByte, 1 }, { 1112, ttUnsignedByte, 1 } // The array contains 1113 bytes }; //! Nikon Shot Info binary array - configuration 3 (D300a) - extern const ArrayCfg nikonSi3Cfg = { + constexpr ArrayCfg nikonSi3Cfg = { nikonSi3Id, // Group for the elements bigEndian, // Use byte order from parent ttUndefined, // Type for array entry @@ -481,7 +481,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Shot Info binary array - definition 3 (D300a) - extern const ArrayDef nikonSi3Def[] = { + constexpr ArrayDef nikonSi3Def[] = { { 0, ttUndefined, 4 }, // Version { 604, ttUnsignedByte, 1 }, // ISO { 633, ttUnsignedLong, 1 }, // ShutterCount @@ -489,7 +489,7 @@ namespace Exiv2 { { 814, ttUndefined, 4478 } // The array contains 5291 bytes }; //! Nikon Shot Info binary array - configuration 4 (D300b) - extern const ArrayCfg nikonSi4Cfg = { + constexpr ArrayCfg nikonSi4Cfg = { nikonSi4Id, // Group for the elements bigEndian, // Use byte order from parent ttUndefined, // Type for array entry @@ -500,14 +500,14 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Shot Info binary array - definition 4 (D300b) - extern const ArrayDef nikonSi4Def[] = { + constexpr ArrayDef nikonSi4Def[] = { { 0, ttUndefined, 4 }, // Version { 644, ttUnsignedLong, 1 }, // ShutterCount { 732, ttUnsignedShort, 1 }, // AFFineTuneAdj { 826, ttUndefined, 4478 } // The array contains 5303 bytes }; //! Nikon Shot Info binary array - configuration 5 (ver 02.xx) - extern const ArrayCfg nikonSi5Cfg = { + constexpr ArrayCfg nikonSi5Cfg = { nikonSi5Id, // Group for the elements bigEndian, // Use byte order from parent ttUndefined, // Type for array entry @@ -518,7 +518,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Shot Info binary array - definition 5 (ver 01.xx and ver 02.xx) - extern const ArrayDef nikonSi5Def[] = { + constexpr ArrayDef nikonSi5Def[] = { { 0, ttUndefined, 4 }, // Version { 106, ttUnsignedLong, 1 }, // ShutterCount1 { 110, ttUnsignedLong, 1 }, // DeletedImageCount @@ -530,7 +530,7 @@ namespace Exiv2 { { 630, ttUnsignedLong, 1 } // ShutterCount }; //! Nikon Shot Info binary array - configuration 6 (ver 01.xx) - extern const ArrayCfg nikonSi6Cfg = { + constexpr ArrayCfg nikonSi6Cfg = { nikonSi6Id, // Group for the elements bigEndian, // Use byte order from parent ttUndefined, // Type for array entry @@ -541,7 +541,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Lens Data configurations and definitions - extern const ArraySet nikonSiSet[] = { + constexpr ArraySet nikonSiSet[] = { { nikonSi1Cfg, nikonSi1Def, EXV_COUNTOF(nikonSi1Def) }, { nikonSi2Cfg, nikonSi2Def, EXV_COUNTOF(nikonSi2Def) }, { nikonSi3Cfg, nikonSi3Def, EXV_COUNTOF(nikonSi3Def) }, @@ -551,7 +551,7 @@ namespace Exiv2 { }; //! Nikon Lens Data binary array - configuration 1 - extern const ArrayCfg nikonLd1Cfg = { + constexpr ArrayCfg nikonLd1Cfg = { nikonLd1Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -562,7 +562,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Lens Data binary array - configuration 2 - extern const ArrayCfg nikonLd2Cfg = { + constexpr ArrayCfg nikonLd2Cfg = { nikonLd2Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -573,7 +573,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Lens Data binary array - configuration 3 - extern const ArrayCfg nikonLd3Cfg = { + constexpr ArrayCfg nikonLd3Cfg = { nikonLd3Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -584,7 +584,7 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Lens Data binary array - configuration 3 - extern const ArrayCfg nikonLd4Cfg = { + constexpr ArrayCfg nikonLd4Cfg = { nikonLd4Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -595,11 +595,11 @@ namespace Exiv2 { { 0, ttUnsignedByte, 1 } }; //! Nikon Lens Data binary array - definition - extern const ArrayDef nikonLdDef[] = { + constexpr ArrayDef nikonLdDef[] = { { 0, ttUndefined, 4 } // Version }; //! Nikon Lens Data binary array - definition - extern const ArrayDef nikonLd4Def[] = { + constexpr ArrayDef nikonLd4Def[] = { { 0, ttUndefined, 4 }, // Version { 48, ttUnsignedShort, 1 }, // LensID { 54, ttUnsignedShort, 1 }, // MacAperture @@ -607,7 +607,7 @@ namespace Exiv2 { { 60, ttUnsignedShort, 1 } // FocalLength }; //! Nikon Lens Data configurations and definitions - extern const ArraySet nikonLdSet[] = { + constexpr ArraySet nikonLdSet[] = { { nikonLd1Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, { nikonLd2Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, { nikonLd3Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, @@ -615,7 +615,7 @@ namespace Exiv2 { }; //! Nikon Color Balance binary array - configuration 1 - extern const ArrayCfg nikonCb1Cfg = { + constexpr ArrayCfg nikonCb1Cfg = { nikonCb1Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -626,7 +626,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Nikon Color Balance binary array - configuration 2 - extern const ArrayCfg nikonCb2Cfg = { + constexpr ArrayCfg nikonCb2Cfg = { nikonCb2Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -637,7 +637,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Nikon Color Balance binary array - configuration 2a - extern const ArrayCfg nikonCb2aCfg = { + constexpr ArrayCfg nikonCb2aCfg = { nikonCb2aId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -648,7 +648,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Nikon Color Balance binary array - configuration 2b - extern const ArrayCfg nikonCb2bCfg = { + constexpr ArrayCfg nikonCb2bCfg = { nikonCb2bId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -659,7 +659,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Nikon Color Balance binary array - configuration 3 - extern const ArrayCfg nikonCb3Cfg = { + constexpr ArrayCfg nikonCb3Cfg = { nikonCb3Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -670,7 +670,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Nikon Color Balance binary array - configuration 4 - extern const ArrayCfg nikonCb4Cfg = { + constexpr ArrayCfg nikonCb4Cfg = { nikonCb4Id, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry @@ -681,41 +681,41 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Nikon Color Balance binary array - definition 1 (D100) - extern const ArrayDef nikonCb1Def[] = { + constexpr ArrayDef nikonCb1Def[] = { { 0, ttUndefined, 4 }, // Version { 72, ttUnsignedShort, 4 } // Color balance levels }; //! Nikon Color Balance binary array - definition 2 (D2H) - extern const ArrayDef nikonCb2Def[] = { + constexpr ArrayDef nikonCb2Def[] = { { 0, ttUndefined, 4 }, // Version { 10, ttUnsignedShort, 4 } // Color balance levels }; //! Nikon Color Balance binary array - definition 2a (D50) - extern const ArrayDef nikonCb2aDef[] = { + constexpr ArrayDef nikonCb2aDef[] = { { 0, ttUndefined, 4 }, // Version { 18, ttUnsignedShort, 4 } // Color balance levels }; //! Nikon Color Balance binary array - definition 2b (D2X=0204,D2Hs=0206,D200=0207,D40=0208) - extern const ArrayDef nikonCb2bDef[] = { + constexpr ArrayDef nikonCb2bDef[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedShort, 140 }, // Unknown {284, ttUnsignedShort, 3 }, // Unknown (encrypted) {290, ttUnsignedShort, 4 } // Color balance levels }; //! Nikon Color Balance binary array - definition 3 (D70) - extern const ArrayDef nikonCb3Def[] = { + constexpr ArrayDef nikonCb3Def[] = { { 0, ttUndefined, 4 }, // Version { 20, ttUnsignedShort, 4 } // Color balance levels }; //! Nikon Color Balance binary array - definition 4 (D3) - extern const ArrayDef nikonCb4Def[] = { + constexpr ArrayDef nikonCb4Def[] = { { 0, ttUndefined, 4 }, // Version { 4, ttUnsignedShort, 140 }, // Unknown {284, ttUnsignedShort, 5 }, // Unknown (encrypted) {294, ttUnsignedShort, 4 } // Color balance levels }; //! Nikon Color Balance configurations and definitions - extern const ArraySet nikonCbSet[] = { + constexpr ArraySet nikonCbSet[] = { { nikonCb1Cfg, nikonCb1Def, EXV_COUNTOF(nikonCb1Def) }, { nikonCb2Cfg, nikonCb2Def, EXV_COUNTOF(nikonCb2Def) }, { nikonCb2aCfg, nikonCb2aDef, EXV_COUNTOF(nikonCb2aDef) }, @@ -725,7 +725,7 @@ namespace Exiv2 { }; //! Minolta Camera Settings (old) binary array - configuration - extern const ArrayCfg minoCsoCfg = { + constexpr ArrayCfg minoCsoCfg = { minoltaCsOldId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -737,7 +737,7 @@ namespace Exiv2 { }; //! Minolta Camera Settings (new) binary array - configuration - extern const ArrayCfg minoCsnCfg = { + constexpr ArrayCfg minoCsnCfg = { minoltaCsNewId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -749,7 +749,7 @@ namespace Exiv2 { }; //! Minolta 7D Camera Settings binary array - configuration - extern const ArrayCfg minoCs7Cfg = { + constexpr ArrayCfg minoCs7Cfg = { minoltaCs7DId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -760,13 +760,13 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Minolta 7D Camera Settings binary array - definition - extern const ArrayDef minoCs7Def[] = { + constexpr ArrayDef minoCs7Def[] = { { 60, ttSignedShort, 1 }, // Exif.MinoltaCs7D.ExposureCompensation { 126, ttSignedShort, 1 } // Exif.MinoltaCs7D.ColorTemperature }; //! Minolta 5D Camera Settings binary array - configuration - extern const ArrayCfg minoCs5Cfg = { + constexpr ArrayCfg minoCs5Cfg = { minoltaCs5DId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -777,7 +777,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Minolta 5D Camera Settings binary array - definition - extern const ArrayDef minoCs5Def[] = { + constexpr ArrayDef minoCs5Def[] = { { 146, ttSignedShort, 1 } // Exif.MinoltaCs5D.ColorTemperature }; @@ -787,7 +787,7 @@ namespace Exiv2 { // setting in all four configurations. //! Sony1 Camera Settings binary array - configuration - extern const ArrayCfg sony1CsCfg = { + constexpr ArrayCfg sony1CsCfg = { sony1CsId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -798,7 +798,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Sony1 Camera Settings 2 binary array - configuration - extern const ArrayCfg sony1Cs2Cfg = { + constexpr ArrayCfg sony1Cs2Cfg = { sony1Cs2Id, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -809,7 +809,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; - extern const ArrayCfg sony2FpCfg = { + constexpr ArrayCfg sony2FpCfg = { sony2FpId, // Group for the elements bigEndian, // Big endian ttUnsignedByte, // Type for array entry and size element @@ -819,14 +819,14 @@ namespace Exiv2 { false, // Don't concatenate gaps { 0, ttUnsignedByte, 1 } }; - extern const ArrayDef sony2FpDef[] = { + constexpr ArrayDef sony2FpDef[] = { { 0x4, ttSignedByte , 1 }, // Exif.Sony2Fp.AmbientTemperature { 0x16, ttUnsignedByte, 1 }, // Exif.Sony2Fp.FocusMode { 0x17, ttUnsignedByte, 1 }, // Exif.Sony2Fp.AFAreaMode { 0x2d, ttUnsignedByte, 1 } // Exif.Sony2Fp.FocusPosition2 }; - extern const ArrayCfg sony2010eCfg = { + constexpr ArrayCfg sony2010eCfg = { sony2010eId, // Group for the elements invalidByteOrder, // inherit from file. Usually littleEndian ttUnsignedByte, // Type for array entry and size element @@ -836,7 +836,7 @@ namespace Exiv2 { false, // Don't concatenate gaps { 0, ttUnsignedByte, 1 } }; - extern const ArrayDef sony2010eDef[] = { + constexpr ArrayDef sony2010eDef[] = { {0, ttUnsignedLong, 1}, // Exif.Sony2010. SequenceImageNumber {4, ttUnsignedLong, 1}, // Exif.Sony2010. SequenceFileNumber {8, ttUnsignedLong, 1}, // Exif.Sony2010. ReleaseMode2 @@ -876,16 +876,16 @@ namespace Exiv2 { }; //! Sony1 Camera Settings configurations and definitions - extern const ArraySet sony2010eSet[] = { + constexpr ArraySet sony2010eSet[] = { { sony2010eCfg, sony2010eDef, EXV_COUNTOF(sony2010eDef) } }; //! Sony[12] Camera Settings binary array - definition - extern const ArrayDef sonyCsDef[] = { + constexpr ArrayDef sonyCsDef[] = { { 12, ttSignedShort, 1 } // Exif.Sony[12]Cs.WhiteBalanceFineTune }; //! Sony2 Camera Settings binary array - configuration - extern const ArrayCfg sony2CsCfg = { + constexpr ArrayCfg sony2CsCfg = { sony2CsId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -896,7 +896,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Sony2 Camera Settings 2 binary array - configuration - extern const ArrayCfg sony2Cs2Cfg = { + constexpr ArrayCfg sony2Cs2Cfg = { sony2Cs2Id, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -907,22 +907,22 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Sony[12] Camera Settings 2 binary array - definition - extern const ArrayDef sonyCs2Def[] = { + constexpr ArrayDef sonyCs2Def[] = { { 44, ttUnsignedShort, 1 } // Exif.Sony[12]Cs2.FocusMode }; //! Sony1 Camera Settings configurations and definitions - extern const ArraySet sony1CsSet[] = { + constexpr ArraySet sony1CsSet[] = { { sony1CsCfg, sonyCsDef, EXV_COUNTOF(sonyCsDef) }, { sony1Cs2Cfg, sonyCs2Def, EXV_COUNTOF(sonyCs2Def) } }; //! Sony2 Camera Settings configurations and definitions - extern const ArraySet sony2CsSet[] = { + constexpr ArraySet sony2CsSet[] = { { sony2CsCfg, sonyCsDef, EXV_COUNTOF(sonyCsDef) }, { sony2Cs2Cfg, sonyCs2Def, EXV_COUNTOF(sonyCs2Def) } }; //! Sony Minolta Camera Settings (old) binary array - configuration - extern const ArrayCfg sony1MCsoCfg = { + constexpr ArrayCfg sony1MCsoCfg = { sony1MltCsOldId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -934,7 +934,7 @@ namespace Exiv2 { }; //! Sony Minolta Camera Settings (new) binary array - configuration - extern const ArrayCfg sony1MCsnCfg = { + constexpr ArrayCfg sony1MCsnCfg = { sony1MltCsNewId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -946,7 +946,7 @@ namespace Exiv2 { }; //! Sony Minolta 7D Camera Settings binary array - configuration - extern const ArrayCfg sony1MCs7Cfg = { + constexpr ArrayCfg sony1MCs7Cfg = { sony1MltCs7DId, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -958,7 +958,7 @@ namespace Exiv2 { }; //! Sony Minolta A100 Camera Settings binary array - configuration - extern const ArrayCfg sony1MCsA100Cfg = { + constexpr ArrayCfg sony1MCsA100Cfg = { sony1MltCsA100Id, // Group for the elements bigEndian, // Big endian ttUndefined, // Type for array entry and size element @@ -969,14 +969,14 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Sony Minolta A100 Camera Settings binary array - definition - extern const ArrayDef sony1MCsA100Def[] = { + constexpr ArrayDef sony1MCsA100Def[] = { { 112, ttSignedShort, 1 }, // Exif.Sony1MltCsA100.WhiteBalanceFineTune { 116, ttSignedShort, 1 }, // Exif.Sony1MltCsA100.ColorCompensationFilter { 190, ttSignedShort, 1 } // Exif.Sony1MltCsA100.ColorCompensationFilter2 }; //! Samsung PictureWizard binary array - configuration - extern const ArrayCfg samsungPwCfg = { + constexpr ArrayCfg samsungPwCfg = { samsungPwId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry @@ -987,7 +987,7 @@ namespace Exiv2 { { 0, ttUnsignedShort, 1 } }; //! Samsung PictureWizard binary array - definition - extern const ArrayDef samsungPwDef[] = { + constexpr ArrayDef samsungPwDef[] = { { 0, ttUnsignedShort, 1 }, // Mode { 2, ttUnsignedShort, 1 }, // Color { 4, ttUnsignedShort, 1 }, // Saturation