diff --git a/include/exiv2/exif.hpp b/include/exiv2/exif.hpp index c052513a82..c0367ed68a 100644 --- a/include/exiv2/exif.hpp +++ b/include/exiv2/exif.hpp @@ -142,7 +142,7 @@ class EXIV2API Exifdatum : public Metadatum { [[nodiscard]] std::string tagLabel() const override; [[nodiscard]] uint16_t tag() const override; //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) - [[nodiscard]] int ifdId() const; + [[nodiscard]] IfdId ifdId() const; //! Return the name of the IFD [[nodiscard]] const char* ifdName() const; //! Return the index (unique id of this key within the original IFD) diff --git a/include/exiv2/tags.hpp b/include/exiv2/tags.hpp index d043cca41e..356f9dce04 100644 --- a/include/exiv2/tags.hpp +++ b/include/exiv2/tags.hpp @@ -30,12 +30,161 @@ using TagListFct = const TagInfo* (*)(); // ***************************************************************************** // class definitions +//! Type to specify the IFD to which a metadata belongs +enum class IfdId : uint32_t { + ifdIdNotSet, + ifd0Id, + ifd1Id, + ifd2Id, + ifd3Id, + exifId, + gpsId, + iopId, + mpfId, + subImage1Id, + subImage2Id, + subImage3Id, + subImage4Id, + subImage5Id, + subImage6Id, + subImage7Id, + subImage8Id, + subImage9Id, + subThumb1Id, + panaRawId, + mnId, + canonId, + canonAfCId, + canonAfMiAdjId, + canonAmId, + canonAsId, + canonCbId, + canonCiId, + canonCsId, + canonFilId, + canonFlId, + canonHdrId, + canonLeId, + canonMeId, + canonMoID, + canonMvId, + canonRawBId, + canonSiId, + canonCfId, + canonContrastId, + canonFcd1Id, + canonFcd2Id, + canonFcd3Id, + canonLiOpId, + canonMyColorID, + canonPiId, + canonPaId, + canonTiId, + canonFiId, + canonPrId, + canonPreID, + canonVigCorId, + canonVigCor2Id, + canonWbId, + casioId, + casio2Id, + fujiId, + minoltaId, + minoltaCs5DId, + minoltaCs7DId, + minoltaCsOldId, + minoltaCsNewId, + nikon1Id, + nikon2Id, + nikon3Id, + nikonPvId, + nikonVrId, + nikonPcId, + nikonWtId, + nikonIiId, + nikonAfId, + nikonAf21Id, + nikonAf22Id, + nikonAFTId, + nikonFiId, + nikonMeId, + nikonFl1Id, + nikonFl2Id, + nikonFl3Id, + nikonFl7Id, + nikonSi1Id, + nikonSi2Id, + nikonSi3Id, + nikonSi4Id, + nikonSi5Id, + nikonSi6Id, + nikonLd1Id, + nikonLd2Id, + nikonLd3Id, + nikonLd4Id, + nikonCb1Id, + nikonCb2Id, + nikonCb2aId, + nikonCb2bId, + nikonCb3Id, + nikonCb4Id, + olympusId, + olympus2Id, + olympusCsId, + olympusEqId, + olympusRdId, + olympusRd2Id, + olympusIpId, + olympusFiId, + olympusFe1Id, + olympusFe2Id, + olympusFe3Id, + olympusFe4Id, + olympusFe5Id, + olympusFe6Id, + olympusFe7Id, + olympusFe8Id, + olympusFe9Id, + olympusRiId, + panasonicId, + pentaxId, + pentaxDngId, + samsung2Id, + samsungPvId, + samsungPwId, + sigmaId, + sony1Id, + sony2Id, + sonyMltId, + sony1CsId, + sony1Cs2Id, + sony2CsId, + sony2Cs2Id, + sony2FpId, + sonyMisc1Id, + sonyMisc2bId, + sonyMisc3cId, + sonySInfo1Id, + sony2010eId, + sony1MltCs7DId, + sony1MltCsOldId, + sony1MltCsNewId, + sony1MltCsA100Id, + tagInfoMvId, + lastId, + ignoreId = lastId +}; + +inline std::ostream& operator<<(std::ostream& os, IfdId id) { + return os << static_cast(id); +} + //! The details of an Exif group. Groups include IFDs and binary arrays. struct EXIV2API GroupInfo { struct GroupName; - bool operator==(int ifdId) const; //!< Comparison operator for IFD id + bool operator==(IfdId ifdId) const; //!< Comparison operator for IFD id bool operator==(const GroupName& groupName) const; //!< Comparison operator for group name - int ifdId_; //!< IFD id + IfdId ifdId_; //!< IFD id const char* ifdName_; //!< IFD name const char* groupName_; //!< Group name, unique for each group. TagListFct tagList_; //!< Tag list @@ -47,18 +196,47 @@ struct EXIV2API GroupInfo::GroupName { std::string g_; //!< Group name }; +/*! + @brief Section identifiers to logically group tags. A section consists + of nothing more than a name, based on the Exif standard. + */ +enum class SectionId { + sectionIdNotSet, + imgStruct, // 4.6.4 A + recOffset, // 4.6.4 B + imgCharacter, // 4.6.4 C + otherTags, // 4.6.4 D + exifFormat, // 4.6.3 + exifVersion, // 4.6.5 A + imgConfig, // 4.6.5 C + userInfo, // 4.6.5 D + relatedFile, // 4.6.5 E + dateTime, // 4.6.5 F + captureCond, // 4.6.5 G + gpsTags, // 4.6.6 + iopTags, // 4.6.7 + mpfTags, + makerTags, // MakerNote + dngTags, // DNG Spec + panaRaw, + tiffEp, // TIFF-EP Spec + tiffPm6, + adobeOpi, + lastSectionId +}; + //! Tag information struct EXIV2API TagInfo { - uint16_t tag_; //!< Tag - const char* name_; //!< One word tag label - const char* title_; //!< Tag title - const char* desc_; //!< Short tag description - int ifdId_; //!< Link to the (preferred) IFD - int sectionId_; //!< Section id - TypeId typeId_; //!< Type id - int16_t count_; //!< The number of values (not bytes!), 0=any, -1=count not known. - PrintFct printFct_; //!< Pointer to tag print function -}; // struct TagInfo + uint16_t tag_; //!< Tag + const char* name_; //!< One word tag label + const char* title_; //!< Tag title + const char* desc_; //!< Short tag description + IfdId ifdId_; //!< Link to the (preferred) IFD + SectionId sectionId_; //!< Section id + TypeId typeId_; //!< Type id + int16_t count_; //!< The number of values (not bytes!), 0=any, -1=count not known. + PrintFct printFct_; //!< Pointer to tag print function +}; // struct TagInfo //! Access to Exif group and tag lists and misc. tag reference methods, implemented as a static class. class EXIV2API ExifTags { @@ -156,8 +334,8 @@ class EXIV2API ExifKey : public Key { [[nodiscard]] std::string key() const override; [[nodiscard]] const char* familyName() const override; [[nodiscard]] std::string groupName() const override; - //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) - [[nodiscard]] int ifdId() const; + //! Return the IFD id. (Do not use, this is meant for library internal use.) + [[nodiscard]] IfdId ifdId() const; [[nodiscard]] std::string tagName() const override; [[nodiscard]] uint16_t tag() const override; [[nodiscard]] std::string tagLabel() const override; diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index a6785f56f4..8422d35904 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -446,168 +446,210 @@ constexpr TagDetails canonAFAreaMode[] = { // Canon MakerNote Tag Info 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, + {0x0000, "0x0000", "0x0000", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0001, "CameraSettings", N_("Camera Settings"), N_("Various camera settings"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printFocalLength}, + {0x0003, "CanonFlashInfo", "Canon Flash Info", N_("Canon Flash Info"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0004, "ShotInfo", N_("Shot Info"), N_("Shot information"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), canonId, makerTags, unsignedShort, -1, - printFocalLength}, - {0x0003, "CanonFlashInfo", "Canon Flash Info", N_("Canon Flash Info"), canonId, makerTags, unsignedShort, -1, + {0x0005, "Panorama", N_("Panorama"), N_("Panorama"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x0006, "ImageType", N_("Image Type"), N_("Image type"), IfdId::canonId, SectionId::makerTags, asciiString, -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, + {0x0007, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), IfdId::canonId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0008, "FileNumber", N_("File Number"), N_("File number"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1, + print0x0008}, + {0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), IfdId::canonId, SectionId::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_("Unknown"), canonId, makerTags, unsignedLong, -1, print0x000c}, - {0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), canonId, makerTags, unsignedLong, -1, + {0x000a, "0x000a", N_("0x000a"), N_("Unknown"), IfdId::canonId, SectionId::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, + {0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), IfdId::canonId, SectionId::makerTags, + unsignedLong, -1, print0x000c}, + {0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x000e, "FileLength", N_("FileLength"), N_("FileLength"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x0010, "ModelID", N_("ModelID"), N_("Model ID"), canonId, makerTags, unsignedLong, -1, + {0x000f, "CustomFunctions", N_("Custom Functions"), N_("Custom Functions"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0010, "ModelID", N_("ModelID"), N_("Model ID"), IfdId::canonId, SectionId::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, + {0x0011, "MovieInfo", N_("MovieInfo"), N_("Movie info"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x0012, "PictureInfo", N_("Picture Info"), N_("Picture info"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0013, "ThumbnailImageValidArea", N_("Thumbnail Image Valid Area"), N_("Thumbnail image valid area"), + IfdId::canonId, SectionId::makerTags, signedShort, -1, printValue}, + {0x0015, "SerialNumberFormat", N_("Serial Number Format"), N_("Serial number format"), IfdId::canonId, + SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonSerialNumberFormat)}, + {0x001a, "SuperMacro", N_("Super Macro"), N_("Super macro"), IfdId::canonId, SectionId::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, + {0x001c, "DateStampMode", N_("DateStampMode"), N_("Data_Stamp_Mode"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(canonDateStampMode)}, + {0x001d, "MyColors", N_("MyColors"), N_("My_Colors"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - // {0x0023, "Categories", N_("Categories"), N_("Categories"), canonId, makerTags, unsignedLong -1, + {0x001e, "FirmwareRevision", N_("FirmwareRevision"), N_("Firmware_Revision"), IfdId::canonId, SectionId::makerTags, + unsignedLong, -1, printValue}, + // {0x0023, "Categories", N_("Categories"), N_("Categories"), IfdId::canonId, SectionId::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, + {0x0024, "FaceDetect1", N_("FaceDetect1"), N_("FaceDetect1"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0025, "FaceDetect2", N_("FaceDetect2"), N_("FaceDetect2"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0026, "AFInfo", N_("AF Info"), N_("AF info"), IfdId::canonId, SectionId::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, + {0x0027, "ContrastInfo", N_("ContrastInfo"), N_("ContrastInfo"), IfdId::canonId, SectionId::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, + {0x0028, "ImageUniqueID", N_("ImageUniqueID"), N_("ImageUniqueID"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0029, "WBInfo", N_("WBInfo"), N_("WBInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x002f, "FaceDetect3", N_("FaceDetect3"), N_("FaceDetect3"), IfdId::canonId, SectionId::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, + {0x0035, "TimeInfo", N_("Time Info"), N_("Time zone information"), IfdId::canonId, SectionId::makerTags, signedLong, + -1, printValue}, + {0x0038, "BatteryType", N_("BatteryType"), N_("BatteryType"), IfdId::canonId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x003c, "AFInfo3", N_("AFInfo3"), N_("AFInfo3"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x00a3, "SharpnessFreqTable", N_("SharpnessFreqTable"), N_("SharpnessFreqTable"), canonId, makerTags, + {0x0081, "RawDataOffset", N_("RawDataOffset"), N_("RawDataOffset"), IfdId::canonId, SectionId::makerTags, + signedLong, -1, printValue}, + {0x0083, "OriginalDecisionDataOffset", N_("Original Decision Data Offset"), N_("Original decision data offset"), + IfdId::canonId, SectionId::makerTags, signedLong, -1, printValue}, + {0x00a4, "WhiteBalanceTable", N_("White Balance Table"), N_("White balance table"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + // {0x0090, "CustomFunctions1D", N_("CustomFunctions1D"), N_("CustomFunctions1D"), IfdId::canonId, + // SectionId::makerTags, unsignedShort, -1, printValue}, // ToDo {0x0091, "PersonalFunctions", + // N_("PersonalFunctions"), N_("PersonalFunctions"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, + // printValue}, // ToDo {0x0092, "PersonalFunctionValues", N_("PersonalFunctionValues"), + // N_("PersonalFunctionValues"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, // ToDo + {0x0093, "CanonFileInfo", N_("CanonFileInfo"), N_("CanonFileInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x00a4, "WhiteBalanceTable", N_("SharpnessTable"), N_("SharpnessTable"), canonId, makerTags, unsignedShort, -1, + {0x0094, "AFPointsInFocus1D", N_("AFPointsInFocus1D"), N_("AFPointsInFocus1D"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0095, "LensModel", N_("Lens Model"), N_("Lens model"), IfdId::canonId, SectionId::makerTags, asciiString, -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, + {0x0096, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), IfdId::canonId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0097, "DustRemovalData", N_("Dust Removal Data"), N_("Dust removal data"), IfdId::canonId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0099, "CustomFunctions", N_("Custom Functions"), N_("Custom functions"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x009a, "AspectInfo", N_("AspectInfo"), N_("AspectInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x00ae, "ColorTemperature", N_("ColorTemperature"), N_("ColorTemperature"), canonId, makerTags, unsignedShort, -1, + {0x00a0, "ProcessingInfo", N_("Processing Info"), N_("Processing info"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00a1, "ToneCurveTable", N_("ToneCurveTable"), N_("ToneCurveTable"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00a2, "SharpnessTable", N_("SharpnessTable"), N_("SharpnessTable"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00a3, "SharpnessFreqTable", N_("SharpnessFreqTable"), N_("SharpnessFreqTable"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x00a4, "WhiteBalanceTable", N_("SharpnessTable"), N_("SharpnessTable"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00a9, "ColorBalance", N_("ColorBalance"), N_("ColorBalance"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00aa, "MeasuredColor", N_("Measured Color"), N_("Measured color"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00ae, "ColorTemperature", N_("ColorTemperature"), N_("ColorTemperature"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00b0, "CanonFlags", N_("CanonFlags"), N_("CanonFlags"), IfdId::canonId, SectionId::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, + {0x00b1, "ModifiedInfo", N_("ModifiedInfo"), N_("ModifiedInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), canonId, makerTags, signedShort, -1, + {0x00b2, "ToneCurveMatching", N_("ToneCurveMatching"), N_("ToneCurveMatching"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x00b3, "WhiteBalanceMatching", N_("WhiteBalanceMatching"), N_("WhiteBalanceMatching"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), IfdId::canonId, SectionId::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, + {0x00b5, "0x00b5", "0x00b5", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x00b6, "PreviewImageInfo", "PreviewImageInfo", N_("PreviewImageInfo"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00c0, "0x00c0", "0x00c0", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x00c1, "0x00c1", "0x00c1", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x00d0, "VRDOffset", N_("VRD Offset"), N_("VRD offset"), IfdId::canonId, SectionId::makerTags, unsignedLong, -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}, + {0x00e0, "SensorInfo", N_("Sensor Info"), N_("Sensor info"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printValue}, // AFInfo2 structure has a special decoder, see decodeCanonAFInfo in // tiffvisitor_int.cpp that decoder useses the below tags from // 0x2600 to 0x2611 - {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, + {0x2600, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), IfdId::canonId, SectionId::makerTags, signedShort, -1, printValue}, - {0x2604, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), canonId, makerTags, signedShort, -1, + {0x2601, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), IfdId::canonId, SectionId::makerTags, signedShort, + -1, EXV_PRINT_TAG(canonAFAreaMode)}, + {0x2602, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), IfdId::canonId, SectionId::makerTags, signedShort, + -1, printValue}, + {0x2603, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x2604, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x2605, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x2606, "AFImageWidth", N_("AF Width"), N_("AF Width"), IfdId::canonId, SectionId::makerTags, signedShort, -1, printValue}, - {0x2605, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), canonId, makerTags, signedShort, -1, + {0x2607, "AFImageHeight", N_("AF Height"), N_("AF Height"), IfdId::canonId, SectionId::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, + {0x2608, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x2609, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x260a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x260b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), IfdId::canonId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x260c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), IfdId::canonId, + SectionId::makerTags, signedShort, -1, printBitmask}, + {0x260d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), IfdId::canonId, + SectionId::makerTags, signedShort, -1, printBitmask}, + {0x260e, "AFPointsUnusable", N_("AF Points Unusable"), N_("AF Points Unusable"), IfdId::canonId, + SectionId::makerTags, signedShort, -1, printBitmask}, + {0x260f, "0x260f", "0x260f", N_("0x260f"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x2610, "0x2610", "0x2610", N_("0x2610"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x2611, "AFFineRotation", N_("AF Fine Rotation"), + N_("Mathematically positive (i.e. anti-clockwise) rotation of every AF rectangle in centidegrees"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x4001, "ColorData", N_("Color Data"), N_("Color data"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x2609, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), canonId, makerTags, signedShort, -1, + {0x4002, "CRWParam", N_("CRWParam"), N_("CRWParam"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x260a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), canonId, makerTags, signedShort, -1, + {0x4003, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x260b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), canonId, makerTags, signedShort, -1, + {0x4005, "Flavor", N_("Flavor"), N_("Flavor"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x4008, "PictureStyleUserDef", N_("PictureStyleUserDef"), N_("PictureStyleUserDef"), IfdId::canonId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + // {0x4009, "PictureStylePC", N_("PictureStylePC"), N_("PictureStylePC"), IfdId::canonId, SectionId::makerTags, + // unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x4010, "CustomPictureStyleFileName", N_("CustomPictureStyleFileName"), N_("CustomPictureStyleFileName"), + IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x4013, "AFMicroAdj", N_("AFMicroAdj"), N_("AFMicroAdj"), IfdId::canonId, SectionId::makerTags, unsignedShort, -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}, - {0x260f, "0x260f", "0x260f", N_("0x260f"), canonId, makerTags, unsignedShort, -1, printValue}, - {0x2610, "0x2610", "0x2610", N_("0x2610"), canonId, makerTags, unsignedShort, -1, printValue}, - {0x2611, "AFFineRotation", N_("AF Fine Rotation"), - N_("Mathematically positive (i.e. anti-clockwise) rotation of every AF rectangle in centidegrees"), canonId, - makerTags, unsignedShort, -1, printValue}, - {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, + {0x4015, "VignettingCorr", N_("VignettingCorr"), N_("VignettingCorr"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x4016, "VignettingCorr2", N_("VignettingCorr2"), N_("VignettingCorr2"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x4018, "LightingOpt", N_("LightingOpt"), N_("LightingOpt"), IfdId::canonId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x4019, "LensInfo", N_("LensInfo"), N_("LensInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x4016, "VignettingCorr2", N_("VignettingCorr2"), N_("VignettingCorr2"), canonId, makerTags, unsignedShort, -1, + {0x4020, "AmbienceInfo", N_("AmbienceInfo"), N_("AmbienceInfo"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x4021, "MultiExp", N_("MultiExp"), N_("MultiExp"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x4018, "LightingOpt", N_("LightingOpt"), N_("LightingOpt"), canonId, makerTags, unsignedShort, -1, printValue}, - {0x4019, "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, + {0x4024, "FilterInfo", N_("FilterInfo"), N_("FilterInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x4025, "HDRInfo", N_("HDRInfo"), N_("HDRInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x4028, "AFConfig", N_("AFConfig"), N_("AFConfig"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x403f, "RawBurstModeRoll", N_("RawBurstModeRoll"), N_("RawBurstModeRoll"), IfdId::canonId, SectionId::makerTags, + unsignedShort, -1, printValue}, // End of list marker - {0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"), canonId, - makerTags, asciiString, -1, printValue}, + {0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"), + IfdId::canonId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* CanonMakerNote::tagList() { @@ -616,18 +658,24 @@ const TagInfo* CanonMakerNote::tagList() { // Canon Movie Info Tag 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, + {0x0001, "FrameRate", N_("FrameRate"), N_("FrameRate"), IfdId::canonMvId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x0002, "FrameCount", N_("FrameCount"), N_("FrameCount"), IfdId::canonMvId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0004, "FrameCount", N_("FrameCount"), N_("FrameCount"), IfdId::canonMvId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x006e, "AudioSampleRate", N_("Audio Sample Rate"), N_("Audio Sample Rate"), canonMvId, makerTags, unsignedLong, + {0x0006, "FrameRate", N_("FrameCount"), N_("FrameCount"), IfdId::canonMvId, SectionId::makerTags, unsignedRational, -1, printValue}, - {0x0070, "AudioChannels", N_("Audio Channels"), N_("Audio Channels"), canonMvId, makerTags, unsignedLong, -1, + {0x006a, "Duration", N_("Duration"), N_("Duration"), IfdId::canonMvId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x0074, "VideoCodec", N_("Video Codec"), N_("Video Codec"), canonMvId, makerTags, asciiString, -1, printValue}, + {0x006c, "AudioBitrate", N_("Audio Bitrate"), N_("Audio Bitrate"), IfdId::canonMvId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x006e, "AudioSampleRate", N_("Audio Sample Rate"), N_("Audio Sample Rate"), IfdId::canonMvId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0070, "AudioChannels", N_("Audio Channels"), N_("Audio Channels"), IfdId::canonMvId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x0074, "VideoCodec", N_("Video Codec"), N_("Video Codec"), IfdId::canonMvId, SectionId::makerTags, asciiString, + -1, printValue}, }; const TagInfo* CanonMakerNote::tagListMv() { @@ -643,8 +691,8 @@ constexpr TagDetails canonMyColors[] = { // Canon My Colors Info Tag constexpr TagInfo CanonMakerNote::tagInfoMc_[] = { - {0x0002, "MyColorMode", N_("My Color Mode"), N_("My Color Mode"), canonMyColorID, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(canonMyColors)}, + {0x0002, "MyColorMode", N_("My Color Mode"), N_("My Color Mode"), IfdId::canonMyColorID, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(canonMyColors)}, }; const TagInfo* CanonMakerNote::tagListMc() { @@ -653,28 +701,28 @@ const TagInfo* CanonMakerNote::tagListMc() { // Canon FaceDetect 1 Info Tag 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}, + {0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), IfdId::canonFcd1Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0003, "FacesDetectedFrameSize", N_("Faces Detected Frame Size"), N_("Faces Detected Frame Size"), + IfdId::canonFcd1Id, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0008, "Face1Position", N_("Face 1 Position"), N_("Face 1 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x000a, "Face2Position", N_("Face 2 Position"), N_("Face 2 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x000c, "Face3Position", N_("Face 3 Position"), N_("Face 3 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x000e, "Face4Position", N_("Face 4 Position"), N_("Face 4 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0010, "Face5Position", N_("Face 5 Position"), N_("Face 5 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0012, "Face6Position", N_("Face 6 Position"), N_("Face 6 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0014, "Face7Position", N_("Face 7 Position"), N_("Face 7 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0016, "Face8Position", N_("Face 8 Position"), N_("Face 8 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0018, "Face9Position", N_("Face 9 Position"), N_("Face 9 Position"), IfdId::canonFcd1Id, SectionId::makerTags, + signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFcd1() { @@ -683,9 +731,10 @@ const TagInfo* CanonMakerNote::tagListFcd1() { // Canon FaceDetect 2 Info Tag 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}, + {0x0001, "FaceWidth", N_("Face Width"), N_("Faces Width"), IfdId::canonFcd2Id, SectionId::makerTags, unsignedByte, + -1, printValue}, + {0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), IfdId::canonFcd2Id, SectionId::makerTags, + unsignedByte, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFcd2() { @@ -697,8 +746,8 @@ constexpr TagDetails canonContrastInfo[] = {{0x0, N_("Off")}, {0x8, N_("On")}, { // Canon Contrast Info Tag constexpr TagInfo CanonMakerNote::tagInfoCo_[] = { - {0x0004, "IntelligentContrast", N_("Intelligent Contrast"), N_("Intelligent Contrast"), canonContrastId, makerTags, - unsignedShort, -1, EXV_PRINT_TAG(canonContrastInfo)}, + {0x0004, "IntelligentContrast", N_("Intelligent Contrast"), N_("Intelligent Contrast"), IfdId::canonContrastId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonContrastInfo)}, }; const TagInfo* CanonMakerNote::tagListCo() { @@ -707,26 +756,26 @@ const TagInfo* CanonMakerNote::tagListCo() { // Canon WhiteBalance Info Tag 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}, + {0x0002, "WB_GRGBLevelsAuto", N_("WB_G RGB Levels Auto"), N_("WB_G RGB Levels Auto"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x000a, "WB_GRGBLevelsDaylight", N_("WB_G RGB Levels Daylight"), N_("WB_G RGB Levels Daylight"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0012, "WB_GRGBLevelsCloudy", N_("WB_G RGB Levels Cloudy"), N_("WB_G RGB Levels Cloudy"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x001a, "WB_GRGBLevelsTungsten", N_("WB_G RGB Levels Tungsten"), N_("WB_G RGB Levels Tungsten"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, {0x0022, "WB_GRGBLevelsFluorescent", N_("WB_G RGB Levels Fluorescent"), N_("WB_G RGB Levels Fluorescent"), - canonWbId, makerTags, unsignedLong, -1, printValue}, + IfdId::canonWbId, SectionId::makerTags, unsignedLong, -1, printValue}, {0x002a, "WB_GRGBLevelsFluorHigh", N_("WB_G RGB Levels Fluorescent High"), N_("WB_G RGB Levels Fluorescent 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}, + IfdId::canonWbId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0032, "WB_GRGBLevelsFlash", N_("WB_G RGB Levels Flash"), N_("WB_G RGB Levels Flash"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x003a, "WB_GRGBLevelsUnderwater", N_("WB_G RGB Levels Underwater"), N_("WB_G RGB Levels Underwater"), + IfdId::canonWbId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0042, "WB_GRGBLevelsCustom1", N_("WB_G RGB Levels Custom 1"), N_("WB_G RGB Levels Custom 1"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x004a, "WB_GRGBLevelsCustom2", N_("WB_G RGB Levels Custom 2"), N_("WB_G RGB Levels Custom 2"), IfdId::canonWbId, + SectionId::makerTags, unsignedLong, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListWbi() { @@ -735,8 +784,8 @@ const TagInfo* CanonMakerNote::tagListWbi() { // Canon FaceDetect 3 Info Tag constexpr TagInfo CanonMakerNote::tagInfoFcd3_[] = { - {0x0003, "FacesDetected", N_("Face Detected"), N_("Faces Detected"), canonFcd3Id, makerTags, unsignedShort, -1, - printValue}, + {0x0003, "FacesDetected", N_("Face Detected"), N_("Faces Detected"), IfdId::canonFcd3Id, SectionId::makerTags, + unsignedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFcd3() { @@ -758,15 +807,16 @@ constexpr TagDetails canonAspectInfo[] = { // Canon Aspect Info Tag 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, + {0x0000, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), IfdId::canonAsId, SectionId::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}, + {0x0001, "CroppedImageWidth", N_("Cropped Image Width"), N_("Cropped Image Width"), IfdId::canonAsId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0002, "CroppedImageHeight", N_("Cropped Image Height"), N_("Cropped Image Height"), IfdId::canonAsId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0003, "CroppedImageLeft", N_("Cropped Image Left"), N_("Cropped Image Left"), IfdId::canonAsId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0004, "CroppedImageTop", N_("Cropped Image Top"), N_("Cropped Image Top"), IfdId::canonAsId, + SectionId::makerTags, unsignedLong, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListAs() { @@ -775,26 +825,26 @@ const TagInfo* CanonMakerNote::tagListAs() { // Canon Color Balance Info Tag 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_RGGBLevelsFluorescent", N_("WB_RGGB Levels Fluorescent"), N_("WB_RGGB Levels Fluorescent"), canonCbId, - makerTags, signedShort, -1, printValue}, - {0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), canonCbId, makerTags, - signedShort, -1, printValue}, + {0x0001, "WB_RGGBLevelsAuto", N_("WB_RGGB Levels Auto"), N_("WB_RGGB Levels Auto"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0005, "WB_RGGBLevelsDaylight", N_("WB_RGGB Levels Daylight"), N_("WB_RGGB Levels Daylight"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x000d, "WB_RGGBLevelsShade", N_("WB_RGGB Levels Shade"), N_("WB_RGGB Levels Shade"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x001a, "WB_RGGBLevelsCloudy", N_("WB_RGGB Levels Cloudy"), N_("WB_RGGB Levels Cloudy"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0011, "WB_RGGBLevelsTungsten", N_("WB_RGGB Levels Tungsten"), N_("WB_RGGB Levels Tungsten"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0015, "WB_RGGBLevelsFluorescent", N_("WB_RGGB Levels Fluorescent"), N_("WB_RGGB Levels Fluorescent"), + IfdId::canonCbId, SectionId::makerTags, signedShort, -1, printValue}, + {0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), IfdId::canonCbId, + SectionId::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}, + N_("WB_RGGB Levels Custom Black Levels"), IfdId::canonCbId, SectionId::makerTags, signedShort, -1, printValue}, + {0x0021, "WB_RGGBLevelsKelvin", N_("WB_RGGB Levels Kelvin"), N_("WB_RGGB Levels Kelvin"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0025, "WB_RGGBBlackLevels", N_("WB_RGGB Black Levels"), N_("WB_RGGB Black Levels"), IfdId::canonCbId, + SectionId::makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListCbi() { @@ -803,8 +853,8 @@ const TagInfo* CanonMakerNote::tagListCbi() { // Canon Flags Tag constexpr TagInfo CanonMakerNote::tagInfoFl_[] = { - {0x0001, "ModifiedParamFlag", N_("Modified Param Flag"), N_("Modified Param Flag"), canonFlId, makerTags, - signedShort, -1, printValue}, + {0x0001, "ModifiedParamFlag", N_("Modified Param Flag"), N_("Modified Param Flag"), IfdId::canonFlId, + SectionId::makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListFl() { @@ -820,28 +870,28 @@ constexpr TagDetails canonModifiedSharpnessFreq[] = {{0, N_("n/a")}, {1, N_ // Canon ModifiedInfo Tag 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}, + {0x0001, "ModifiedToneCurve", N_("Modified ToneCurve"), N_("Modified ToneCurve"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedToneCurve)}, + {0x0002, "ModifiedSharpness", N_("Modified Sharpness"), N_("Modified Sharpness"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedSharpnessFreq)}, + {0x0003, "ModifiedSharpnessFreq", N_("Modified Sharpness Freq"), N_("Modified Sharpness Freq"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0004, "ModifiedSensorRedLevel", N_("Modified Sensor Red Level"), N_("Modified Sensor Red Level"), + IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue}, + {0x0005, "ModifiedSensorBlueLevel", N_("Modified Sensor Blue Level"), N_("Modified Sensor Blue Level"), + IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue}, + {0x0006, "ModifiedWhiteBalanceRed", N_("Modified White Balance Red"), N_("Modified White Balance Red"), + IfdId::canonMoID, SectionId::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}, + IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue}, + {0x0008, "ModifiedWhiteBalance", N_("Modified White Balance"), N_("Modified White Balance"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0009, "ModifiedColorTemp", N_("Modified Color Temp"), N_("Modified Color Temp"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, printValue}, + {0x000a, "ModifiedPictureStyle", N_("Modified Picture Style"), N_("Modified Picture Style"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x000b, "ModifiedDigitalGain", N_("Modified Param Flag"), N_("Modified Param Flag"), IfdId::canonMoID, + SectionId::makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListMo() { @@ -855,16 +905,16 @@ constexpr TagDetails canonPreviewQuality[] = { // Canon Preview Image Info Tag 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}, + {0x0001, "PreviewQuality", N_("Preview Quality"), N_("Preview Quality"), IfdId::canonPreID, SectionId::makerTags, + unsignedLong, -1, EXV_PRINT_TAG(canonPreviewQuality)}, + {0x0002, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), IfdId::canonPreID, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0003, "PreviewImageWidth", N_("Preview Image Width"), N_("Preview Image Width"), IfdId::canonPreID, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0004, "PreviewImageHeight", N_("Preview Image Height"), N_("Preview Image Height"), IfdId::canonPreID, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0005, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), IfdId::canonPreID, + SectionId::makerTags, unsignedLong, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListPreI() { @@ -873,10 +923,12 @@ const TagInfo* CanonMakerNote::tagListPreI() { // Canon Color Info Tag 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)}, + {0x0001, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::canonCiId, SectionId::makerTags, signedShort, -1, + printValue}, + {0x0002, "ColorTone", N_("Color Tone"), N_("Color Tone"), IfdId::canonCiId, SectionId::makerTags, signedShort, -1, + printValue}, + {0x0003, "ColorSpace", N_("Color Space"), N_("Color Space"), IfdId::canonCiId, SectionId::makerTags, signedShort, + -1, EXV_PRINT_TAG(canonColorSpace)}, }; const TagInfo* CanonMakerNote::tagListCi() { @@ -889,12 +941,12 @@ constexpr TagDetails canonAFMicroAdjMode[] = { // Canon AFMicroAdj Info Tag 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}, + {0x0001, "AFMicroAdjMode", N_("AFMicroAdjMode"), N_("AFMicroAdjMode"), IfdId::canonAfMiAdjId, SectionId::makerTags, + signedLong, -1, EXV_PRINT_TAG(canonAFMicroAdjMode)}, + {0x0002, "AFMicroAdjValue", N_("AF Micro Adj Value"), N_("AF Micro Adj Value"), IfdId::canonAfMiAdjId, + SectionId::makerTags, signedRational, -1, printValue}, {0xffff, "(UnknownCanonAFMicroAdjTag)", "(UnknownCanonAFMicroAdjTag)", N_("Unknown Canon AFMicroAdj tag"), - canonAfMiAdjId, makerTags, signedShort, 1, printValue}}; + IfdId::canonAfMiAdjId, SectionId::makerTags, signedShort, 1, printValue}}; const TagInfo* CanonMakerNote::tagListAfMiAdj() { return tagInfoAfMiAdj_; @@ -902,24 +954,24 @@ const TagInfo* CanonMakerNote::tagListAfMiAdj() { // Canon VignettingCorr Tag 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}, + {0x0000, "VignettingCorrVersion", N_("Vignetting Corr Version"), N_("Vignetting Corr Version"), + IfdId::canonVigCorId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0002, "PeripheralLighting", N_("Peripheral Lighting"), N_("Peripheral Lighting"), IfdId::canonVigCorId, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0003, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion Correction"), IfdId::canonVigCorId, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0004, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), + IfdId::canonVigCorId, SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0005, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), + IfdId::canonVigCorId, SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0006, "PeripheralLightingValue", N_("Peripheral Lighting Value"), N_("Peripheral Lighting Value"), + IfdId::canonVigCorId, SectionId::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}, + IfdId::canonVigCorId, SectionId::makerTags, signedShort, -1, printValue}, + {0x000b, "OriginalImageWidth", N_("Original Image Width"), N_("Original Image Width"), IfdId::canonVigCorId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x000c, "OriginalImageHeight", N_("Original Image Height"), N_("Original Image Height"), IfdId::canonVigCorId, + SectionId::makerTags, signedShort, -1, printValue}, }; const TagInfo* CanonMakerNote::tagListVigCor() { @@ -929,13 +981,13 @@ const TagInfo* CanonMakerNote::tagListVigCor() { // Canon VignettingCorr2 Tag constexpr TagInfo CanonMakerNote::tagInfoVigCor2_[] = { {0x0005, "PeripheralLightingSetting", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), - canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + IfdId::canonVigCor2Id, SectionId::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)}, + IfdId::canonVigCor2Id, SectionId::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)}, + IfdId::canonVigCor2Id, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, {0xffff, "(UnknownVignettingCorr2Tag)", "(UnknownVignettingCorr2Tag)", N_("UnknownVignettingCorr2Tag Tag"), - canonVigCor2Id, makerTags, signedLong, 1, printValue} // important to add end of tag + IfdId::canonVigCor2Id, SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListVigCor2() { @@ -956,17 +1008,17 @@ constexpr TagDetails canonHighISONoiseReduction[] = { // Canon LightingOpt Tag constexpr TagInfo CanonMakerNote::tagInfoLiOp_[] = { {0x0001, "PeripheralIlluminationCorr", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), - canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + IfdId::canonLiOpId, SectionId::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)}, + IfdId::canonLiOpId, SectionId::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)}, + IfdId::canonLiOpId, SectionId::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)}, + IfdId::canonLiOpId, SectionId::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)}, + IfdId::canonLiOpId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonHighISONoiseReduction)}, {0xffff, "(UnknownLightingOptimizationTag)", "(UnknownLightingOptimizationTag)", - N_("UnknownLightingOptimizationTag Selection Tag"), canonLiOpId, makerTags, signedLong, 1, + N_("UnknownLightingOptimizationTag Selection Tag"), IfdId::canonLiOpId, SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; @@ -976,10 +1028,10 @@ const TagInfo* CanonMakerNote::tagListLiOp() { // Canon LensInfo Tag constexpr TagInfo CanonMakerNote::tagInfoLe_[] = { - {0x0000, "LensSerialNumber", N_("Lens Seria lNumber"), N_("Lens Serial Number"), canonLeId, makerTags, asciiString, - -1, printValue}, - {0xffff, "(UnkownCanonLensInfoTag)", "(UnkownCanonLensInfoTag)", N_("UnkownCanonLensInfoTag"), canonLeId, makerTags, - undefined, 1, printValue} // important to add end of tag + {0x0000, "LensSerialNumber", N_("Lens Seria lNumber"), N_("Lens Serial Number"), IfdId::canonLeId, + SectionId::makerTags, asciiString, -1, printValue}, + {0xffff, "(UnkownCanonLensInfoTag)", "(UnkownCanonLensInfoTag)", N_("UnkownCanonLensInfoTag"), IfdId::canonLeId, + SectionId::makerTags, undefined, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListLe() { @@ -993,10 +1045,10 @@ constexpr TagDetails canonAmbienceSelection[] = {{0, N_("Standard")}, {1, N_("Vi // Canon Ambience Tag constexpr TagInfo CanonMakerNote::tagInfoAm_[] = { - {0x0001, "AmbienceSelection", N_("Ambience Selection"), N_("Ambience Selection"), canonAmId, makerTags, signedLong, - -1, EXV_PRINT_TAG(canonAmbienceSelection)}, - {0xffff, "(AmbienceSelectionTag)", "(AmbienceSelectionTag)", N_("UAmbience Selection Tag"), canonAmId, makerTags, - signedLong, 1, printValue} // important to add end of tag + {0x0001, "AmbienceSelection", N_("Ambience Selection"), N_("Ambience Selection"), IfdId::canonAmId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAmbienceSelection)}, + {0xffff, "(AmbienceSelectionTag)", "(AmbienceSelectionTag)", N_("UAmbience Selection Tag"), IfdId::canonAmId, + SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListAm() { @@ -1012,14 +1064,14 @@ constexpr TagDetails canonMultiExposureControl[] = { // Canon MultiExp Tag 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, + {0x0001, "MultiExposure", N_("Multi Exposure"), N_("Multi Exposure"), IfdId::canonMeId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)}, - {0xffff, "(UnknownMultiExposureTag)", "(UnknownMultiExposureTag)", N_("UnknownMultiExposureTag"), canonMeId, - makerTags, signedLong, 1, printValue} // important to add end of tag + {0x0002, "MultiExposureControl", N_("Multi Exposure Control"), N_("Multi Exposure Control"), IfdId::canonMeId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposureControl)}, + {0x0003, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi Exposure Shots"), IfdId::canonMeId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)}, + {0xffff, "(UnknownMultiExposureTag)", "(UnknownMultiExposureTag)", N_("UnknownMultiExposureTag"), IfdId::canonMeId, + SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListMe() { @@ -1034,28 +1086,28 @@ constexpr TagDetails canonMiniatureFilterOrientation[] = {{0, N_("Horizontal")}, // Canon Filter Info Tag 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)}, + {0x0101, "GrainyBWFilter", N_("Grainy BW Filter"), N_("Grainy BW Filter"), IfdId::canonFilId, SectionId::makerTags, + asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0201, "SoftFocusFilter", N_("Soft Focus Filter"), N_("Soft Focus Filter"), IfdId::canonFilId, + SectionId::makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0301, "ToyCameraFilter", N_("Toy Camera Filter"), N_("Toy Camera Filter"), IfdId::canonFilId, + SectionId::makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0401, "MiniatureFilter", N_("Miniature Filter"), N_("Miniature Filter"), IfdId::canonFilId, SectionId::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)}, - {0xffff, "(UnknownFilterTag)", "(UnknownFilterTag)", N_("UnknownFilterTag"), canonFilId, makerTags, signedLong, 1, - printValue} // important to add end of tag + IfdId::canonFilId, SectionId::makerTags, asciiString, -1, EXV_PRINT_TAG(canonMiniatureFilterOrientation)}, + {0x0403, "MiniatureFilterPosition", N_("Miniature Filter Position"), N_("Miniature Filter Position"), + IfdId::canonFilId, SectionId::makerTags, asciiString, -1, printValue}, + {0x0404, "MiniatureFilterParameter", N_("Miniature Filter Parameter"), N_("Miniature Filter Parameter"), + IfdId::canonFilId, SectionId::makerTags, asciiString, -1, printValue}, + {0x0501, "FisheyeFilter", N_("Fisheye Filter"), N_("Fisheye Filter"), IfdId::canonFilId, SectionId::makerTags, + asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0601, "PaintingFilter", N_("Painting Filter"), N_("Painting Filter"), IfdId::canonFilId, SectionId::makerTags, + asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0701, "WatercolorFilter", N_("Watercolor Filter"), N_("Watercolor Filter"), IfdId::canonFilId, + SectionId::makerTags, asciiString, -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0xffff, "(UnknownFilterTag)", "(UnknownFilterTag)", N_("UnknownFilterTag"), IfdId::canonFilId, + SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListFil() { @@ -1074,11 +1126,12 @@ constexpr TagDetails canonHdrEffect[] = {{0, N_("Natural")}, // Canon HDR Info Tag 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, + {0x0001, "HDR", N_("HDR"), N_("HDR"), IfdId::canonHdrId, SectionId::makerTags, signedLong, -1, + EXV_PRINT_TAG(canonHdr)}, + {0x0002, "HDREffect", N_("HDR Effect"), N_("HDR Effect"), IfdId::canonHdrId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonHdrEffect)}, - {0xffff, "(UnknownHDRTag)", "(UnknownHDRTag)", N_("Unknown Canon HDR Tag"), canonHdrId, makerTags, signedLong, 1, - printValue}}; + {0xffff, "(UnknownHDRTag)", "(UnknownHDRTag)", N_("Unknown Canon HDR Tag"), IfdId::canonHdrId, SectionId::makerTags, + signedLong, 1, printValue}}; const TagInfo* CanonMakerNote::tagListHdr() { return tagInfoHdr_; @@ -1157,46 +1210,46 @@ constexpr TagDetails canonInitialAFPointInServo[] = { // Canon AFConfig Tags 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, + {0x0001, "AFConfigTool", N_("AF Config Tool"), N_("AF Config Tool"), IfdId::canonAfCId, SectionId::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)}, + {0x0002, "AFTrackingSensitivity", N_("AF Tracking Sensitivity"), N_("AFTrackingSensitivity"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, printValue}, + {0x0003, "AFAccelDecelTracking", N_("AF Accel Decel Tracking"), N_("AF Accel Decel Tracking"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, printValue}, + {0x0004, "AFPointSwitching", N_("AF PointS witching"), N_("AF Point Switching"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, printValue}, + {0x0005, "AIServoFirstImage", N_("AI Servo First Image"), N_("AI Servo First Image"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAIServoFirstImage)}, + {0x0006, "AIServoSecondImage", N_("AI Servo Second Image"), N_("AI Servo Second Image"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAIServoSecondImage)}, + {0x0007, "USMLensElectronicMF", N_("USM Lens Electronic MF"), N_("USM Lens Electronic MF"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonUSMLensElectronicMF)}, + {0x0008, "AFAssistBeam", N_("AF Assist Beam"), N_("AF Assist Beam"), IfdId::canonAfCId, SectionId::makerTags, + signedLong, -1, EXV_PRINT_TAG(canonAFAssistBeam)}, + {0x0009, "OneShotAFRelease", N_("One Shot AF Release"), N_("One Shot AF Release"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonOneShotAFRelease)}, + {0x000a, "AutoAFPointSelEOSiTRAF", N_("Auto AF Point Sel EOS iTRAF"), N_("Auto AF Point Sel EOS iTRAF"), + IfdId::canonAfCId, SectionId::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)}, + IfdId::canonAfCId, SectionId::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)}, + IfdId::canonAfCId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonSelectAFAreaSelectionMode)}, + {0x000d, "AFAreaSelectionMethod", N_("AF Area Selection Method"), N_("AF Area Selection Method"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFAreaSelectionMethod)}, + {0x000e, "OrientationLinkedAF", N_("Orientation Linked AF"), N_("Orientation Linked AF"), IfdId::canonAfCId, + SectionId::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)}, + IfdId::canonAfCId, SectionId::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)}, - {0xffff, "(UnknownCanonAFTag)", "(UnknownCanonAFTag)", N_("UnknownCanonAFTag"), canonAfCId, makerTags, signedLong, - 1, printValue} // important to add end of tag + IfdId::canonAfCId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFPointDisplayDuringFocus)}, + {0x0011, "VFDisplayIllumination", N_("VF Display Illumination"), N_("VF Display Illumination"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAVFDisplayIllumination)}, + {0x0012, "AFStatusViewfinder", N_("AF Status Viewfinder"), N_("AF Status Viewfinder"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFStatusViewfinder)}, + {0x0013, "InitialAFPointInServo", N_("Initial AF Point In Servo"), N_("Initial AF Point In Servo"), + IfdId::canonAfCId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(canonInitialAFPointInServo)}, + {0xffff, "(UnknownCanonAFTag)", "(UnknownCanonAFTag)", N_("UnknownCanonAFTag"), IfdId::canonAfCId, + SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListAfC() { @@ -1205,12 +1258,12 @@ const TagInfo* CanonMakerNote::tagListAfC() { // Canon RawBurstInfo Info Tag 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}, - {0xffff, "(UnknownRawBurstTag)", "(UnknownRawBurstTag)", N_("UnknownRawBurstTag"), canonRawBId, makerTags, - signedLong, 1, printValue} // important to add end of tag + {0x0001, "RawBurstImageNum", N_("Raw Burst Image Num"), N_("Raw Burst Image Num"), IfdId::canonRawBId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0002, "RawBurstImageCount", N_("Raw Burst Image Count"), N_("Raw Burst Image Count"), IfdId::canonRawBId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0xffff, "(UnknownRawBurstTag)", "(UnknownRawBurstTag)", N_("UnknownRawBurstTag"), IfdId::canonRawBId, + SectionId::makerTags, signedLong, 1, printValue} // important to add end of tag }; const TagInfo* CanonMakerNote::tagListRawB() { @@ -1926,84 +1979,90 @@ constexpr TagDetails canonCsSRAWQuality[] = {{0, N_("n/a")}, {1, N_("sRAW1 (mRAW // Canon Camera Settings Tag Info 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, + {0x0001, "Macro", N_("Macro"), N_("Macro mode"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsMacro)}, + {0x0002, "Selftimer", N_("Selftimer"), N_("Self timer"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, + printCs0x0002}, + {0x0003, "Quality", N_("Quality"), N_("Quality"), IfdId::canonCsId, SectionId::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, + {0x0004, "FlashMode", N_("Flash Mode"), N_("Flash mode setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsFlashMode)}, + {0x0005, "DriveMode", N_("Drive Mode"), N_("Drive mode setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsDriveMode)}, + {0x0006, "0x0006", "0x0006", N_("Unknown"), IfdId::canonCsId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)}, + {0x0008, "0x0008", "0x0008", N_("Unknown"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, printValue}, + {0x0009, "RecordMode", "RecordMode", N_("Record Mode"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode)}, - {0x000a, "ImageSize", N_("Image Size"), N_("Image size"), canonCsId, makerTags, signedShort, 1, + {0x000a, "ImageSize", N_("Image Size"), N_("Image size"), IfdId::canonCsId, SectionId::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, + {0x000b, "EasyMode", N_("Easy Mode"), N_("Easy shooting mode"), IfdId::canonCsId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(canonCsEasyMode)}, + {0x000c, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), IfdId::canonCsId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(canonCsDigitalZoom)}, + {0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), IfdId::canonCsId, SectionId::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, + {0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsLnh)}, + {0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), IfdId::canonCsId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(canonCsLnh)}, + {0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsISOSpeed)}, + {0x0011, "MeteringMode", N_("Metering Mode"), N_("Metering mode setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsMeteringMode)}, + {0x0012, "FocusType", N_("Focus Type"), N_("Focus type setting"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsFocusType)}, + {0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), IfdId::canonCsId, SectionId::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}, + {0x0014, "ExposureProgram", N_("Exposure Program"), N_("Exposure mode setting"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsExposureProgram)}, + {0x0015, "0x0015", "0x0015", N_("Unknown"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, printValue}, + {0x0016, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::canonCsId, SectionId::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, + N_("'long' and 'short' focal length of lens (in 'focal units') and 'focal units' per mm"), IfdId::canonCsId, + SectionId::makerTags, unsignedShort, 3, printCsLens}, + {0x0018, "ShortFocal", N_("Short Focal"), N_("Short focal"), IfdId::canonCsId, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x0019, "FocalUnits", N_("Focal Units"), N_("Focal units"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, printValue}, - {0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), canonCsId, makerTags, signedShort, 1, + {0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), IfdId::canonCsId, SectionId::makerTags, signedShort, + 1, printSi0x0015}, + {0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), IfdId::canonCsId, SectionId::makerTags, signedShort, + 1, printSi0x0015}, + {0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsFlashActivity)}, + {0x001d, "FlashDetails", N_("Flash Details"), N_("Flash details"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG_BITMASK(canonCsFlashDetails)}, + {0x001e, "0x001e", "0x001e", N_("Unknown"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, printValue}, + {0x001f, "0x001f", "0x001f", N_("Unknown"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, printValue}, + {0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous)}, + {0x0021, "AESetting", N_("AESetting"), N_("AE setting"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsAESetting)}, + {0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization)}, + {0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), IfdId::canonCsId, SectionId::makerTags, + signedShort, 1, printValue}, + {0x0024, "ZoomSourceWidth", N_("Zoom Source Width"), N_("Zoom source width"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0026, "0x0026", "0x0026", N_("Unknown"), IfdId::canonCsId, SectionId::makerTags, signedShort, 1, printValue}, + {0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSpotMeteringMode)}, + {0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), IfdId::canonCsId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(canonCsPhotoEffect)}, + {0x0029, "ManualFlashOutput", N_("Manual Flash Output"), N_("Manual flash output"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)}, + {0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), IfdId::canonCsId, SectionId::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, + {0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), IfdId::canonCsId, SectionId::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 - {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"), IfdId::canonCsId, + SectionId::makerTags, signedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListCs() { @@ -2040,62 +2099,66 @@ constexpr TagDetails selfTimer2[] = {{65535, "n/a"}, {0, "Selftimer 2s"}, {1, "S // Canon Shot Info Tag 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, "ExposureCompensation", "Exposure Compensation", N_("Exposure Compensation"), canonSiId, makerTags, + {0x0001, "AutoISO", N_("AutoISO"), N_("AutoISO"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, 1, + printSi0x0001}, + {0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x0002}, + {0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, + 1, printSi0x0003}, + {0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x0015}, + {0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), IfdId::canonSiId, + SectionId::makerTags, unsignedShort, 1, printSi0x0016}, + {0x0006, "ExposureCompensation", "Exposure Compensation", N_("Exposure Compensation"), IfdId::canonSiId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance setting"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0008, "SlowShutter", N_("Slow Shutter"), N_("Slow shutter"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(slowShutter)}, + {0x0009, "Sequence", N_("Sequence"), N_("Sequence number (if in a continuous burst)"), IfdId::canonSiId, + SectionId::makerTags, unsignedShort, 1, printSi0x0009}, + {0x000a, "OpticalZoomCode", "Optical Zoom Code", N_("Optical Zoom Code"), IfdId::canonSiId, SectionId::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, "OpticalZoomCode", "Optical Zoom Code", N_("Optical Zoom Code"), 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, + {0x000b, "0x000b", "0x000b", N_("Unknown"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x000c, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), IfdId::canonSiId, + SectionId::makerTags, signedShort, 1, printSi0x000c}, + {0x000d, "FlashGuideNumber", N_("Flash Guide Number"), N_("Flash guide number"), IfdId::canonSiId, + SectionId::makerTags, unsignedShort, 1, printSi0x000d}, + {0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x000e}, + {0x000f, "FlashBias", N_("Flash Bias"), N_("Flash bias"), IfdId::canonSiId, SectionId::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, "AEBBracketValue", "AEB Bracket Value", N_("AEB Bracket Value"), canonSiId, makerTags, unsignedShort, 1, - printValue}, - {0x0012, "ControlMode", "Control Mode", N_("Control Mode"), 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, + {0x0010, "AutoExposureBracketing", N_("Auto Exposure Bracketing"), N_("Auto exposure bracketing"), IfdId::canonSiId, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(autoExposureBracketing)}, + {0x0011, "AEBBracketValue", "AEB Bracket Value", N_("AEB Bracket Value"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x0012, "ControlMode", "Control Mode", N_("Control Mode"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x0013, "SubjectDistance", N_("Subject Distance"), N_("Subject distance"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x0013}, + {0x0014, "0x0014", "0x0014", N_("Unknown"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x0015}, + {0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), IfdId::canonSiId, + SectionId::makerTags, unsignedShort, 1, printSi0x0016}, + {0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x0017}, + {0x0018, "BulbDuration", N_("Bulb Duration"), N_("Bulb duration"), IfdId::canonSiId, SectionId::makerTags, + unsignedShort, 1, printSi0x0018}, + {0x0019, "0x0019", "0x0019", N_("Unknown"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x001a, "CameraType", N_("Camera Type"), N_("Camera type"), IfdId::canonSiId, SectionId::makerTags, unsignedShort, + 1, EXV_PRINT_TAG(cameraType)}, + {0x001b, "AutoRotate", N_("Auto Rotate"), N_("Auto rotate"), IfdId::canonSiId, SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(autoRotate)}, - {0x001c, "NDFilter", N_("ND Filter"), N_("ND filter"), canonSiId, makerTags, signedShort, 1, + {0x001c, "NDFilter", N_("ND Filter"), N_("ND filter"), IfdId::canonSiId, SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(ndRotate)}, - {0x001d, "SelfTimer2", N_("Self Timer 2"), N_("Self timer2"), canonSiId, makerTags, signedShort, 1, - EXV_PRINT_TAG(selfTimer2)}, - {0x0021, "FlashOutput", N_("Flash Output"), N_("Flash output"), canonSiId, makerTags, signedShort, 1, printValue}, + {0x001d, "SelfTimer2", N_("Self Timer 2"), N_("Self timer2"), IfdId::canonSiId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(selfTimer2)}, + {0x0021, "FlashOutput", N_("Flash Output"), N_("Flash output"), IfdId::canonSiId, SectionId::makerTags, signedShort, + 1, printValue}, // End of list marker - {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"), IfdId::canonCsId, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListSi() { @@ -2111,13 +2174,13 @@ constexpr TagDetails canonPaDirection[] = {{0, N_("Left to right")}, // Canon Panorama Info 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 - {0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), canonPaId, makerTags, + {0x0002, "PanoramaFrame", N_("Panorama Frame"), N_("Panorama frame number"), IfdId::canonPaId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0005, "PanoramaDirection", N_("Panorama Direction"), N_("Panorama direction"), IfdId::canonPaId, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonPaDirection)}, + // End of list marker + {0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), IfdId::canonPaId, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListPa() { @@ -2126,38 +2189,39 @@ const TagInfo* CanonMakerNote::tagListPa() { // Canon Custom Function Tag Info constexpr TagInfo CanonMakerNote::tagInfoCf_[] = { - {0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), canonCfId, makerTags, + {0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0003, "MirrorLockup", N_("Mirror Lockup"), N_("Mirror lockup"), IfdId::canonCfId, SectionId::makerTags, unsignedShort, 1, printValue}, - {0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), canonCfId, makerTags, unsignedShort, + {0x0004, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Tv/Av and exposure level"), + IfdId::canonCfId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0005, "AFAssist", N_("AF Assist"), N_("AF assist light"), IfdId::canonCfId, SectionId::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, + {0x0006, "FlashSyncSpeedAv", N_("Flash Sync Speed Av"), N_("Shutter speed in Av mode"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0007, "AEBSequence", N_("AEB Sequence"), N_("AEB sequence/auto cancellation"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0008, "ShutterCurtainSync", N_("Shutter Curtain Sync"), N_("Shutter curtain sync"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0009, "LensAFStopButton", N_("Lens AF Stop Button"), N_("Lens AF stop button Fn. Switch"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x000a, "FillFlashAutoReduction", N_("Fill Flash Auto Reduction"), N_("Auto reduction of fill flash"), + IfdId::canonCfId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x000b, "MenuButtonReturn", N_("Menu Button Return"), N_("Menu button return position"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x000c, "SetButtonFunction", N_("Set Button Function"), N_("SET button func. when shooting"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x000d, "SensorCleaning", N_("Sensor Cleaning"), N_("Sensor cleaning"), IfdId::canonCfId, SectionId::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}, + {0x000e, "SuperimposedDisplay", N_("Superimposed Display"), N_("Superimposed display"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x000f, "ShutterReleaseNoCFCard", N_("Shutter Release No CF Card"), N_("Shutter Release W/O CF Card"), + IfdId::canonCfId, SectionId::makerTags, unsignedShort, 1, printValue}, // End of list marker - {0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), canonCfId, - makerTags, unsignedShort, 1, printValue}, + {0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), IfdId::canonCfId, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListCf() { @@ -2177,19 +2241,21 @@ constexpr TagDetailsBitmask canonPiAFPointsUsed20D[] = { // Canon Picture Info Tag 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, + {0x0002, "ImageWidth", N_("Image Width"), N_("Image width"), IfdId::canonPiId, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x0003, "ImageHeight", N_("Image Height"), N_("Image height"), IfdId::canonPiId, SectionId::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)}, + {0x0004, "ImageWidthAsShot", N_("Image Width As Shot"), N_("Image width (as shot)"), IfdId::canonPiId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0005, "ImageHeightAsShot", N_("Image Height As Shot"), N_("Image height (as shot)"), IfdId::canonPiId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0016, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), IfdId::canonPiId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed)}, + {0x001a, "AFPointsUsed20D", N_("AF Points Used 20D"), N_("AF points used (20D)"), IfdId::canonPiId, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed20D)}, // End of list marker - {0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), canonPiId, makerTags, - unsignedShort, 1, printValue}, + {0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), IfdId::canonPiId, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListPi() { @@ -2264,45 +2330,45 @@ constexpr TagDetails canonRFLensType[] = {{0, N_("n/a")}, // Canon File Info Tag 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, + {0x0001, "FileNumber", N_("File Number"), N_("File Number"), IfdId::canonFiId, SectionId::makerTags, unsignedLong, + 1, printFiFileNumber}, + {0x0003, "BracketMode", N_("Bracket Mode"), N_("Bracket Mode"), IfdId::canonFiId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(canonBracketMode)}, + {0x0004, "BracketValue", N_("Bracket Value"), N_("Bracket Value"), IfdId::canonFiId, SectionId::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)}, + {0x0005, "BracketShotNumber", N_("Bracket Shot Number"), N_("Bracket Shot Number"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), IfdId::canonFiId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsQuality)}, + {0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), IfdId::canonFiId, SectionId::makerTags, signedShort, + 1, EXV_PRINT_TAG(canonRawJpgSize)}, + {0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), IfdId::canonFiId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonNoiseReduction)}, + {0x0009, "WBBracketMode", N_("WB Bracket Mode"), N_("WB Bracket Mode"), IfdId::canonFiId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonWBBracketMode)}, + {0x000c, "WBBracketValueAB", N_("WB Bracket Value AB"), N_("WB Bracket Value AB"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x000d, "WBBracketValueGM", N_("WB Bracket Value GM"), N_("WB Bracket Value GM"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), IfdId::canonFiId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonFilterEffect)}, + {0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), IfdId::canonFiId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonToningEffect)}, + {0x0010, "MacroMagnification", N_("Macro Magnification"), N_("Macro magnification"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0013, "LiveViewShooting", N_("Live View Shooting"), N_("Live view shooting"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)}, + {0x0014, "FocusDistanceUpper", N_("Focus Distance Upper"), N_("Focus Distance Upper"), IfdId::canonFiId, + SectionId::makerTags, unsignedShort, 1, printFiFocusDistance}, + {0x0015, "FocusDistanceLower", N_("Focus Distance Lower"), N_("Focus Distance Lower"), IfdId::canonFiId, + SectionId::makerTags, unsignedShort, 1, printFiFocusDistance}, + {0x0019, "FlashExposureLock", N_("Flash Exposure Lock"), N_("Flash exposure lock"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)}, + {0x003D, "RFLensType", N_("RF Lens Type"), N_("RF Lens Type"), IfdId::canonFiId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(canonRFLensType)}, // End of list marker - {0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), canonFiId, makerTags, - signedShort, 1, printValue}, + {0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), IfdId::canonFiId, + SectionId::makerTags, signedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListFi() { @@ -2318,30 +2384,34 @@ constexpr TagDetails canonSharpnessFrequency[] = {{0, N_("n/a")}, {1, N_("L // Canon Processing Info Tag constexpr TagInfo CanonMakerNote::tagInfoPr_[] = { - {0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), canonPrId, makerTags, signedShort, 1, + {0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), IfdId::canonPrId, SectionId::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, + {0x0002, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::canonPrId, SectionId::makerTags, signedShort, 1, printValue}, - {0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), canonPrId, makerTags, signedShort, 1, + {0x0003, "SharpnessFrequency", N_("SharpnessFrequency"), N_("Sharpness frequency"), IfdId::canonPrId, + SectionId::makerTags, signedShort, 1, EXV_PRINT_TAG(canonSharpnessFrequency)}, + {0x0004, "SensorRedLevel", N_("SensorRedLevel"), N_("Sensor red level"), IfdId::canonPrId, SectionId::makerTags, + signedShort, 1, printValue}, + {0x0005, "SensorBlueLevel", N_("SensorBlueLevel"), N_("Sensor blue level"), IfdId::canonPrId, SectionId::makerTags, + signedShort, 1, printValue}, + {0x0006, "WhiteBalanceRed", N_("WhiteBalanceRed"), N_("White balance red"), IfdId::canonPrId, SectionId::makerTags, + signedShort, 1, printValue}, + {0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), IfdId::canonPrId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), IfdId::canonPrId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0009, "ColorTemperature", N_("ColorTemperature"), N_("Color Temperature"), IfdId::canonPrId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x000a, "PictureStyle", N_("PictureStyle"), N_("Picture style"), IfdId::canonPrId, SectionId::makerTags, + signedShort, 1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x000b, "DigitalGain", N_("DigitalGain"), N_("Digital gain"), IfdId::canonPrId, SectionId::makerTags, signedShort, + 1, printValue}, + {0x000c, "WBShiftAB", N_("WBShiftAB"), N_("WBShift AB"), IfdId::canonPrId, SectionId::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, + {0x000d, "WBShiftGM", N_("WBShiftGM"), N_("WB Shift GM"), IfdId::canonPrId, SectionId::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}, + {0xffff, "(UnknownCanonPrTag)", "(UnknownCanonPrTag)", N_("Unknown Canon Processing Info tag"), IfdId::canonPrId, + SectionId::makerTags, signedShort, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListPr() { @@ -2389,14 +2459,14 @@ constexpr TagDetails canonTimeZoneCity[] = { // Canon Time Info Tag 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}, + {0x0001, "TimeZone", N_("Time zone offset"), N_("Time zone offset in minutes"), IfdId::canonTiId, + SectionId::makerTags, signedLong, 1, printValue}, + {0x0002, "TimeZoneCity", N_("Time zone city"), N_("Time zone city"), IfdId::canonTiId, SectionId::makerTags, + signedLong, 1, EXV_PRINT_TAG(canonTimeZoneCity)}, + {0x0003, "DaylightSavings", N_("Daylight Savings"), N_("Daylight Saving Time"), IfdId::canonTiId, + SectionId::makerTags, signedLong, 1, printValue}, + {0xffff, "(UnknownCanonTiTag)", "(UnknownCanonTiTag)", N_("Unknown Canon Time Info tag"), IfdId::canonTiId, + SectionId::makerTags, signedLong, 1, printValue}, }; const TagInfo* CanonMakerNote::tagListTi() { diff --git a/src/casiomn_int.cpp b/src/casiomn_int.cpp index bf297d8d26..f182c3f575 100644 --- a/src/casiomn_int.cpp +++ b/src/casiomn_int.cpp @@ -80,43 +80,45 @@ constexpr TagDetails casioCCDSensitivity[] = { // Casio MakerNote Tag Info 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, + {0x0001, "RecodingMode", N_("RecodingMode"), N_("Recording Mode"), IfdId::casioId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casioRecordingMode)}, + {0x0002, "Quality", N_("Quality"), N_("Quality"), IfdId::casioId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioQuality)}, - {0x0003, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casioId, makerTags, unsignedShort, -1, + {0x0003, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), IfdId::casioId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFocusMode)}, - {0x0004, "FlashMode", N_("Flash Mode"), N_("Flash Mode"), casioId, makerTags, unsignedShort, -1, + {0x0004, "FlashMode", N_("Flash Mode"), N_("Flash Mode"), IfdId::casioId, SectionId::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, + {0x0005, "FlashIntensity", N_("Flash Intensity"), N_("Flash Intensity"), IfdId::casioId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity)}, + {0x0006, "ObjectDistance", N_("Object Distance"), N_("Distance to object"), IfdId::casioId, SectionId::makerTags, + unsignedLong, -1, print0x0006}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance settings"), IfdId::casioId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casioWhiteBalance)}, + {0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), IfdId::casioId, SectionId::makerTags, unsignedLong, + -1, EXV_PRINT_TAG(casioDigitalZoom)}, + {0x000b, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::casioId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSharpness)}, - {0x000c, "Contrast", N_("Contrast"), N_("Contrast"), casioId, makerTags, unsignedShort, -1, + {0x000c, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::casioId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioContrast)}, - {0x000d, "Saturation", N_("Saturation"), N_("Saturation"), casioId, makerTags, unsignedShort, -1, + {0x000d, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::casioId, SectionId::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}, + {0x0014, "ISO", N_("ISO"), N_("ISO"), IfdId::casioId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0015, "FirmwareDate", N_("Firmware date"), N_("Firmware date"), IfdId::casioId, SectionId::makerTags, + asciiString, -1, print0x0015}, + {0x0016, "Enhancement", N_("Enhancement"), N_("Enhancement"), IfdId::casioId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(casioEnhancement)}, + {0x0017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), IfdId::casioId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(casioColorFilter)}, + {0x0018, "AFPoint", N_("AF Point"), N_("AF Point"), IfdId::casioId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x0019, "FlashIntensity2", N_("Flash Intensity"), N_("Flash Intensity"), IfdId::casioId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity2)}, + {0x0020, "CCDSensitivity", N_("CCDSensitivity"), N_("CCDSensitivity"), IfdId::casioId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casioCCDSensitivity)}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::casioId, SectionId::makerTags, undefined, -1, + printValue}, + {0xffff, "(UnknownCasioMakerNoteTag)", "(UnknownCasioMakerNoteTag)", N_("Unknown CasioMakerNote tag"), + IfdId::casioId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* CasioMakerNote::tagList() { @@ -273,98 +275,105 @@ constexpr TagDetails casio2VideoQuality[] = { // Casio2 MakerNote Tag Info 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, + {0x0002, "PreviewImageSize", N_("Preview Image Size"), N_("Preview Image Size"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0003, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), IfdId::casio2Id, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0004, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), IfdId::casio2Id, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0008, "QualityMode", N_("Quality Mode"), N_("Quality Mode"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2QualityMode)}, + {0x0009, "ImageSize", N_("Image Size"), N_("Image Size"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ImageSize)}, - {0x000d, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casio2Id, makerTags, unsignedShort, -1, + {0x000d, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode)}, - {0x0014, "ISOSpeed", N_("ISO Speed"), N_("ISO Speed"), casio2Id, makerTags, unsignedShort, -1, + {0x0014, "ISOSpeed", N_("ISO Speed"), N_("ISO Speed"), IfdId::casio2Id, SectionId::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, + {0x0019, "WhiteBalance", N_("White Balance"), N_("White Balance Setting"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance)}, + {0x001d, "FocalLength", N_("Focal Length"), N_("Focal Length"), IfdId::casio2Id, SectionId::makerTags, + unsignedRational, -1, printValue}, + {0x001f, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Saturation)}, - {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, unsignedShort, -1, + {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Contrast)}, - {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, unsignedShort, -1, + {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::casio2Id, SectionId::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, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::casio2Id, SectionId::makerTags, undefined, -1, + printValue}, + {0x2000, "PreviewImage", N_("Preview Image"), N_("Preview Image"), IfdId::casio2Id, SectionId::makerTags, undefined, -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, + {0x2001, "FirmwareDate", N_("Firmware Date"), N_("Firmware Date"), IfdId::casio2Id, SectionId::makerTags, + asciiString, -1, print0x2001}, + {0x2011, "WhiteBalanceBias", N_("White Balance Bias"), N_("White Balance Bias"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x2012, "WhiteBalance2", N_("White Balance"), N_("White Balance Setting"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance2)}, + {0x2021, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x2022, "ObjectDistance", N_("Object Distance"), N_("Object Distance"), IfdId::casio2Id, SectionId::makerTags, + unsignedLong, -1, print0x2022}, + {0x2034, "FlashDistance", N_("Flash Distance"), N_("Flash Distance"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x2076, "SpecialEffectMode", N_("Special Effect Mode"), N_("Special Effect Mode"), IfdId::casio2Id, + SectionId::makerTags, unsignedByte, -1, printValue}, + {0x2089, "FaceInfo", N_("Face Info"), N_("Face Info"), IfdId::casio2Id, SectionId::makerTags, undefined, -1, printValue}, - {0x2076, "SpecialEffectMode", N_("Special Effect Mode"), N_("Special Effect Mode"), casio2Id, makerTags, + {0x211c, "FacesDetected", N_("Faces detected"), N_("Faces detected"), IfdId::casio2Id, SectionId::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, + {0x3000, "RecordMode", N_("Record Mode"), N_("Record Mode"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x3001, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2ReleaseMode)}, + {0x3002, "Quality", N_("Quality"), N_("Quality"), IfdId::casio2Id, SectionId::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, + {0x3003, "FocusMode2", N_("Focus Mode2"), N_("Focus Mode2"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(casio2FocusMode2)}, + {0x3006, "HometownCity", N_("Home town city"), N_("Home town city"), IfdId::casio2Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x3007, "BestShotMode", N_("Best Shot Mode"), N_("Best Shot Mode"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x3008, "AutoISO", N_("Auto ISO"), N_("Auto ISO"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AutoISO)}, - {0x3009, "AFMode", N_("AF Mode"), N_("AF Mode"), casio2Id, makerTags, unsignedShort, -1, + {0x3009, "AFMode", N_("AF Mode"), N_("AF Mode"), IfdId::casio2Id, SectionId::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, + {0x3011, "Sharpness2", N_("Sharpness"), N_("Sharpness"), IfdId::casio2Id, SectionId::makerTags, undefined, -1, + printValue}, + {0x3012, "Contrast2", N_("Contrast"), N_("Contrast"), IfdId::casio2Id, SectionId::makerTags, undefined, -1, + printValue}, + {0x3013, "Saturation2", N_("Saturation"), N_("Saturation"), IfdId::casio2Id, SectionId::makerTags, undefined, -1, + printValue}, + {0x3014, "ISO", N_("ISO"), N_("ISO"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x3015, "ColorMode", N_("Color Mode"), N_("Color Mode"), IfdId::casio2Id, SectionId::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, + {0x3016, "Enhancement", N_("Enhancement"), N_("Enhancement"), IfdId::casio2Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(casio2Enhancement)}, + {0x3017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2ColorFilter)}, + {0x301b, "ArtMode", N_("Art Mode"), N_("Art Mode"), IfdId::casio2Id, SectionId::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, + {0x301c, "SequenceNumber", N_("Sequence Number"), N_("Sequence Number"), IfdId::casio2Id, SectionId::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, + {0x3020, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x302a, "LightingMode", N_("Lighting Mode"), N_("Lighting Mode"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2LightingMode)}, + {0x302b, "PortraitRefiner", N_("Portrait Refiner"), N_("Portrait Refiner settings"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2PortraitRefiner)}, + {0x3030, "SpecialEffectLevel", N_("Special Effect Level"), N_("Special Effect Level"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x3031, "SpecialEffectSetting", N_("Special Effect Setting"), N_("Special Effect Setting"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2SpecialEffectSetting)}, + {0x3103, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), IfdId::casio2Id, SectionId::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}, + {0x310b, "ArtModeParameters", N_("Art Mode Parameters"), N_("Art Mode Parameters"), IfdId::casio2Id, + SectionId::makerTags, undefined, -1, printValue}, + {0x4001, "CaptureFrameRate", N_("Capture Frame Rate"), N_("Capture Frame Rate"), IfdId::casio2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x4003, "VideoQuality", N_("Video Quality"), N_("Video Quality"), IfdId::casio2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(casio2VideoQuality)}, + {0xffff, "(UnknownCasio2MakerNoteTag)", "(UnknownCasio2MakerNoteTag)", N_("Unknown Casio2MakerNote tag"), + IfdId::casio2Id, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* Casio2MakerNote::tagList() { diff --git a/src/cr2header_int.cpp b/src/cr2header_int.cpp index a44ae3827c..02cd088402 100644 --- a/src/cr2header_int.cpp +++ b/src/cr2header_int.cpp @@ -52,7 +52,7 @@ DataBuf Cr2Header::write() const { bool Cr2Header::isImageTag(uint16_t tag, IfdId group, const PrimaryGroups* /*pPrimaryGroups*/) const { // CR2 image tags are all IFD2 and IFD3 tags - if (group == ifd2Id || group == ifd3Id) + if (group == IfdId::ifd2Id || group == IfdId::ifd3Id) return true; // ...and any (IFD0) tag that is in the TIFF image tags list return isTiffImageTag(tag, group); diff --git a/src/cr2image.cpp b/src/cr2image.cpp index 79814811e9..d3bc13cd08 100644 --- a/src/cr2image.cpp +++ b/src/cr2image.cpp @@ -112,7 +112,7 @@ WriteMethod Cr2Parser::encode(BasicIo& io, const byte* pData, size_t size, ByteO // Delete IFDs which do not occur in TIFF images static constexpr auto filteredIfds = std::array{ - Internal::panaRawId, + IfdId::panaRawId, }; for (auto&& filteredIfd : filteredIfds) { #ifdef EXIV2_DEBUG_MESSAGES diff --git a/src/crwimage_int.cpp b/src/crwimage_int.cpp index ebc7e7e833..9b724030c6 100644 --- a/src/crwimage_int.cpp +++ b/src/crwimage_int.cpp @@ -78,31 +78,31 @@ namespace Exiv2::Internal { const CrwMapping CrwMap::crwMapping_[] = { // CrwTag CrwDir Size ExifTag IfdId decodeFct encodeFct // ------ ------ ---- ------- ----- --------- --------- - CrwMapping(0x0805, 0x300a, 0, 0, canonId, decode0x0805, encode0x0805), - CrwMapping(0x080a, 0x2807, 0, 0, canonId, decode0x080a, encode0x080a), - CrwMapping(0x080b, 0x3004, 0, 0x0007, canonId, decodeBasic, encodeBasic), - CrwMapping(0x0810, 0x2807, 0, 0x0009, canonId, decodeBasic, encodeBasic), - CrwMapping(0x0815, 0x2804, 0, 0x0006, canonId, decodeBasic, encodeBasic), - CrwMapping(0x1029, 0x300b, 0, 0x0002, canonId, decodeBasic, encodeBasic), - CrwMapping(0x102a, 0x300b, 0, 0x0004, canonId, decodeArray, encodeArray), - CrwMapping(0x102d, 0x300b, 0, 0x0001, canonId, decodeArray, encodeArray), - CrwMapping(0x1033, 0x300b, 0, 0x000f, canonId, decodeArray, encodeArray), - CrwMapping(0x1038, 0x300b, 0, 0x0012, canonId, decodeArray, encodeArray), - CrwMapping(0x10a9, 0x300b, 0, 0x00a9, canonId, decodeBasic, encodeBasic), + CrwMapping(0x0805, 0x300a, 0, 0, IfdId::canonId, decode0x0805, encode0x0805), + CrwMapping(0x080a, 0x2807, 0, 0, IfdId::canonId, decode0x080a, encode0x080a), + CrwMapping(0x080b, 0x3004, 0, 0x0007, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x0810, 0x2807, 0, 0x0009, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x0815, 0x2804, 0, 0x0006, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x1029, 0x300b, 0, 0x0002, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x102a, 0x300b, 0, 0x0004, IfdId::canonId, decodeArray, encodeArray), + CrwMapping(0x102d, 0x300b, 0, 0x0001, IfdId::canonId, decodeArray, encodeArray), + CrwMapping(0x1033, 0x300b, 0, 0x000f, IfdId::canonId, decodeArray, encodeArray), + CrwMapping(0x1038, 0x300b, 0, 0x0012, IfdId::canonId, decodeArray, encodeArray), + CrwMapping(0x10a9, 0x300b, 0, 0x00a9, IfdId::canonId, decodeBasic, encodeBasic), // Mapped to Exif.Photo.ColorSpace instead (see below) - // CrwMapping(0x10b4, 0x300b, 0, 0x00b4, canonId, decodeBasic, encodeBasic), - CrwMapping(0x10b4, 0x300b, 0, 0xa001, exifId, decodeBasic, encodeBasic), - CrwMapping(0x10b5, 0x300b, 0, 0x00b5, canonId, decodeBasic, encodeBasic), - CrwMapping(0x10c0, 0x300b, 0, 0x00c0, canonId, decodeBasic, encodeBasic), - CrwMapping(0x10c1, 0x300b, 0, 0x00c1, canonId, decodeBasic, encodeBasic), - CrwMapping(0x1807, 0x3002, 0, 0x9206, exifId, decodeBasic, encodeBasic), - CrwMapping(0x180b, 0x3004, 0, 0x000c, canonId, decodeBasic, encodeBasic), - CrwMapping(0x180e, 0x300a, 0, 0x9003, exifId, decode0x180e, encode0x180e), - CrwMapping(0x1810, 0x300a, 0, 0xa002, exifId, decode0x1810, encode0x1810), - CrwMapping(0x1817, 0x300a, 4, 0x0008, canonId, decodeBasic, encodeBasic), - // CrwMapping(0x1818, 0x3002, 0, 0x9204, exifId, decodeBasic, encodeBasic), - CrwMapping(0x183b, 0x300b, 0, 0x0015, canonId, decodeBasic, encodeBasic), - CrwMapping(0x2008, 0x0000, 0, 0, ifd1Id, decode0x2008, encode0x2008), + // CrwMapping(0x10b4, 0x300b, 0, 0x00b4, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x10b4, 0x300b, 0, 0xa001, IfdId::exifId, decodeBasic, encodeBasic), + CrwMapping(0x10b5, 0x300b, 0, 0x00b5, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x10c0, 0x300b, 0, 0x00c0, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x10c1, 0x300b, 0, 0x00c1, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x1807, 0x3002, 0, 0x9206, IfdId::exifId, decodeBasic, encodeBasic), + CrwMapping(0x180b, 0x3004, 0, 0x000c, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x180e, 0x300a, 0, 0x9003, IfdId::exifId, decode0x180e, encode0x180e), + CrwMapping(0x1810, 0x300a, 0, 0xa002, IfdId::exifId, decode0x1810, encode0x1810), + CrwMapping(0x1817, 0x300a, 4, 0x0008, IfdId::canonId, decodeBasic, encodeBasic), + // CrwMapping(0x1818, 0x3002, 0, 0x9204, IfdId::exifId, decodeBasic, encodeBasic), + CrwMapping(0x183b, 0x300b, 0, 0x0015, IfdId::canonId, decodeBasic, encodeBasic), + CrwMapping(0x2008, 0x0000, 0, 0, IfdId::ifd1Id, decode0x2008, encode0x2008), }; // CrwMap::crwMapping_[] /* @@ -698,19 +698,19 @@ void CrwMap::decodeArray(const CiffComponent& ciffComponent, const CrwMapping* p int64_t aperture = 0; int64_t shutterSpeed = 0; - IfdId ifdId = ifdIdNotSet; + IfdId ifdId = IfdId::ifdIdNotSet; switch (pCrwMapping->tag_) { case 0x0001: - ifdId = canonCsId; + ifdId = IfdId::canonCsId; break; case 0x0004: - ifdId = canonSiId; + ifdId = IfdId::canonSiId; break; case 0x000f: - ifdId = canonCfId; + ifdId = IfdId::canonCfId; break; case 0x0012: - ifdId = canonPiId; + ifdId = IfdId::canonPiId; break; } @@ -725,18 +725,18 @@ void CrwMap::decodeArray(const CiffComponent& ciffComponent, const CrwMapping* p uint16_t n = 1; ExifKey key(c, groupName); UShortValue value; - if (ifdId == canonCsId && c == 23 && component_size >= 52) + if (ifdId == IfdId::canonCsId && c == 23 && component_size >= 52) n = 3; value.read(ciffComponent.pData() + c * 2, n * 2, byteOrder); image.exifData().add(key, &value); - if (ifdId == canonSiId && c == 21) + if (ifdId == IfdId::canonSiId && c == 21) aperture = value.toInt64(); - if (ifdId == canonSiId && c == 22) + if (ifdId == IfdId::canonSiId && c == 22) shutterSpeed = value.toInt64(); c += n; } - if (ifdId == canonSiId) { + if (ifdId == IfdId::canonSiId) { // Exif.Photo.FNumber float f = fnumber(canonEv(aperture)); auto [r, s] = floatToRationalCast(f); @@ -912,19 +912,19 @@ void CrwMap::encode0x080a(const Image& image, const CrwMapping* pCrwMapping, Cif } void CrwMap::encodeArray(const Image& image, const CrwMapping* pCrwMapping, CiffHeader* pHead) { - IfdId ifdId = ifdIdNotSet; + IfdId ifdId = IfdId::ifdIdNotSet; switch (pCrwMapping->tag_) { case 0x0001: - ifdId = canonCsId; + ifdId = IfdId::canonCsId; break; case 0x0004: - ifdId = canonSiId; + ifdId = IfdId::canonSiId; break; case 0x000f: - ifdId = canonCfId; + ifdId = IfdId::canonCfId; break; case 0x0012: - ifdId = canonPiId; + ifdId = IfdId::canonPiId; break; } DataBuf buf = packIfdId(image.exifData(), ifdId, pHead->byteOrder()); diff --git a/src/crwimage_int.hpp b/src/crwimage_int.hpp index 2c2318e9dc..3a5751d004 100644 --- a/src/crwimage_int.hpp +++ b/src/crwimage_int.hpp @@ -496,8 +496,8 @@ struct CrwMapping { //! @name Creators //@{ //! Default constructor - CrwMapping(uint16_t crwTagId, uint16_t crwDir, uint32_t size, uint16_t tag, Internal::IfdId ifdId, - CrwDecodeFct toExif, CrwEncodeFct fromExif) : + CrwMapping(uint16_t crwTagId, uint16_t crwDir, uint32_t size, uint16_t tag, IfdId ifdId, CrwDecodeFct toExif, + CrwEncodeFct fromExif) : crwTagId_(crwTagId), crwDir_(crwDir), size_(size), diff --git a/src/exif.cpp b/src/exif.cpp index 8ca9f51765..867a2ded8e 100644 --- a/src/exif.cpp +++ b/src/exif.cpp @@ -128,7 +128,7 @@ class JpegThumbnail : public Thumbnail { int64_t sumToLong(const Exiv2::Exifdatum& md); //! Helper function to delete all tags of a specific IFD from the metadata. -void eraseIfd(Exiv2::ExifData& ed, Exiv2::Internal::IfdId ifdId); +void eraseIfd(Exiv2::ExifData& ed, Exiv2::IfdId ifdId); } // namespace @@ -296,12 +296,12 @@ uint16_t Exifdatum::tag() const { return key_ ? key_->tag() : 0xffff; } -int Exifdatum::ifdId() const { - return key_ ? key_->ifdId() : ifdIdNotSet; +IfdId Exifdatum::ifdId() const { + return key_ ? key_->ifdId() : IfdId::ifdIdNotSet; } const char* Exifdatum::ifdName() const { - return key_ ? Internal::ifdName(static_cast(key_->ifdId())) : ""; + return key_ ? Internal::ifdName(static_cast(key_->ifdId())) : ""; } int Exifdatum::idx() const { @@ -430,7 +430,7 @@ void ExifThumb::setJpegThumbnail(const byte* buf, size_t size) { } void ExifThumb::erase() { - eraseIfd(exifData_, ifd1Id); + eraseIfd(exifData_, IfdId::ifd1Id); } Exifdatum& ExifData::operator[](const std::string& key) { @@ -544,8 +544,9 @@ WriteMethod ExifParser::encode(Blob& blob, const byte* pData, size_t size, ByteO // Delete IFDs which do not occur in JPEGs static constexpr auto filteredIfds = std::array{ - subImage1Id, subImage2Id, subImage3Id, subImage4Id, subImage5Id, subImage6Id, subImage7Id, - subImage8Id, subImage9Id, subThumb1Id, panaRawId, ifd2Id, ifd3Id, + IfdId::subImage1Id, IfdId::subImage2Id, IfdId::subImage3Id, IfdId::subImage4Id, IfdId::subImage5Id, + IfdId::subImage6Id, IfdId::subImage7Id, IfdId::subImage8Id, IfdId::subImage9Id, IfdId::subThumb1Id, + IfdId::panaRawId, IfdId::ifd2Id, IfdId::ifd3Id, }; for (auto&& filteredIfd : filteredIfds) { #ifdef EXIV2_DEBUG_MESSAGES diff --git a/src/fujimn_int.cpp b/src/fujimn_int.cpp index cd11bb176f..fbfae47d95 100644 --- a/src/fujimn_int.cpp +++ b/src/fujimn_int.cpp @@ -140,106 +140,115 @@ constexpr TagDetails fujiDRangePriorityFixed[] = {{1, N_("Weak")}, {2, N_("Stron // Fujifilm MakerNote Tag Info constexpr TagInfo FujiMakerNote::tagInfo_[] = { - {0x0000, "Version", N_("Version"), N_("Fujifilm Makernote version"), fujiId, makerTags, undefined, -1, printValue}, + {0x0000, "Version", N_("Version"), N_("Fujifilm Makernote version"), IfdId::fujiId, SectionId::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}, - {0x1000, "Quality", N_("Quality"), N_("Image quality setting"), fujiId, makerTags, asciiString, -1, printValue}, - {0x1001, N_("Sharpness"), N_("Sharpness"), N_("Sharpness setting"), 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)}, - {0x1003, "Color", N_("Color"), N_("Chroma saturation setting"), fujiId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(fujiColor)}, - {0x1004, "Tone", N_("Tone"), N_("Tone (contrast) setting"), fujiId, makerTags, unsignedShort, -1, + IfdId::fujiId, SectionId::makerTags, asciiString, -1, printValue}, + {0x1000, "Quality", N_("Quality"), N_("Image quality setting"), IfdId::fujiId, SectionId::makerTags, asciiString, + -1, printValue}, + {0x1001, N_("Sharpness"), N_("Sharpness"), N_("Sharpness setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiSharpness)}, + {0x1002, "WhiteBalance", N_("White Balance"), N_("White balance setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiWhiteBalance)}, + {0x1003, "Color", N_("Color"), N_("Chroma saturation setting"), IfdId::fujiId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(fujiColor)}, + {0x1004, "Tone", N_("Tone"), N_("Tone (contrast) setting"), IfdId::fujiId, SectionId::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)}, - {0x1011, "FlashStrength", N_("Flash Strength"), N_("Flash firing strength compensation setting"), fujiId, makerTags, - signedRational, -1, printValue}, - {0x1020, "Macro", N_("Macro"), N_("Macro mode setting"), 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)}, - {0x1022, "0x1022", "0x1022", N_("Unknown"), fujiId, makerTags, unsignedShort, -1, printValue}, - {0x1030, "SlowSync", N_("Slow Sync"), N_("Slow synchro mode setting"), fujiId, makerTags, unsignedShort, -1, + {0x1010, "FlashMode", N_("Flash Mode"), N_("Flash firing mode setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiFlashMode)}, + {0x1011, "FlashStrength", N_("Flash Strength"), N_("Flash firing strength compensation setting"), IfdId::fujiId, + SectionId::makerTags, signedRational, -1, printValue}, + {0x1020, "Macro", N_("Macro"), N_("Macro mode setting"), IfdId::fujiId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, - {0x1031, "PictureMode", N_("Picture Mode"), N_("Picture mode setting"), fujiId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(fujiPictureMode)}, - {0x1032, "0x1032", "0x1032", N_("Unknown"), fujiId, makerTags, unsignedShort, -1, printValue}, - {0x1040, "ShadowTone", N_("Shadow Tone"), N_("Shadow tone"), fujiId, makerTags, signedLong, -1, - EXV_PRINT_TAG(fujiSHTone)}, - {0x1041, "HighlightTone", N_("Highlight Tone"), N_("Highlight tone"), fujiId, makerTags, signedLong, -1, + {0x1021, "FocusMode", N_("Focus Mode"), N_("Focusing mode setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiFocusMode)}, + {0x1022, "0x1022", "0x1022", N_("Unknown"), IfdId::fujiId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1030, "SlowSync", N_("Slow Sync"), N_("Slow synchro mode setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1031, "PictureMode", N_("Picture Mode"), N_("Picture mode setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiPictureMode)}, + {0x1032, "0x1032", "0x1032", N_("Unknown"), IfdId::fujiId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1040, "ShadowTone", N_("Shadow Tone"), N_("Shadow tone"), IfdId::fujiId, SectionId::makerTags, signedLong, -1, EXV_PRINT_TAG(fujiSHTone)}, - {0x104d, "CropMode", N_("Crop Mode"), N_("Crop mode"), fujiId, makerTags, unsignedShort, -1, + {0x1041, "HighlightTone", N_("Highlight Tone"), N_("Highlight tone"), IfdId::fujiId, SectionId::makerTags, + signedLong, -1, EXV_PRINT_TAG(fujiSHTone)}, + {0x104d, "CropMode", N_("Crop Mode"), N_("Crop mode"), IfdId::fujiId, SectionId::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)}, - {0x1101, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), fujiId, makerTags, unsignedShort, -1, - printValue}, - {0x1200, "0x1200", "0x1200", N_("Unknown"), fujiId, makerTags, unsignedShort, -1, printValue}, - {0x1210, "FinePixColor", N_("FinePix Color"), N_("Fuji FinePix color setting"), 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)}, - {0x1301, "FocusWarning", N_("Focus Warning"), N_("Auto Focus warning status"), fujiId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(fujiOffOn)}, - {0x1302, "ExposureWarning", N_("Exposure Warning"), N_("Auto exposure warning status"), fujiId, makerTags, + {0x1100, "Continuous", N_("Continuous"), N_("Continuous shooting or auto bracketing setting"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiContinuous)}, + {0x1101, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x1200, "0x1200", "0x1200", N_("Unknown"), IfdId::fujiId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1210, "FinePixColor", N_("FinePix Color"), N_("Fuji FinePix color setting"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiFinePixColor)}, + {0x1300, "BlurWarning", N_("Blur Warning"), N_("Blur warning status"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1301, "FocusWarning", N_("Focus Warning"), N_("Auto Focus warning status"), IfdId::fujiId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, - {0x1400, "DynamicRange", N_("Dynamic Range"), N_("Dynamic range"), fujiId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(fujiDynamicRange)}, - {0x1401, "FilmMode", N_("Film Mode"), N_("Film mode"), fujiId, makerTags, unsignedShort, -1, + {0x1302, "ExposureWarning", N_("Exposure Warning"), N_("Auto exposure warning status"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)}, + {0x1400, "DynamicRange", N_("Dynamic Range"), N_("Dynamic range"), IfdId::fujiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRange)}, + {0x1401, "FilmMode", N_("Film Mode"), N_("Film mode"), IfdId::fujiId, SectionId::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)}, - {0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"), N_("Development dynamic range"), fujiId, - makerTags, unsignedShort, -1, printValue}, - {0x1404, "MinFocalLength", N_("Minimum Focal Length"), N_("Minimum focal length"), fujiId, makerTags, - unsignedRational, -1, printValue}, - {0x1405, "MaxFocalLength", N_("Maximum Focal Length"), N_("Maximum focal length"), fujiId, makerTags, - unsignedRational, -1, printValue}, + {0x1402, "DynamicRangeSetting", N_("Dynamic Range Setting"), N_("Dynamic range settings"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRangeSetting)}, + {0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"), N_("Development dynamic range"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1404, "MinFocalLength", N_("Minimum Focal Length"), N_("Minimum focal length"), IfdId::fujiId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x1405, "MaxFocalLength", N_("Maximum Focal Length"), N_("Maximum focal length"), IfdId::fujiId, + SectionId::makerTags, unsignedRational, -1, printValue}, {0x1406, "MaxApertureAtMinFocal", N_("Maximum Aperture at Minimum Focal"), N_("Maximum aperture at minimum focal"), - fujiId, makerTags, unsignedRational, -1, printValue}, + IfdId::fujiId, SectionId::makerTags, unsignedRational, -1, printValue}, {0x1407, "MaxApertureAtMaxFocal", N_("Maximum Aperture at Maximum Focal"), N_("Maximum aperture at maximum focal"), - fujiId, makerTags, unsignedRational, -1, printValue}, - {0x1431, "Rating", N_("Rating"), N_("Rating"), fujiId, makerTags, unsignedLong, -1, printValue}, - {0x1443, "DRangePriority", N_("D Range Priority"), N_("Dynamic range priority"), 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)}, - {0x1445, "DRangePriorityAuto", N_("D Range Priority Auto"), N_("Dynamic range priority auto"), fujiId, makerTags, - unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityAuto)}, - {0x8000, "FileSource", N_("File Source"), N_("File source"), fujiId, makerTags, asciiString, -1, printValue}, - {0x8002, "OrderNumber", N_("Order Number"), N_("Order number"), fujiId, makerTags, unsignedLong, -1, printValue}, - {0x8003, "FrameNumber", N_("Frame Number"), N_("Frame number"), fujiId, makerTags, unsignedShort, -1, printValue}, + IfdId::fujiId, SectionId::makerTags, unsignedRational, -1, printValue}, + {0x1431, "Rating", N_("Rating"), N_("Rating"), IfdId::fujiId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1443, "DRangePriority", N_("D Range Priority"), N_("Dynamic range priority"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriority)}, + {0x1444, "DRangePriorityFixed", N_("D Range Priority Fixed"), N_("Dynamic range priority fixed"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityFixed)}, + {0x1445, "DRangePriorityAuto", N_("D Range Priority Auto"), N_("Dynamic range priority auto"), IfdId::fujiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDRangePriorityAuto)}, + {0x8000, "FileSource", N_("File Source"), N_("File source"), IfdId::fujiId, SectionId::makerTags, asciiString, -1, + printValue}, + {0x8002, "OrderNumber", N_("Order Number"), N_("Order number"), IfdId::fujiId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x8003, "FrameNumber", N_("Frame Number"), N_("Frame number"), IfdId::fujiId, SectionId::makerTags, unsignedShort, + -1, printValue}, // #1402 - {0xf000, "FujiIFD", N_("FujiIFD"), N_("Fujifilm IFD"), fujiId, makerTags, undefined, -1, printValue}, - {0xf001, "RawImageFullWidth", N_("Raw Image Full Width"), N_("Raw Image Full Width"), fujiId, makerTags, undefined, + {0xf000, "FujiIFD", N_("FujiIFD"), N_("Fujifilm IFD"), IfdId::fujiId, SectionId::makerTags, undefined, -1, + printValue}, + {0xf001, "RawImageFullWidth", N_("Raw Image Full Width"), N_("Raw Image Full Width"), IfdId::fujiId, + SectionId::makerTags, undefined, -1, printValue}, + {0xf002, "RawImageFullHeight", N_("Raw Image Full Height"), N_("Raw Image Full Height"), IfdId::fujiId, + SectionId::makerTags, undefined, -1, printValue}, + {0xf003, "BitsPerSample", N_("Bits Per Sample"), N_("Bits Per Sample"), IfdId::fujiId, SectionId::makerTags, + undefined, -1, printValue}, + {0xf007, "StripOffsets", N_("Strip Offsets"), N_("Strip Offsets"), IfdId::fujiId, SectionId::makerTags, undefined, -1, printValue}, - {0xf002, "RawImageFullHeight", N_("Raw Image Full Height"), N_("Raw Image Full Height"), fujiId, makerTags, + {0xf008, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip Byte Counts"), IfdId::fujiId, SectionId::makerTags, undefined, -1, printValue}, - {0xf003, "BitsPerSample", N_("Bits Per Sample"), N_("Bits Per Sample"), fujiId, makerTags, undefined, -1, + {0xf00a, "BlackLevel", N_("Black Level"), N_("Black Level"), IfdId::fujiId, SectionId::makerTags, undefined, -1, printValue}, - {0xf007, "StripOffsets", N_("Strip Offsets"), N_("Strip Offsets"), fujiId, makerTags, undefined, -1, printValue}, - {0xf008, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip Byte Counts"), fujiId, makerTags, undefined, -1, - printValue}, - {0xf00a, "BlackLevel", N_("Black Level"), N_("Black Level"), fujiId, makerTags, undefined, -1, printValue}, - {0xf00b, "GeometricDistortionParams", N_("Geometric Distortion Params"), N_("Geometric Distortion Params"), fujiId, - makerTags, undefined, -1, printValue}, - {0xf00c, "WB_GRBLevelsStandard", N_("WB GRB Levels Standard"), N_("WB GRB Levels Standard"), fujiId, makerTags, + {0xf00b, "GeometricDistortionParams", N_("Geometric Distortion Params"), N_("Geometric Distortion Params"), + IfdId::fujiId, SectionId::makerTags, undefined, -1, printValue}, + {0xf00c, "WB_GRBLevelsStandard", N_("WB GRB Levels Standard"), N_("WB GRB Levels Standard"), IfdId::fujiId, + SectionId::makerTags, undefined, -1, printValue}, + {0xf00d, "WB_GRBLevelsAuto", N_("WB GRB Levels Auto"), N_("WB GRB Levels Auto"), IfdId::fujiId, + SectionId::makerTags, undefined, -1, printValue}, + {0xf00e, "WB_GRBLevels", N_("WB GRB Levels"), N_("WB GRB Levels"), IfdId::fujiId, SectionId::makerTags, undefined, + -1, printValue}, + {0xf00f, "ChromaticAberrationParams", N_("Chromatic Aberration Params"), N_("Chromatic Aberration Params"), + IfdId::fujiId, SectionId::makerTags, undefined, -1, printValue}, + {0xf010, "VignettingParams", N_("Vignetting Params"), N_("Vignetting Params"), IfdId::fujiId, SectionId::makerTags, undefined, -1, printValue}, - {0xf00d, "WB_GRBLevelsAuto", N_("WB GRB Levels Auto"), N_("WB GRB Levels Auto"), fujiId, makerTags, undefined, -1, - printValue}, - {0xf00e, "WB_GRBLevels", N_("WB GRB Levels"), N_("WB GRB Levels"), fujiId, makerTags, undefined, -1, printValue}, - {0xf00f, "ChromaticAberrationParams", N_("Chromatic Aberration Params"), N_("Chromatic Aberration Params"), fujiId, - makerTags, undefined, -1, printValue}, - {0xf010, "VignettingParams", N_("Vignetting Params"), N_("Vignetting Params"), fujiId, makerTags, undefined, -1, - printValue}, // End of list marker - {0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)", N_("Unknown FujiMakerNote tag"), fujiId, - makerTags, asciiString, -1, printValue}, + {0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)", N_("Unknown FujiMakerNote tag"), IfdId::fujiId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* FujiMakerNote::tagList() { diff --git a/src/makernote_int.cpp b/src/makernote_int.cpp index 033743d00e..c0263959b3 100644 --- a/src/makernote_int.cpp +++ b/src/makernote_int.cpp @@ -37,8 +37,7 @@ namespace fs = std::filesystem; namespace { // Todo: Can be generalized further - get any tag as a string/long/... //! Get the Value for a tag within a particular group -const Exiv2::Value* getExifValue(Exiv2::Internal::TiffComponent* pRoot, const uint16_t& tag, - const Exiv2::Internal::IfdId& group); +const Exiv2::Value* getExifValue(Exiv2::Internal::TiffComponent* pRoot, const uint16_t& tag, const Exiv2::IfdId& group); //! Get the model name from tag Exif.Image.Model std::string getExifModel(Exiv2::Internal::TiffComponent* pRoot); @@ -90,33 +89,33 @@ std::string readExiv2Config(const std::string& section, const std::string& value } const TiffMnRegistry TiffMnCreator::registry_[] = { - {"Canon", canonId, newIfdMn, newIfdMn2}, - {"FOVEON", sigmaId, newSigmaMn, newSigmaMn2}, - {"FUJI", fujiId, newFujiMn, newFujiMn2}, - {"KONICA MINOLTA", minoltaId, newIfdMn, newIfdMn2}, - {"Minolta", minoltaId, newIfdMn, newIfdMn2}, - {"NIKON", ifdIdNotSet, newNikonMn, nullptr}, // mnGroup_ is not used - {"OLYMPUS", ifdIdNotSet, newOlympusMn, nullptr}, // mnGroup_ is not used - {"OM Digital", olympus2Id, newOMSystemMn, newOMSystemMn2}, - {"Panasonic", panasonicId, newPanasonicMn, newPanasonicMn2}, - {"PENTAX", ifdIdNotSet, newPentaxMn, nullptr}, // mnGroup_ is not used - {"RICOH", ifdIdNotSet, newPentaxMn, nullptr}, // mnGroup_ is not used - {"SAMSUNG", samsung2Id, newSamsungMn, newSamsungMn2}, - {"SIGMA", sigmaId, newSigmaMn, newSigmaMn2}, - {"SONY", ifdIdNotSet, newSonyMn, nullptr}, // mnGroup_ is not used - {"CASIO", ifdIdNotSet, newCasioMn, nullptr}, // mnGroup_ is not used + {"Canon", IfdId::canonId, newIfdMn, newIfdMn2}, + {"FOVEON", IfdId::sigmaId, newSigmaMn, newSigmaMn2}, + {"FUJI", IfdId::fujiId, newFujiMn, newFujiMn2}, + {"KONICA MINOLTA", IfdId::minoltaId, newIfdMn, newIfdMn2}, + {"Minolta", IfdId::minoltaId, newIfdMn, newIfdMn2}, + {"NIKON", IfdId::ifdIdNotSet, newNikonMn, nullptr}, // mnGroup_ is not used + {"OLYMPUS", IfdId::ifdIdNotSet, newOlympusMn, nullptr}, // mnGroup_ is not used + {"OM Digital", IfdId::olympus2Id, newOMSystemMn, newOMSystemMn2}, + {"Panasonic", IfdId::panasonicId, newPanasonicMn, newPanasonicMn2}, + {"PENTAX", IfdId::ifdIdNotSet, newPentaxMn, nullptr}, // mnGroup_ is not used + {"RICOH", IfdId::ifdIdNotSet, newPentaxMn, nullptr}, // mnGroup_ is not used + {"SAMSUNG", IfdId::samsung2Id, newSamsungMn, newSamsungMn2}, + {"SIGMA", IfdId::sigmaId, newSigmaMn, newSigmaMn2}, + {"SONY", IfdId::ifdIdNotSet, newSonyMn, nullptr}, // mnGroup_ is not used + {"CASIO", IfdId::ifdIdNotSet, newCasioMn, nullptr}, // mnGroup_ is not used // Entries below are only used for lookup by group - {"-", nikon1Id, nullptr, newIfdMn2}, - {"-", nikon2Id, nullptr, newNikon2Mn2}, - {"-", nikon3Id, nullptr, newNikon3Mn2}, - {"-", sony1Id, nullptr, newSony1Mn2}, - {"-", sony2Id, nullptr, newSony2Mn2}, - {"-", olympusId, nullptr, newOlympusMn2}, - {"-", olympus2Id, nullptr, newOlympus2Mn2}, - {"-", pentaxId, nullptr, newPentaxMn2}, - {"-", pentaxDngId, nullptr, newPentaxDngMn2}, - {"-", casioId, nullptr, newIfdMn2}, - {"-", casio2Id, nullptr, newCasio2Mn2}, + {"-", IfdId::nikon1Id, nullptr, newIfdMn2}, + {"-", IfdId::nikon2Id, nullptr, newNikon2Mn2}, + {"-", IfdId::nikon3Id, nullptr, newNikon3Mn2}, + {"-", IfdId::sony1Id, nullptr, newSony1Mn2}, + {"-", IfdId::sony2Id, nullptr, newSony2Mn2}, + {"-", IfdId::olympusId, nullptr, newOlympusMn2}, + {"-", IfdId::olympus2Id, nullptr, newOlympus2Mn2}, + {"-", IfdId::pentaxId, nullptr, newPentaxMn2}, + {"-", IfdId::pentaxDngId, nullptr, newPentaxDngMn2}, + {"-", IfdId::casioId, nullptr, newIfdMn2}, + {"-", IfdId::casio2Id, nullptr, newCasio2Mn2}, }; bool TiffMnRegistry::operator==(const std::string& key) const { @@ -649,12 +648,12 @@ TiffComponent* newOlympusMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const // Require at least the header and an IFD with 1 entry if (size < OlympusMnHeader::sizeOfSignature() + 18) return nullptr; - return newOlympusMn2(tag, group, olympusId); + return newOlympusMn2(tag, group, IfdId::olympusId); } // Require at least the header and an IFD with 1 entry if (size < Olympus2MnHeader::sizeOfSignature() + 18) return nullptr; - return newOlympus2Mn2(tag, group, olympus2Id); + return newOlympus2Mn2(tag, group, IfdId::olympus2Id); } TiffComponent* newOlympusMn2(uint16_t tag, IfdId group, IfdId mnGroup) { @@ -696,7 +695,7 @@ TiffComponent* newNikonMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const by // Require at least an IFD with 1 entry if (size < 18) return nullptr; - return newIfdMn2(tag, group, nikon1Id); + return newIfdMn2(tag, group, IfdId::nikon1Id); } // If the "Nikon" string is not followed by a TIFF header, we assume // Nikon2 format @@ -705,13 +704,13 @@ TiffComponent* newNikonMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const by // Require at least the header and an IFD with 1 entry if (size < Nikon2MnHeader::sizeOfSignature() + 18) return nullptr; - return newNikon2Mn2(tag, group, nikon2Id); + return newNikon2Mn2(tag, group, IfdId::nikon2Id); } // Else we have a Nikon3 makernote // Require at least the header and an IFD with 1 entry if (size < Nikon3MnHeader::sizeOfSignature() + 18) return nullptr; - return newNikon3Mn2(tag, group, nikon3Id); + return newNikon3Mn2(tag, group, IfdId::nikon3Id); } TiffComponent* newNikon2Mn2(uint16_t tag, IfdId group, IfdId mnGroup) { @@ -740,13 +739,13 @@ TiffComponent* newPentaxMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const b // Require at least the header and an IFD with 1 entry if (size < PentaxDngMnHeader::sizeOfSignature() + 18) return nullptr; - return newPentaxDngMn2(tag, group, (tag == 0xc634 ? pentaxDngId : pentaxId)); + return newPentaxDngMn2(tag, group, (tag == 0xc634 ? IfdId::pentaxDngId : IfdId::pentaxId)); } if (size > 4 && std::string(reinterpret_cast(pData), 4) == std::string("AOC\0", 4)) { // Require at least the header and an IFD with 1 entry if (size < PentaxMnHeader::sizeOfSignature() + 18) return nullptr; - return newPentaxMn2(tag, group, pentaxId); + return newPentaxMn2(tag, group, IfdId::pentaxId); } return nullptr; } @@ -766,7 +765,7 @@ TiffComponent* newSamsungMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte // Require at least the header and an IFD with 1 entry if (size < PentaxMnHeader::sizeOfSignature() + 18) return nullptr; - return newPentaxMn2(tag, group, pentaxId); + return newPentaxMn2(tag, group, IfdId::pentaxId); } // Genuine Samsung camera: // Require at least an IFD with 1 entry @@ -798,12 +797,12 @@ TiffComponent* newSonyMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const byt // Require at least an IFD with 1 entry if (size < 18) return nullptr; - return newSony2Mn2(tag, group, sony2Id); + return newSony2Mn2(tag, group, IfdId::sony2Id); } // Require at least the header and an IFD with 1 entry, but without a next pointer if (size < SonyMnHeader::sizeOfSignature() + 14) return nullptr; - return newSony1Mn2(tag, group, sony1Id); + return newSony1Mn2(tag, group, IfdId::sony1Id); } TiffComponent* newSony1Mn2(uint16_t tag, IfdId group, IfdId mnGroup) { @@ -817,12 +816,12 @@ TiffComponent* newSony2Mn2(uint16_t tag, IfdId group, IfdId mnGroup) { TiffComponent* newCasioMn(uint16_t tag, IfdId group, IfdId /* mnGroup*/, const byte* pData, size_t size, ByteOrder /* byteOrder */) { if (size > 6 && std::string(reinterpret_cast(pData), 6) == std::string("QVC\0\0\0", 6)) { - return newCasio2Mn2(tag, group, casio2Id); + return newCasio2Mn2(tag, group, IfdId::casio2Id); }; // Require at least an IFD with 1 entry, but not necessarily a next pointer if (size < 14) return nullptr; - return newIfdMn2(tag, group, casioId); + return newIfdMn2(tag, group, IfdId::casioId); } TiffComponent* newCasio2Mn2(uint16_t tag, IfdId group, IfdId mnGroup) { @@ -907,7 +906,7 @@ DataBuf nikonCrypt(uint16_t tag, const byte* pData, size_t size, TiffComponent* return buf; // Find Exif.Nikon3.ShutterCount - TiffFinder finder(0x00a7, nikon3Id); + TiffFinder finder(0x00a7, IfdId::nikon3Id); pRoot->accept(finder); auto te = dynamic_cast(finder.result()); if (!te || !te->pValue() || te->pValue()->count() == 0) @@ -915,7 +914,7 @@ DataBuf nikonCrypt(uint16_t tag, const byte* pData, size_t size, TiffComponent* auto count = te->pValue()->toUint32(); // Find Exif.Nikon3.SerialNumber - finder.init(0x001d, nikon3Id); + finder.init(0x001d, IfdId::nikon3Id); pRoot->accept(finder); te = dynamic_cast(finder.result()); if (!te || !te->pValue() || te->pValue()->count() == 0) @@ -969,9 +968,9 @@ int sonyMisc2bSelector(uint16_t /*tag*/, const byte* /*pData*/, size_t /*size*/, // > First byte must be 9 or 12 or 13 or 15 or 16 and 4th byte must be 2 (deciphered) // Get the value from the image format that is being used - auto value = getExifValue(pRoot, 0x9404, Exiv2::Internal::sony1Id); + auto value = getExifValue(pRoot, 0x9404, Exiv2::IfdId::sony1Id); if (!value) { - value = getExifValue(pRoot, 0x9404, Exiv2::Internal::sony2Id); + value = getExifValue(pRoot, 0x9404, Exiv2::IfdId::sony2Id); if (!value) return -1; } @@ -996,9 +995,9 @@ int sonyMisc3cSelector(uint16_t /*tag*/, const byte* /*pData*/, size_t /*size*/, // > first byte decoded: 62, 48, 215, 28, 106 respectively // Get the value from the image format that is being used - auto value = getExifValue(pRoot, 0x9400, Exiv2::Internal::sony1Id); + auto value = getExifValue(pRoot, 0x9400, Exiv2::IfdId::sony1Id); if (!value) { - value = getExifValue(pRoot, 0x9400, Exiv2::Internal::sony2Id); + value = getExifValue(pRoot, 0x9400, Exiv2::IfdId::sony2Id); if (!value) return -1; } @@ -1024,7 +1023,7 @@ int sonyMisc3cSelector(uint16_t /*tag*/, const byte* /*pData*/, size_t /*size*/, // local definitions namespace { const Exiv2::Value* getExifValue(Exiv2::Internal::TiffComponent* pRoot, const uint16_t& tag, - const Exiv2::Internal::IfdId& group) { + const Exiv2::IfdId& group) { Exiv2::Internal::TiffFinder finder(tag, group); if (!pRoot) return nullptr; @@ -1035,7 +1034,7 @@ const Exiv2::Value* getExifValue(Exiv2::Internal::TiffComponent* pRoot, const ui std::string getExifModel(Exiv2::Internal::TiffComponent* pRoot) { // Lookup the Exif.Image.Model tag - const auto value = getExifValue(pRoot, 0x0110, Exiv2::Internal::ifd0Id); + const auto value = getExifValue(pRoot, 0x0110, Exiv2::IfdId::ifd0Id); return (!value || value->count() == 0) ? std::string("") : static_cast(value->toString()); } diff --git a/src/minoltamn_int.cpp b/src/minoltamn_int.cpp index 2155cb1e4b..3e2412b044 100644 --- a/src/minoltamn_int.cpp +++ b/src/minoltamn_int.cpp @@ -35,78 +35,80 @@ constexpr TagDetails minoltaImageStabilization[] = {{1, N_("Off")}, {5, N_("On") // Minolta Tag Info constexpr TagInfo MinoltaMakerNote::tagInfo_[] = { - {0x0000, "Version", N_("Makernote Version"), N_("String 'MLT0' (not null terminated)"), minoltaId, makerTags, - undefined, -1, printValue}, + {0x0000, "Version", N_("Makernote Version"), N_("String 'MLT0' (not null terminated)"), IfdId::minoltaId, + SectionId::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}, + N_("Standard Camera settings (Old Camera models like D5, D7, S304, and S404)"), IfdId::minoltaId, + SectionId::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}, - {0x0004, "CameraSettings7D", N_("Camera Settings (7D)"), N_("Camera Settings (for Dynax 7D model)"), minoltaId, - makerTags, undefined, -1, printValue}, - {0x0018, "ImageStabilizationData", N_("Image Stabilization Data"), N_("Image stabilization data"), minoltaId, - makerTags, undefined, -1, printValue}, + N_("Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)"), IfdId::minoltaId, SectionId::makerTags, + undefined, -1, printValue}, + {0x0004, "CameraSettings7D", N_("Camera Settings (7D)"), N_("Camera Settings (for Dynax 7D model)"), + IfdId::minoltaId, SectionId::makerTags, undefined, -1, printValue}, + {0x0018, "ImageStabilizationData", N_("Image Stabilization Data"), N_("Image stabilization data"), IfdId::minoltaId, + SectionId::makerTags, undefined, -1, printValue}, // TODO: Implement WB Info A100 tags decoding. - {0x0020, "WBInfoA100", N_("WB Info A100"), N_("White balance information for the Sony DSLR-A100"), minoltaId, - makerTags, undefined, -1, printValue}, + {0x0020, "WBInfoA100", N_("WB Info A100"), N_("White balance information for the Sony DSLR-A100"), IfdId::minoltaId, + SectionId::makerTags, undefined, -1, printValue}, - {0x0040, "CompressedImageSize", N_("Compressed Image Size"), N_("Compressed image size"), minoltaId, makerTags, - unsignedLong, -1, printValue}, - {0x0081, "Thumbnail", N_("Thumbnail"), N_("Jpeg thumbnail 640x480 pixels"), minoltaId, makerTags, undefined, -1, - printValue}, - {0x0088, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the thumbnail"), minoltaId, makerTags, - unsignedLong, -1, printValue}, - {0x0089, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the thumbnail"), minoltaId, makerTags, unsignedLong, - -1, printValue}, - {0x0100, "SceneMode", N_("Scene Mode"), N_("Scene Mode"), minoltaId, makerTags, unsignedLong, -1, + {0x0040, "CompressedImageSize", N_("Compressed Image Size"), N_("Compressed image size"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0081, "Thumbnail", N_("Thumbnail"), N_("Jpeg thumbnail 640x480 pixels"), IfdId::minoltaId, SectionId::makerTags, + undefined, -1, printValue}, + {0x0088, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the thumbnail"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0089, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the thumbnail"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0100, "SceneMode", N_("Scene Mode"), N_("Scene Mode"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1, printMinoltaSonySceneMode}, // TODO: for A100, use Sony table from printMinoltaSonyColorMode(). - {0x0101, "ColorMode", N_("Color Mode"), N_("Color mode"), minoltaId, makerTags, unsignedLong, -1, + {0x0101, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaColorMode)}, - {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), minoltaId, makerTags, unsignedLong, -1, - printMinoltaSonyImageQuality}, + {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, + -1, printMinoltaSonyImageQuality}, // TODO: Tag 0x0103 : quality or image size (see ExifTool doc). - {0x0103, "0x0103", N_("0x0103"), N_("Unknown"), minoltaId, makerTags, unsignedLong, -1, printValue}, - - {0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), minoltaId, - makerTags, signedRational, -1, print0x9204}, - {0x0105, "Teleconverter", N_("Teleconverter Model"), N_("Teleconverter Model"), minoltaId, makerTags, unsignedLong, - -1, printMinoltaSonyTeleconverterModel}, - {0x0107, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), 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}, - {0x010a, "ZoneMatching", N_("Zone Matching"), N_("Zone matching"), minoltaId, makerTags, unsignedLong, -1, - printMinoltaSonyZoneMatching}, - {0x010b, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), minoltaId, makerTags, unsignedLong, - -1, printValue}, - {0x010c, "LensID", N_("Lens ID"), N_("Lens identifier"), minoltaId, makerTags, unsignedLong, -1, + {0x0103, "0x0103", N_("0x0103"), N_("Unknown"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1, + printValue}, + + {0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), + IfdId::minoltaId, SectionId::makerTags, signedRational, -1, print0x9204}, + {0x0105, "Teleconverter", N_("Teleconverter Model"), N_("Teleconverter Model"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel}, + {0x0107, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaImageStabilization)}, + {0x0109, "RawAndJpgRecording", N_("RAW+JPG Recording"), N_("RAW and JPG files recording"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, + {0x010a, "ZoneMatching", N_("Zone Matching"), N_("Zone matching"), IfdId::minoltaId, SectionId::makerTags, + unsignedLong, -1, printMinoltaSonyZoneMatching}, + {0x010b, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), IfdId::minoltaId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x010c, "LensID", N_("Lens ID"), N_("Lens identifier"), IfdId::minoltaId, SectionId::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}, - {0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune Value"), minoltaId, - makerTags, unsignedLong, -1, printValue}, + N_("Color Compensation Filter: negative is green, positive is magenta"), IfdId::minoltaId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune Value"), + IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1, printValue}, {0x0113, "ImageStabilizationA100", N_("Image Stabilization A100"), N_("Image Stabilization for the Sony DSLR-A100"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, + IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, // TODO: implement CameraSettingsA100 tags decoding. - {0x0114, "CameraSettings5D", N_("Camera Settings (5D)"), N_("Camera Settings (for Dynax 5D model)"), minoltaId, - makerTags, undefined, -1, printValue}, + {0x0114, "CameraSettings5D", N_("Camera Settings (5D)"), N_("Camera Settings (for Dynax 5D model)"), + IfdId::minoltaId, SectionId::makerTags, undefined, -1, printValue}, - {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), minoltaId, makerTags, unsignedLong, -1, - printMinoltaSonyWhiteBalanceStd}, - {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), minoltaId, makerTags, undefined, -1, printValue}, + {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::minoltaId, SectionId::makerTags, + unsignedLong, -1, printMinoltaSonyWhiteBalanceStd}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::minoltaId, SectionId::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}, + IfdId::minoltaId, SectionId::makerTags, undefined, -1, printValue}, // End of list marker {0xffff, "(UnknownMinoltaMakerNoteTag)", "(UnknownMinoltaMakerNoteTag)", N_("Unknown Minolta MakerNote tag"), - minoltaId, makerTags, asciiString, -1, printValue}, + IfdId::minoltaId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* MinoltaMakerNote::tagList() { @@ -296,107 +298,109 @@ std::ostream& MinoltaMakerNote::printMinoltaBrightnessStd(std::ostream& os, cons // Minolta Standard Camera Settings Tag Info (Old and New) constexpr TagInfo MinoltaMakerNote::tagInfoCsStd_[] = { - {0x0001, "ExposureMode", N_("Exposure Mode"), N_("Exposure 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)}, - {0x0003, "WhiteBalance", N_("White Balance"), N_("White balance"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaWhiteBalanceStd)}, - {0x0004, "ImageSize", N_("Image Size"), N_("Image size"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaImageSizeStd)}, - {0x0005, "Quality", N_("Image Quality"), N_("Image quality"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaImageQualityStd)}, - {0x0006, "DriveMode", N_("Drive Mode"), N_("Drive 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)}, - {0x0008, "ISO", N_("ISO"), N_("ISO Value"), minoltaCsNewId, makerTags, unsignedLong, 1, + {0x0001, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaExposureModeStd)}, + {0x0002, "FlashMode", N_("Flash Mode"), N_("Flash mode"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaFlashModeStd)}, + {0x0003, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaWhiteBalanceStd)}, + {0x0004, "ImageSize", N_("Image Size"), N_("Image size"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaImageSizeStd)}, + {0x0005, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaImageQualityStd)}, + {0x0006, "DriveMode", N_("Drive Mode"), N_("Drive mode"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaDriveModeStd)}, + {0x0007, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaMeteringModeStd)}, + {0x0008, "ISO", N_("ISO"), N_("ISO Value"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printMinoltaExposureSpeedStd}, - {0x0009, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), minoltaCsNewId, makerTags, unsignedLong, 1, - printMinoltaExposureTimeStd}, - {0x000A, "FNumber", N_("FNumber"), N_("The F-Number"), minoltaCsNewId, makerTags, unsignedLong, 1, + {0x0009, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, printMinoltaExposureTimeStd}, + {0x000A, "FNumber", N_("FNumber"), N_("The F-Number"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printMinoltaFNumberStd}, - {0x000B, "MacroMode", N_("Macro Mode"), N_("Macro mode"), minoltaCsNewId, makerTags, unsignedLong, 1, - printMinoltaSonyBoolValue}, - {0x000C, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaDigitalZoomStd)}, - {0x000D, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), minoltaCsNewId, - makerTags, unsignedLong, 1, printMinoltaExposureCompensationStd}, - {0x000E, "BracketStep", N_("Bracket Step"), N_("Bracket step"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaBracketStepStd)}, - {0x0010, "IntervalLength", N_("Interval Length"), N_("Interval length"), minoltaCsNewId, makerTags, unsignedLong, 1, - printValue}, - {0x0011, "IntervalNumber", N_("Interval Number"), N_("Interval number"), minoltaCsNewId, makerTags, unsignedLong, 1, - printValue}, - {0x0012, "FocalLength", N_("Focal Length"), N_("Focal length"), minoltaCsNewId, makerTags, unsignedLong, 1, - printMinoltaFocalLengthStd}, - {0x0013, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), minoltaCsNewId, makerTags, unsignedLong, 1, - printValue}, - {0x0014, "FlashFired", N_("Flash Fired"), N_("Flash fired"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaFlashFired)}, - {0x0015, "MinoltaDate", N_("Minolta Date"), N_("Minolta date"), minoltaCsNewId, makerTags, unsignedLong, 1, - printMinoltaDateStd}, - {0x0016, "MinoltaTime", N_("Minolta Time"), N_("Minolta time"), minoltaCsNewId, makerTags, unsignedLong, 1, - printMinoltaTimeStd}, - {0x0017, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), minoltaCsNewId, makerTags, unsignedLong, 1, - printValue}, - {0x001A, "FileNumberMemory", N_("File Number Memory"), N_("File number memory"), minoltaCsNewId, makerTags, - unsignedLong, 1, printMinoltaSonyBoolValue}, - {0x001B, "LastFileNumber", N_("Last Image Number"), N_("Last image number"), minoltaCsNewId, makerTags, + {0x000B, "MacroMode", N_("Macro Mode"), N_("Macro mode"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, printMinoltaSonyBoolValue}, + {0x000C, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaDigitalZoomStd)}, + {0x000D, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printMinoltaExposureCompensationStd}, + {0x000E, "BracketStep", N_("Bracket Step"), N_("Bracket step"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaBracketStepStd)}, + {0x0010, "IntervalLength", N_("Interval Length"), N_("Interval length"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x0011, "IntervalNumber", N_("Interval Number"), N_("Interval number"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x0012, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, printMinoltaFocalLengthStd}, + {0x0013, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printValue}, - {0x001C, "ColorBalanceRed", N_("Color Balance Red"), N_("Color balance red"), minoltaCsNewId, makerTags, - unsignedLong, 1, printMinoltaWhiteBalanceStd}, - {0x001D, "ColorBalanceGreen", N_("Color Balance Green"), N_("Color balance green"), minoltaCsNewId, makerTags, - unsignedLong, 1, printMinoltaWhiteBalanceStd}, - {0x001E, "ColorBalanceBlue", N_("Color Balance Blue"), N_("Color balance blue"), minoltaCsNewId, makerTags, - unsignedLong, 1, printMinoltaWhiteBalanceStd}, - {0x001F, "Saturation", N_("Saturation"), N_("Saturation"), minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, - {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, - {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaSharpnessStd)}, - {0x0022, "SubjectProgram", N_("Subject Program"), N_("Subject program"), 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}, - {0x0024, "ISOSetting", N_("ISO Settings"), N_("ISO setting"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaISOSettingStd)}, - {0x0025, "MinoltaModel", N_("Minolta Model"), N_("Minolta model"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaModelStd)}, - {0x0026, "IntervalMode", N_("Interval Mode"), N_("Interval mode"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaIntervalModeStd)}, - {0x0027, "FolderName", N_("Folder Name"), N_("Folder name"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaFolderNameStd)}, - {0x0028, "ColorMode", N_("ColorMode"), N_("ColorMode"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaColorModeStd)}, - {0x0029, "ColorFilter", N_("Color Filter"), N_("Color filter"), minoltaCsNewId, makerTags, unsignedLong, 1, - printValue}, - {0x002A, "BWFilter", N_("Black and White Filter"), N_("Black and white filter"), minoltaCsNewId, makerTags, + {0x0014, "FlashFired", N_("Flash Fired"), N_("Flash fired"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x0015, "MinoltaDate", N_("Minolta Date"), N_("Minolta date"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, printMinoltaDateStd}, + {0x0016, "MinoltaTime", N_("Minolta Time"), N_("Minolta time"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, printMinoltaTimeStd}, + {0x0017, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printValue}, - {0x002B, "Internal Flash", N_("Internal Flash"), N_("Internal Flash"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaFlashFired)}, - {0x002C, "Brightness", N_("Brightness"), N_("Brightness"), minoltaCsNewId, makerTags, unsignedLong, 1, - printMinoltaBrightnessStd}, - {0x002D, "SpotFocusPointX", N_("Spot Focus Point X"), N_("Spot focus point X"), minoltaCsNewId, makerTags, + {0x001A, "FileNumberMemory", N_("File Number Memory"), N_("File number memory"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printMinoltaSonyBoolValue}, + {0x001B, "LastFileNumber", N_("Last Image Number"), N_("Last image number"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x001C, "ColorBalanceRed", N_("Color Balance Red"), N_("Color balance red"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd}, + {0x001D, "ColorBalanceGreen", N_("Color Balance Green"), N_("Color balance green"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd}, + {0x001E, "ColorBalanceBlue", N_("Color Balance Blue"), N_("Color balance blue"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd}, + {0x001F, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printValue}, - {0x002E, "SpotFocusPointY", N_("Spot Focus Point Y"), N_("Spot focus point Y"), minoltaCsNewId, makerTags, + {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, + printValue}, + {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaSharpnessStd)}, + {0x0022, "SubjectProgram", N_("Subject Program"), N_("Subject program"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSubjectProgramStd)}, + {0x0023, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), + IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printMinoltaFlashExposureCompStd}, + {0x0024, "ISOSetting", N_("ISO Settings"), N_("ISO setting"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaISOSettingStd)}, + {0x0025, "MinoltaModel", N_("Minolta Model"), N_("Minolta model"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaModelStd)}, + {0x0026, "IntervalMode", N_("Interval Mode"), N_("Interval mode"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaIntervalModeStd)}, + {0x0027, "FolderName", N_("Folder Name"), N_("Folder name"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaFolderNameStd)}, + {0x0028, "ColorMode", N_("ColorMode"), N_("ColorMode"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaColorModeStd)}, + {0x0029, "ColorFilter", N_("Color Filter"), N_("Color filter"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printValue}, - {0x002F, "WideFocusZone", N_("Wide Focus Zone"), N_("Wide focus zone"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaWideFocusZoneStd)}, - {0x0030, "FocusMode", N_("Focus Mode"), N_("Focus mode"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaFocusModeStd)}, - {0x0031, "FocusArea", N_("Focus area"), N_("Focus area"), 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)}, - {0x0033, "ColorProfile", N_("Color Profile"), N_("Color profile"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaColorProfileStd)}, - {0x0034, "DataImprint", N_("Data Imprint"), N_("Data Imprint"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaDataImprintStd)}, - {0x003F, "FlashMetering", N_("Flash Metering"), N_("Flash metering"), minoltaCsNewId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaFlashMeteringStd)}, + {0x002A, "BWFilter", N_("Black and White Filter"), N_("Black and white filter"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x002B, "Internal Flash", N_("Internal Flash"), N_("Internal Flash"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x002C, "Brightness", N_("Brightness"), N_("Brightness"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, printMinoltaBrightnessStd}, + {0x002D, "SpotFocusPointX", N_("Spot Focus Point X"), N_("Spot focus point X"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x002E, "SpotFocusPointY", N_("Spot Focus Point Y"), N_("Spot focus point Y"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x002F, "WideFocusZone", N_("Wide Focus Zone"), N_("Wide focus zone"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaWideFocusZoneStd)}, + {0x0030, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaFocusModeStd)}, + {0x0031, "FocusArea", N_("Focus area"), N_("Focus area"), IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, + 1, EXV_PRINT_TAG(minoltaFocusAreaStd)}, + {0x0032, "DECPosition", N_("DEC Switch Position"), N_("DEC switch position"), IfdId::minoltaCsNewId, + SectionId::makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDECPositionStd)}, + {0x0033, "ColorProfile", N_("Color Profile"), N_("Color profile"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaColorProfileStd)}, + {0x0034, "DataImprint", N_("Data Imprint"), N_("Data Imprint"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaDataImprintStd)}, + {0x003F, "FlashMetering", N_("Flash Metering"), N_("Flash metering"), IfdId::minoltaCsNewId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)}, // End of list marker {0xffff, "(UnknownMinoltaCsStdTag)", "(UnknownMinoltaCsStdTag)", N_("Unknown Minolta Camera Settings tag"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue}, + IfdId::minoltaCsNewId, SectionId::makerTags, unsignedLong, 1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCsStd() { @@ -447,57 +451,62 @@ constexpr TagDetails minoltaRotation7D[] = { // Minolta Dynax 7D Camera Settings Tag Info constexpr TagInfo MinoltaMakerNote::tagInfoCs7D_[] = { - {0x0000, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaExposureMode7D)}, - {0x0002, "ImageSize", N_("Image Size"), N_("Image size"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaImageSize7D)}, - {0x0003, "Quality", N_("Image Quality"), N_("Image quality"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaImageQuality7D)}, - {0x0004, "WhiteBalance", N_("White Balance"), N_("White balance"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaWhiteBalance7D)}, - {0x000E, "FocusMode", N_("Focus Mode"), N_("Focus mode"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaFocusMode7D)}, - {0x0010, "AFPoints", N_("AF Points"), N_("AF points"), minoltaCs7DId, makerTags, unsignedShort, 1, + {0x0000, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode7D)}, + {0x0002, "ImageSize", N_("Image Size"), N_("Image size"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, + 1, EXV_PRINT_TAG(minoltaImageSize7D)}, + {0x0003, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaImageQuality7D)}, + {0x0004, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance7D)}, + {0x000E, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, + 1, EXV_PRINT_TAG(minoltaFocusMode7D)}, + {0x0010, "AFPoints", N_("AF Points"), N_("AF points"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaAFPoints7D)}, - {0x0015, "FlashFired", N_("Flash Fired"), N_("Flash fired"), minoltaCs7DId, makerTags, unsignedLong, 1, - EXV_PRINT_TAG(minoltaFlashFired)}, - {0x0016, "FlashMode", N_("Flash Mode"), N_("Flash mode"), minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, - {0x001C, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaISOSetting7D)}, - {0x001E, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), minoltaCs7DId, makerTags, - signedShort, 1, printValue}, - {0x0025, "ColorSpace", N_("Color Space"), N_("Color space"), minoltaCs7DId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaColorSpace7D)}, - {0x0026, "Sharpness", N_("Sharpness"), N_("Sharpness"), minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, - {0x0027, "Contrast", N_("Contrast"), N_("Contrast"), minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, - {0x0028, "Saturation", N_("Saturation"), N_("Saturation"), minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, - {0x002D, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), minoltaCs7DId, - makerTags, unsignedShort, 1, printValue}, - {0x003F, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), 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, + {0x0015, "FlashFired", N_("Flash Fired"), N_("Flash fired"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x0016, "FlashMode", N_("Flash Mode"), N_("Flash mode"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x001C, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaISOSetting7D)}, + {0x001E, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), IfdId::minoltaCs7DId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0025, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaColorSpace7D)}, + {0x0026, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x0027, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x0028, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x002D, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), IfdId::minoltaCs7DId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x003F, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), IfdId::minoltaCs7DId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0040, "Hue", N_("Hue"), N_("Hue"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0046, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaRotation7D)}, - {0x0047, "FNumber", N_("FNumber"), N_("The F-Number"), minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, - {0x0048, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), minoltaCs7DId, makerTags, unsignedShort, 1, + {0x0047, "FNumber", N_("FNumber"), N_("The F-Number"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0048, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, printValue}, // 0x004A is a duplicate than 0x002D. - {0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), minoltaCs7DId, - makerTags, unsignedShort, 1, printValue}, - {0x005E, "ImageNumber", N_("Image Number"), N_("Image number"), minoltaCs7DId, makerTags, unsignedShort, 1, - printValue}, - {0x0060, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), minoltaCs7DId, makerTags, unsignedShort, 1, - printMinoltaSonyBoolValue}, - // 0x0062 is a duplicate than 0x005E. - {0x0062, "ImageNumber", N_("Image Number"), N_("Image number"), minoltaCs7DId, makerTags, unsignedShort, 1, - printValue}, - {0x0071, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), minoltaCs7DId, makerTags, + {0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), IfdId::minoltaCs7DId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x005E, "ImageNumber", N_("Image Number"), N_("Image number"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x0060, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, - {0x0075, "ZoneMatchingOn", N_("Zone Matching On"), N_("Zone matching on"), minoltaCs7DId, makerTags, unsignedShort, - 1, printMinoltaSonyBoolValue}, + // 0x0062 is a duplicate than 0x005E. + {0x0062, "ImageNumber", N_("Image Number"), N_("Image number"), IfdId::minoltaCs7DId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x0071, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::minoltaCs7DId, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0075, "ZoneMatchingOn", N_("Zone Matching On"), N_("Zone matching on"), IfdId::minoltaCs7DId, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, // End of list marker {0xffff, "(UnknownMinoltaCs7DTag)", "(UnknownMinoltaCs7DTag)", N_("Unknown Minolta Camera Settings 7D tag"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue}, + IfdId::minoltaCs7DId, SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCs7D() { @@ -603,62 +612,66 @@ std::ostream& MinoltaMakerNote::printMinoltaExposureCompensation5D(std::ostream& // Minolta Dynax 5D Camera Settings Tag Info constexpr TagInfo MinoltaMakerNote::tagInfoCs5D_[] = { - {0x000A, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaExposureMode5D)}, - {0x000C, "ImageSize", N_("Image Size"), N_("Image size"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaImageSize5D)}, - {0x000D, "Quality", N_("Image Quality"), N_("Image quality"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaImageQuality5D)}, - {0x000E, "WhiteBalance", N_("White Balance"), N_("White balance"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaWhiteBalance5D)}, - {0x001A, "FocusPosition", N_("Focus Position"), N_("Focus position"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaFocusPosition5D)}, - {0x001B, "FocusArea", N_("Focus Area"), N_("Focus area"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaFocusArea5D)}, - {0x001F, "FlashFired", N_("Flash Fired"), N_("Flash fired"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaFlashFired)}, - {0x0025, "MeteringMode", N_("Metering Mode"), N_("Metering 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)}, - {0x002F, "ColorSpace", N_("Color Space"), N_("Color space"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaColorSpace5D)}, - {0x0030, "Sharpness", N_("Sharpness"), N_("Sharpness"), minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, - {0x0031, "Contrast", N_("Contrast"), N_("Contrast"), minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, - {0x0032, "Saturation", N_("Saturation"), N_("Saturation"), minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, - {0x0035, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), minoltaCs5DId, makerTags, unsignedShort, -1, + {0x000A, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaExposureMode5D)}, + {0x000C, "ImageSize", N_("Image Size"), N_("Image size"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(minoltaImageSize5D)}, + {0x000D, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaImageQuality5D)}, + {0x000E, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaWhiteBalance5D)}, + {0x001A, "FocusPosition", N_("Focus Position"), N_("Focus position"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusPosition5D)}, + {0x001B, "FocusArea", N_("Focus Area"), N_("Focus area"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(minoltaFocusArea5D)}, + {0x001F, "FlashFired", N_("Flash Fired"), N_("Flash fired"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaFlashFired)}, + {0x0025, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaMeteringMode5D)}, + {0x0026, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaISOSetting5D)}, + {0x002F, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaColorSpace5D)}, + {0x0030, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0031, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0036, "FNumber", N_("FNumber"), N_("The F-Number"), minoltaCs5DId, makerTags, unsignedShort, -1, printValue}, - {0x0037, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), minoltaCs5DId, - makerTags, unsignedShort, -1, printValue}, - {0x0038, "ExposureRevision", N_("Exposure Revision"), N_("Exposure revision"), minoltaCs5DId, makerTags, + {0x0032, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0035, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0048, "FocusMode", N_("Focus Mode"), N_("Focus mode"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaFocusModeStd)}, - {0x0049, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), minoltaCs5DId, makerTags, - signedShort, -1, printValue}, - {0x0050, "Rotation", N_("Rotation"), N_("Rotation"), minoltaCs5DId, makerTags, unsignedShort, -1, + {0x0036, "FNumber", N_("FNumber"), N_("The F-Number"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0037, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), IfdId::minoltaCs5DId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0038, "ExposureRevision", N_("Exposure Revision"), N_("Exposure revision"), IfdId::minoltaCs5DId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0048, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(minoltaFocusModeStd)}, + {0x0049, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), IfdId::minoltaCs5DId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0050, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaRotation5D)}, - {0x0053, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), minoltaCs5DId, makerTags, - unsignedShort, -1, printMinoltaExposureCompensation5D}, - {0x0054, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), minoltaCs5DId, - makerTags, unsignedShort, -1, printValue}, - {0x0065, "Rotation2", N_("Rotation2"), N_("Rotation2"), minoltaCs5DId, makerTags, unsignedShort, -1, - printMinoltaSonyRotation}, - {0x006E, "Color Temperature", N_("Color Temperature"), N_("Color Temperature"), minoltaCs5DId, makerTags, - signedShort, -1, printValue}, - {0x0071, "PictureFinish", N_("Picture Finish"), N_("Picture Finish"), minoltaCs5DId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(minoltaPictureFinish5D)}, - {0x0091, "ExposureManualBias", N_("Exposure Manual Bias"), N_("Exposure manual bias"), minoltaCs5DId, makerTags, - unsignedShort, -1, printMinoltaExposureManualBias5D}, - {0x009E, "AFMode", N_("AF Mode"), N_("AF mode"), minoltaCs5DId, makerTags, unsignedShort, -1, + {0x0053, "ExposureCompensation", N_("Exposure Compensation"), N_("Exposure compensation"), IfdId::minoltaCs5DId, + SectionId::makerTags, unsignedShort, -1, printMinoltaExposureCompensation5D}, + {0x0054, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), IfdId::minoltaCs5DId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0065, "Rotation2", N_("Rotation2"), N_("Rotation2"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, + -1, printMinoltaSonyRotation}, + {0x006E, "Color Temperature", N_("Color Temperature"), N_("Color Temperature"), IfdId::minoltaCs5DId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0071, "PictureFinish", N_("Picture Finish"), N_("Picture Finish"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(minoltaPictureFinish5D)}, + {0x0091, "ExposureManualBias", N_("Exposure Manual Bias"), N_("Exposure manual bias"), IfdId::minoltaCs5DId, + SectionId::makerTags, unsignedShort, -1, printMinoltaExposureManualBias5D}, + {0x009E, "AFMode", N_("AF Mode"), N_("AF mode"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaAFMode5D)}, - {0x00AE, "ImageNumber", N_("Image Number"), N_("Image number"), minoltaCs5DId, makerTags, unsignedShort, -1, - printValue}, - {0x00B0, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), minoltaCs5DId, makerTags, unsignedShort, - -1, printMinoltaSonyBoolValue}, - {0x00BD, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), minoltaCs5DId, makerTags, + {0x00AE, "ImageNumber", N_("Image Number"), N_("Image number"), IfdId::minoltaCs5DId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x00B0, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::minoltaCs5DId, SectionId::makerTags, unsignedShort, -1, printMinoltaSonyBoolValue}, + {0x00BD, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::minoltaCs5DId, + SectionId::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 @@ -668,7 +681,7 @@ constexpr TagInfo MinoltaMakerNote::tagInfoCs5D_[] = { // End of list marker {0xFFFF, "(UnknownMinoltaCs5DTag)", "(UnknownMinoltaCs5DTag)", N_("Unknown Minolta Camera Settings 5D tag"), - minoltaCs5DId, makerTags, invalidTypeId, -1, printValue}, + IfdId::minoltaCs5DId, SectionId::makerTags, invalidTypeId, -1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCs5D() { @@ -827,169 +840,172 @@ constexpr TagDetails sonyBatteryLevelA100[] = { // Sony A100 Camera Settings Tag Info constexpr TagInfo MinoltaMakerNote::tagInfoCsA100_[] = { - {0x0000, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaExposureMode5D)}, + {0x0000, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode5D)}, {0x0001, "ExposureCompensationSetting", N_("Exposure Compensation Setting"), N_("Exposure compensation setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, - {0x0005, "HighSpeedSync", N_("High Speed Sync"), N_("High speed sync"), sony1MltCsA100Id, makerTags, unsignedShort, - 1, printMinoltaSonyBoolValue}, - {0x0006, "ManualExposureTime", N_("Manual Exposure Time"), N_("Manual exposure time"), sony1MltCsA100Id, makerTags, + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0005, "HighSpeedSync", N_("High Speed Sync"), N_("High speed sync"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0006, "ManualExposureTime", N_("Manual Exposure Time"), N_("Manual exposure time"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0007, "ManualFNumber", N_("Manual FNumber"), N_("Manual FNumber"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printValue}, - {0x0007, "ManualFNumber", N_("Manual FNumber"), N_("Manual FNumber"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printValue}, - {0x0008, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), sony1MltCsA100Id, makerTags, unsignedShort, 1, + {0x0008, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x0009, "FNumber", N_("FNumber"), N_("FNumber"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printValue}, - {0x0009, "FNumber", N_("FNumber"), N_("FNumber"), sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, - {0x000A, "DriveMode2", N_("Drive Mode 2"), N_("Drive mode 2"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyDriveMode2A100)}, - {0x000B, "WhiteBalance", N_("White Balance"), N_("White balance"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaWhiteBalance5D)}, - {0x000C, "FocusMode", N_("Focus Mode"), N_("Focus mode"), 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}, - {0x000E, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printMinoltaSonyAFAreaMode}, - {0x000F, "FlashMode", N_("FlashMode"), N_("FlashMode"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyFlashModeA100)}, + {0x000A, "DriveMode2", N_("Drive Mode 2"), N_("Drive mode 2"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyDriveMode2A100)}, + {0x000B, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance5D)}, + {0x000C, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeA100)}, + {0x000D, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, + {0x000E, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, printMinoltaSonyAFAreaMode}, + {0x000F, "FlashMode", N_("FlashMode"), N_("FlashMode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyFlashModeA100)}, {0x0010, "FlashExposureCompSetting", N_("Flash Exposure Comp Setting"), N_("Flash exposure compensation setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, - {0x0012, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyMeteringModeA100)}, - {0x0013, "ISOSetting", N_("ISO Setting"), N_("ISO setting"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printValue}, - {0x0014, "ZoneMatchingMode", N_("Zone Matching Mode"), N_("Zone Matching Mode"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, EXV_PRINT_TAG(sonyZoneMatchingModeA100)}, + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0012, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringModeA100)}, + {0x0013, "ISOSetting", N_("ISO Setting"), N_("ISO setting"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x0014, "ZoneMatchingMode", N_("Zone Matching Mode"), N_("Zone Matching Mode"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyZoneMatchingModeA100)}, {0x0015, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), N_("Dynamic range optimizer mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, - {0x0016, "ColorMode", N_("Color Mode"), N_("Color mode"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printMinoltaSonyColorMode}, - {0x0017, "ColorSpace", N_("Color Space"), N_("Color space"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyColorSpaceA100)}, - {0x0018, "Sharpness", N_("Sharpness"), N_("Sharpness"), sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, - {0x0019, "Contrast", N_("Contrast"), N_("Contrast"), sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, - {0x001A, "Saturation", N_("Saturation"), N_("Saturation"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printValue}, - {0x001C, "FlashMetering", N_("Flash Metering"), N_("Flash metering"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(minoltaFlashMeteringStd)}, + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + {0x0016, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, printMinoltaSonyColorMode}, + {0x0017, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyColorSpaceA100)}, + {0x0018, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x0019, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x001A, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {0x001C, "FlashMetering", N_("Flash Metering"), N_("Flash metering"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)}, {0x001D, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), N_("Priority Setup Shutter Release"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease}, - {0x001E, "DriveMode", N_("Drive Mode"), N_("Drive mode"), 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)}, - {0x0020, "ContinuousBracketing", N_("Continuous Bracketing"), N_("Continuous 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)}, - {0x0022, "WhiteBalanceBracketing", N_("White Balance Bracketing"), N_("White balance bracketing"), 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)}, - {0x0024, "PresetWhiteBalance", N_("Preset White Balance"), N_("Preset white balance"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, EXV_PRINT_TAG(sonyPresetWhiteBalanceA100)}, + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease}, + {0x001E, "DriveMode", N_("Drive Mode"), N_("Drive mode"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeA100)}, + {0x001F, "SelfTimerTime", N_("Self Timer Time"), N_("Self timer time"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySelfTimerTimeA100)}, + {0x0020, "ContinuousBracketing", N_("Continuous Bracketing"), N_("Continuous bracketing"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyContinuousBracketingA100)}, + {0x0021, "SingleFrameBracketing", N_("Single Frame Bracketing"), N_("Single frame bracketing"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySingleFrameBracketingA100)}, + {0x0022, "WhiteBalanceBracketing", N_("White Balance Bracketing"), N_("White balance bracketing"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceBracketingA100)}, + {0x0023, "WhiteBalanceSetting", N_("White Balance Setting"), N_("White balance setting"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceSettingA100)}, + {0x0024, "PresetWhiteBalance", N_("Preset White Balance"), N_("Preset white balance"), IfdId::sony1MltCsA100Id, + SectionId::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)}, - {0x0026, "CustomWBSetting", N_("Custom WB Setting"), N_("Custom WB setting"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBSettingA100)}, + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorTemperatureSettingA100)}, + {0x0026, "CustomWBSetting", N_("Custom WB Setting"), N_("Custom WB setting"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBSettingA100)}, {0x0027, "DynamicRangeOptimizerSettings", N_("Dynamic Range Optimizer Settings"), - N_("Dynamic Range Optimizer Settings"), sony1MltCsA100Id, makerTags, unsignedShort, 1, + N_("Dynamic Range Optimizer Settings"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, - {0x0032, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), sony1MltCsA100Id, - makerTags, unsignedShort, 1, printValue}, - {0x0034, "CustomWBRedLevel", N_("Custom WB Red Level"), N_("Custom WB red level"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, printValue}, - {0x0035, "CustomWBGreenLevel", N_("Custom WB Green Level"), N_("Custom WB green level"), sony1MltCsA100Id, - makerTags, unsignedShort, 1, printValue}, - {0x0036, "CustomWBBlueLevel", N_("Custom WB Blue Level"), N_("CustomWB blue level"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, printValue}, - {0x0037, "CustomWBError", N_("Custom WB Error"), N_("Custom WB Error"), 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}, - {0x0039, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, printValue}, + {0x0032, "FreeMemoryCardImages", N_("Free Memory Card Images"), N_("Free memory card images"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0034, "CustomWBRedLevel", N_("Custom WB Red Level"), N_("Custom WB red level"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0035, "CustomWBGreenLevel", N_("Custom WB Green Level"), N_("Custom WB green level"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0036, "CustomWBBlueLevel", N_("Custom WB Blue Level"), N_("CustomWB blue level"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0037, "CustomWBError", N_("Custom WB Error"), N_("Custom WB Error"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBErrorA100)}, + {0x0038, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White balance fine tune"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, signedShort, 1, printValue}, + {0x0039, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printValue}, {0x003A, "ColorCompensationFilter", N_("Color Compensation Filter"), N_("Color compensation filter"), - sony1MltCsA100Id, makerTags, signedShort, 1, printValue}, - {0x003B, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), sony1MltCsA100Id, makerTags, unsignedShort, - 1, EXV_PRINT_TAG(sonyImageSizeA100)}, - {0x003C, "Quality", N_("Quality"), N_("Quality"), sony1MltCsA100Id, makerTags, unsignedShort, 1, + IfdId::sony1MltCsA100Id, SectionId::makerTags, signedShort, 1, printValue}, + {0x003B, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSizeA100)}, + {0x003C, "Quality", N_("Quality"), N_("Quality"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyQualityCs}, - {0x003D, "InstantPlaybackTime", N_("Instant Playback Time"), N_("Instant playback time"), sony1MltCsA100Id, - makerTags, unsignedShort, 1, printValue}, - {0x003E, "InstantPlaybackSetup", N_("Instant Playback Setup"), N_("Instant playback setup"), sony1MltCsA100Id, - makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyInstantPlaybackSetupA100)}, - {0x003F, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), sony1MltCsA100Id, makerTags, unsignedShort, - 1, printMinoltaSonyBoolValue}, - {0x0040, "EyeStartAF", N_("Eye Start AF"), N_("Eye start AF"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printMinoltaSonyBoolInverseValue}, - {0x0041, "RedEyeReduction", N_("Red Eye Reduction"), N_("Red eye reduction"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, printMinoltaSonyBoolValue}, - {0x0042, "FlashDefault", N_("Flash Default"), N_("Flash default"), 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)}, - {0x0044, "FocusHoldButton", N_("Focus Hold Button"), N_("Focus hold 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)}, - {0x0046, "ControlDialSet", N_("Control Dial Set"), N_("Control dial set"), 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)}, - {0x0048, "AFAssist", N_("AF Assist"), N_("AF assist"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printMinoltaSonyBoolInverseValue}, - {0x0049, "CardShutterLock", N_("Card Shutter Lock"), N_("Card shutter lock"), sony1MltCsA100Id, makerTags, + {0x003D, "InstantPlaybackTime", N_("Instant Playback Time"), N_("Instant playback time"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x003E, "InstantPlaybackSetup", N_("Instant Playback Setup"), N_("Instant playback setup"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyInstantPlaybackSetupA100)}, + {0x003F, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0040, "EyeStartAF", N_("Eye Start AF"), N_("Eye start AF"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, - {0x004A, "LensShutterLock", N_("Lens Shutter Lock"), N_("Lens shutter lock"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, printMinoltaSonyBoolInverseValue}, - {0x004B, "AFAreaIllumination", N_("AF Area Illumination"), N_("AF area illumination"), 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)}, - {0x004D, "RecordDisplay", N_("Record Display"), N_("Record 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)}, - {0x0050, "ExposureIndicator", N_("Exposure Indicator"), N_("Exposure indicator"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0041, "RedEyeReduction", N_("Red Eye Reduction"), N_("Red eye reduction"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0042, "FlashDefault", N_("Flash Default"), N_("Flash default"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyFlashDefaultA100)}, + {0x0043, "AutoBracketOrder", N_("Auto Bracket Order"), N_("Auto bracket order"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAutoBracketOrderA100)}, + {0x0044, "FocusHoldButton", N_("Focus Hold Button"), N_("Focus hold button"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusHoldButtonA100)}, + {0x0045, "AELButton", N_("AEL Button"), N_("AEL button"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyAELButtonA100)}, + {0x0046, "ControlDialSet", N_("Control Dial Set"), N_("Control dial set"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyControlDialSetA100)}, + {0x0047, "ExposureCompensationMode", N_("Exposure Compensation Mode"), N_("Exposure compensation mode"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureCompensationModeA100)}, + {0x0048, "AFAssist", N_("AF Assist"), N_("AF assist"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, + 1, printMinoltaSonyBoolInverseValue}, + {0x0049, "CardShutterLock", N_("Card Shutter Lock"), N_("Card shutter lock"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, + {0x004A, "LensShutterLock", N_("Lens Shutter Lock"), N_("Lens shutter lock"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue}, + {0x004B, "AFAreaIllumination", N_("AF Area Illumination"), N_("AF area illumination"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFAreaIlluminationA100)}, + {0x004C, "MonitorDisplayOff", N_("Monitor Display Off"), N_("Monitor display off"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMonitorDisplayOffA100)}, + {0x004D, "RecordDisplay", N_("Record Display"), N_("Record display"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyRecordDisplayA100)}, + {0x004E, "PlayDisplay", N_("Play Display"), N_("Play display"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyPlayDisplayA100)}, + {0x0050, "ExposureIndicator", N_("Exposure Indicator"), N_("Exposure indicator"), IfdId::sony1MltCsA100Id, + SectionId::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)}, + N_("AEL exposure indicator (also indicates exposure for next shot when bracketing)"), IfdId::sony1MltCsA100Id, + SectionId::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)}, + N_("Exposure bracketing indicator last (indicator for last shot when bracketing)"), IfdId::sony1MltCsA100Id, + SectionId::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)}, - {0x0054, "FlashExposureIndicator", N_("Flash Exposure Indicator"), N_("Flash exposure indicator"), sony1MltCsA100Id, - makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + N_("Metering off scale indicator (two flashing triangles when under or over metering scale)"), + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringOffScaleIndicatorA100)}, + {0x0054, "FlashExposureIndicator", N_("Flash Exposure Indicator"), N_("Flash exposure indicator"), + IfdId::sony1MltCsA100Id, SectionId::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)}, + N_("Flash exposure indicator next (indicator for next shot when bracketing)"), IfdId::sony1MltCsA100Id, + SectionId::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)}, - {0x0057, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, printMinoltaSonyBoolValue}, - {0x0058, "FocusModeSwitch", N_("Focus Mode Switch"), N_("Focus mode switch"), sony1MltCsA100Id, makerTags, - unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeSwitchA100)}, - {0x0059, "FlashType", N_("Flash Type"), N_("Flash type"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyFlashTypeA100)}, - {0x005A, "Rotation", N_("Rotation"), N_("Rotation"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - printMinoltaSonyRotation}, - {0x004B, "AELock", N_("AE Lock"), N_("AE lock"), sony1MltCsA100Id, makerTags, unsignedShort, 1, + N_("Flash exposure indicator last (indicator for last shot when bracketing)"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)}, + {0x0057, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x0058, "FocusModeSwitch", N_("Focus Mode Switch"), N_("Focus mode switch"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeSwitchA100)}, + {0x0059, "FlashType", N_("Flash Type"), N_("Flash type"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyFlashTypeA100)}, + {0x005A, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, + 1, printMinoltaSonyRotation}, + {0x004B, "AELock", N_("AE Lock"), N_("AE lock"), IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, - {0x005E, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), sony1MltCsA100Id, makerTags, - unsignedLong, 1, printValue}, + {0x005E, "ColorTemperature", N_("Color Temperature"), N_("Color temperature"), IfdId::sony1MltCsA100Id, + SectionId::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}, - {0x0060, "BatteryLevel", N_("Battery Level"), N_("Battery level"), sony1MltCsA100Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyBatteryLevelA100)}, + N_("Color compensation filter: negative is green, positive is magenta"), IfdId::sony1MltCsA100Id, + SectionId::makerTags, unsignedLong, 1, printValue}, + {0x0060, "BatteryLevel", N_("Battery Level"), N_("Battery level"), IfdId::sony1MltCsA100Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyBatteryLevelA100)}, // End of list marker {0xffff, "(UnknownSonyCsA100Tag)", "(UnknownSonyCsA100Tag)", N_("Unknown Sony Camera Settings A100 tag"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue}, + IfdId::sony1MltCsA100Id, SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* MinoltaMakerNote::tagListCsA100() { diff --git a/src/nikonmn_int.cpp b/src/nikonmn_int.cpp index 2c52565635..fce47e7e4c 100644 --- a/src/nikonmn_int.cpp +++ b/src/nikonmn_int.cpp @@ -111,34 +111,41 @@ constexpr TagDetails nikonHighISONoiseReduction[] = { // Nikon1 MakerNote Tag Info constexpr TagInfo Nikon1MakerNote::tagInfo_[] = { - {0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), nikon1Id, makerTags, undefined, -1, printValue}, - {0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), nikon1Id, makerTags, unsignedShort, -1, print0x0002}, - {0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon1Id, makerTags, asciiString, -1, printValue}, - {0x0004, "Quality", N_("Quality"), N_("Image quality setting"), nikon1Id, makerTags, asciiString, -1, printValue}, - {0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon1Id, makerTags, asciiString, -1, - printValue}, - {0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), nikon1Id, makerTags, asciiString, -1, - printValue}, - {0x0007, "Focus", N_("Focus"), N_("Focus mode"), nikon1Id, makerTags, asciiString, -1, print0x0007}, - {0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), nikon1Id, makerTags, asciiString, -1, + {0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), IfdId::nikon1Id, SectionId::makerTags, undefined, + -1, printValue}, + {0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), IfdId::nikon1Id, SectionId::makerTags, unsignedShort, + -1, print0x0002}, + {0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::nikon1Id, SectionId::makerTags, asciiString, -1, printValue}, - {0x000a, "0x000a", "0x000a", N_("Unknown"), nikon1Id, makerTags, unsignedRational, -1, printValue}, - {0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), nikon1Id, makerTags, asciiString, -1, + {0x0004, "Quality", N_("Quality"), N_("Image quality setting"), IfdId::nikon1Id, SectionId::makerTags, asciiString, + -1, printValue}, + {0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::nikon1Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), IfdId::nikon1Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0007, "Focus", N_("Focus"), N_("Focus mode"), IfdId::nikon1Id, SectionId::makerTags, asciiString, -1, + print0x0007}, + {0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), IfdId::nikon1Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x000a, "0x000a", "0x000a", N_("Unknown"), IfdId::nikon1Id, SectionId::makerTags, unsignedRational, -1, printValue}, - {0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), nikon1Id, makerTags, undefined, -1, printValue}, - {0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), nikon1Id, makerTags, + {0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), IfdId::nikon1Id, SectionId::makerTags, asciiString, -1, printValue}, - {0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon1Id, makerTags, asciiString, - -1, printValue}, - {0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), nikon1Id, makerTags, unsignedRational, - -1, print0x0085}, - {0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon1Id, makerTags, unsignedRational, -1, - print0x0086}, - {0x0088, "AFFocusPos", N_("AF Focus Position"), N_("AF focus position information"), nikon1Id, makerTags, undefined, - -1, print0x0088}, + {0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), IfdId::nikon1Id, SectionId::makerTags, undefined, -1, + printValue}, + {0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), IfdId::nikon1Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), IfdId::nikon1Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), IfdId::nikon1Id, SectionId::makerTags, + unsignedRational, -1, print0x0085}, + {0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), IfdId::nikon1Id, SectionId::makerTags, + unsignedRational, -1, print0x0086}, + {0x0088, "AFFocusPos", N_("AF Focus Position"), N_("AF focus position information"), IfdId::nikon1Id, + SectionId::makerTags, undefined, -1, print0x0088}, // End of list marker - {0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", N_("Unknown Nikon1MakerNote tag"), nikon1Id, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", N_("Unknown Nikon1MakerNote tag"), IfdId::nikon1Id, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* Nikon1MakerNote::tagList() { @@ -313,27 +320,28 @@ constexpr TagDetails nikon2WhiteBalance[] = {{0, N_("Auto")}, {1, N_("Pr // Nikon2 MakerNote Tag Info constexpr TagInfo Nikon2MakerNote::tagInfo_[] = { - {0x0002, "0x0002", "0x0002", N_("Unknown"), nikon2Id, makerTags, asciiString, -1, printValue}, - {0x0003, "Quality", N_("Quality"), N_("Image quality setting"), nikon2Id, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(nikon2Quality)}, - {0x0004, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon2Id, makerTags, unsignedShort, -1, + {0x0002, "0x0002", "0x0002", N_("Unknown"), IfdId::nikon2Id, SectionId::makerTags, asciiString, -1, printValue}, + {0x0003, "Quality", N_("Quality"), N_("Image quality setting"), IfdId::nikon2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(nikon2Quality)}, + {0x0004, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::nikon2Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ColorMode)}, - {0x0005, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), 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)}, - {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon2Id, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(nikon2WhiteBalance)}, - {0x0008, "Focus", N_("Focus Mode"), N_("Focus mode"), nikon2Id, makerTags, unsignedRational, -1, printValue}, - {0x0009, "0x0009", "0x0009", N_("Unknown"), nikon2Id, makerTags, asciiString, -1, printValue}, - {0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon2Id, makerTags, unsignedRational, -1, - print0x000a}, - {0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon2Id, makerTags, unsignedShort, - -1, printValue}, - {0x0f00, "0x0f00", "0x0f00", N_("Unknown"), nikon2Id, makerTags, unsignedLong, -1, printValue}, + {0x0005, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), IfdId::nikon2Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ImageAdjustment)}, + {0x0006, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), IfdId::nikon2Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(nikon2IsoSpeed)}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::nikon2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(nikon2WhiteBalance)}, + {0x0008, "Focus", N_("Focus Mode"), N_("Focus mode"), IfdId::nikon2Id, SectionId::makerTags, unsignedRational, -1, + printValue}, + {0x0009, "0x0009", "0x0009", N_("Unknown"), IfdId::nikon2Id, SectionId::makerTags, asciiString, -1, printValue}, + {0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), IfdId::nikon2Id, SectionId::makerTags, + unsignedRational, -1, print0x000a}, + {0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), IfdId::nikon2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0f00, "0x0f00", "0x0f00", N_("Unknown"), IfdId::nikon2Id, SectionId::makerTags, unsignedLong, -1, printValue}, // End of list marker - {0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", N_("Unknown Nikon2MakerNote tag"), nikon2Id, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", N_("Unknown Nikon2MakerNote tag"), IfdId::nikon2Id, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* Nikon2MakerNote::tagList() { @@ -359,158 +367,188 @@ std::ostream& Nikon2MakerNote::print0x000a(std::ostream& os, const Value& value, // Nikon3 MakerNote Tag Info 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, + {0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), IfdId::nikon3Id, SectionId::makerTags, undefined, + -1, printExifVersion}, + {0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), IfdId::nikon3Id, SectionId::makerTags, unsignedShort, + -1, print0x0002}, + {0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::nikon3Id, SectionId::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, + {0x0004, "Quality", N_("Quality"), N_("Image quality setting"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -1, printValue}, - {0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), nikon3Id, makerTags, unsignedRational, -1, + {0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0007, "Focus", N_("Focus"), N_("Focus mode"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -1, + print0x0007}, + {0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0009, "FlashDevice", N_("Flash Device"), N_("Flash device"), IfdId::nikon3Id, SectionId::makerTags, asciiString, + -1, printValue}, + {0x000a, "0x000a", "0x000a", N_("Unknown"), IfdId::nikon3Id, SectionId::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, + {0x000b, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), IfdId::nikon3Id, + SectionId::makerTags, signedShort, -1, printValue}, + {0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), IfdId::nikon3Id, SectionId::makerTags, + unsignedRational, -1, printValue}, + {0x000d, "ProgramShift", N_("Program Shift"), N_("Program shift"), IfdId::nikon3Id, SectionId::makerTags, undefined, + -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x000e, "ExposureDiff", N_("Exposure Difference"), N_("Exposure difference"), IfdId::nikon3Id, + SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), IfdId::nikon3Id, SectionId::makerTags, undefined, -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, + {0x0011, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), + IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, + {0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), IfdId::nikon3Id, SectionId::makerTags, + undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), IfdId::nikon3Id, SectionId::makerTags, unsignedShort, + -1, print0x0002}, // use 0x0002 print fct + {0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), IfdId::nikon3Id, + SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, + {0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), IfdId::nikon3Id, + SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)}, // use 0x0012 print fct + {0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), IfdId::nikon3Id, + SectionId::makerTags, signedRational, -1, printValue}, + {0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::nikon3Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(nikonColorSpace)}, + {0x001f, "VRInfo", N_("VR Info"), N_("VR info"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, + {0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), IfdId::nikon3Id, + SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)}, + {0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighting)}, + {0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), IfdId::nikon3Id, SectionId::makerTags, + undefined, -1, printValue}, + {0x0024, "WorldTime", N_("World Time"), N_("World time"), IfdId::nikon3Id, SectionId::makerTags, undefined, -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, + {0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, - {0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3Id, makerTags, unsignedShort, -1, + {0x002a, "VignetteControl", N_("Vignette Control"), N_("Vignette control"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(nikonOlnh)}, + {0x0034, "ShutterMode", N_("Shutter Mode"), N_("Shutter mode"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(nikonShutterModes)}, + {0x0037, "MechanicalShutterCount", N_("Mechanical Shutter Count"), N_("Mechanical shutter count"), IfdId::nikon3Id, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), IfdId::nikon3Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0081, "ToneComp", N_("Tone Compensation"), N_("Tone compensation"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), IfdId::nikon3Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0083, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::nikon3Id, SectionId::makerTags, unsignedByte, -1, + print0x0083}, + {0x0084, "Lens", N_("Lens"), N_("Lens"), IfdId::nikon3Id, SectionId::makerTags, unsignedRational, -1, print0x0084}, + {0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), IfdId::nikon3Id, SectionId::makerTags, + unsignedRational, -1, print0x0085}, + {0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), IfdId::nikon3Id, SectionId::makerTags, + unsignedRational, -1, print0x0086}, + {0x0087, "FlashMode", N_("Flash Mode"), N_("Mode of flash used"), IfdId::nikon3Id, SectionId::makerTags, + unsignedByte, -1, EXV_PRINT_TAG(nikonFlashMode)}, + {0x0088, "AFInfo", N_("AF Info"), N_("AF info"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, + {0x0089, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, print0x0089}, + {0x008a, "AutoBracketRelease", N_("Auto Bracket Release"), N_("Auto bracket release"), IfdId::nikon3Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonAutoBracketRelease)}, + {0x008b, "LensFStops", N_("Lens FStops"), N_("Lens FStops"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, + print0x008b}, + {0x008c, "ContrastCurve", N_("Contrast Curve"), N_("Contrast curve"), IfdId::nikon3Id, SectionId::makerTags, + undefined, -1, printValue}, + {0x008d, "ColorHue", N_("Color Hue"), N_("Color hue"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -1, printValue}, - {0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3Id, makerTags, unsignedShort, -1, + {0x008f, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -1, printValue}, - {0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3Id, makerTags, asciiString, -1, + {0x0090, "LightSource", N_("Light Source"), N_("Light source"), IfdId::nikon3Id, SectionId::makerTags, asciiString, + -1, printValue}, + {0x0091, "ShotInfo", "Shot Info", N_("Shot info"), IfdId::nikon3Id, SectionId::makerTags, undefined, -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(nikonActiveDLighting)}, - {0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, + {0x0092, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), IfdId::nikon3Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0093, "NEFCompression", N_("NEF Compression"), N_("NEF compression"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(nikonNefCompression)}, + {0x0094, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::nikon3Id, SectionId::makerTags, signedShort, -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, + {0x0095, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::nikon3Id, SectionId::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, + {0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), IfdId::nikon3Id, + SectionId::makerTags, undefined, -1, printValue}, + {0x0097, "ColorBalance", N_("Color Balance"), N_("Color balance"), IfdId::nikon3Id, SectionId::makerTags, undefined, + -1, printValue}, + {0x0098, "LensData", N_("Lens Data"), N_("Lens data settings"), IfdId::nikon3Id, SectionId::makerTags, undefined, + -1, printValue}, + {0x0099, "RawImageCenter", N_("Raw Image Center"), N_("Raw image center"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x009a, "SensorPixelSize", N_("Sensor Pixel Size"), N_("Sensor pixel size"), IfdId::nikon3Id, SectionId::makerTags, + unsignedRational, -1, print0x009a}, + {0x009b, "0x009b", "0x009b", N_("Unknown"), IfdId::nikon3Id, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x009c, "SceneAssist", N_("Scene Assist"), N_("Scene assist"), IfdId::nikon3Id, SectionId::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, + {0x009e, "RetouchHistory", N_("Retouch History"), N_("Retouch history"), IfdId::nikon3Id, SectionId::makerTags, + unsignedShort, -1, print0x009e}, + {0x009f, "0x009f", "0x009f", N_("Unknown"), IfdId::nikon3Id, SectionId::makerTags, signedShort, -1, printValue}, + {0x00a0, "SerialNO", N_("Serial NO"), N_("Camera serial number, usually starts with \"NO= \""), IfdId::nikon3Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x00a2, "ImageDataSize", N_("Image Data Size"), N_("Image data size"), IfdId::nikon3Id, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x00a3, "0x00a3", "0x00a3", N_("Unknown"), IfdId::nikon3Id, SectionId::makerTags, unsignedByte, -1, printValue}, + {0x00a5, "ImageCount", N_("Image Count"), N_("Image count"), IfdId::nikon3Id, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x00a6, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), IfdId::nikon3Id, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x00a7, "ShutterCount", N_("Shutter Count"), N_("Number of shots taken by camera"), IfdId::nikon3Id, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x00a8, "FlashInfo", "Flash Info", N_("Flash info"), IfdId::nikon3Id, SectionId::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, + {0x00a9, "ImageOptimization", N_("Image Optimization"), N_("Image optimization"), IfdId::nikon3Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x00aa, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -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, + {0x00ab, "VariProgram", N_("Program Variation"), N_("Program variation"), IfdId::nikon3Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0x00ac, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::nikon3Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x00ad, "AFResponse", N_("AF Response"), N_("AF response"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -1, printValue}, - {0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), nikon3Id, makerTags, undefined, + {0x00b0, "MultiExposure", "Multi Exposure", N_("Multi exposure"), IfdId::nikon3Id, SectionId::makerTags, undefined, + -1, printValue}, + {0x00b1, "HighISONoiseReduction", N_("High ISO Noise Reduction"), N_("High ISO Noise Reduction"), IfdId::nikon3Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonHighISONoiseReduction)}, + {0x00b3, "ToningEffect", "Toning Effect", N_("Toning effect"), IfdId::nikon3Id, SectionId::makerTags, asciiString, -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, + {0x00b7, "AFInfo2", "AF Info 2", N_("AF info 2"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, + {0x00b8, "FileInfo", "File Info", N_("File info"), IfdId::nikon3Id, SectionId::makerTags, undefined, -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, + {0x00b9, "AFTune", "AF Tune", N_("AF tune"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, + {0x00c3, "BarometerInfo", "Barometer Info", N_("Barometer Info"), IfdId::nikon3Id, SectionId::makerTags, signedLong, + -1, Nikon1MakerNote::printBarValue}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::nikon3Id, SectionId::makerTags, undefined, -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, + // TODO: Add Capture Data decoding implementation. + {0x0e01, "CaptureData", N_("Capture Data"), N_("Capture data"), IfdId::nikon3Id, SectionId::makerTags, undefined, -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, + {0x0e09, "CaptureVersion", N_("Capture Version"), N_("Capture version"), IfdId::nikon3Id, SectionId::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. - {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. - {0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), nikon3Id, makerTags, undefined, -1, + {0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), IfdId::nikon3Id, SectionId::makerTags, + undefined, -1, printValue}, + {0x0e10, "ScanIFD", "Scan IFD", N_("Scan IFD"), IfdId::nikon3Id, SectionId::makerTags, undefined, -1, printValue}, + {0x0e1d, "ICCProfile", "ICC Profile", N_("ICC profile"), IfdId::nikon3Id, SectionId::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}, + {0x0e1e, "CaptureOutput", "Capture Output", N_("Capture output"), IfdId::nikon3Id, SectionId::makerTags, undefined, + -1, printValue}, // End of list marker - {0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), nikon3Id, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), IfdId::nikon3Id, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* Nikon3MakerNote::tagList() { @@ -528,12 +566,13 @@ constexpr TagDetails nikonOnOff[] = {{1, N_("On")}, {2, N_("Off")}}; // Nikon3 Vibration Reduction Tag Info 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)}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonVrId, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), IfdId::nikonVrId, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOnOff)}, // End of list marker - {0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), nikonVrId, - makerTags, unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), + IfdId::nikonVrId, SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListVr() { @@ -555,27 +594,33 @@ constexpr TagDetails nikonToningEffect[] = {{0x80, N_("B&W")}, {0x81, N_( // Nikon3 Picture Control Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonPcId, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "Name", N_("Name"), N_("Name"), IfdId::nikonPcId, SectionId::makerTags, asciiString, 20, printValue}, + {24, "Base", N_("Base"), N_("Base"), IfdId::nikonPcId, SectionId::makerTags, asciiString, 20, printValue}, + {48, "Adjust", N_("Adjust"), N_("Adjust"), IfdId::nikonPcId, SectionId::makerTags, unsignedByte, 1, + EXV_PRINT_TAG(nikonAdjust)}, + {49, "QuickAdjust", N_("Quick Adjust"), N_("Quick adjust"), IfdId::nikonPcId, SectionId::makerTags, unsignedByte, 1, + printPictureControl}, + {50, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::nikonPcId, SectionId::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, + {51, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::nikonPcId, SectionId::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, + {52, "Brightness", N_("Brightness"), N_("Brightness"), IfdId::nikonPcId, SectionId::makerTags, unsignedByte, 1, printPictureControl}, + {53, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::nikonPcId, SectionId::makerTags, unsignedByte, 1, + printPictureControl}, + {54, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), IfdId::nikonPcId, SectionId::makerTags, + unsignedByte, 1, printPictureControl}, + {55, "FilterEffect", N_("Filter Effect"), N_("Filter effect"), IfdId::nikonPcId, SectionId::makerTags, unsignedByte, + 1, EXV_PRINT_TAG(nikonFilterEffect)}, + {56, "ToningEffect", N_("Toning Effect"), N_("Toning effect"), IfdId::nikonPcId, SectionId::makerTags, unsignedByte, + 1, EXV_PRINT_TAG(nikonToningEffect)}, + {57, "ToningSaturation", N_("Toning Saturation"), N_("Toning saturation"), IfdId::nikonPcId, SectionId::makerTags, + unsignedByte, 1, printPictureControl}, // End of list marker - {0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), nikonPcId, - makerTags, unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), IfdId::nikonPcId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListPc() { @@ -587,15 +632,15 @@ constexpr TagDetails aftOnOff[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("On")}} // Nikon3 AF Fine Tune constexpr TagInfo Nikon3MakerNote::tagInfoAFT_[] = { - {0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), nikonAFTId, makerTags, unsignedByte, 1, + {0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), IfdId::nikonAFTId, SectionId::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}, + {1, "AFFineTuneIndex", N_("AF Fine Tune Index"), N_("AF fine tune index"), IfdId::nikonAFTId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {2, "AFFineTuneAdj", N_("AF Fine Tune Adjustment"), N_("AF fine tune adjustment"), IfdId::nikonAFTId, + SectionId::makerTags, signedByte, 1, printValue}, // End of list marker - {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"), IfdId::nikonAFTId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAFT() { @@ -604,14 +649,15 @@ const TagInfo* Nikon3MakerNote::tagListAFT() { // Nikon3 World Time Tag Info 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)}, + {0, "Timezone", N_("Timezone"), N_("Timezone"), IfdId::nikonWtId, SectionId::makerTags, signedShort, 1, + printTimeZone}, + {2, "DaylightSavings", N_("Daylight Savings"), N_("Daylight savings"), IfdId::nikonWtId, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)}, + {3, "DateDisplayFormat", N_("Date Display Format"), N_("Date display format"), IfdId::nikonWtId, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonDateDisplayFormat)}, // End of list marker - {0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), nikonWtId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), IfdId::nikonWtId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListWt() { @@ -628,15 +674,15 @@ constexpr TagDetails nikonIsoExpansion[] = { // Nikon3 ISO Info Tag Info 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)}, + {0, "ISO", N_("ISO"), N_("ISO"), IfdId::nikonIiId, SectionId::makerTags, unsignedByte, 1, printIiIso}, + {4, "ISOExpansion", N_("ISO Expansion"), N_("ISO expansion"), IfdId::nikonIiId, SectionId::makerTags, unsignedShort, + 1, EXV_PRINT_TAG(nikonIsoExpansion)}, + {6, "ISO2", N_("ISO 2"), N_("ISO 2"), IfdId::nikonIiId, SectionId::makerTags, unsignedByte, 1, printIiIso}, + {10, "ISOExpansion2", N_("ISO Expansion 2"), N_("ISO expansion 2"), IfdId::nikonIiId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)}, // End of list marker - {0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), nikonIiId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), IfdId::nikonIiId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListIi() { @@ -662,14 +708,15 @@ constexpr TagDetailsBitmask nikonAfPointsInFocus[] = { // Nikon3 Auto Focus Tag Info constexpr TagInfo Nikon3MakerNote::tagInfoAf_[] = { - {0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAfId, makerTags, unsignedByte, 1, + {0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), IfdId::nikonAfId, SectionId::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}, + {1, "AFPoint", N_("AF Point"), N_("AF point"), IfdId::nikonAfId, SectionId::makerTags, unsignedByte, 1, + EXV_PRINT_TAG(nikonAfPoint)}, + {2, "AFPointsInFocus", N_("AF Points In Focus"), N_("AF points in focus"), IfdId::nikonAfId, SectionId::makerTags, + unsignedShort, 1, printAfPointsInFocus}, // End of list marker - {0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), nikonAfId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), IfdId::nikonAfId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAf() { @@ -684,32 +731,35 @@ constexpr TagDetails nikonPhaseDetectAF[] = { // Nikon3 Auto Focus Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonAf21Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), IfdId::nikonAf21Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)}, + {5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), IfdId::nikonAf21Id, SectionId::makerTags, unsignedByte, 1, printValue}, - {28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf21Id, - makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)}, + {6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)}, + {7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedByte, 1, printValue}, + {8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedByte, 7, printValue}, + {16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), IfdId::nikonAf21Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), IfdId::nikonAf21Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), IfdId::nikonAf21Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), + IfdId::nikonAf21Id, SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)}, // End of list marker - {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"), IfdId::nikonAf21Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAf21() { @@ -718,32 +768,35 @@ const TagInfo* Nikon3MakerNote::tagListAf21() { // Nikon3 Auto Focus Tag Info Version 1.01 https://github.com/Exiv2/exiv2/pull/900 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonAf22Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), IfdId::nikonAf22Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)}, + {5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), IfdId::nikonAf22Id, SectionId::makerTags, unsignedByte, 1, printValue}, - {82, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf22Id, - makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)}, + {6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)}, + {7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedByte, 1, printValue}, + {8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedByte, 7, printValue}, + {70, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {72, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {74, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), IfdId::nikonAf22Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {76, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), IfdId::nikonAf22Id, + SectionId::makerTags, unsignedShort, 1, printValue}, + {78, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {80, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), IfdId::nikonAf22Id, SectionId::makerTags, + unsignedShort, 1, printValue}, + {82, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), + IfdId::nikonAf22Id, SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)}, // End of list marker - {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"), IfdId::nikonAf22Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListAf22() { @@ -752,13 +805,15 @@ const TagInfo* Nikon3MakerNote::tagListAf22() { // Nikon3 File Info Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonFiId, SectionId::makerTags, undefined, 4, + printExifVersion}, + {6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), IfdId::nikonFiId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {8, "FileNumber", N_("File Number"), N_("File number"), IfdId::nikonFiId, SectionId::makerTags, unsignedShort, 1, printValue}, - {8, "FileNumber", N_("File Number"), N_("File number"), nikonFiId, makerTags, unsignedShort, 1, printValue}, // End of list marker - {0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), IfdId::nikonFiId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFi() { @@ -771,16 +826,17 @@ constexpr TagDetails nikonMultiExposureMode[] = { // Nikon3 Multi Exposure Tag Info 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)}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonMeId, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), IfdId::nikonMeId, + SectionId::makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonMultiExposureMode)}, + {8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), IfdId::nikonMeId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), IfdId::nikonMeId, + SectionId::makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonOffOn)}, // End of list marker - {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), IfdId::nikonMeId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListMe() { @@ -833,29 +889,30 @@ constexpr TagDetails nikonFlashColorFilter[] = {{0, N_("None")}, {1, N_("FL-GL1 // Nikon3 Flash Info 1 Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonFl1Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "FlashSource", N_("Flash Source"), N_("Flash source"), IfdId::nikonFl1Id, SectionId::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)}, + {5, "0x0005", N_("0x0005"), N_("Unknown"), IfdId::nikonFl1Id, SectionId::makerTags, unsignedByte, 1, printValue}, + {6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), IfdId::nikonFl1Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + {8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), IfdId::nikonFl1Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)}, + {11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), IfdId::nikonFl1Id, + SectionId::makerTags, unsignedByte, 1, printFlashFocalLength}, + {12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), IfdId::nikonFl1Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashRate}, + {13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), IfdId::nikonFl1Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashCount}, + {14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), IfdId::nikonFl1Id, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, + {15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), + IfdId::nikonFl1Id, SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)}, + {16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), + IfdId::nikonFl1Id, SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)}, // End of list marker - {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1Id, - makerTags, unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), IfdId::nikonFl1Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl1() { @@ -864,25 +921,26 @@ const TagInfo* Nikon3MakerNote::tagListFl1() { // Nikon3 Flash Info 2 Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonFl2Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "FlashSource", N_("Flash Source"), N_("Flash source"), IfdId::nikonFl2Id, SectionId::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)}, + {5, "0x0005", N_("0x0005"), N_("Unknown"), IfdId::nikonFl2Id, SectionId::makerTags, unsignedByte, 1, printValue}, + {6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), IfdId::nikonFl2Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + {8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), IfdId::nikonFl2Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)}, + {12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), IfdId::nikonFl2Id, + SectionId::makerTags, unsignedByte, 1, printFlashFocalLength}, + {13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), IfdId::nikonFl2Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashRate}, + {14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), IfdId::nikonFl2Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashCount}, + {15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), IfdId::nikonFl2Id, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, // End of list marker - {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2Id, - makerTags, unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), IfdId::nikonFl2Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl2() { @@ -891,26 +949,27 @@ const TagInfo* Nikon3MakerNote::tagListFl2() { // Nikon3 Flash Info 3 Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonFl3Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "FlashSource", N_("Flash Source"), N_("Flash source"), IfdId::nikonFl3Id, SectionId::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)}, + {6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + {8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)}, + {12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedByte, 1, printFlashFocalLength}, + {13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashRate}, + {14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashCount}, + {15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), IfdId::nikonFl3Id, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, + {16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashColorFilter)}, // End of list marker - {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3Id, - makerTags, unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), IfdId::nikonFl3Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl3() { @@ -919,44 +978,45 @@ const TagInfo* Nikon3MakerNote::tagListFl3() { // Nikon3 Flash Info 7 (0107 and 0108) Tag Info constexpr TagInfo Nikon3MakerNote::tagInfoFl7_[] = { - {0, "Version", N_("Version"), N_("Flash info version"), nikonFl7Id, makerTags, undefined, 4, printExifVersion}, - {4, "FlashSource", N_("Flash source"), N_("The type of flash used (if any)"), nikonFl7Id, makerTags, unsignedByte, - 1, EXV_PRINT_TAG(nikonFlashSource)}, - {6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware version"), nikonFl7Id, - makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, - {8, "ExternalFlashData1", N_("External flash data"), N_("External flash data"), nikonFl7Id, makerTags, unsignedByte, - 1, printExternalFlashData1}, - {9, "ExternalFlashData2", N_("External flash ready state"), N_("External flash ready state"), nikonFl7Id, makerTags, - unsignedByte, 1, printExternalFlashData2}, - {10, "FlashCompensation", N_("Flash compensation"), N_("Flash compensation"), nikonFl7Id, makerTags, signedByte, 1, - printFlashCompensation}, - {12, "FlashFocalLength", N_("Flash focal length"), N_("Flash focal length"), nikonFl7Id, makerTags, unsignedByte, 1, - printFlashFocalLength}, - {13, "RepeatingFlashRate", N_("Repeating flash rate"), N_("Repeating flash rate"), nikonFl7Id, makerTags, - unsignedByte, 1, printRepeatingFlashRate}, - {14, "RepeatingFlashCount", N_("Repeating flash count"), N_("Repeating flash count"), nikonFl7Id, makerTags, - unsignedByte, 1, printRepeatingFlashCount}, - {15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl7Id, makerTags, unsignedByte, 1, - EXV_PRINT_TAG(nikonFlashGNDistance)}, - {17, "FlashGroupAControlData", N_("Flash group A control data"), N_("Flash group A control data"), nikonFl7Id, - makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)}, - {18, "FlashGroupBCControlData", N_("Flash group B/C control data"), N_("Flash group B/C control data"), nikonFl7Id, - makerTags, unsignedByte, 1, printFlashGroupBCControlData}, + {0, "Version", N_("Version"), N_("Flash info version"), IfdId::nikonFl7Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "FlashSource", N_("Flash source"), N_("The type of flash used (if any)"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)}, + {6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware version"), + IfdId::nikonFl7Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)}, + {8, "ExternalFlashData1", N_("External flash data"), N_("External flash data"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, printExternalFlashData1}, + {9, "ExternalFlashData2", N_("External flash ready state"), N_("External flash ready state"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, printExternalFlashData2}, + {10, "FlashCompensation", N_("Flash compensation"), N_("Flash compensation"), IfdId::nikonFl7Id, + SectionId::makerTags, signedByte, 1, printFlashCompensation}, + {12, "FlashFocalLength", N_("Flash focal length"), N_("Flash focal length"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, printFlashFocalLength}, + {13, "RepeatingFlashRate", N_("Repeating flash rate"), N_("Repeating flash rate"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashRate}, + {14, "RepeatingFlashCount", N_("Repeating flash count"), N_("Repeating flash count"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, printRepeatingFlashCount}, + {15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), IfdId::nikonFl7Id, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)}, + {17, "FlashGroupAControlData", N_("Flash group A control data"), N_("Flash group A control data"), + IfdId::nikonFl7Id, SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)}, + {18, "FlashGroupBCControlData", N_("Flash group B/C control data"), N_("Flash group B/C control data"), + IfdId::nikonFl7Id, SectionId::makerTags, unsignedByte, 1, printFlashGroupBCControlData}, {40, "FlashGroupAData", N_("Flash group A data"), N_("Depending upon FlashGroupAControlData, either the FlashGroupACompensation value or the FlashGroupAOutput " "value"), - nikonFl7Id, makerTags, unsignedByte, 1, printFlashGroupAData}, + IfdId::nikonFl7Id, SectionId::makerTags, unsignedByte, 1, printFlashGroupAData}, {41, "FlashGroupBData", N_("Flash group B data"), N_("Depending upon FlashGroupBCControlData, either the FlashGroupBCompensation value or the FlashGroupBOutput " "value"), - nikonFl7Id, makerTags, unsignedByte, 1, printFlashGroupBData}, + IfdId::nikonFl7Id, SectionId::makerTags, unsignedByte, 1, printFlashGroupBData}, {42, "FlashGroupCData", N_("Flash group C data"), N_("Depending upon FlashGroupBCControlData, either the FlashGroupCCompensation value or the FlashGroupCOutput " "value"), - nikonFl7Id, makerTags, unsignedByte, 1, printFlashGroupCData}, + IfdId::nikonFl7Id, SectionId::makerTags, unsignedByte, 1, printFlashGroupCData}, // End of list marker - {0xffff, "(UnknownNikonFl7Tag)", "(UnknownNikonFl7Tag)", N_("Unknown Nikon Flash Info 7 Tag"), nikonFl7Id, - makerTags, unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonFl7Tag)", "(UnknownNikonFl7Tag)", N_("Unknown Nikon Flash Info 7 Tag"), IfdId::nikonFl7Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListFl7() { @@ -965,11 +1025,13 @@ const TagInfo* Nikon3MakerNote::tagListFl7() { // Nikon3 Shot Info D80 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonSi1Id, SectionId::makerTags, unsignedByte, 4, + printExifVersion}, + {586, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), IfdId::nikonSi1Id, SectionId::makerTags, + unsignedLong, 1, printValue}, // End of list marker - {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"), IfdId::nikonSi1Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi1() { @@ -978,12 +1040,15 @@ const TagInfo* Nikon3MakerNote::tagListSi1() { // Nikon3 Shot Info D40 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonSi2Id, SectionId::makerTags, unsignedByte, 4, + printExifVersion}, + {582, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), IfdId::nikonSi2Id, SectionId::makerTags, + unsignedLong, 1, printValue}, + {738, "FlashLevel", N_("Flash Level"), N_("Flash level"), IfdId::nikonSi2Id, SectionId::makerTags, unsignedByte, 1, + printValue}, // End of list marker - {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"), IfdId::nikonSi2Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi2() { @@ -1002,14 +1067,16 @@ constexpr TagDetails nikonAfFineTuneAdj1[] = { // Nikon3 Shot Info D300 (a) Tag Info 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)}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonSi3Id, SectionId::makerTags, unsignedByte, 4, + printExifVersion}, + {604, "ISO", N_("ISO"), N_("ISO"), IfdId::nikonSi3Id, SectionId::makerTags, unsignedByte, 1, printIiIso}, + {633, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), IfdId::nikonSi3Id, SectionId::makerTags, + unsignedLong, 1, printValue}, + {721, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), IfdId::nikonSi3Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj1)}, // End of list marker - {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"), + IfdId::nikonSi3Id, SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi3() { @@ -1028,14 +1095,16 @@ constexpr TagDetails nikonAfFineTuneAdj2[] = { // Nikon3 Shot Info D300 (b) Tag Info 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)}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonSi4Id, SectionId::makerTags, unsignedByte, 4, + printExifVersion}, + {613, "ISO", N_("ISO"), N_("ISO"), IfdId::nikonSi4Id, SectionId::makerTags, unsignedByte, 1, printIiIso}, + {644, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), IfdId::nikonSi4Id, SectionId::makerTags, + unsignedLong, 1, printValue}, + {732, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), IfdId::nikonSi4Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj2)}, // End of list marker - {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"), + IfdId::nikonSi4Id, SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi4() { @@ -1050,24 +1119,26 @@ constexpr TagDetails nikonOffOn3[] = {{0x0, N_("n/a")}, {0xc, N_("Off")}, {0xf, // Nikon3 Shot Info Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonSi5Id, SectionId::makerTags, unsignedByte, 4, + printExifVersion}, + {106, "ShutterCount1", N_("Shutter Count 1"), N_("Shutter count 1"), IfdId::nikonSi5Id, SectionId::makerTags, + unsignedLong, 1, printValue}, + {110, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), IfdId::nikonSi5Id, + SectionId::makerTags, unsignedLong, 1, printValue}, + {117, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), IfdId::nikonSi5Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn2)}, + {130, "VibrationReduction1", N_("Vibration Reduction 1"), N_("Vibration reduction 1"), IfdId::nikonSi5Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)}, + {343, "ShutterCount2", N_("Shutter Count 2"), N_("Shutter count 2"), IfdId::nikonSi5Id, SectionId::makerTags, + undefined, 2, printValue}, + {430, "VibrationReduction2", N_("Vibration Reduction 2"), N_("Vibration reduction 2"), IfdId::nikonSi5Id, + SectionId::makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn3)}, + {598, "ISO", N_("ISO"), N_("ISO"), IfdId::nikonSi5Id, SectionId::makerTags, unsignedByte, 1, printIiIso}, + {630, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), IfdId::nikonSi5Id, SectionId::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 - {0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), nikonSi5Id, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), IfdId::nikonSi5Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListSi5() { @@ -1076,12 +1147,13 @@ const TagInfo* Nikon3MakerNote::tagListSi5() { // Nikon3 Color Balance 1 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonCb1Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {36, "WB_RBGGLevels", N_("WB RBGG Levels"), N_("WB RBGG levels"), IfdId::nikonCb1Id, SectionId::makerTags, + unsignedShort, 4, printValue}, // End of list marker - {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"), IfdId::nikonCb1Id, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb1() { @@ -1090,12 +1162,13 @@ const TagInfo* Nikon3MakerNote::tagListCb1() { // Nikon3 Color Balance 2 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonCb2Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {5, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), IfdId::nikonCb2Id, SectionId::makerTags, + unsignedShort, 4, printValue}, // End of list marker - {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"), IfdId::nikonCb2Id, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb2() { @@ -1104,12 +1177,13 @@ const TagInfo* Nikon3MakerNote::tagListCb2() { // Nikon3 Color Balance 2a Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonCb2aId, SectionId::makerTags, undefined, 4, + printExifVersion}, + {9, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), IfdId::nikonCb2aId, SectionId::makerTags, + unsignedShort, 4, printValue}, // End of list marker - {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"), + IfdId::nikonCb2aId, SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb2a() { @@ -1118,12 +1192,13 @@ const TagInfo* Nikon3MakerNote::tagListCb2a() { // Nikon3 Color Balance 2b Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonCb2bId, SectionId::makerTags, undefined, 4, + printExifVersion}, + {145, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), IfdId::nikonCb2bId, SectionId::makerTags, + unsignedShort, 4, printValue}, // End of list marker - {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"), + IfdId::nikonCb2bId, SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb2b() { @@ -1132,12 +1207,13 @@ const TagInfo* Nikon3MakerNote::tagListCb2b() { // Nikon3 Color Balance 3 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonCb3Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {10, "WB_RGBGLevels", N_("WB RGBG Levels"), N_("WB RGBG levels"), IfdId::nikonCb3Id, SectionId::makerTags, + unsignedShort, 4, printValue}, // End of list marker - {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"), IfdId::nikonCb3Id, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb3() { @@ -1146,12 +1222,13 @@ const TagInfo* Nikon3MakerNote::tagListCb3() { // Nikon3 Color Balance 4 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonCb4Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {147, "WB_GRBGLevels", N_("WB GRBG Levels"), N_("WB GRBG levels"), IfdId::nikonCb4Id, SectionId::makerTags, + unsignedShort, 4, printValue}, // End of list marker - {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"), IfdId::nikonCb4Id, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListCb4() { @@ -1160,22 +1237,25 @@ const TagInfo* Nikon3MakerNote::tagListCb4() { // Nikon3 Lens Data 1 Tag Info 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}, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonLd1Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {6, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), IfdId::nikonLd1Id, SectionId::makerTags, + unsignedByte, 1, printLensId1}, + {7, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), IfdId::nikonLd1Id, SectionId::makerTags, unsignedByte, 1, + printFStops}, + {8, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), IfdId::nikonLd1Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {9, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), IfdId::nikonLd1Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {10, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), IfdId::nikonLd1Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, + {11, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), IfdId::nikonLd1Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, + {12, "MCUVersion", N_("MCU Version"), N_("MCU version"), IfdId::nikonLd1Id, SectionId::makerTags, unsignedByte, 1, + printValue}, // End of list marker - {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"), IfdId::nikonLd1Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd1() { @@ -1184,32 +1264,37 @@ const TagInfo* Nikon3MakerNote::tagListLd1() { // Nikon3 Lens Data 2 Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonLd2Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), IfdId::nikonLd2Id, + SectionId::makerTags, unsignedByte, 1, printExitPupilPosition}, + {5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), IfdId::nikonLd2Id, SectionId::makerTags, unsignedByte, 1, + printAperture}, + {8, "FocusPosition", N_("Focus Position"), N_("Focus position"), IfdId::nikonLd2Id, SectionId::makerTags, + unsignedByte, 1, printValue}, + {9, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), IfdId::nikonLd2Id, SectionId::makerTags, + unsignedByte, 1, printFocusDistance}, + {10, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::nikonLd2Id, SectionId::makerTags, unsignedByte, + 1, printFocal}, + {11, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), IfdId::nikonLd2Id, SectionId::makerTags, + unsignedByte, 1, printLensId2}, + {12, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), IfdId::nikonLd2Id, SectionId::makerTags, unsignedByte, 1, + printFStops}, + {13, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), IfdId::nikonLd2Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {14, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), IfdId::nikonLd2Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {15, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), IfdId::nikonLd2Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, + {16, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), IfdId::nikonLd2Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, + {17, "MCUVersion", N_("MCU Version"), N_("MCU version"), IfdId::nikonLd2Id, SectionId::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}, + {18, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), IfdId::nikonLd2Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, // End of list marker - {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"), IfdId::nikonLd2Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd2() { @@ -1218,32 +1303,37 @@ const TagInfo* Nikon3MakerNote::tagListLd2() { // Nikon3 Lens Data 3 Tag Info 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonLd3Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), IfdId::nikonLd3Id, + SectionId::makerTags, unsignedByte, 1, printExitPupilPosition}, + {5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), IfdId::nikonLd3Id, SectionId::makerTags, unsignedByte, 1, + printAperture}, + {8, "FocusPosition", N_("Focus Position"), N_("Focus position"), IfdId::nikonLd3Id, SectionId::makerTags, + unsignedByte, 1, printValue}, + {10, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), IfdId::nikonLd3Id, SectionId::makerTags, + unsignedByte, 1, printFocusDistance}, + {11, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::nikonLd3Id, SectionId::makerTags, unsignedByte, + 1, printFocal}, + {12, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), IfdId::nikonLd3Id, SectionId::makerTags, + unsignedByte, 1, printLensId3}, + {13, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), IfdId::nikonLd3Id, SectionId::makerTags, unsignedByte, 1, + printFStops}, + {14, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), IfdId::nikonLd3Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {15, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), IfdId::nikonLd3Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {16, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), + IfdId::nikonLd3Id, SectionId::makerTags, unsignedByte, 1, printAperture}, + {17, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), + IfdId::nikonLd3Id, SectionId::makerTags, unsignedByte, 1, printAperture}, + {18, "MCUVersion", N_("MCU Version"), N_("MCU version"), IfdId::nikonLd3Id, SectionId::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}, + {19, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), IfdId::nikonLd3Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, // End of list marker - {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"), IfdId::nikonLd3Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd3() { @@ -1253,39 +1343,47 @@ const TagInfo* Nikon3MakerNote::tagListLd3() { // Nikon3 Lens Data 4 Tag Info // based on https://exiftool.org/TagNames/Nikon.html#LensData0800 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, + {0, "Version", N_("Version"), N_("Version"), IfdId::nikonLd4Id, SectionId::makerTags, undefined, 4, + printExifVersion}, + {4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), IfdId::nikonLd4Id, + SectionId::makerTags, unsignedByte, 1, printExitPupilPosition}, + {5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), IfdId::nikonLd4Id, SectionId::makerTags, unsignedByte, 1, + printAperture}, + {9, "FocusPosition", N_("Focus Position"), N_("Focus position"), IfdId::nikonLd4Id, SectionId::makerTags, + unsignedByte, 1, printValue}, + {11, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), IfdId::nikonLd4Id, SectionId::makerTags, + unsignedByte, 1, printFocusDistance}, + {12, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::nikonLd4Id, SectionId::makerTags, unsignedByte, + 1, printFocal}, + {13, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), IfdId::nikonLd4Id, SectionId::makerTags, + unsignedByte, 1, printLensId4}, + {14, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), IfdId::nikonLd4Id, SectionId::makerTags, unsignedByte, 1, + printFStops}, + {15, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), IfdId::nikonLd4Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {16, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), IfdId::nikonLd4Id, SectionId::makerTags, + unsignedByte, 1, printFocal}, + {17, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), + IfdId::nikonLd4Id, SectionId::makerTags, unsignedByte, 1, printAperture}, + {18, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), + IfdId::nikonLd4Id, SectionId::makerTags, unsignedByte, 1, printAperture}, + {19, "MCUVersion", N_("MCU Version"), N_("MCU version"), IfdId::nikonLd4Id, SectionId::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, + {20, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), IfdId::nikonLd4Id, + SectionId::makerTags, unsignedByte, 1, printAperture}, + {48, "LensID", N_("LensID"), N_("Lens ID"), IfdId::nikonLd4Id, SectionId::makerTags, unsignedShort, 1, + printLensId4ZMount}, + {54, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), IfdId::nikonLd4Id, SectionId::makerTags, unsignedShort, + 1, printApertureLd4}, + {56, "FNumber", N_("F-Number"), N_("F-Number"), IfdId::nikonLd4Id, SectionId::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}, + {60, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::nikonLd4Id, SectionId::makerTags, unsignedShort, + 1, printFocalLd4}, + {79, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), IfdId::nikonLd4Id, SectionId::makerTags, + unsignedByte, 1, printFocusDistance}, // End of list marker - {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"), IfdId::nikonLd4Id, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* Nikon3MakerNote::tagListLd4() { diff --git a/src/olympusmn_int.cpp b/src/olympusmn_int.cpp index aa6c393d0d..9b2abffd1b 100644 --- a/src/olympusmn_int.cpp +++ b/src/olympusmn_int.cpp @@ -104,164 +104,180 @@ constexpr TagInfo OlympusMakerNote::tagInfo_[] = { /* TODO: add Minolta makenotes tags here (0x0000-0x0103). See Exiftool database.*/ - {0x0000, "0x0000", "0x0000", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x0100, "ThumbnailImage", N_("Thumbnail Image"), N_("Thumbnail image"), olympusId, makerTags, undefined, -1, - printValue}, - - {0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusId, makerTags, - asciiString, -1, printValue}, - {0x0200, "SpecialMode", N_("Special Mode"), N_("Picture taking mode"), olympusId, makerTags, unsignedLong, -1, - print0x0200}, - {0x0201, "Quality", N_("Quality"), N_("Image quality setting"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusQuality)}, - {0x0202, "Macro", N_("Macro"), N_("Macro mode"), olympusId, makerTags, unsignedShort, -1, + {0x0000, "0x0000", "0x0000", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0100, "ThumbnailImage", N_("Thumbnail Image"), N_("Thumbnail image"), IfdId::olympusId, SectionId::makerTags, + undefined, -1, printValue}, + + {0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), IfdId::olympusId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0200, "SpecialMode", N_("Special Mode"), N_("Picture taking mode"), IfdId::olympusId, SectionId::makerTags, + unsignedLong, -1, print0x0200}, + {0x0201, "Quality", N_("Quality"), N_("Image quality setting"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusQuality)}, + {0x0202, "Macro", N_("Macro"), N_("Macro mode"), IfdId::olympusId, SectionId::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)}, - {0x0204, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom ratio"), olympusId, makerTags, unsignedRational, -1, - print0x0204}, - {0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), olympusId, makerTags, - unsignedRational, -1, printValue}, - {0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), N_("Lens distortion parameters"), olympusId, - makerTags, signedShort, -1, printValue}, - {0x0207, "CameraType", N_("Camera Type"), N_("Camera type"), olympusId, makerTags, asciiString, -1, printValue}, - {0x0208, "PictureInfo", N_("Picture Info"), N_("ASCII format data such as [PictureInfo]"), olympusId, makerTags, - asciiString, -1, printValue}, - {0x0209, "CameraID", N_("Camera ID"), N_("Camera ID data"), olympusId, makerTags, asciiString, -1, print0x0209}, - {0x020b, "ImageWidth", N_("Image Width"), N_("Image width"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x020c, "ImageHeight", N_("Image Height"), N_("Image height"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x020d, "Software", N_("Software"), N_("Software"), olympusId, makerTags, asciiString, -1, printValue}, - {0x0280, "PreviewImage", N_("Preview Image"), N_("Preview image"), olympusId, makerTags, unsignedByte, -1, - printValue}, - {0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), N_("Pre-capture frames"), olympusId, makerTags, - unsignedShort, -1, printValue}, - {0x0301, "WhiteBoard", N_("White Board"), N_("White board"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x0302, "OneTouchWB", N_("One Touch WB"), N_("One touch white balance"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusOneTouchWb)}, - {0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), olympusId, makerTags, - unsignedShort, -1, printValue}, - {0x0304, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), olympusId, makerTags, + {0x0203, "BWMode", N_("Black & White Mode"), N_("Black and white mode"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0204, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom ratio"), IfdId::olympusId, SectionId::makerTags, + unsignedRational, -1, print0x0204}, + {0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), IfdId::olympusId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), N_("Lens distortion parameters"), + IfdId::olympusId, SectionId::makerTags, signedShort, -1, printValue}, + {0x0207, "CameraType", N_("Camera Type"), N_("Camera type"), IfdId::olympusId, SectionId::makerTags, asciiString, + -1, printValue}, + {0x0208, "PictureInfo", N_("Picture Info"), N_("ASCII format data such as [PictureInfo]"), IfdId::olympusId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0209, "CameraID", N_("Camera ID"), N_("Camera ID data"), IfdId::olympusId, SectionId::makerTags, asciiString, -1, + print0x0209}, + {0x020b, "ImageWidth", N_("Image Width"), N_("Image width"), IfdId::olympusId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x020c, "ImageHeight", N_("Image Height"), N_("Image height"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0403, "SceneMode", N_("Scene Mode"), N_("Scene mode"), olympusCsId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusSceneMode)}, - {0x0404, "Firmware", N_("Firmware"), N_("Firmware"), olympusId, makerTags, asciiString, -1, printValue}, - {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), olympusId, makerTags, undefined, -1, printValue}, - {0x0f00, "DataDump1", N_("Data Dump 1"), N_("Various camera settings 1"), olympusId, makerTags, undefined, -1, + {0x020d, "Software", N_("Software"), N_("Software"), IfdId::olympusId, SectionId::makerTags, asciiString, -1, printValue}, - {0x0f01, "DataDump2", N_("Data Dump 2"), N_("Various camera settings 2"), olympusId, makerTags, undefined, -1, - printValue}, - {0x1000, "ShutterSpeed", N_("Shutter Speed"), N_("Shutter speed value"), olympusId, makerTags, signedRational, -1, - printValue}, - {0x1001, "ISOSpeed", N_("ISO Speed"), N_("ISO speed value"), olympusId, makerTags, signedRational, -1, printValue}, - {0x1002, "ApertureValue", N_("Aperture Value"), N_("Aperture value"), olympusId, makerTags, signedRational, -1, - printValue}, - {0x1003, "Brightness", N_("Brightness"), N_("Brightness value"), olympusId, makerTags, signedRational, -1, - printValue}, - {0x1004, "FlashMode", N_("Flash Mode"), N_("Flash mode"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusOffOn)}, - {0x1005, "FlashDevice", N_("Flash Device"), N_("Flash device"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusFlashDevice)}, - {0x1006, "Bracket", N_("Bracket"), N_("Exposure compensation value"), olympusId, makerTags, signedRational, -1, - printValue}, - {0x1007, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), olympusId, makerTags, signedShort, + {0x0280, "PreviewImage", N_("Preview Image"), N_("Preview image"), IfdId::olympusId, SectionId::makerTags, + unsignedByte, -1, printValue}, + {0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), N_("Pre-capture frames"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0301, "WhiteBoard", N_("White Board"), N_("White board"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x1008, "LensTemperature", N_("Lens Temperature"), N_("Lens temperature"), olympusId, makerTags, signedShort, -1, + {0x0302, "OneTouchWB", N_("One Touch WB"), N_("One touch white balance"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusOneTouchWb)}, + {0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0304, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0403, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusSceneMode)}, + {0x0404, "Firmware", N_("Firmware"), N_("Firmware"), IfdId::olympusId, SectionId::makerTags, asciiString, -1, printValue}, - {0x1009, "LightCondition", N_("Light Condition"), N_("Light condition"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x100a, "FocusRange", N_("Focus Range"), N_("Focus range"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusFocusRange)}, - {0x100b, "FocusMode", N_("Focus Mode"), N_("Focus mode"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusFocusMode)}, - {0x100c, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), olympusId, makerTags, unsignedRational, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::olympusId, SectionId::makerTags, undefined, -1, printValue}, - {0x100d, "Zoom", N_("Zoom"), N_("Zoom step count"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x100e, "MacroFocus", N_("Macro Focus"), N_("Macro focus step count"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x100f, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusSharpness)}, - {0x1010, "FlashChargeLevel", N_("Flash Charge Level"), N_("Flash charge level"), olympusId, makerTags, + {0x0f00, "DataDump1", N_("Data Dump 1"), N_("Various camera settings 1"), IfdId::olympusId, SectionId::makerTags, + undefined, -1, printValue}, + {0x0f01, "DataDump2", N_("Data Dump 2"), N_("Various camera settings 2"), IfdId::olympusId, SectionId::makerTags, + undefined, -1, printValue}, + {0x1000, "ShutterSpeed", N_("Shutter Speed"), N_("Shutter speed value"), IfdId::olympusId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x1001, "ISOSpeed", N_("ISO Speed"), N_("ISO speed value"), IfdId::olympusId, SectionId::makerTags, signedRational, + -1, printValue}, + {0x1002, "ApertureValue", N_("Aperture Value"), N_("Aperture value"), IfdId::olympusId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x1003, "Brightness", N_("Brightness"), N_("Brightness value"), IfdId::olympusId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x1004, "FlashMode", N_("Flash Mode"), N_("Flash mode"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, + EXV_PRINT_TAG(olympusOffOn)}, + {0x1005, "FlashDevice", N_("Flash Device"), N_("Flash device"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusFlashDevice)}, + {0x1006, "Bracket", N_("Bracket"), N_("Exposure compensation value"), IfdId::olympusId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x1007, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), IfdId::olympusId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x1008, "LensTemperature", N_("Lens Temperature"), N_("Lens temperature"), IfdId::olympusId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x1009, "LightCondition", N_("Light Condition"), N_("Light condition"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x1011, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x1012, "BlackLevel", N_("BlackLevel"), N_("Black level"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1013, "0x1013", "0x1013", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1014, "0x1014", "0x1014", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1015, "WhiteBalance", N_("White Balance"), N_("White balance mode"), olympusId, makerTags, unsignedShort, -1, - print0x1015}, - {0x1016, "0x1016", "0x1016", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1017, "RedBalance", N_("Red Balance"), N_("Red balance"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1018, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), olympusId, makerTags, unsignedShort, -1, + {0x100a, "FocusRange", N_("Focus Range"), N_("Focus range"), IfdId::olympusId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusFocusRange)}, + {0x100b, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, + EXV_PRINT_TAG(olympusFocusMode)}, + {0x100c, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), IfdId::olympusId, SectionId::makerTags, + unsignedRational, -1, printValue}, + {0x100d, "Zoom", N_("Zoom"), N_("Zoom step count"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), N_("Color matrix number"), olympusId, makerTags, + {0x100e, "MacroFocus", N_("Macro Focus"), N_("Macro focus step count"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x101a, "SerialNumber2", N_("Serial Number 2"), N_("Serial number 2"), olympusId, makerTags, asciiString, -1, - printValue}, - {0x101b, "0x101b", "0x101b", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x101c, "0x101c", "0x101c", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x101d, "0x101d", "0x101d", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x101e, "0x101e", "0x101e", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x101f, "0x101f", "0x101f", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1020, "0x1020", "0x1020", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1021, "0x1021", "0x1021", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1022, "0x1022", "0x1022", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1023, "FlashBias", N_("Flash Bias"), N_("Flash exposure compensation"), olympusId, makerTags, signedRational, -1, - printValue}, - {0x1024, "0x1024", "0x1024", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1025, "0x1025", "0x1025", N_("Unknown"), olympusId, makerTags, signedRational, -1, printValue}, - {0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), olympusId, makerTags, - unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, - {0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), olympusId, makerTags, + {0x100f, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusSharpness)}, + {0x1010, "FlashChargeLevel", N_("Flash Charge Level"), N_("Flash charge level"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1011, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x1012, "BlackLevel", N_("BlackLevel"), N_("Black level"), IfdId::olympusId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x1013, "0x1013", "0x1013", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1014, "0x1014", "0x1014", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1015, "WhiteBalance", N_("White Balance"), N_("White balance mode"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, print0x1015}, + {0x1016, "0x1016", "0x1016", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1017, "RedBalance", N_("Red Balance"), N_("Red balance"), IfdId::olympusId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x1018, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x1028, "ExternalFlashMode", N_("External Flash Mode"), N_("External flash mode"), olympusId, makerTags, + {0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), N_("Color matrix number"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x101a, "SerialNumber2", N_("Serial Number 2"), N_("Serial number 2"), IfdId::olympusId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x101b, "0x101b", "0x101b", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x101c, "0x101c", "0x101c", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x101d, "0x101d", "0x101d", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x101e, "0x101e", "0x101e", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x101f, "0x101f", "0x101f", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1020, "0x1020", "0x1020", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1021, "0x1021", "0x1021", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1022, "0x1022", "0x1022", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1023, "FlashBias", N_("Flash Bias"), N_("Flash exposure compensation"), IfdId::olympusId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x1024, "0x1024", "0x1024", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1025, "0x1025", "0x1025", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, signedRational, -1, printValue}, + {0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1028, "ExternalFlashMode", N_("External Flash Mode"), N_("External flash mode"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1029, "Contrast", N_("Contrast"), N_("Contrast setting"), IfdId::olympusId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusContrast)}, + {0x102a, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x1029, "Contrast", N_("Contrast"), N_("Contrast setting"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusContrast)}, - {0x102a, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x102b, "ColorControl", N_("Color Control"), N_("Color control"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x102c, "ValidBits", N_("ValidBits"), N_("Valid bits"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x102d, "CoringFilter", N_("CoringFilter"), N_("Coring filter"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x102e, "ImageWidth", N_("Image Width"), N_("Image width"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x102f, "ImageHeight", N_("Image Height"), N_("Image height"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1030, "0x1030", "0x1030", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1031, "0x1031", "0x1031", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1032, "0x1032", "0x1032", N_("Unknown"), olympusId, makerTags, unsignedShort, -1, printValue}, - {0x1033, "0x1033", "0x1033", N_("Unknown"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x1034, "CompressionRatio", N_("Compression Ratio"), N_("Compression ratio"), olympusId, makerTags, - unsignedRational, -1, printValue}, - {0x1035, "Thumbnail", N_("Thumbnail"), N_("Preview image embedded"), olympusId, makerTags, unsignedLong, -1, - EXV_PRINT_TAG(olympusOffOn)}, - {0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the preview image"), olympusId, makerTags, - unsignedLong, -1, printValue}, - {0x1037, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the preview image"), olympusId, makerTags, - unsignedLong, -1, printValue}, - {0x1039, "CCDScanMode", N_("CCD Scan Mode"), N_("CCD scan mode"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusCCDScanMode)}, - {0x103a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(olympusOffOn)}, - {0x103b, "InfinityLensStep", N_("Infinity Lens Step"), N_("Infinity lens step"), olympusId, makerTags, + {0x102b, "ColorControl", N_("Color Control"), N_("Color control"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x103c, "NearLensStep", N_("Near Lens Step"), N_("Near lens step"), olympusId, makerTags, unsignedShort, -1, - printValue}, - {0x2010, "Equipment", N_("Equipment Info"), N_("Camera equipment sub-IFD"), olympusId, makerTags, unsignedLong, -1, + {0x102c, "ValidBits", N_("ValidBits"), N_("Valid bits"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x2020, "CameraSettings", N_("Camera Settings"), N_("Camera Settings sub-IFD"), olympusId, makerTags, unsignedLong, - -1, printValue}, - {0x2030, "RawDevelopment", N_("Raw Development"), N_("Raw development sub-IFD"), olympusId, makerTags, unsignedLong, + {0x102d, "CoringFilter", N_("CoringFilter"), N_("Coring filter"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x102e, "ImageWidth", N_("Image Width"), N_("Image width"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x2031, "RawDevelopment2", N_("Raw Development 2"), N_("Raw development 2 sub-IFD"), olympusId, makerTags, + {0x102f, "ImageHeight", N_("Image Height"), N_("Image height"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x2040, "ImageProcessing", N_("Image Processing"), N_("Image processing sub-IFD"), olympusId, makerTags, + {0x1030, "0x1030", "0x1030", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1031, "0x1031", "0x1031", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1032, "0x1032", "0x1032", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1033, "0x1033", "0x1033", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1034, "CompressionRatio", N_("Compression Ratio"), N_("Compression ratio"), IfdId::olympusId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x1035, "Thumbnail", N_("Thumbnail"), N_("Preview image embedded"), IfdId::olympusId, SectionId::makerTags, + unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the preview image"), IfdId::olympusId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1037, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the preview image"), IfdId::olympusId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1039, "CCDScanMode", N_("CCD Scan Mode"), N_("CCD scan mode"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusCCDScanMode)}, + {0x103a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x103b, "InfinityLensStep", N_("Infinity Lens Step"), N_("Infinity lens step"), IfdId::olympusId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x103c, "NearLensStep", N_("Near Lens Step"), N_("Near lens step"), IfdId::olympusId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x2010, "Equipment", N_("Equipment Info"), N_("Camera equipment sub-IFD"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x2050, "FocusInfo", N_("Focus Info"), N_("Focus sub-IFD"), olympusId, makerTags, unsignedLong, -1, printValue}, - {0x3000, "RawInfo", N_("Raw Info"), N_("Raw sub-IFD"), olympusId, makerTags, unsignedLong, -1, printValue}, + {0x2020, "CameraSettings", N_("Camera Settings"), N_("Camera Settings sub-IFD"), IfdId::olympusId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x2030, "RawDevelopment", N_("Raw Development"), N_("Raw development sub-IFD"), IfdId::olympusId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x2031, "RawDevelopment2", N_("Raw Development 2"), N_("Raw development 2 sub-IFD"), IfdId::olympusId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x2040, "ImageProcessing", N_("Image Processing"), N_("Image processing sub-IFD"), IfdId::olympusId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x2050, "FocusInfo", N_("Focus Info"), N_("Focus sub-IFD"), IfdId::olympusId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x3000, "RawInfo", N_("Raw Info"), N_("Raw sub-IFD"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, + printValue}, // End of list marker {0xffff, "(UnknownOlympusMakerNoteTag)", "(UnknownOlympusMakerNoteTag)", N_("Unknown OlympusMakerNote tag"), - olympusId, makerTags, asciiString, -1, printValue}, + IfdId::olympusId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagList() { @@ -397,112 +413,117 @@ constexpr TagDetails olympusImageStabilization[] = { {0, N_("Off")}, {1, N_("On, Mode 1")}, {2, N_("On, Mode 2")}, {3, N_("On, Mode 3")}}; 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, + {0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), IfdId::olympusCsId, + SectionId::makerTags, undefined, -1, printExifVersion}, + {0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), IfdId::olympusCsId, + SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusNoYes)}, + {0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), IfdId::olympusCsId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), IfdId::olympusCsId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusExposureMode)}, + {0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0202, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusMeteringMode)}, + {0x0203, "ExposureShift", N_("Exposure Shift"), N_("Exposure shift"), IfdId::olympusCsId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x0300, "MacroMode", N_("Macro Mode"), N_("Macro mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusMacroMode)}, + {0x0301, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, printCs0x0301}, + {0x0302, "FocusProcess", N_("Focus Process"), N_("Focus process"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusFocusProcess)}, + {0x0303, "AFSearch", N_("AF Search"), N_("AF search"), IfdId::olympusCsId, SectionId::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, + {0x0304, "AFAreas", N_("AF Areas"), N_("AF areas"), IfdId::olympusCsId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), olympusCsId, makerTags, + {0x0305, "AFPointSelected", N_("AFPointSelected"), N_("AFPointSelected"), IfdId::olympusCsId, SectionId::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, + {0x0307, "AFFineTuneAdj", N_("AF Fine Tune Adjust"), N_("AF fine tune adjust"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0400, "FlashMode", N_("Flash Mode"), N_("Flash mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG_BITMASK(olympusFlashMode)}, + {0x0401, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation"), + IfdId::olympusCsId, SectionId::makerTags, signedRational, -1, printValue}, + {0x0403, "FlashRemoteControl", N_("Flash Remote Control"), N_("Flash remote control"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashRemoteControl)}, + {0x0404, "FlashControlMode", N_("Flash Control Mode"), N_("Flash control mode"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashControlMode)}, + {0x0405, "FlashIntensity", N_("Flash Intensity"), N_("Flash intensity"), IfdId::olympusCsId, SectionId::makerTags, + signedRational, -1, printValue}, + {0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), IfdId::olympusCsId, + SectionId::makerTags, signedRational, -1, printValue}, + {0x0500, "WhiteBalance", N_("White Balance 2"), N_("White balance 2"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusWhiteBalance)}, + {0x0501, "WhiteBalanceTemperature", N_("White Balance Temperature"), N_("White balance temperature"), + IfdId::olympusCsId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0502, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0503, "CustomSaturation", N_("Custom Saturation"), N_("Custom saturation"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0504, "ModifiedSaturation", N_("Modified Saturation"), N_("Modified saturation"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusModifiedSaturation)}, + {0x0505, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0506, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0507, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusColorSpace)}, + {0x0509, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusSceneMode)}, + {0x050a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x050b, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x050c, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x050d, "CompressionFactor", N_("Compression Factor"), N_("Compression factor"), IfdId::olympusCsId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x050f, "Gradation", N_("Gradation"), N_("Gradation"), IfdId::olympusCsId, SectionId::makerTags, signedShort, -1, + print0x050f}, + {0x0520, "PictureMode", N_("Picture Mode"), N_("Picture mode"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusPictureMode)}, + {0x0521, "PictureModeSaturation", N_("Picture Mode Saturation"), N_("Picture mode saturation"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0522, "PictureModeHue", N_("Picture Mode Hue"), N_("Picture mode hue"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), olympusCsId, makerTags, signedLong, + {0x0523, "PictureModeContrast", N_("Picture Mode Contrast"), N_("Picture mode contrast"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0524, "PictureModeSharpness", N_("Picture Mode Sharpness"), N_("Picture mode sharpness"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0525, "PictureModeBWFilter", N_("Picture Mode BW Filter"), N_("Picture mode BW filter"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeBWFilter)}, + {0x0526, "PictureModeTone", N_("Picture Mode Tone"), N_("Picture mode tone"), IfdId::olympusCsId, + SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeTone)}, + {0x0527, "NoiseFilter", N_("Noise Filter"), N_("Noise filter"), IfdId::olympusCsId, SectionId::makerTags, + signedShort, -1, print0x0527}, + {0x0529, "ArtFilter", N_("Art Filter"), N_("Art filter"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, + -1, print0x0529}, + {0x052c, "MagicFilter", N_("Magic Filter"), N_("Magic filter"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, print0x0529}, + {0x0600, "DriveMode", N_("Drive Mode"), N_("Drive mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), olympusCsId, makerTags, + {0x0601, "PanoramaMode", N_("Panorama Mode"), N_("Panorama mode"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0603, "Quality", N_("Image Quality 2"), N_("Image quality 2"), IfdId::olympusCsId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusCsQuality)}, + {0x0604, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusImageStabilization)}, + {0x0900, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), IfdId::olympusCsId, + SectionId::makerTags, signedLong, -1, printValue}, + {0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0903, "LevelGaugeRoll", N_("Level Gauge Roll"), N_("Level gauge roll"), IfdId::olympusCsId, SectionId::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)}, + {0x0904, "LevelGaugePitch", N_("Level Gauge Pitch"), N_("Level gauge pitch"), IfdId::olympusCsId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, // End of list marker - {0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), olympusCsId, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), IfdId::olympusCsId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListCs() { @@ -519,55 +540,59 @@ constexpr TagDetails olympusEqFlashModel[] = { }; 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, + {0x0000, "EquipmentVersion", N_("Equipment Version"), N_("Equipment version"), IfdId::olympusEqId, + SectionId::makerTags, undefined, -1, printExifVersion}, + {0x0100, "CameraType", N_("Camera Type"), N_("Camera type"), IfdId::olympusEqId, SectionId::makerTags, asciiString, -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, + {0x0101, "SerialNumber", N_("Serial Number"), N_("Serial number"), IfdId::olympusEqId, SectionId::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, + {0x0102, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), IfdId::olympusEqId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0103, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), IfdId::olympusEqId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), IfdId::olympusEqId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0201, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::olympusEqId, SectionId::makerTags, unsignedByte, -1, + print0x0201}, + {0x0202, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), IfdId::olympusEqId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0203, "LensModel", N_("Lens Model"), N_("Lens model"), IfdId::olympusEqId, SectionId::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 - {0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), olympusEqId, makerTags, + {0x0204, "LensFirmwareVersion", N_("Lens Firmware Version"), N_("Lens firmware version"), IfdId::olympusEqId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0205, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), + IfdId::olympusEqId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0206, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), + IfdId::olympusEqId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0207, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), IfdId::olympusEqId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0208, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), IfdId::olympusEqId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x020a, "MaxApertureAtCurrentFocal", N_("Max Aperture At Current Focal"), N_("Max aperture at current focal"), + IfdId::olympusEqId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x020b, "LensProperties", N_("Lens Properties"), N_("Lens properties"), IfdId::olympusEqId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0301, "Extender", N_("Extender"), N_("Extender"), IfdId::olympusEqId, SectionId::makerTags, unsignedByte, -1, + printEq0x0301}, + {0x0302, "ExtenderSerialNumber", N_("Extender Serial Number"), N_("Extender serial number"), IfdId::olympusEqId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0303, "ExtenderModel", N_("Extender Model"), N_("Extender model"), IfdId::olympusEqId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0304, "ExtenderFirmwareVersion", N_("Extender Firmware Version"), N_("Extender firmwareversion"), + IfdId::olympusEqId, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0403, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), IfdId::olympusEqId, SectionId::makerTags, asciiString, -1, printValue}, + {0x1000, "FlashType", N_("Flash Type"), N_("Flash type"), IfdId::olympusEqId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusEqFlashType)}, + {0x1001, "FlashModel", N_("Flash Model"), N_("Flash model"), IfdId::olympusEqId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashModel)}, + {0x1002, "FlashFirmwareVersion", N_("Flash Firmware Version"), N_("Flash firmware version"), IfdId::olympusEqId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x1003, "FlashSerialNumber", N_("FlashSerialNumber"), N_("FlashSerialNumber"), IfdId::olympusEqId, + SectionId::makerTags, asciiString, -1, printValue}, + // End of list marker + {0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), IfdId::olympusEqId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListEq() { @@ -592,36 +617,37 @@ constexpr TagDetailsBitmask olympusRdSettings[] = {{0x0001, N_("WB Color Temp")} {0x0080, N_("High Function")}, {0x0100, N_("Noise Reduction")}}; 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, + {0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), IfdId::olympusRdId, + SectionId::makerTags, undefined, -1, printExifVersion}, + {0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), IfdId::olympusRdId, + SectionId::makerTags, signedRational, -1, printValue}, + {0x0101, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), IfdId::olympusRdId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0102, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("WB fine adjustment"), IfdId::olympusRdId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0103, "GrayPoint", N_("Gray Point"), N_("Gray point"), IfdId::olympusRdId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0104, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), IfdId::olympusRdId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0105, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), IfdId::olympusRdId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0106, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), IfdId::olympusRdId, SectionId::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, + {0x0107, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), IfdId::olympusRdId, SectionId::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, + {0x0108, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::olympusRdId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRdColorSpace)}, + {0x0109, "Engine", N_("Engine"), N_("Engine"), IfdId::olympusRdId, SectionId::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, + {0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusRdId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x010b, "EditStatus", N_("Edit Status"), N_("Edit status"), IfdId::olympusRdId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRdEditStatus)}, + {0x010c, "Settings", N_("Settings"), N_("Settings"), IfdId::olympusRdId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusRdSettings)}, // End of list marker - {0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), olympusRdId, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), IfdId::olympusRdId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListRd() { @@ -650,52 +676,55 @@ constexpr TagDetails olympusRd2PMPictureTone[] = { {1, N_("Neutral")}, {2, N_("Sepia")}, {3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")}}; 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, + {0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), IfdId::olympusRd2Id, + SectionId::makerTags, undefined, -1, printExifVersion}, + {0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), IfdId::olympusRd2Id, + SectionId::makerTags, signedRational, -1, printValue}, + {0x0101, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRd2WhiteBalance)}, + {0x0102, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), IfdId::olympusRd2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0103, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("White balance fine adjustment"), IfdId::olympusRd2Id, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0104, "GrayPoint", N_("Gray Point"), N_("Gray point"), IfdId::olympusRd2Id, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0105, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), IfdId::olympusRd2Id, SectionId::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, + {0x0106, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), IfdId::olympusRd2Id, SectionId::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, + {0x0107, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), IfdId::olympusRd2Id, + SectionId::makerTags, signedShort, -1, printValue}, + {0x0108, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), IfdId::olympusRd2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0109, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRd2ColorSpace)}, + {0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x010b, "Engine", N_("Engine"), N_("Engine"), IfdId::olympusRd2Id, SectionId::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, + {0x010c, "PictureMode", N_("Picture Mode"), N_("Picture mode"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PictureMode)}, + {0x010d, "PMSaturation", N_("PM Saturation"), N_("Picture mode saturation"), IfdId::olympusRd2Id, + SectionId::makerTags, signedShort, -1, printValue}, + {0x010e, "PMContrast", N_("PM Contrast"), N_("Picture mode contrast"), IfdId::olympusRd2Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x010f, "PMSharpness", N_("PM Sharpness"), N_("Picture mode sharpness"), IfdId::olympusRd2Id, SectionId::makerTags, + signedShort, -1, printValue}, + {0x0110, "PM_BWFilter", N_("PM BW Filter"), N_("PM BW filter"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PM_BWFilter)}, + {0x0111, "PMPictureTone", N_("PM Picture Tone"), N_("PM picture tone"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PMPictureTone)}, + {0x0112, "Gradation", N_("Gradation"), N_("Gradation"), IfdId::olympusRd2Id, SectionId::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}, + {0x0113, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::olympusRd2Id, SectionId::makerTags, signedShort, + -1, printValue}, + {0x0119, "AutoGradation", N_("Auto Gradation"), N_("Auto gradation"), IfdId::olympusRd2Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0120, "PMNoiseFilter", N_("PM Noise Filter"), N_("Picture mode noise filter"), IfdId::olympusRd2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, // End of list marker - {0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), olympusRd2Id, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), IfdId::olympusRd2Id, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListRd2() { @@ -711,102 +740,111 @@ constexpr TagDetails olympusIpAspectRatio[] = {{1, "4:3"}, {2, "3:2"}, {3, "16:9 {6, "7:6"}, {7, "6:5"}, {8, "7:5"}, {9, "3:4"}}; 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, + {0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), + IfdId::olympusIpId, SectionId::makerTags, undefined, -1, printExifVersion}, + {0x0100, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), olympusIpId, makerTags, + {0x0102, "WB_RBLevels3000K", N_("WB RB Levels 3000K"), N_("WB RB levels 3000K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x010e, "WB_RBLevelsCWB1", N_("WB RB Levels CWB1"), N_("WB RB levels CWB1"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x010f, "WB_RBLevelsCWB2", N_("WB RB Levels CWB2"), N_("WB RB levels CWB2"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0110, "WB_RBLevelsCWB3", N_("WB RB Levels CWB3"), N_("WB RB levels CWB3"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0111, "WB_RBLevelsCWB4", N_("WB RB Levels CWB4"), N_("WB RB levels CWB4"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0113, "WB_GLevel3000K", N_("WB G Level 3000K"), N_("WB G level 3000K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), olympusIpId, makerTags, + {0x0114, "WB_GLevel3300K", N_("WB G Level 3300K"), N_("WB G level 3300K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), olympusIpId, makerTags, + {0x0115, "WB_GLevel3600K", N_("WB G Level 3600K"), N_("WB G level 3600K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), olympusIpId, makerTags, + {0x0116, "WB_GLevel3900K", N_("WB G Level 3900K"), N_("WB G level 3900K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), olympusIpId, makerTags, + {0x0117, "WB_GLevel4000K", N_("WB G Level 4000K"), N_("WB G level 4000K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), olympusIpId, makerTags, + {0x0118, "WB_GLevel4300K", N_("WB G Level 4300K"), N_("WB G level 4300K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), olympusIpId, makerTags, + {0x0119, "WB_GLevel4500K", N_("WB G Level 4500K"), N_("WB G level 4500K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), olympusIpId, makerTags, + {0x011a, "WB_GLevel4800K", N_("WB G Level 4800K"), N_("WB G level 4800K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), olympusIpId, makerTags, + {0x011b, "WB_GLevel5300K", N_("WB G Level 5300K"), N_("WB G level 5300K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), olympusIpId, makerTags, + {0x011c, "WB_GLevel6000K", N_("WB G Level 6000K"), N_("WB G level 6000K"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), olympusIpId, makerTags, + {0x011d, "WB_GLevel6600K", N_("WB G Level 6600K"), N_("WB G level 6600K"), IfdId::olympusIpId, SectionId::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, + {0x011e, "WB_GLevel7500K", N_("WB G Level 7500K"), N_("WB G level 7500K"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x011f, "WB_GLevel", N_("WB G Level"), N_("WB G level"), IfdId::olympusIpId, SectionId::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, + {0x0200, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0300, "Enhancer", N_("Enhancer"), N_("Enhancer"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusIpId, makerTags, unsignedShort, -1, + {0x0301, "EnhancerValues", N_("Enhancer Values"), N_("Enhancer values"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0600, "BlackLevel", N_("Black Level"), N_("Black level"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0610, "GainBase", N_("Gain Base"), N_("Gain base"), IfdId::olympusIpId, SectionId::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, + {0x0611, "ValidBits", N_("Valid Bits"), N_("Valid bits"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), IfdId::olympusIpId, SectionId::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, + {0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), IfdId::olympusIpId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), IfdId::olympusIpId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x1010, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)}, + {0x1011, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1012, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x101c, "MultipleExposureMode", N_("Multiple Exposure Mode"), N_("Multiple exposure mode"), IfdId::olympusIpId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusIpMultipleExposureMode)}, + {0x1112, "AspectRatio", N_("Aspect Ratio"), N_("Aspect ratio"), IfdId::olympusIpId, SectionId::makerTags, + unsignedByte, -1, EXV_PRINT_TAG(olympusIpAspectRatio)}, + {0x1113, "AspectFrame", N_("Aspect Frame"), N_("Aspect frame"), IfdId::olympusIpId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x1200, "FaceDetect", N_("Face Detect"), N_("Face detect"), IfdId::olympusIpId, SectionId::makerTags, unsignedLong, + -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1201, "FaceDetectArea", N_("Face Detect Area"), N_("Face detect area"), IfdId::olympusIpId, SectionId::makerTags, + signedShort, -1, printValue}, // End of list marker - {0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), olympusIpId, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), IfdId::olympusIpId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListIp() { @@ -817,45 +855,47 @@ const TagInfo* OlympusMakerNote::tagListIp() { constexpr TagDetails olympusFiExternalFlashBounce[] = {{0, N_("Bounce or Off")}, {1, N_("Direct")}}; 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, + {0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), IfdId::olympusFiId, + SectionId::makerTags, undefined, -1, printExifVersion}, + {0x0209, "AutoFocus", N_("Auto Focus"), N_("Auto focus"), IfdId::olympusFiId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x0210, "SceneDetect", N_("Scene Detect"), N_("Scene detect"), IfdId::olympusFiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0211, "SceneArea", N_("Scene Area"), N_("Scene area"), IfdId::olympusFiId, SectionId::makerTags, unsignedLong, -1, printValue}, - {0x0303, "FocusStepInfinity", N_("Focus Step Infinity"), N_("Focus step infinity"), olympusFiId, makerTags, + {0x0212, "SceneDetectData", N_("Scene Detect Data"), N_("Scene detect data"), IfdId::olympusFiId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0300, "ZoomStepCount", N_("Zoom Step Count"), N_("Zoom step count"), IfdId::olympusFiId, SectionId::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)}, + {0x0301, "FocusStepCount", N_("Focus Step Count"), N_("Focus step count"), IfdId::olympusFiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0303, "FocusStepInfinity", N_("Focus Step Infinity"), N_("Focus step infinity"), IfdId::olympusFiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0304, "FocusStepNear", N_("Focus Step Near"), N_("Focus step near"), IfdId::olympusFiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0305, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), IfdId::olympusFiId, SectionId::makerTags, + unsignedRational, -1, print0x0305}, + {0x0308, "AFPoint", N_("AF Point"), N_("AF point"), IfdId::olympusFiId, SectionId::makerTags, unsignedShort, -1, + print0x0308}, + {0x1201, "ExternalFlash", N_("External Flash"), N_("External flash"), IfdId::olympusFiId, SectionId::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}, + IfdId::olympusFiId, SectionId::makerTags, signedRational, -1, printValue}, + {0x1204, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), IfdId::olympusFiId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFiExternalFlashBounce)}, + {0x1205, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), IfdId::olympusFiId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x1208, "InternalFlash", N_("Internal Flash"), N_("Internal flash"), IfdId::olympusFiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)}, + {0x1209, "ManualFlash", N_("Manual Flash"), N_("Manual flash"), IfdId::olympusFiId, SectionId::makerTags, + unsignedShort, -1, print0x1209}, + {0x1500, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), IfdId::olympusFiId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x1600, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::olympusFiId, + SectionId::makerTags, unsignedLong, -1, printValue}, // End of list marker - {0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), olympusFiId, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), IfdId::olympusFiId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListFi() { @@ -863,11 +903,11 @@ const TagInfo* OlympusMakerNote::tagListFi() { } constexpr TagInfo OlympusMakerNote::tagInfoFe_[] = { - {0x0100, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusFe1Id, makerTags, - asciiString, -1, printValue}, + {0x0100, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), IfdId::olympusFe1Id, + SectionId::makerTags, asciiString, -1, printValue}, // End of list marker - {0xffff, "(UnknownOlympusFeTag)", "(UnknownOlympusFeTag)", N_("Unknown OlympusFe tag"), olympusFe1Id, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusFeTag)", "(UnknownOlympusFeTag)", N_("Unknown OlympusFe tag"), IfdId::olympusFe1Id, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListFe() { @@ -889,74 +929,81 @@ constexpr TagDetails olympusRiLightSource[] = {{0, N_("Unknown")}, {512, N_("Custom 1-4")}}; 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}, + {0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), IfdId::olympusRiId, SectionId::makerTags, + undefined, -1, printValue}, + {0x0100, "WB_RBLevelsUsed", N_("WB_RB Levels Used"), N_("WB_RB levels used"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0110, "WB_RBLevelsAuto", N_("WB_RB Levels Auto"), N_("WB_RB levels auto"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0120, "WB_RBLevelsShade", N_("WB_RB Levels Shade"), N_("WB_RB levels shade"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0121, "WB_RBLevelsCloudy", N_("WB_RB Levels Cloudy"), N_("WB_RB levels cloudy"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0122, "WB_RBLevelsFineWeather", N_("WB_RB Levels Fine Weather"), N_("WB_RB levels fine weather"), + IfdId::olympusRiId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0123, "WB_RBLevelsTungsten", N_("WB_RB Levels Tungsten"), N_("WB_RB levels tungsten"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, {0x0124, "WB_RBLevelsEveningSunlight", N_("WB_RB Levels Evening Sunlight"), N_("WB_RB levels evening sunlight"), - olympusRiId, makerTags, unsignedShort, -1, printValue}, + IfdId::olympusRiId, SectionId::makerTags, unsignedShort, -1, printValue}, {0x0130, "WB_RBLevelsDaylightFluor", N_("WB_RB Levels Daylight Fluor"), N_("WB_RB levels daylight fluor"), - olympusRiId, makerTags, unsignedShort, -1, printValue}, + IfdId::olympusRiId, SectionId::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}, + IfdId::olympusRiId, SectionId::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}, + IfdId::olympusRiId, SectionId::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, + IfdId::olympusRiId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0200, "ColorMatrix2", N_("Color Matrix2"), N_("Color matrix 2"), IfdId::olympusRiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), IfdId::olympusRiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), IfdId::olympusRiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0600, "BlackLevel2", N_("Black Level 2"), N_("Black level 2"), IfdId::olympusRiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x0601, "YCbCrCoefficients", N_("YCbCr Coefficients"), N_("YCbCr coefficients"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0611, "ValidPixelDepth", N_("Valid Pixel Depth"), N_("Valid pixel depth"), IfdId::olympusRiId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), IfdId::olympusRiId, SectionId::makerTags, unsignedShort, -1, printValue}, - {0x0600, "BlackLevel2", N_("Black Level 2"), N_("Black level 2"), olympusRiId, makerTags, unsignedShort, -1, + {0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), IfdId::olympusRiId, SectionId::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, + {0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), IfdId::olympusRiId, SectionId::makerTags, unsignedLong, -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, + {0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), IfdId::olympusRiId, SectionId::makerTags, unsignedLong, -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, + {0x1000, "LightSource", N_("Light Source"), N_("Light source"), IfdId::olympusRiId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(olympusRiLightSource)}, + {0x1001, "WhiteBalanceComp", N_("White Balance Comp"), N_("White balance comp"), IfdId::olympusRiId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x1010, "SaturationSetting", N_("Saturation Setting"), N_("Saturation setting"), IfdId::olympusRiId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x1011, "HueSetting", N_("Hue Setting"), N_("Hue setting"), IfdId::olympusRiId, SectionId::makerTags, signedShort, -1, printValue}, - {0x2002, "CMWhiteBalanceComp", N_("CM White Balance Comp"), N_("CM white balance comp"), olympusRiId, makerTags, - signedShort, -1, printValue}, + {0x1012, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), IfdId::olympusRiId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x1013, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), IfdId::olympusRiId, + SectionId::makerTags, signedShort, -1, printValue}, + {0x2000, "CMExposureCompensation", N_("CM Exposure Compensation"), N_("CM exposure compensation"), + IfdId::olympusRiId, SectionId::makerTags, signedRational, -1, printValue}, + {0x2001, "CMWhiteBalance", N_("CM White Balance"), N_("CM white balance"), IfdId::olympusRiId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x2002, "CMWhiteBalanceComp", N_("CM White Balance Comp"), N_("CM white balance comp"), IfdId::olympusRiId, + SectionId::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, + IfdId::olympusRiId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x2020, "CMSaturation", N_("CM Saturation"), N_("CM saturation"), IfdId::olympusRiId, SectionId::makerTags, + signedShort, -1, printValue}, + {0x2021, "CMHue", N_("CM Hue"), N_("CM hue"), IfdId::olympusRiId, SectionId::makerTags, signedShort, -1, printValue}, + {0x2022, "CMContrast", N_("CM Contrast"), N_("CM contrast"), IfdId::olympusRiId, SectionId::makerTags, signedShort, + -1, printValue}, + {0x2023, "CMSharpness", N_("CM Sharpness"), N_("CM sharpness"), IfdId::olympusRiId, SectionId::makerTags, + signedShort, -1, printValue}, // End of list marker - {0xffff, "(UnknownOlympusRiTag)", "(UnknownOlympusRiTag)", N_("Unknown OlympusRi tag"), olympusRiId, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownOlympusRiTag)", "(UnknownOlympusRiTag)", N_("Unknown OlympusRi tag"), IfdId::olympusRiId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* OlympusMakerNote::tagListRi() { diff --git a/src/orfimage.cpp b/src/orfimage.cpp index 6e5e08095a..a284c5fcd1 100644 --- a/src/orfimage.cpp +++ b/src/orfimage.cpp @@ -126,7 +126,7 @@ WriteMethod OrfParser::encode(BasicIo& io, const byte* pData, size_t size, ByteO // Delete IFDs which do not occur in TIFF images static constexpr auto filteredIfds = { - panaRawId, + IfdId::panaRawId, }; for (auto&& filteredIfd : filteredIfds) { #ifdef EXIV2_DEBUG_MESSAGES diff --git a/src/panasonicmn_int.cpp b/src/panasonicmn_int.cpp index 39bd01e536..16482c6bcf 100644 --- a/src/panasonicmn_int.cpp +++ b/src/panasonicmn_int.cpp @@ -257,192 +257,216 @@ constexpr TagDetails panasonicFlashFired[] = {{1, N_("No")}, {2, N_("Yes")}}; // Panasonic MakerNote Tag Info constexpr TagInfo PanasonicMakerNote::tagInfo_[] = { - {0x0001, "Quality", N_("Quality"), N_("Image Quality"), panasonicId, makerTags, unsignedShort, -1, + {0x0001, "Quality", N_("Quality"), N_("Image Quality"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicQuality)}, - {0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), panasonicId, makerTags, undefined, -1, + {0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), IfdId::panasonicId, + SectionId::makerTags, undefined, -1, printValue}, + {0x0003, "WhiteBalance", N_("White Balance"), N_("White balance setting"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicWhiteBalance)}, + {0x0004, "0x0004", "0x0004", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -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, + {0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(panasonicFocusMode)}, + {0x000f, "AFMode", N_("AF Mode"), N_("AF mode"), IfdId::panasonicId, SectionId::makerTags, unsignedByte, -1, + print0x000f}, + {0x001a, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicImageStabilizer)}, + {0x001c, "Macro", N_("Macro"), N_("Macro mode"), IfdId::panasonicId, SectionId::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, + {0x001f, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)}, + {0x0020, "Audio", N_("Audio"), N_("Audio"), IfdId::panasonicId, SectionId::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}, + {0x0021, "DataDump", N_("Data Dump"), N_("Data dump"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printValue}, + {0x0022, "0x0022", "0x0022", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), IfdId::panasonicId, + SectionId::makerTags, signedShort, -1, print0x0023}, + {0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), IfdId::panasonicId, SectionId::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, + IfdId::panasonicId, SectionId::makerTags, undefined, -1, printPanasonicText}, + {0x0026, "ExifVersion", "Exif Version", N_("Exif version"), IfdId::panasonicId, SectionId::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)}, + {0x0027, "0x0027", "0x0027", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), IfdId::panasonicId, SectionId::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, + N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), + IfdId::panasonicId, SectionId::makerTags, unsignedLong, -1, print0x0029}, + {0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(panasonicBurstMode)}, + {0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), IfdId::panasonicId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)}, + {0x002d, "NoiseReduction", N_("NoiseReduction"), N_("Noise reduction"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicNoiseReduction)}, + {0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(panasonicSelfTimer)}, + {0x002f, "0x002f", "0x002f", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -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, + {0x0030, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::panasonicId, SectionId::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, + {0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)}, + {0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(panasonicColorMode)}, + {0x0033, "BabyAge1", N_("Baby Age 1"), N_("Baby (or pet) age 1"), IfdId::panasonicId, SectionId::makerTags, + asciiString, -1, print0x0033}, + {0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)}, + {0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)}, + {0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, print0x0036}, + {0x0039, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, + printValue}, + {0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)}, + {0x003b, "TextStamp1", N_("Text Stamp 1"), N_("Text Stamp 1"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, print0x003c}, + {0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x003e, "TextStamp2", N_("Text Stamp 2"), N_("Text Stamp 2"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), IfdId::panasonicId, SectionId::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, + {0x0040, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, printValue}, + {0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::panasonicId, SectionId::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, + {0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)}, - {0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperature 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)}, + {0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperature in Kelvin"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)}, + {0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), IfdId::panasonicId, SectionId::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, + IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicLongShutterNoiseReduction)}, + {0x004b, "ImageWidth", N_("Image width"), N_("Image width"), IfdId::panasonicId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x004c, "ImageHeight", N_("Image height"), N_("Image height"), IfdId::panasonicId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), IfdId::panasonicId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), IfdId::panasonicId, + SectionId::makerTags, undefined, -1, printValue}, + {0x0051, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::panasonicId, SectionId::makerTags, asciiString, -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, + {0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), IfdId::panasonicId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), IfdId::panasonicId, SectionId::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, + {0x0054, "AccessorySerialNumber", N_("Accessory Serial Number"), N_("Accessory Serial Number"), IfdId::panasonicId, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0059, "Transform1", N_("Transform 1"), N_("Transform 1"), IfdId::panasonicId, SectionId::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, + {0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)}, + {0x0060, "LensFirmwareVersion", N_("Firmware Version of the Lens"), N_("Firmware Version of the Lens"), + IfdId::panasonicId, SectionId::makerTags, undefined, -1, printValue}, + {0x0061, "FaceRecInfo", N_("Face recognition info"), N_("Face recognition info"), IfdId::panasonicId, + SectionId::makerTags, undefined, -1, printValue}, + {0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)}, + {0x0065, "Title", N_("Title"), N_("Title"), IfdId::panasonicId, SectionId::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, + {0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), IfdId::panasonicId, SectionId::makerTags, + undefined, -1, printPanasonicText}, + {0x0067, "Location", N_("Location"), N_("Location"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printPanasonicText}, + {0x0069, "Country", N_("Country"), N_("Country"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printPanasonicText}, + {0x006b, "State", N_("State"), N_("State"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printPanasonicText}, + {0x006d, "City", N_("City"), N_("City"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printPanasonicText}, + {0x006f, "Landmark", N_("Landmark"), N_("Landmark"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printPanasonicText}, + {0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), IfdId::panasonicId, + SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)}, + {0x0077, "BurstSpeed", N_("Burst Speed"), N_("Burst Speed in pictures per second"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)}, + {0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)}, + {0x0080, "City2", N_("City2"), N_("City2"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, + printPanasonicText}, + {0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printPressure}, + {0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)}, + {0x008a, "ShadingCompensation", N_("Shading Compensation"), N_("Shading Compensation"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShadingCompensation)}, + {0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printAccelerometer}, + {0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printAccelerometer}, + {0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printAccelerometer}, + {0x008f, "CameraOrientation", N_("Camera Orientation"), N_("Camera Orientation"), IfdId::panasonicId, + SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicCameraOrientation)}, + {0x0090, "RollAngle", N_("Roll Angle"), N_("degress of clockwise camera rotation"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printRollAngle}, + {0x0091, "PitchAngle", N_("Pitch Angle"), N_("degress of upwards camera tilt"), IfdId::panasonicId, + SectionId::makerTags, unsignedShort, -1, printPitchAngle}, + {0x0093, "SweepPanoramaDirection", N_("Sweep Panorama Direction"), N_("Sweep Panorama Direction"), + IfdId::panasonicId, SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicSweepPanoramaDirection)}, + {0x0094, "PanoramaFieldOfView", N_("Field of View of Panorama"), N_("Field of View of Panorama"), + IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), IfdId::panasonicId, SectionId::makerTags, + unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)}, + {0x009d, "InternalNDFilter", N_("Internal ND Filter"), N_("Internal ND Filter"), IfdId::panasonicId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x009e, "HDR", N_("HDR"), N_("HDR"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, + EXV_PRINT_TAG(panasonicHDR)}, + {0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)}, + {0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), IfdId::panasonicId, + SectionId::makerTags, unsignedRational, -1, printValue}, + {0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), IfdId::panasonicId, SectionId::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}, + {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::panasonicId, SectionId::makerTags, undefined, + -1, printValue}, + {0x4449, "0x4449", "0x4449", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, printValue}, + {0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), IfdId::panasonicId, + SectionId::makerTags, undefined, -1, printExifVersion}, + {0x8001, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(panasonicShootingMode)}, + {0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, printValue}, + {0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)}, + {0x8008, "TextStamp3", N_("Text Stamp 3"), N_("Text Stamp 3"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x8009, "TextStamp4", N_("Text Stamp 4"), N_("Text Stamp 4"), IfdId::panasonicId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, + {0x8010, "BabyAge2", N_("Baby Age 2"), N_("Baby (or pet) age 2"), IfdId::panasonicId, SectionId::makerTags, + asciiString, -1, print0x0033}, + {0x8012, "Transform2", N_("Transform 2"), N_("Transform 2"), IfdId::panasonicId, SectionId::makerTags, undefined, + -1, printValue}, // End of list marker {0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), - panasonicId, makerTags, asciiString, -1, printValue}, + IfdId::panasonicId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* PanasonicMakerNote::tagList() { @@ -613,47 +637,55 @@ std::ostream& PanasonicMakerNote::printPitchAngle(std::ostream& os, const Value& // Panasonic MakerNote Tag Info constexpr TagInfo PanasonicMakerNote::tagInfoRaw_[] = { - {0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, + {0x0001, "Version", N_("Version"), N_("Panasonic raw version"), IfdId::panaRawId, SectionId::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, + {0x0002, "SensorWidth", N_("Sensor Width"), N_("Sensor width"), IfdId::panaRawId, SectionId::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, + {0x0003, "SensorHeight", N_("Sensor Height"), N_("Sensor height"), IfdId::panaRawId, SectionId::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, + {0x0004, "SensorTopBorder", N_("Sensor Top Border"), N_("Sensor top border"), IfdId::panaRawId, SectionId::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, + {0x0005, "SensorLeftBorder", N_("Sensor Left Border"), N_("Sensor left border"), IfdId::panaRawId, + SectionId::panaRaw, unsignedShort, -1, printValue}, + {0x0006, "ImageHeight", N_("Image Height"), N_("Image height"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, + -1, printValue}, + {0x0007, "ImageWidth", N_("Image Width"), N_("Image width"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, + -1, printValue}, + {0x0011, "RedBalance", N_("Red Balance"), N_("Red balance (found in Digilux 2 RAW images)"), IfdId::panaRawId, + SectionId::panaRaw, unsignedShort, -1, printValue}, + {0x0012, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, + -1, printValue}, + {0x0017, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, + -1, printValue}, + {0x0024, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, + -1, printValue}, + {0x0025, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), IfdId::panaRawId, SectionId::panaRaw, + unsignedShort, -1, printValue}, + {0x0026, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), IfdId::panaRawId, SectionId::panaRaw, + unsignedShort, -1, printValue}, + {0x002e, "PreviewImage", N_("Preview Image"), N_("Preview image"), IfdId::panaRawId, SectionId::panaRaw, undefined, + -1, printValue}, + {0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording equipment"), IfdId::panaRawId, + SectionId::panaRaw, asciiString, -1, printValue}, + {0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment"), IfdId::panaRawId, + SectionId::panaRaw, asciiString, -1, printValue}, + {0x0111, "StripOffsets", N_("Strip Offsets"), N_("Strip offsets"), IfdId::panaRawId, SectionId::panaRaw, + unsignedLong, -1, printValue}, + {0x0112, "Orientation", N_("Orientation"), N_("Orientation"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, + -1, print0x0112}, + {0x0116, "RowsPerStrip", N_("Rows Per Strip"), N_("The number of rows per strip"), IfdId::panaRawId, + SectionId::panaRaw, unsignedShort, -1, printValue}, + {0x0117, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip byte counts"), IfdId::panaRawId, SectionId::panaRaw, unsignedLong, -1, printValue}, + {0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), IfdId::panaRawId, SectionId::panaRaw, + unsignedLong, -1, printValue}, + {0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), IfdId::panaRawId, SectionId::panaRaw, + unsignedLong, -1, printValue}, + {0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), IfdId::panaRawId, + SectionId::panaRaw, unsignedLong, -1, printValue}, // End of list marker - {0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), panaRawId, panaRaw, - asciiString, -1, printValue}, + {0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), IfdId::panaRawId, + SectionId::panaRaw, asciiString, -1, printValue}, }; const TagInfo* PanasonicMakerNote::tagListRaw() { diff --git a/src/pentaxmn_int.cpp b/src/pentaxmn_int.cpp index f60d832702..11b49d5b7e 100644 --- a/src/pentaxmn_int.cpp +++ b/src/pentaxmn_int.cpp @@ -1274,177 +1274,184 @@ std::ostream& printLensType(std::ostream& os, const Value& value, const ExifData // Pentax MakerNote Tag Info constexpr TagInfo PentaxMakerNote::tagInfo_[] = { - {0x0000, "Version", N_("Version"), N_("Pentax Makernote version"), pentaxId, makerTags, undefined, -1, - printVersion}, - {0x0001, "Mode", N_("Shooting mode"), N_("Camera shooting mode"), 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}, + {0x0000, "Version", N_("Version"), N_("Pentax Makernote version"), IfdId::pentaxId, SectionId::makerTags, undefined, + -1, printVersion}, + {0x0001, "Mode", N_("Shooting mode"), N_("Camera shooting mode"), IfdId::pentaxId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(pentaxShootingMode)}, + {0x0002, "PreviewResolution", N_("Resolution of a preview image"), N_("Resolution of a preview image"), + IfdId::pentaxId, SectionId::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}, + IfdId::pentaxId, SectionId::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}, - {0x0005, "ModelID", N_("Model identification"), N_("Pentax model identification"), pentaxId, makerTags, - unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)}, - {0x0006, "Date", N_("Date"), N_("Date"), pentaxId, makerTags, undefined, -1, printDate}, - {0x0007, "Time", N_("Time"), N_("Time"), pentaxId, makerTags, undefined, -1, printTime}, - {0x0008, "Quality", N_("Image quality"), N_("Image quality settings"), 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)}, + IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, + {0x0005, "ModelID", N_("Model identification"), N_("Pentax model identification"), IfdId::pentaxId, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)}, + {0x0006, "Date", N_("Date"), N_("Date"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printDate}, + {0x0007, "Time", N_("Time"), N_("Time"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printTime}, + {0x0008, "Quality", N_("Image quality"), N_("Image quality settings"), IfdId::pentaxId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(pentaxQuality)}, + {0x0009, "Size", N_("Image size"), N_("Image size settings"), IfdId::pentaxId, SectionId::makerTags, unsignedLong, + -1, EXV_PRINT_TAG(pentaxSize)}, /* Some missing ! */ - {0x000c, "Flash", N_("Flash mode"), N_("Flash mode settings"), 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)}, - {0x000e, "AFPoint", N_("AF point"), N_("Selected AF point"), 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)}, + {0x000c, "Flash", N_("Flash mode"), N_("Flash mode settings"), IfdId::pentaxId, SectionId::makerTags, unsignedLong, + -1, EXV_PRINT_TAG(pentaxFlash)}, + {0x000d, "Focus", N_("Focus mode"), N_("Focus mode settings"), IfdId::pentaxId, SectionId::makerTags, unsignedLong, + -1, EXV_PRINT_TAG(pentaxFocus)}, + {0x000e, "AFPoint", N_("AF point"), N_("Selected AF point"), IfdId::pentaxId, SectionId::makerTags, unsignedLong, + -1, EXV_PRINT_TAG(pentaxAFPoint)}, + {0x000F, "AFPointInFocus", N_("AF point in focus"), N_("AF point in focus"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPointFocus)}, /* Some missing ! */ - {0x0012, "ExposureTime", N_("Exposure time"), N_("Exposure time"), pentaxId, makerTags, unsignedLong, -1, - printExposure}, - {0x0013, "FNumber", N_("F-Number"), N_("F-Number"), pentaxId, makerTags, unsignedLong, -1, printFValue}, - {0x0014, "ISO", N_("ISO sensitivity"), N_("ISO sensitivity settings"), pentaxId, makerTags, unsignedLong, -1, - EXV_PRINT_TAG(pentaxISO)}, + {0x0012, "ExposureTime", N_("Exposure time"), N_("Exposure time"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, printExposure}, + {0x0013, "FNumber", N_("F-Number"), N_("F-Number"), IfdId::pentaxId, SectionId::makerTags, unsignedLong, -1, + printFValue}, + {0x0014, "ISO", N_("ISO sensitivity"), N_("ISO sensitivity settings"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, EXV_PRINT_TAG(pentaxISO)}, /* Some missing ! */ - {0x0016, "ExposureCompensation", N_("Exposure compensation"), N_("Exposure compensation"), pentaxId, makerTags, - unsignedLong, -1, printCompensation}, + {0x0016, "ExposureCompensation", N_("Exposure compensation"), N_("Exposure compensation"), IfdId::pentaxId, + SectionId::makerTags, unsignedLong, -1, printCompensation}, /* Some missing ! */ - {0x0017, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), pentaxId, makerTags, undefined, -1, - EXV_PRINT_TAG(pentaxMeteringMode)}, - {0x0018, "AutoBracketing", N_("AutoBracketing"), N_("AutoBracketing"), pentaxId, makerTags, undefined, -1, - printBracketing}, - {0x0019, "WhiteBalance", N_("White balance"), N_("White balance"), 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)}, - {0x001b, "BlueBalance", N_("Blue balance"), N_("Blue color balance"), pentaxId, makerTags, unsignedLong, -1, - printValue}, - {0x001c, "RedBalance", N_("Red balance"), N_("Red color balance"), pentaxId, makerTags, unsignedLong, -1, - printValue}, - {0x001d, "FocalLength", N_("FocalLength"), N_("FocalLength"), pentaxId, makerTags, undefined, -1, printFocalLength}, - {0x001e, "DigitalZoom", N_("Digital zoom"), N_("Digital zoom"), pentaxId, makerTags, unsignedLong, -1, printValue}, - {0x001f, "Saturation", N_("Saturation"), N_("Saturation"), pentaxId, makerTags, undefined, -1, + {0x0017, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), IfdId::pentaxId, SectionId::makerTags, undefined, + -1, EXV_PRINT_TAG(pentaxMeteringMode)}, + {0x0018, "AutoBracketing", N_("AutoBracketing"), N_("AutoBracketing"), IfdId::pentaxId, SectionId::makerTags, + undefined, -1, printBracketing}, + {0x0019, "WhiteBalance", N_("White balance"), N_("White balance"), IfdId::pentaxId, SectionId::makerTags, undefined, + -1, EXV_PRINT_TAG(pentaxWhiteBalance)}, + {0x001a, "WhiteBalanceMode", N_("White balance mode"), N_("White balance mode"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalanceMode)}, + {0x001b, "BlueBalance", N_("Blue balance"), N_("Blue color balance"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x001c, "RedBalance", N_("Red balance"), N_("Red color balance"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x001d, "FocalLength", N_("FocalLength"), N_("FocalLength"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, + printFocalLength}, + {0x001e, "DigitalZoom", N_("Digital zoom"), N_("Digital zoom"), IfdId::pentaxId, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0x001f, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSaturation)}, - {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), pentaxId, makerTags, undefined, -1, + {0x0020, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxContrast)}, - {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), pentaxId, makerTags, undefined, -1, + {0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSharpness)}, - {0x0022, "Location", N_("Location"), N_("Location"), pentaxId, makerTags, undefined, -1, + {0x0022, "Location", N_("Location"), N_("Location"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxLocation)}, - {0x0023, "Hometown", N_("Hometown"), N_("Home town"), pentaxId, makerTags, undefined, -1, + {0x0023, "Hometown", N_("Hometown"), N_("Home town"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)}, - {0x0024, "Destination", N_("Destination"), N_("Destination"), pentaxId, makerTags, undefined, -1, + {0x0024, "Destination", N_("Destination"), N_("Destination"), IfdId::pentaxId, SectionId::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)}, - {0x0026, "DestinationDST", N_("Destination DST"), N_("Whether day saving time is active in destination"), pentaxId, - makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)}, - {0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), N_("DSPFirmwareVersion"), pentaxId, makerTags, - unsignedByte, -1, printValue}, /* TODO: Decoding missing */ - {0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), N_("CPUFirmwareVersion"), pentaxId, makerTags, - unsignedByte, -1, printValue}, /* TODO: Decoding missing */ - {0x0029, "FrameNumber", N_("Frame number"), N_("Frame number"), pentaxId, makerTags, undefined, -1, printValue}, + {0x0025, "HometownDST", N_("Hometown DST"), N_("Whether day saving time is active in home town"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)}, + {0x0026, "DestinationDST", N_("Destination DST"), N_("Whether day saving time is active in destination"), + IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)}, + {0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), N_("DSPFirmwareVersion"), IfdId::pentaxId, + SectionId::makerTags, unsignedByte, -1, printValue}, /* TODO: Decoding missing */ + {0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), N_("CPUFirmwareVersion"), IfdId::pentaxId, + SectionId::makerTags, unsignedByte, -1, printValue}, /* TODO: Decoding missing */ + {0x0029, "FrameNumber", N_("Frame number"), N_("Frame number"), IfdId::pentaxId, SectionId::makerTags, undefined, + -1, printValue}, /* Some missing ! */ {0x002d, "EffectiveLV", N_("Light value"), N_("Camera calculated light value, includes exposure compensation"), - pentaxId, makerTags, unsignedShort, -1, printValue}, + IfdId::pentaxId, SectionId::makerTags, unsignedShort, -1, printValue}, /* Some missing ! */ - {0x0032, "ImageProcessing", N_("Image processing"), N_("Image processing"), 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)}, - {0x0034, "DriveMode", N_("Drive mode"), N_("Drive mode"), pentaxId, makerTags, undefined, -1, + {0x0032, "ImageProcessing", N_("Image processing"), N_("Image processing"), IfdId::pentaxId, SectionId::makerTags, + undefined, -1, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)}, + {0x0033, "PictureMode", N_("Picture mode"), N_("Picture mode"), IfdId::pentaxId, SectionId::makerTags, undefined, + -1, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)}, + {0x0034, "DriveMode", N_("Drive mode"), N_("Drive mode"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)}, /* Some missing ! */ - {0x0037, "ColorSpace", N_("Color space"), N_("Color space"), pentaxId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(pentaxColorSpace)}, - {0x0038, "ImageAreaOffset", N_("Image area offset"), N_("Image area offset"), pentaxId, makerTags, unsignedLong, -1, - printValue}, - {0x0039, "RawImageSize", N_("Raw image size"), N_("Raw image size"), pentaxId, makerTags, unsignedLong, -1, - printValue}, + {0x0037, "ColorSpace", N_("Color space"), N_("Color space"), IfdId::pentaxId, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(pentaxColorSpace)}, + {0x0038, "ImageAreaOffset", N_("Image area offset"), N_("Image area offset"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0x0039, "RawImageSize", N_("Raw image size"), N_("Raw image size"), IfdId::pentaxId, SectionId::makerTags, + unsignedLong, -1, printValue}, /* Some missing ! */ - {0x003e, "PreviewImageBorders", N_("Preview image borders"), N_("Preview image borders"), pentaxId, makerTags, - unsignedByte, -1, printValue}, - {0x003f, "LensType", N_("Lens type"), N_("Lens type"), pentaxId, makerTags, unsignedByte, -1, + {0x003e, "PreviewImageBorders", N_("Preview image borders"), N_("Preview image borders"), IfdId::pentaxId, + SectionId::makerTags, unsignedByte, -1, printValue}, + {0x003f, "LensType", N_("Lens type"), N_("Lens type"), IfdId::pentaxId, SectionId::makerTags, unsignedByte, -1, printLensType}, // #816 - {0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), N_("Sensitivity adjust"), pentaxId, makerTags, unsignedLong, - -1, printValue}, - {0x0041, "DigitalFilter", N_("Digital filter"), N_("Digital filter"), pentaxId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(pentaxOffOn)}, + {0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), N_("Sensitivity adjust"), IfdId::pentaxId, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0041, "DigitalFilter", N_("Digital filter"), N_("Digital filter"), IfdId::pentaxId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)}, /* Some missing ! */ - {0x0047, "Temperature", N_("Temperature"), N_("Camera temperature"), pentaxId, makerTags, signedByte, -1, - printTemperature}, - {0x0048, "AELock", N_("AE lock"), N_("AE lock"), pentaxId, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(pentaxOffOn)}, - {0x0049, "NoiseReduction", N_("Noise reduction"), N_("Noise reduction"), pentaxId, makerTags, unsignedShort, -1, + {0x0047, "Temperature", N_("Temperature"), N_("Camera temperature"), IfdId::pentaxId, SectionId::makerTags, + signedByte, -1, printTemperature}, + {0x0048, "AELock", N_("AE lock"), N_("AE lock"), IfdId::pentaxId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)}, + {0x0049, "NoiseReduction", N_("Noise reduction"), N_("Noise reduction"), IfdId::pentaxId, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)}, /* Some missing ! */ {0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"), N_("Flash exposure compensation"), - pentaxId, makerTags, signedLong, -1, printFlashCompensation}, + IfdId::pentaxId, SectionId::makerTags, signedLong, -1, printFlashCompensation}, /* Some missing ! */ - {0x004f, "ImageTone", N_("Image tone"), N_("Image tone"), pentaxId, makerTags, unsignedShort, -1, + {0x004f, "ImageTone", N_("Image tone"), N_("Image tone"), IfdId::pentaxId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxImageTone)}, - {0x0050, "ColorTemperature", N_("Color temperature"), N_("Color temperature"), pentaxId, makerTags, unsignedShort, - -1, printValue}, + {0x0050, "ColorTemperature", N_("Color temperature"), N_("Color temperature"), IfdId::pentaxId, + SectionId::makerTags, unsignedShort, -1, printValue}, /* Some missing ! */ - {0x005c, "ShakeReduction", N_("Shake reduction"), N_("Shake reduction information"), pentaxId, makerTags, undefined, + {0x005c, "ShakeReduction", N_("Shake reduction"), N_("Shake reduction information"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, + {0x005d, "ShutterCount", N_("Shutter count"), N_("Shutter count"), IfdId::pentaxId, SectionId::makerTags, undefined, + -1, printShutterCount}, + {0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"), N_("Dynamic range expansion"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)}, + {0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), N_("High ISO noise reduction"), IfdId::pentaxId, + SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)}, + {0x0072, "AFAdjustment", N_("AF Adjustment"), N_("AF Adjustment"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, - {0x005d, "ShutterCount", N_("Shutter count"), N_("Shutter count"), 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)}, - {0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), N_("High ISO noise reduction"), pentaxId, - makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)}, - {0x0072, "AFAdjustment", N_("AF Adjustment"), N_("AF Adjustment"), pentaxId, makerTags, undefined, -1, printValue}, /* Many missing ! */ - {0x0200, "BlackPoint", N_("Black point"), N_("Black point"), pentaxId, makerTags, undefined, -1, printValue}, - {0x0201, "WhitePoint", N_("White point"), N_("White point"), pentaxId, makerTags, undefined, -1, printValue}, + {0x0200, "BlackPoint", N_("Black point"), N_("Black point"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, + printValue}, + {0x0201, "WhitePoint", N_("White point"), N_("White point"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, + printValue}, /* Some missing ! */ - {0x0205, "ShotInfo", N_("ShotInfo"), N_("ShotInfo"), pentaxId, makerTags, undefined, -1, + {0x0205, "ShotInfo", N_("ShotInfo"), N_("ShotInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0206, "AEInfo", N_("AEInfo"), N_("AEInfo"), pentaxId, makerTags, undefined, -1, + {0x0206, "AEInfo", N_("AEInfo"), N_("AEInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0207, "LensInfo", N_("LensInfo"), N_("LensInfo"), pentaxId, makerTags, undefined, -1, + {0x0207, "LensInfo", N_("LensInfo"), N_("LensInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0208, "FlashInfo", N_("FlashInfo"), N_("FlashInfo"), pentaxId, makerTags, undefined, -1, + {0x0208, "FlashInfo", N_("FlashInfo"), N_("FlashInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), N_("AEMeteringSegments"), pentaxId, makerTags, undefined, - -1, printValue}, /* TODO: Decoding missing */ - {0x020a, "FlashADump", N_("FlashADump"), N_("FlashADump"), pentaxId, makerTags, undefined, -1, + {0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), N_("AEMeteringSegments"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020a, "FlashADump", N_("FlashADump"), N_("FlashADump"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x020b, "FlashBDump", N_("FlashBDump"), N_("FlashBDump"), pentaxId, makerTags, undefined, -1, + {0x020b, "FlashBDump", N_("FlashBDump"), N_("FlashBDump"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ /* Some missing ! */ - {0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), N_("WB_RGGBLevelsDaylight"), 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 */ - {0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), N_("WB_RGGBLevelsCloudy"), 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 */ - {0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), N_("WB_RGGBLevelsFluorescentD"), 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 */ - {0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), N_("WB_RGGBLevelsFluorescentW"), 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 */ - {0x0215, "CameraInfo", N_("CameraInfo"), N_("CameraInfo"), pentaxId, makerTags, undefined, -1, + {0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), N_("WB_RGGBLevelsDaylight"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"), N_("WB_RGGBLevelsShade"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), N_("WB_RGGBLevelsCloudy"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"), N_("WB_RGGBLevelsTungsten"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), N_("WB_RGGBLevelsFluorescentD"), + IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"), N_("WB_RGGBLevelsFluorescentN"), + IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), N_("WB_RGGBLevelsFluorescentW"), + IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"), N_("WB_RGGBLevelsFlash"), IfdId::pentaxId, + SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ + {0x0215, "CameraInfo", N_("CameraInfo"), N_("CameraInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0216, "BatteryInfo", N_("BatteryInfo"), N_("BatteryInfo"), pentaxId, makerTags, undefined, -1, + {0x0216, "BatteryInfo", N_("BatteryInfo"), N_("BatteryInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x021f, "AFInfo", N_("AFInfo"), N_("AFInfo"), pentaxId, makerTags, undefined, -1, + {0x021f, "AFInfo", N_("AFInfo"), N_("AFInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0222, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), pentaxId, makerTags, undefined, -1, + {0x0222, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), IfdId::pentaxId, SectionId::makerTags, undefined, -1, printValue}, /* TODO: Decoding missing */ - {0x0229, "SerialNumber", N_("Serial Number"), N_("Serial Number"), pentaxId, makerTags, asciiString, -1, - printValue}, + {0x0229, "SerialNumber", N_("Serial Number"), N_("Serial Number"), IfdId::pentaxId, SectionId::makerTags, + asciiString, -1, printValue}, // End of list marker - {0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", N_("Unknown PentaxMakerNote tag"), pentaxId, - makerTags, asciiString, -1, printValue}, + {0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", N_("Unknown PentaxMakerNote tag"), + IfdId::pentaxId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* PentaxMakerNote::tagList() { diff --git a/src/preview.cpp b/src/preview.cpp index 2d5780062d..ec4a88b2d7 100644 --- a/src/preview.cpp +++ b/src/preview.cpp @@ -697,7 +697,7 @@ DataBuf LoaderTiff::getData() const { consistent result for all previews, including JPEG */ uint16_t tag = pos.tag(); - if (tag != 0x00fe && tag != 0x00ff && Internal::isTiffImageTag(tag, Internal::ifd0Id)) { + if (tag != 0x00fe && tag != 0x00ff && Internal::isTiffImageTag(tag, IfdId::ifd0Id)) { preview.add(ExifKey(tag, "Image"), &pos.value()); } } diff --git a/src/rw2image.cpp b/src/rw2image.cpp index f22ea51edd..f1f2d859db 100644 --- a/src/rw2image.cpp +++ b/src/rw2image.cpp @@ -122,7 +122,7 @@ void Rw2Image::readMetadata() { if (!prevData.empty()) { // Filter duplicate tags for (auto&& pos : exifData_) { - if (pos.ifdId() == panaRawId) + if (pos.ifdId() == IfdId::panaRawId) continue; auto dup = prevData.findKey(ExifKey(pos.key())); if (dup != prevData.end()) { diff --git a/src/samsungmn_int.cpp b/src/samsungmn_int.cpp index 6e0e811e6c..b8a7610402 100644 --- a/src/samsungmn_int.cpp +++ b/src/samsungmn_int.cpp @@ -69,61 +69,69 @@ std::ostream& printFocalLength35(std::ostream& os, const Value& value, const Exi // Samsung MakerNote Tag Info 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, + {0x0001, "Version", N_("Version"), N_("Makernote version"), IfdId::samsung2Id, SectionId::makerTags, undefined, -1, + printExifVersion}, + {0x0021, "PictureWizard", N_("Picture Wizard"), N_("Picture wizard composite tag"), IfdId::samsung2Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x0030, "LocalLocationName", N_("Local Location Name"), N_("Local location name"), IfdId::samsung2Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0x0031, "LocationName", N_("Location Name"), N_("Location name"), IfdId::samsung2Id, SectionId::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, + {0x0035, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), + IfdId::samsung2Id, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0043, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), IfdId::samsung2Id, + SectionId::makerTags, signedRational, -1, printCameraTemperature}, + {0xa001, "FirmwareName", N_("Firmware Name"), N_("Firmware name"), IfdId::samsung2Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0xa003, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::samsung2Id, SectionId::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}, + {0xa004, "LensFirmware", N_("Lens Firmware"), N_("Lens firmware"), IfdId::samsung2Id, SectionId::makerTags, + asciiString, -1, printValue}, + {0xa010, "SensorAreas", N_("Sensor Areas"), N_("Sensor areas"), IfdId::samsung2Id, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0xa011, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::samsung2Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(samsung2ColorSpace)}, + {0xa012, "SmartRange", N_("Smart Range"), N_("Smart range"), IfdId::samsung2Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(samsung2SmartRange)}, + {0xa013, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), IfdId::samsung2Id, + SectionId::makerTags, signedRational, -1, print0x9204}, + {0xa014, "ISO", N_("ISO"), N_("ISO"), IfdId::samsung2Id, SectionId::makerTags, unsignedLong, -1, printValue}, + {0xa018, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), IfdId::samsung2Id, SectionId::makerTags, + unsignedRational, -1, print0x829a}, + {0xa019, "FNumber", N_("FNumber"), N_("The F number."), IfdId::samsung2Id, SectionId::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, + IfdId::samsung2Id, SectionId::makerTags, unsignedLong, -1, printFocalLength35}, + {0xa020, "EncryptionKey", N_("Encryption Key"), N_("Encryption key"), IfdId::samsung2Id, SectionId::makerTags, unsignedLong, -1, printValue}, + {0xa021, "WB_RGGBLevelsUncorrected", N_("WB RGGB Levels Uncorrected"), + N_("WB RGGB levels not corrected for WB_RGGBLevelsBlack"), IfdId::samsung2Id, SectionId::makerTags, unsignedLong, + -1, printValue}, + {0xa022, "WB_RGGBLevelsAuto", N_("WB RGGB Levels Auto"), N_("WB RGGB levels auto"), IfdId::samsung2Id, + SectionId::makerTags, unsignedLong, -1, printValue}, {0xa023, "WB_RGGBLevelsIlluminator1", N_("WB RGGB Levels Illuminator1"), N_("WB RGGB levels illuminator1"), - samsung2Id, makerTags, unsignedLong, -1, printValue}, + IfdId::samsung2Id, SectionId::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}, + IfdId::samsung2Id, SectionId::makerTags, unsignedLong, -1, printValue}, + {0xa028, "WB_RGGBLevelsBlack", N_("WB RGGB Levels Black"), N_("WB RGGB levels black"), IfdId::samsung2Id, + SectionId::makerTags, signedLong, -1, printValue}, + {0xa030, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), IfdId::samsung2Id, SectionId::makerTags, signedLong, + -1, printValue}, + {0xa031, "ColorMatrixSRGB", N_("Color Matrix sRGB"), N_("Color matrix sRGB"), IfdId::samsung2Id, + SectionId::makerTags, signedLong, -1, printValue}, + {0xa032, "ColorMatrixAdobeRGB", N_("Color Matrix Adobe RGB"), N_("Color matrix Adobe RGB"), IfdId::samsung2Id, + SectionId::makerTags, signedLong, -1, printValue}, + {0xa040, "ToneCurve1", N_("Tone Curve 1"), N_("Tone curve 1"), IfdId::samsung2Id, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0xa041, "ToneCurve2", N_("Tone Curve 2"), N_("Tone curve 2"), IfdId::samsung2Id, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0xa042, "ToneCurve3", N_("Tone Curve 3"), N_("Tone curve 3"), IfdId::samsung2Id, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0xa043, "ToneCurve4", N_("Tone Curve 4"), N_("Tone curve 4"), IfdId::samsung2Id, SectionId::makerTags, + unsignedLong, -1, printValue}, // End of list marker {0xffff, "(UnknownSamsung2MakerNoteTag)", "(UnknownSamsung2MakerNoteTag)", N_("Unknown Samsung2MakerNote tag"), - samsung2Id, makerTags, undefined, -1, printValue}, + IfdId::samsung2Id, SectionId::makerTags, undefined, -1, printValue}, }; const TagInfo* Samsung2MakerNote::tagList() { @@ -159,15 +167,19 @@ std::ostream& printValueMinus4(std::ostream& os, const Value& value, const ExifD // Samsung PictureWizard Tag Info 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, + {0x0000, "Mode", N_("Mode"), N_("Mode"), IfdId::samsungPwId, SectionId::makerTags, unsignedShort, 1, + EXV_PRINT_TAG(samsungPwMode)}, + {0x0001, "Color", N_("Color"), N_("Color"), IfdId::samsungPwId, SectionId::makerTags, unsignedShort, 1, + printPwColor}, + {0x0002, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::samsungPwId, SectionId::makerTags, unsignedShort, + 1, printValueMinus4}, + {0x0003, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::samsungPwId, SectionId::makerTags, unsignedShort, 1, + printValueMinus4}, + {0x0004, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::samsungPwId, SectionId::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 {0xffff, "(UnknownSamsungPictureWizardTag)", "(UnknownSamsungPictureWizardTag)", - N_("Unknown SamsungPictureWizard tag"), samsungPwId, makerTags, unsignedShort, 1, printValue}, + N_("Unknown SamsungPictureWizard tag"), IfdId::samsungPwId, SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* Samsung2MakerNote::tagListPw() { diff --git a/src/sigmamn_int.cpp b/src/sigmamn_int.cpp index 79eb2e4e06..b537ee4694 100644 --- a/src/sigmamn_int.cpp +++ b/src/sigmamn_int.cpp @@ -16,40 +16,55 @@ namespace Exiv2::Internal { // Sigma (Foveon) MakerNote Tag Info constexpr TagInfo SigmaMakerNote::tagInfo_[] = { - {0x0002, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), sigmaId, makerTags, asciiString, -1, + {0x0002, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0003, "DriveMode", N_("Drive Mode"), N_("Drive mode"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, printValue}, - {0x0003, "DriveMode", N_("Drive Mode"), N_("Drive mode"), sigmaId, makerTags, asciiString, -1, printValue}, - {0x0004, "ResolutionMode", N_("Resolution Mode"), N_("Resolution mode"), sigmaId, makerTags, asciiString, -1, + {0x0004, "ResolutionMode", N_("Resolution Mode"), N_("Resolution mode"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0005, "AutofocusMode", N_("Autofocus Mode"), N_("Autofocus mode"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0006, "FocusSetting", N_("Focus Setting"), N_("Focus setting"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0008, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, print0x0008}, + {0x0009, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, print0x0009}, + {0x000a, "LensRange", N_("Lens Range"), N_("Lens focal length range"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x000b, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, printValue}, - {0x0005, "AutofocusMode", N_("Autofocus Mode"), N_("Autofocus mode"), sigmaId, makerTags, asciiString, -1, - printValue}, - {0x0006, "FocusSetting", N_("Focus Setting"), N_("Focus setting"), sigmaId, makerTags, asciiString, -1, printValue}, - {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance"), sigmaId, makerTags, asciiString, -1, printValue}, - {0x0008, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), sigmaId, makerTags, asciiString, -1, - print0x0008}, - {0x0009, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), sigmaId, makerTags, asciiString, -1, - print0x0009}, - {0x000a, "LensRange", N_("Lens Range"), N_("Lens focal length range"), sigmaId, makerTags, asciiString, -1, - printValue}, - {0x000b, "ColorSpace", N_("Color Space"), N_("Color space"), sigmaId, makerTags, asciiString, -1, printValue}, - {0x000c, "Exposure", N_("Exposure"), N_("Exposure"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x000d, "Contrast", N_("Contrast"), N_("Contrast"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x000e, "Shadow", N_("Shadow"), N_("Shadow"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x000f, "Highlight", N_("Highlight"), N_("Highlight"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x0010, "Saturation", N_("Saturation"), N_("Saturation"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x0011, "Sharpness", N_("Sharpness"), N_("Sharpness"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x0012, "FillLight", N_("Fill Light"), N_("X3 Fill light"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x0014, "ColorAdjustment", N_("Color Adjustment"), N_("Color adjustment"), sigmaId, makerTags, asciiString, -1, + {0x000c, "Exposure", N_("Exposure"), N_("Exposure"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x000d, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x000e, "Shadow", N_("Shadow"), N_("Shadow"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x000f, "Highlight", N_("Highlight"), N_("Highlight"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, printStripLabel}, - {0x0015, "AdjustmentMode", N_("Adjustment Mode"), N_("Adjustment mode"), sigmaId, makerTags, asciiString, -1, + {0x0010, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x0011, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x0012, "FillLight", N_("Fill Light"), N_("X3 Fill light"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x0014, "ColorAdjustment", N_("Color Adjustment"), N_("Color adjustment"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printStripLabel}, + {0x0015, "AdjustmentMode", N_("Adjustment Mode"), N_("Adjustment mode"), IfdId::sigmaId, SectionId::makerTags, + asciiString, -1, printValue}, + {0x0016, "Quality", N_("Quality"), N_("Quality"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printStripLabel}, + {0x0017, "Firmware", N_("Firmware"), N_("Firmware"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, + printValue}, + {0x0018, "Software", N_("Software"), N_("Software"), IfdId::sigmaId, SectionId::makerTags, asciiString, -1, printValue}, - {0x0016, "Quality", N_("Quality"), N_("Quality"), sigmaId, makerTags, asciiString, -1, printStripLabel}, - {0x0017, "Firmware", N_("Firmware"), N_("Firmware"), sigmaId, makerTags, asciiString, -1, printValue}, - {0x0018, "Software", N_("Software"), N_("Software"), sigmaId, makerTags, asciiString, -1, printValue}, - {0x0019, "AutoBracket", N_("Auto Bracket"), N_("Auto bracket"), sigmaId, makerTags, asciiString, -1, printValue}, + {0x0019, "AutoBracket", N_("Auto Bracket"), N_("Auto bracket"), IfdId::sigmaId, SectionId::makerTags, asciiString, + -1, printValue}, // End of list marker - {0xffff, "(UnknownSigmaMakerNoteTag)", "(UnknownSigmaMakerNoteTag)", N_("Unknown SigmaMakerNote tag"), sigmaId, - makerTags, asciiString, -1, printValue}, + {0xffff, "(UnknownSigmaMakerNoteTag)", "(UnknownSigmaMakerNoteTag)", N_("Unknown SigmaMakerNote tag"), + IfdId::sigmaId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* SigmaMakerNote::tagList() { diff --git a/src/sonymn_int.cpp b/src/sonymn_int.cpp index 0f4d24830f..56e28d6267 100644 --- a/src/sonymn_int.cpp +++ b/src/sonymn_int.cpp @@ -263,100 +263,107 @@ std::ostream& SonyMakerNote::printImageSize(std::ostream& os, const Value& value // Sony MakerNote Tag Info constexpr TagInfo SonyMakerNote::tagInfo_[] = { - {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), sony1Id, makerTags, unsignedLong, -1, - printMinoltaSonyImageQuality}, - {0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), sony1Id, - makerTags, signedRational, -1, print0x9204}, - {0x0105, "Teleconverter", N_("Teleconverter Model"), N_("Teleconverter Model"), sony1Id, makerTags, unsignedLong, - -1, printMinoltaSonyTeleconverterModel}, - {0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune Value"), sony1Id, - makerTags, unsignedLong, -1, printValue}, - {0x0114, "CameraSettings", N_("Camera Settings"), N_("Camera Settings"), sony1Id, makerTags, undefined, -1, + {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::sony1Id, SectionId::makerTags, unsignedLong, + -1, printMinoltaSonyImageQuality}, + {0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation in EV"), + IfdId::sony1Id, SectionId::makerTags, signedRational, -1, print0x9204}, + {0x0105, "Teleconverter", N_("Teleconverter Model"), N_("Teleconverter Model"), IfdId::sony1Id, + SectionId::makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel}, + {0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune Value"), IfdId::sony1Id, + SectionId::makerTags, unsignedLong, -1, printValue}, + {0x0114, "CameraSettings", N_("Camera Settings"), N_("Camera Settings"), IfdId::sony1Id, SectionId::makerTags, + undefined, -1, printValue}, + {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::sony1Id, SectionId::makerTags, + unsignedLong, -1, printMinoltaSonyWhiteBalanceStd}, + {0x0116, "0x0116", "0x0116", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, undefined, -1, printValue}, + {0x0E00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::sony1Id, SectionId::makerTags, undefined, -1, printValue}, - {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), sony1Id, makerTags, unsignedLong, -1, - printMinoltaSonyWhiteBalanceStd}, - {0x0116, "0x0116", "0x0116", N_("Unknown"), sony1Id, makerTags, undefined, -1, printValue}, - {0x0E00, "PrintIM", N_("Print IM"), N_("PrintIM information"), sony1Id, makerTags, undefined, -1, printValue}, - {0x1000, "MultiBurstMode", N_("Multi Burst Mode"), N_("Multi Burst Mode"), sony1Id, makerTags, undefined, -1, - printMinoltaSonyBoolValue}, - {0x1001, "MultiBurstImageWidth", N_("Multi Burst Image Width"), N_("Multi Burst Image Width"), sony1Id, makerTags, - unsignedShort, -1, printValue}, - {0x1002, "MultiBurstImageHeight", N_("Multi Burst Image Height"), N_("Multi Burst Image Height"), sony1Id, - makerTags, unsignedShort, -1, printValue}, + {0x1000, "MultiBurstMode", N_("Multi Burst Mode"), N_("Multi Burst Mode"), IfdId::sony1Id, SectionId::makerTags, + undefined, -1, printMinoltaSonyBoolValue}, + {0x1001, "MultiBurstImageWidth", N_("Multi Burst Image Width"), N_("Multi Burst Image Width"), IfdId::sony1Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {0x1002, "MultiBurstImageHeight", N_("Multi Burst Image Height"), N_("Multi Burst Image Height"), IfdId::sony1Id, + SectionId::makerTags, unsignedShort, -1, printValue}, // TODO : Implement Panorama tags decoding. - {0x1003, "Panorama", N_("Panorama"), N_("Panorama"), sony1Id, makerTags, undefined, -1, printValue}, - {0x2000, "0x2000", "0x2000", N_("Unknown"), sony1Id, makerTags, undefined, -1, printValue}, - {0x2001, "PreviewImage", N_("Preview Image"), N_("JPEG preview image"), sony1Id, makerTags, undefined, -1, + {0x1003, "Panorama", N_("Panorama"), N_("Panorama"), IfdId::sony1Id, SectionId::makerTags, undefined, -1, + printValue}, + {0x2000, "0x2000", "0x2000", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, undefined, -1, printValue}, + {0x2001, "PreviewImage", N_("Preview Image"), N_("JPEG preview image"), IfdId::sony1Id, SectionId::makerTags, + undefined, -1, printValue}, + {0x2002, "0x2002", "0x2002", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, unsignedLong, -1, printValue}, + {0x2003, "0x2003", "0x2003", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, asciiString, -1, printValue}, + {0x2004, "Contrast", "Contrast", N_("Contrast"), IfdId::sony1Id, SectionId::makerTags, signedLong, -1, printValue}, + {0x2005, "Saturation", "Saturation", N_("Saturation"), IfdId::sony1Id, SectionId::makerTags, signedLong, -1, printValue}, - {0x2002, "0x2002", "0x2002", N_("Unknown"), sony1Id, makerTags, unsignedLong, -1, printValue}, - {0x2003, "0x2003", "0x2003", N_("Unknown"), sony1Id, makerTags, asciiString, -1, printValue}, - {0x2004, "Contrast", "Contrast", N_("Contrast"), sony1Id, makerTags, signedLong, -1, printValue}, - {0x2005, "Saturation", "Saturation", N_("Saturation"), sony1Id, makerTags, signedLong, -1, printValue}, - {0x2006, "0x2006", "0x2006", N_("Unknown"), sony1Id, makerTags, signedLong, -1, printValue}, - {0x2007, "0x2007", "0x2007", N_("Unknown"), sony1Id, makerTags, signedLong, -1, printValue}, - {0x2008, "0x2008", "0x2008", N_("Unknown"), sony1Id, makerTags, signedLong, -1, printValue}, - {0x2009, "0x2009", "0x2009", N_("Unknown"), sony1Id, makerTags, unsignedShort, -1, printValue}, - {0x200A, "AutoHDR", N_("Auto HDR"), N_("High Definition Range Mode"), sony1Id, makerTags, unsignedLong, -1, - EXV_PRINT_TAG(sonyHDRMode)}, + {0x2006, "0x2006", "0x2006", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, signedLong, -1, printValue}, + {0x2007, "0x2007", "0x2007", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, signedLong, -1, printValue}, + {0x2008, "0x2008", "0x2008", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, signedLong, -1, printValue}, + {0x2009, "0x2009", "0x2009", N_("Unknown"), IfdId::sony1Id, SectionId::makerTags, unsignedShort, -1, printValue}, + {0x200A, "AutoHDR", N_("Auto HDR"), N_("High Definition Range Mode"), IfdId::sony1Id, SectionId::makerTags, + unsignedLong, -1, EXV_PRINT_TAG(sonyHDRMode)}, // TODO : Implement Shot Info tags decoding. - {0x3000, "ShotInfo", N_("Shot Info"), N_("Shot Information"), sony1Id, makerTags, undefined, -1, printValue}, - {0xB000, "FileFormat", N_("File Format"), N_("File Format"), sony1Id, makerTags, unsignedByte, -1, print0xb000}, - {0xB001, "SonyModelID", N_("Sony Model ID"), N_("Sony Model ID"), sony1Id, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(sonyModelId)}, - {0xB020, "ColorReproduction", N_("Color Reproduction"), N_("Color Reproduction"), sony1Id, makerTags, asciiString, - -1, printValue}, - {0xb021, "ColorTemperature", N_("Color Temperature"), N_("Color Temperature"), sony1Id, makerTags, unsignedLong, -1, + {0x3000, "ShotInfo", N_("Shot Info"), N_("Shot Information"), IfdId::sony1Id, SectionId::makerTags, undefined, -1, printValue}, + {0xB000, "FileFormat", N_("File Format"), N_("File Format"), IfdId::sony1Id, SectionId::makerTags, unsignedByte, -1, + print0xb000}, + {0xB001, "SonyModelID", N_("Sony Model ID"), N_("Sony Model ID"), IfdId::sony1Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(sonyModelId)}, + {0xB020, "ColorReproduction", N_("Color Reproduction"), N_("Color Reproduction"), IfdId::sony1Id, + SectionId::makerTags, asciiString, -1, printValue}, + {0xb021, "ColorTemperature", N_("Color Temperature"), N_("Color Temperature"), IfdId::sony1Id, SectionId::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}, - {0xB023, "SceneMode", N_("Scene Mode"), N_("Scene Mode"), sony1Id, makerTags, unsignedLong, -1, + N_("Color Compensation Filter: negative is green, positive is magenta"), IfdId::sony1Id, SectionId::makerTags, + unsignedLong, -1, printValue}, + {0xB023, "SceneMode", N_("Scene Mode"), N_("Scene Mode"), IfdId::sony1Id, SectionId::makerTags, unsignedLong, -1, printMinoltaSonySceneMode}, - {0xB024, "ZoneMatching", N_("Zone Matching"), N_("Zone Matching"), sony1Id, makerTags, unsignedLong, -1, - printMinoltaSonyZoneMatching}, - {0xB025, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), N_("Dynamic Range Optimizer"), sony1Id, makerTags, - unsignedLong, -1, EXV_PRINT_TAG(print0xb025)}, - {0xB026, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), sony1Id, makerTags, - unsignedLong, -1, printMinoltaSonyBoolValue}, - {0xB027, "LensID", N_("Lens ID"), N_("Lens identifier"), sony1Id, makerTags, unsignedLong, -1, + {0xB024, "ZoneMatching", N_("Zone Matching"), N_("Zone Matching"), IfdId::sony1Id, SectionId::makerTags, + unsignedLong, -1, printMinoltaSonyZoneMatching}, + {0xB025, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), N_("Dynamic Range Optimizer"), IfdId::sony1Id, + SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(print0xb025)}, + {0xB026, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::sony1Id, + SectionId::makerTags, unsignedLong, -1, printMinoltaSonyBoolValue}, + {0xB027, "LensID", N_("Lens ID"), N_("Lens identifier"), IfdId::sony1Id, SectionId::makerTags, unsignedLong, -1, printMinoltaSonyLensID}, - {0xB028, "MinoltaMakerNote", N_("Minolta MakerNote"), N_("Minolta MakerNote"), sony1Id, makerTags, undefined, -1, - printValue}, - {0xB029, "ColorMode", N_("Color Mode"), N_("Color Mode"), sony1Id, makerTags, unsignedLong, -1, + {0xB028, "MinoltaMakerNote", N_("Minolta MakerNote"), N_("Minolta MakerNote"), IfdId::sony1Id, SectionId::makerTags, + undefined, -1, printValue}, + {0xB029, "ColorMode", N_("Color Mode"), N_("Color Mode"), IfdId::sony1Id, SectionId::makerTags, unsignedLong, -1, printMinoltaSonyColorMode}, - {0xB02B, "FullImageSize", N_("Full Image Size"), N_("Full Image Size"), sony1Id, makerTags, unsignedLong, -1, - printImageSize}, - {0xB02C, "PreviewImageSize", N_("Preview Image Size"), N_("Preview image size"), sony1Id, makerTags, unsignedLong, - -1, printImageSize}, - {0xB040, "Macro", N_("Macro"), N_("Macro"), sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyMacroMode)}, - {0xB041, "ExposureMode", N_("Exposure Mode"), N_("Exposure Mode"), sony1Id, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(sonyExposureMode)}, - {0xB042, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), sony1Id, makerTags, unsignedShort, -1, + {0xB02B, "FullImageSize", N_("Full Image Size"), N_("Full Image Size"), IfdId::sony1Id, SectionId::makerTags, + unsignedLong, -1, printImageSize}, + {0xB02C, "PreviewImageSize", N_("Preview Image Size"), N_("Preview image size"), IfdId::sony1Id, + SectionId::makerTags, unsignedLong, -1, printImageSize}, + {0xB040, "Macro", N_("Macro"), N_("Macro"), IfdId::sony1Id, SectionId::makerTags, unsignedShort, -1, + EXV_PRINT_TAG(sonyMacroMode)}, + {0xB041, "ExposureMode", N_("Exposure Mode"), N_("Exposure Mode"), IfdId::sony1Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(sonyExposureMode)}, + {0xB042, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), IfdId::sony1Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyFocusMode)}, - {0xB043, "AFMode", N_("AF Mode"), N_("AF Mode"), sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFMode)}, - {0xB044, "AFIlluminator", N_("AF Illuminator"), N_("AF Illuminator"), sony1Id, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(sonyAFIlluminator)}, - {0xB047, "JPEGQuality", N_("JPEG Quality"), N_("JPEG Quality"), sony1Id, makerTags, unsignedShort, -1, - EXV_PRINT_TAG(sonyJPEGQuality)}, - {0xB048, "FlashLevel", N_("Flash Level"), N_("Flash Level"), sony1Id, makerTags, signedShort, -1, + {0xB043, "AFMode", N_("AF Mode"), N_("AF Mode"), IfdId::sony1Id, SectionId::makerTags, unsignedShort, -1, + EXV_PRINT_TAG(sonyAFMode)}, + {0xB044, "AFIlluminator", N_("AF Illuminator"), N_("AF Illuminator"), IfdId::sony1Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(sonyAFIlluminator)}, + {0xB047, "JPEGQuality", N_("JPEG Quality"), N_("JPEG Quality"), IfdId::sony1Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(sonyJPEGQuality)}, + {0xB048, "FlashLevel", N_("Flash Level"), N_("Flash Level"), IfdId::sony1Id, SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(sonyFlashLevel)}, - {0xB049, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), 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)}, - {0xB04B, "AntiBlur", N_("Anti-Blur"), N_("Anti-Blur"), sony1Id, makerTags, unsignedShort, -1, + {0xB049, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), IfdId::sony1Id, SectionId::makerTags, unsignedShort, + -1, EXV_PRINT_TAG(sonyReleaseMode)}, + {0xB04A, "SequenceNumber", N_("Sequence Number"), N_("Shot number in continuous burst mode"), IfdId::sony1Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonySequenceNumber)}, + {0xB04B, "AntiBlur", N_("Anti-Blur"), N_("Anti-Blur"), IfdId::sony1Id, SectionId::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)}, - {0xB04F, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), N_("Dynamic Range Optimizer"), sony1Id, makerTags, - unsignedShort, -1, EXV_PRINT_TAG(print0xb04f)}, - {0xB052, "IntelligentAuto", N_("Intelligent Auto"), N_("Intelligent Auto"), 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)}, + IfdId::sony1Id, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyLongExposureNoiseReduction)}, + {0xB04F, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), N_("Dynamic Range Optimizer"), IfdId::sony1Id, + SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(print0xb04f)}, + {0xB052, "IntelligentAuto", N_("Intelligent Auto"), N_("Intelligent Auto"), IfdId::sony1Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(sonyIntelligentAuto)}, + {0xB054, "WhiteBalance2", N_("White Balance 2"), N_("White balance 2"), IfdId::sony1Id, SectionId::makerTags, + unsignedShort, -1, EXV_PRINT_TAG(sonyWhiteBalance)}, // End of list marker - {0xffff, "(UnknownSony1MakerNoteTag)", "(UnknownSony1MakerNoteTag)", N_("Unknown Sony1MakerNote tag"), sony1Id, - makerTags, asciiString, -1, printValue}, + {0xffff, "(UnknownSony1MakerNoteTag)", "(UnknownSony1MakerNoteTag)", N_("Unknown Sony1MakerNote tag"), + IfdId::sony1Id, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* SonyMakerNote::tagList() { @@ -447,69 +454,74 @@ constexpr TagDetails sonyExposureLevelIncrements[] = {{33, "1/3 EV"}, {50, "1/2 constexpr TagInfo SonyMakerNote::tagInfoCs_[] = { // NOTE: A700 only - {0x0004, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), sony1CsId, makerTags, unsignedShort, 1, + {0x0004, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeStd)}, // NOTE: A700 only - {0x0006, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune"), sony1CsId, makerTags, - signedShort, 1, printValue}, - {0x0010, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), sony1CsId, makerTags, unsignedShort, 1, + {0x0006, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), N_("White Balance Fine Tune"), IfdId::sony1CsId, + SectionId::makerTags, signedShort, 1, printValue}, + {0x0010, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)}, - {0x0011, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), sony1CsId, makerTags, unsignedShort, 1, - printMinoltaSonyAFAreaMode}, - {0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), sony1CsId, makerTags, - unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, - {0x0015, "MeteringMode", N_("Metering Mode"), N_("Metering Mode"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyMeteringMode)}, - {0x0016, "ISOSetting", N_("ISO Setting"), N_("ISO Setting"), sony1CsId, makerTags, unsignedShort, 1, printValue}, + {0x0011, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, printMinoltaSonyAFAreaMode}, + {0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), IfdId::sony1CsId, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, + {0x0015, "MeteringMode", N_("Metering Mode"), N_("Metering Mode"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)}, + {0x0016, "ISOSetting", N_("ISO Setting"), N_("ISO Setting"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, + 1, printValue}, {0x0018, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), N_("Dynamic Range Optimizer Mode"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, {0x0019, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), N_("Dynamic Range Optimizer Level"), - sony1CsId, makerTags, unsignedShort, 1, printValue}, - {0x001A, "CreativeStyle", N_("Creative Style"), N_("Creative Style"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyCreativeStyle)}, - {0x001C, "Sharpness", N_("Sharpness"), N_("Sharpness"), sony1CsId, makerTags, unsignedShort, 1, printValue}, - {0x001D, "Contrast", N_("Contrast"), N_("Contrast"), sony1CsId, makerTags, unsignedShort, 1, printValue}, - {0x001E, "Saturation", N_("Saturation"), N_("Saturation"), sony1CsId, makerTags, unsignedShort, 1, printValue}, - {0x001F, "ZoneMatchingValue", N_("Zone Matching Value"), N_("Zone Matching Value"), sony1CsId, makerTags, - unsignedShort, 1, printValue}, - {0x0022, "Brightness", N_("Brightness"), N_("Brightness"), sony1CsId, makerTags, unsignedShort, 1, printValue}, - {0x0023, "FlashMode", N_("FlashMode"), N_("FlashMode"), sony1CsId, makerTags, unsignedShort, 1, + IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x001A, "CreativeStyle", N_("Creative Style"), N_("Creative Style"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)}, + {0x001C, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x001D, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x001E, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x001F, "ZoneMatchingValue", N_("Zone Matching Value"), N_("Zone Matching Value"), IfdId::sony1CsId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0022, "Brightness", N_("Brightness"), N_("Brightness"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x0023, "FlashMode", N_("FlashMode"), N_("FlashMode"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)}, // NOTE: A700 only {0x0028, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), N_("Priority Setup Shutter Release"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease}, + IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease}, // NOTE: A700 only - {0x0029, "AFIlluminator", N_("AF Illuminator"), N_("AF Illuminator"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyAFIlluminatorCS)}, + {0x0029, "AFIlluminator", N_("AF Illuminator"), N_("AF Illuminator"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyAFIlluminatorCS)}, // NOTE: A700 only - {0x002A, "AFWithShutter", N_("AF With Shutter"), N_("AF With Shutter"), sony1CsId, makerTags, unsignedShort, 1, - printMinoltaSonyBoolInverseValue}, + {0x002A, "AFWithShutter", N_("AF With Shutter"), N_("AF With Shutter"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, printMinoltaSonyBoolInverseValue}, // NOTE: A700 only {0x002B, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), N_("Long Exposure Noise Reduction"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, // NOTE: A700 only - {0x002C, "HighISONoiseReduction", N_("High ISO NoiseReduction"), N_("High ISO NoiseReduction"), sony1CsId, - makerTags, unsignedShort, 1, printValue}, + {0x002C, "HighISONoiseReduction", N_("High ISO NoiseReduction"), N_("High ISO NoiseReduction"), IfdId::sony1CsId, + SectionId::makerTags, unsignedShort, 1, printValue}, // NOTE: A700 only - {0x002D, "ImageStyle", N_("Image Style"), N_("Image Style"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyImageStyle)}, - {0x003C, "ExposureProgram", N_("Exposure Program"), N_("Exposure Program"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyExposureProgram)}, - {0x003D, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), sony1CsId, makerTags, - unsignedShort, 1, printMinoltaSonyBoolValue}, - {0x003F, "Rotation", N_("Rotation"), N_("Rotation"), sony1CsId, makerTags, unsignedShort, 1, + {0x002D, "ImageStyle", N_("Image Style"), N_("Image Style"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, + 1, EXV_PRINT_TAG(sonyImageStyle)}, + {0x003C, "ExposureProgram", N_("Exposure Program"), N_("Exposure Program"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)}, + {0x003D, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), IfdId::sony1CsId, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyBoolValue}, + {0x003F, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyRotation}, - {0x0054, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyImageSize)}, - {0x0055, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), sony1CsId, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyAspectRatio)}, - {0x0056, "Quality", N_("Quality"), N_("Quality"), sony1CsId, makerTags, unsignedShort, 1, + {0x0054, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)}, + {0x0055, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), IfdId::sony1CsId, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyAspectRatio)}, + {0x0056, "Quality", N_("Quality"), N_("Quality"), IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyQualityCs}, - {0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Exposure Level Increments"), sony1CsId, - makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureLevelIncrements)}, + {0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Exposure Level Increments"), + IfdId::sony1CsId, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureLevelIncrements)}, // End of list marker - {0xffff, "(UnknownSony1CsTag)", "(UnknownSony1CsTag)", N_("Unknown Sony1 Camera Settings tag"), sony1CsId, - makerTags, unsignedShort, 1, printValue}, + {0xffff, "(UnknownSony1CsTag)", "(UnknownSony1CsTag)", N_("Unknown Sony1 Camera Settings tag"), IfdId::sony1CsId, + SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* SonyMakerNote::tagListCs() { @@ -524,35 +536,39 @@ const TagInfo* SonyMakerNote::tagListCs() { // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. constexpr TagInfo SonyMakerNote::tagInfoCs2_[] = { - {0x0010, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), sony1Cs2Id, makerTags, unsignedShort, 1, + {0x0010, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)}, - {0x0011, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), sony1Cs2Id, makerTags, unsignedShort, 1, - printMinoltaSonyAFAreaMode}, - {0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), sony1Cs2Id, makerTags, - unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, - {0x0013, "MeteringMode", N_("Metering Mode"), N_("Metering Mode"), sony1Cs2Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyMeteringMode)}, - {0x0014, "ISOSetting", N_("ISO Setting"), N_("ISO Setting"), sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, + {0x0011, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), IfdId::sony1Cs2Id, SectionId::makerTags, + unsignedShort, 1, printMinoltaSonyAFAreaMode}, + {0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), N_("Local AF Area Point"), IfdId::sony1Cs2Id, + SectionId::makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint}, + {0x0013, "MeteringMode", N_("Metering Mode"), N_("Metering Mode"), IfdId::sony1Cs2Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)}, + {0x0014, "ISOSetting", N_("ISO Setting"), N_("ISO Setting"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, + 1, printValue}, {0x0016, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), N_("Dynamic Range Optimizer Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, + IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode}, {0x0017, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), N_("Dynamic Range Optimizer Level"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, - {0x0018, "CreativeStyle", N_("Creative Style"), N_("Creative Style"), sony1Cs2Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyCreativeStyle)}, - {0x0019, "Sharpness", N_("Sharpness"), N_("Sharpness"), sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, - {0x001A, "Contrast", N_("Contrast"), N_("Contrast"), sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, - {0x001B, "Saturation", N_("Saturation"), N_("Saturation"), sony1Cs2Id, makerTags, unsignedShort, 1, printValue}, - {0x0023, "FlashMode", N_("FlashMode"), N_("FlashMode"), sony1Cs2Id, makerTags, unsignedShort, 1, + IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, printValue}, + {0x0018, "CreativeStyle", N_("Creative Style"), N_("Creative Style"), IfdId::sony1Cs2Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)}, + {0x0019, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x001A, "Contrast", N_("Contrast"), N_("Contrast"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, + printValue}, + {0x001B, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, + 1, printValue}, + {0x0023, "FlashMode", N_("FlashMode"), N_("FlashMode"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)}, - {0x003C, "ExposureProgram", N_("Exposure Program"), N_("Exposure Program"), sony1Cs2Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyExposureProgram)}, - {0x003F, "Rotation", N_("Rotation"), N_("Rotation"), sony1Cs2Id, makerTags, unsignedShort, 1, + {0x003C, "ExposureProgram", N_("Exposure Program"), N_("Exposure Program"), IfdId::sony1Cs2Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)}, + {0x003F, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, printMinoltaSonyRotation}, - {0x0054, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), sony1Cs2Id, makerTags, unsignedShort, 1, - EXV_PRINT_TAG(sonyImageSize)}, + {0x0054, "SonyImageSize", N_("Sony Image Size"), N_("Sony Image Size"), IfdId::sony1Cs2Id, SectionId::makerTags, + unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)}, // End of list marker - {0xffff, "(UnknownSony1Cs2Tag)", "(UnknownSony1Cs2Tag)", N_("Unknown Sony1 Camera Settings 2 tag"), sony1Cs2Id, - makerTags, unsignedShort, 1, printValue}, + {0xffff, "(UnknownSony1Cs2Tag)", "(UnknownSony1Cs2Tag)", N_("Unknown Sony1 Camera Settings 2 tag"), + IfdId::sony1Cs2Id, SectionId::makerTags, unsignedShort, 1, printValue}, }; const TagInfo* SonyMakerNote::tagListCs2() { @@ -575,16 +591,16 @@ constexpr TagDetails sony2FpAFAreaMode[] = {{0, N_("Multi")}, //! Sony Tag 9402 Sony2Fp (FocusPosition) constexpr TagInfo SonyMakerNote::tagInfoFp_[] = { {0x04, "AmbientTemperature", N_("Ambient temperature"), N_("Temperature of the surroundings (in degrees Celsius)"), - sony2FpId, makerTags, signedByte, 1, printSony2FpAmbientTemperature}, - {0x16, "FocusMode", N_("Focus mode"), N_("Focus mode"), sony2FpId, makerTags, unsignedByte, 1, + IfdId::sony2FpId, SectionId::makerTags, signedByte, 1, printSony2FpAmbientTemperature}, + {0x16, "FocusMode", N_("Focus mode"), N_("Focus mode"), IfdId::sony2FpId, SectionId::makerTags, unsignedByte, 1, printSony2FpFocusMode}, - {0x17, "AFAreaMode", N_("AF area mode"), N_("Auto focus area mode"), sony2FpId, makerTags, unsignedByte, 1, - EXV_PRINT_TAG(sony2FpAFAreaMode)}, - {0x2d, "FocusPosition2", N_("Focus position 2"), N_("Focus position 2"), sony2FpId, makerTags, unsignedByte, 1, - printSony2FpFocusPosition2}, + {0x17, "AFAreaMode", N_("AF area mode"), N_("Auto focus area mode"), IfdId::sony2FpId, SectionId::makerTags, + unsignedByte, 1, EXV_PRINT_TAG(sony2FpAFAreaMode)}, + {0x2d, "FocusPosition2", N_("Focus position 2"), N_("Focus position 2"), IfdId::sony2FpId, SectionId::makerTags, + unsignedByte, 1, printSony2FpFocusPosition2}, // End of list marker - {0xffff, "(UnknownSony2FpTag)", "(Unknown Sony2Fp tag)", "(Unknown Sony2Fp tag)", sony2FpId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownSony2FpTag)", "(Unknown Sony2Fp tag)", "(Unknown Sony2Fp tag)", IfdId::sony2FpId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* SonyMakerNote::tagListFp() { @@ -664,10 +680,10 @@ std::ostream& SonyMakerNote::printSony2FpFocusPosition2(std::ostream& os, const //! Sony Tag 9403 SonyMisc1 constexpr TagInfo SonyMakerNote::tagInfoSonyMisc1_[] = { {0x05, "CameraTemperature", N_("Camera temperature"), N_("Internal camera temperature (in degrees Celsius)"), - sonyMisc1Id, makerTags, signedByte, -1, printSonyMisc1CameraTemperature}, + IfdId::sonyMisc1Id, SectionId::makerTags, signedByte, -1, printSonyMisc1CameraTemperature}, // End of list marker - {0xffff, "(UnknownSonyMisc1Tag)", "(UnknownSonyMisc1Tag)", "(UnknownSonyMisc1Tag)", sonyMisc1Id, makerTags, - unsignedByte, -1, printValue}}; + {0xffff, "(UnknownSonyMisc1Tag)", "(UnknownSonyMisc1Tag)", "(UnknownSonyMisc1Tag)", IfdId::sonyMisc1Id, + SectionId::makerTags, unsignedByte, -1, printValue}}; const TagInfo* SonyMakerNote::tagListSonyMisc1() { return tagInfoSonyMisc1_; @@ -722,17 +738,17 @@ constexpr TagDetails sonyExposureProgram3[] = {{0, N_("Program AE")}, //! Sony Tag 9404b SonyMisc2b tags constexpr TagInfo SonyMakerNote::tagInfoSonyMisc2b_[] = { - {12, "ExposureProgram", N_("Exposure program"), N_("Exposure program"), sonyMisc2bId, makerTags, unsignedByte, -1, - EXV_PRINT_TAG(sonyExposureProgram3)}, - {14, "IntelligentAuto", N_("Intelligent auto"), N_("Whether intelligent auto was used"), sonyMisc2bId, makerTags, - unsignedByte, -1, printMinoltaSonyBoolValue}, - {30, "LensZoomPosition", N_("Lens zoom position"), N_("Lens zoom position (in %)"), sonyMisc2bId, makerTags, - unsignedShort, -1, printSonyMisc2bLensZoomPosition}, - {32, "FocusPosition2", N_("Focus position 2"), N_("Focus position 2"), sonyMisc2bId, makerTags, unsignedByte, -1, - printSonyMisc2bFocusPosition2}, + {12, "ExposureProgram", N_("Exposure program"), N_("Exposure program"), IfdId::sonyMisc2bId, SectionId::makerTags, + unsignedByte, -1, EXV_PRINT_TAG(sonyExposureProgram3)}, + {14, "IntelligentAuto", N_("Intelligent auto"), N_("Whether intelligent auto was used"), IfdId::sonyMisc2bId, + SectionId::makerTags, unsignedByte, -1, printMinoltaSonyBoolValue}, + {30, "LensZoomPosition", N_("Lens zoom position"), N_("Lens zoom position (in %)"), IfdId::sonyMisc2bId, + SectionId::makerTags, unsignedShort, -1, printSonyMisc2bLensZoomPosition}, + {32, "FocusPosition2", N_("Focus position 2"), N_("Focus position 2"), IfdId::sonyMisc2bId, SectionId::makerTags, + unsignedByte, -1, printSonyMisc2bFocusPosition2}, // End of list marker - {0xffff, "(UnknownSonyMisc2bTag)", "(Unknown SonyMisc2b tag)", "(Unknown SonyMisc2b tag)", sonyMisc2bId, makerTags, - unsignedByte, -1, printValue}}; + {0xffff, "(UnknownSonyMisc2bTag)", "(Unknown SonyMisc2b tag)", "(Unknown SonyMisc2b tag)", IfdId::sonyMisc2bId, + SectionId::makerTags, unsignedByte, -1, printValue}}; const TagInfo* SonyMakerNote::tagListSonyMisc2b() { return tagInfoSonyMisc2b_; @@ -805,32 +821,32 @@ constexpr TagDetails sonyMisc3cCameraOrientation[] = { //! SonyMisc3c tags (Tag 9400c) constexpr TagInfo SonyMakerNote::tagInfoSonyMisc3c_[] = { - {9, "ReleaseMode2", N_("Release mode 2"), N_("Release mode 2"), sonyMisc3cId, makerTags, unsignedByte, -1, - EXV_PRINT_TAG(sonyReleaseMode2)}, + {9, "ReleaseMode2", N_("Release mode 2"), N_("Release mode 2"), IfdId::sonyMisc3cId, SectionId::makerTags, + unsignedByte, -1, EXV_PRINT_TAG(sonyReleaseMode2)}, {10, "ShotNumberSincePowerUp", N_("Shot number since power up"), - N_("Number of photos taken since the camera was powered up"), sonyMisc3cId, makerTags, unsignedLong, -1, - printSonyMisc3cShotNumberSincePowerUp}, + N_("Number of photos taken since the camera was powered up"), IfdId::sonyMisc3cId, SectionId::makerTags, + unsignedLong, -1, printSonyMisc3cShotNumberSincePowerUp}, {18, "SequenceImageNumber", N_("Sequence image number"), N_("Number of images captured in burst sequence"), - sonyMisc3cId, makerTags, unsignedLong, -1, printSonyMisc3cSequenceNumber}, + IfdId::sonyMisc3cId, SectionId::makerTags, unsignedLong, -1, printSonyMisc3cSequenceNumber}, // In Exiftool, "SequenceLength1" is called "SequenceLength. Renamed due to clash of names." - {22, "SequenceLength1", N_("Sequence length 1"), N_("Length of the sequence of photos taken"), sonyMisc3cId, - makerTags, unsignedByte, -1, EXV_PRINT_TAG(sonyMisc3cSequenceLength1)}, - {26, "SequenceFileNumber", N_("Sequence file number"), N_("File number in burst sequence"), sonyMisc3cId, makerTags, - unsignedLong, -1, printSonyMisc3cSequenceNumber}, + {22, "SequenceLength1", N_("Sequence length 1"), N_("Length of the sequence of photos taken"), IfdId::sonyMisc3cId, + SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(sonyMisc3cSequenceLength1)}, + {26, "SequenceFileNumber", N_("Sequence file number"), N_("File number in burst sequence"), IfdId::sonyMisc3cId, + SectionId::makerTags, unsignedLong, -1, printSonyMisc3cSequenceNumber}, // In Exiftool, "SequenceLength2" is called "SequenceLength". Renamed due to clash of names." - {30, "SequenceLength2", N_("Sequence length 2"), N_("Length of the sequence of photos taken"), sonyMisc3cId, - makerTags, unsignedByte, -1, EXV_PRINT_TAG(sonyMisc3cSequenceLength2)}, + {30, "SequenceLength2", N_("Sequence length 2"), N_("Length of the sequence of photos taken"), IfdId::sonyMisc3cId, + SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(sonyMisc3cSequenceLength2)}, {41, "CameraOrientation", N_("Camera orientation"), N_("Orientation of the camera when the photo was taken"), - sonyMisc3cId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(sonyMisc3cCameraOrientation)}, - {42, "Quality2", N_("Quality 2"), N_("Quality 2"), sonyMisc3cId, makerTags, unsignedByte, -1, + IfdId::sonyMisc3cId, SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(sonyMisc3cCameraOrientation)}, + {42, "Quality2", N_("Quality 2"), N_("Quality 2"), IfdId::sonyMisc3cId, SectionId::makerTags, unsignedByte, -1, printSonyMisc3cQuality2}, - {71, "SonyImageHeight", N_("Sony image height"), N_("Height of the image"), sonyMisc3cId, makerTags, unsignedShort, - -1, printSonyMisc3cSonyImageHeight}, - {83, "ModelReleaseYear", N_("Model release year"), N_("Year that the model of camera was released"), sonyMisc3cId, - makerTags, unsignedByte, -1, printSonyMisc3cModelReleaseYear}, + {71, "SonyImageHeight", N_("Sony image height"), N_("Height of the image"), IfdId::sonyMisc3cId, + SectionId::makerTags, unsignedShort, -1, printSonyMisc3cSonyImageHeight}, + {83, "ModelReleaseYear", N_("Model release year"), N_("Year that the model of camera was released"), + IfdId::sonyMisc3cId, SectionId::makerTags, unsignedByte, -1, printSonyMisc3cModelReleaseYear}, // End of list marker - {0xffff, "(UnknownSonyMisc3c)", "(Unknown SonyMisc3c Tag)", N_("Unknown SonyMisc23 tag"), sonyMisc3cId, makerTags, - asciiString, -1, printValue}, + {0xffff, "(UnknownSonyMisc3c)", "(Unknown SonyMisc3c Tag)", N_("Unknown SonyMisc23 tag"), IfdId::sonyMisc3cId, + SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* SonyMakerNote::tagListSonyMisc3c() { @@ -961,20 +977,20 @@ constexpr TagInfo SonyMakerNote::tagInfoSonySInfo1_[] = { // "FaceInfoOffset" (2) and "FaceInfoLength" (50) does not make sense. // The values are all connected and changing one without the rest will // corrupt the data. - {6, "SonyDateTime", N_("Sony date/time"), N_("Date and time when the photo was captured"), sonySInfo1Id, makerTags, - asciiString, -1, printValue}, - {26, "SonyImageHeight", N_("Sony image height"), N_("Height of the image"), sonySInfo1Id, makerTags, unsignedShort, - -1, printValue}, - {28, "SonyImageWidth", N_("Sony image width"), N_("Width of the image"), sonySInfo1Id, makerTags, unsignedShort, -1, - printValue}, - {48, "FacesDetected", N_("Faces detected"), N_("Number of faces detected in the image"), sonySInfo1Id, makerTags, + {6, "SonyDateTime", N_("Sony date/time"), N_("Date and time when the photo was captured"), IfdId::sonySInfo1Id, + SectionId::makerTags, asciiString, -1, printValue}, + {26, "SonyImageHeight", N_("Sony image height"), N_("Height of the image"), IfdId::sonySInfo1Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {28, "SonyImageWidth", N_("Sony image width"), N_("Width of the image"), IfdId::sonySInfo1Id, SectionId::makerTags, unsignedShort, -1, printValue}, - {52, "MetaVersion", N_("Meta version"), N_("Sony meta version"), sonySInfo1Id, makerTags, asciiString, -1, - printValue}, + {48, "FacesDetected", N_("Faces detected"), N_("Number of faces detected in the image"), IfdId::sonySInfo1Id, + SectionId::makerTags, unsignedShort, -1, printValue}, + {52, "MetaVersion", N_("Meta version"), N_("Sony meta version"), IfdId::sonySInfo1Id, SectionId::makerTags, + asciiString, -1, printValue}, // TODO: Add FaceInfo1 (72) and FaceInfo2 (94) which are sub-groups of tags. // End of list marker - {0xffff, "(UnknownsonySInfo1Tag)", "(Unknown SonySInfo1 Tag)", "(Unknown SonySInfo1 Tag)", sonySInfo1Id, makerTags, - unsignedByte, -1, printValue}}; + {0xffff, "(UnknownsonySInfo1Tag)", "(Unknown SonySInfo1 Tag)", "(Unknown SonySInfo1 Tag)", IfdId::sonySInfo1Id, + SectionId::makerTags, unsignedByte, -1, printValue}}; const TagInfo* SonyMakerNote::tagListSonySInfo1() { return tagInfoSonySInfo1_; @@ -982,63 +998,81 @@ const TagInfo* SonyMakerNote::tagListSonySInfo1() { //! Sony Tag 2010 Sony2010 (Miscellaneous) 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, + {0, "SequenceImageNumber", N_("Sequence Image Number"), N_("Sequence Image Number"), IfdId::sony2010eId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {4, "SequenceFileNumber", N_("SequenceFileNumber"), N_("SequenceFileNumber"), IfdId::sony2010eId, + SectionId::makerTags, unsignedLong, 1, printValue}, + {8, "ReleaseMode2", N_("ReleaseMode2"), N_("ReleaseMode2"), IfdId::sony2010eId, SectionId::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, + {540, "DigitalZoomRatio", N_("DigitalZoomRatio"), N_("DigitalZoomRatio"), IfdId::sony2010eId, SectionId::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, + {556, "SonyDateTime", N_("SonyDateTime"), N_("SonyDateTime"), IfdId::sony2010eId, SectionId::makerTags, undefined, 1, printValue}, - {4468, "BrightnessValue", N_("BrightnessValue"), N_("BrightnessValue"), sony2010eId, makerTags, unsignedShort, 1, + {808, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), IfdId::sony2010eId, + SectionId::makerTags, unsignedByte, 1, printValue}, + {1208, "MeterInfo", N_("MeterInfo"), N_("MeterInfo"), IfdId::sony2010eId, SectionId::makerTags, undefined, 1, + printValue}, + {4444, "ReleaseMode3", N_("ReleaseMode3"), N_("ReleaseMode3"), IfdId::sony2010eId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {4448, "ReleaseMode2", N_("ReleaseMode2"), N_("ReleaseMode2"), IfdId::sony2010eId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {4456, "SelfTimer", N_("SelfTimer"), N_("SelfTimer"), IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, + printValue}, + {4460, "FlashMode", N_("FlashMode"), N_("FlashMode"), IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, + printValue}, + {4466, "StopsAboveBaseISO", N_("StopsAboveBaseISO"), N_("StopsAboveBaseISO"), IfdId::sony2010eId, + SectionId::makerTags, unsignedShort, 1, printValue}, + {4468, "BrightnessValue", N_("BrightnessValue"), N_("BrightnessValue"), IfdId::sony2010eId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {4472, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), IfdId::sony2010eId, + SectionId::makerTags, unsignedByte, 1, printValue}, + {4476, "HDRSetting", N_("HDRSetting"), N_("HDRSetting"), IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, printValue}, - {4472, "DynamicRangeOptimizer", N_("DynamicRangeOptimizer"), N_("DynamicRangeOptimizer"), sony2010eId, makerTags, + {4480, "ExposureCompensation", N_("ExposureCompensation"), N_("ExposureCompensation"), IfdId::sony2010eId, + SectionId::makerTags, signedShort, 1, printValue}, + {4502, "PictureProfile", N_("PictureProfile"), N_("PictureProfile"), IfdId::sony2010eId, SectionId::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, + {4503, "PictureProfile2", N_("PictureProfile2"), N_("PictureProfile2"), IfdId::sony2010eId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {4507, "PictureEffect2", N_("PictureEffect2"), N_("PictureEffect2"), IfdId::sony2010eId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {4520, "Quality2", N_("Quality2"), N_("Quality2"), IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, printValue}, - {4503, "PictureProfile2", N_("PictureProfile2"), N_("PictureProfile2"), sony2010eId, makerTags, unsignedByte, 1, + {4524, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), IfdId::sony2010eId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {4525, "ExposureProgram", N_("ExposureProgram"), N_("ExposureProgram"), IfdId::sony2010eId, SectionId::makerTags, + unsignedByte, 1, printValue}, + {4532, "WB_RGBLevels", N_("WB_RGBLevels"), N_("WB_RGBLevels"), IfdId::sony2010eId, SectionId::makerTags, + unsignedShort, 3, printValue}, + {4692, "SonyISO", N_("SonyISO"), N_("SonyISO"), IfdId::sony2010eId, SectionId::makerTags, unsignedShort, 1, printValue}, - {4507, "PictureEffect2", N_("PictureEffect2"), N_("PictureEffect2"), sony2010eId, makerTags, unsignedByte, 1, + {4696, "SonyISO2", N_("SonyISO2"), N_("SonyISO2"), IfdId::sony2010eId, SectionId::makerTags, unsignedShort, 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, + {4728, "FocalLength", N_("FocalLength"), N_("FocalLength"), IfdId::sony2010eId, SectionId::makerTags, unsignedShort, + 1, printValue}, + {4730, "MinFocalLength", N_("MinFocalLength"), N_("MinFocalLength"), IfdId::sony2010eId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {4732, "MaxFocalLength", N_("MaxFocalLength"), N_("MaxFocalLength"), IfdId::sony2010eId, SectionId::makerTags, + unsignedShort, 1, printValue}, + {4736, "SonyISO3", N_("SonyISO3"), N_("SonyISO3"), IfdId::sony2010eId, SectionId::makerTags, unsignedShort, 1, printValue}, - {4532, "WB_RGBLevels", N_("WB_RGBLevels"), N_("WB_RGBLevels"), sony2010eId, makerTags, unsignedShort, 3, + {6256, "DistortionCorrParams", N_("DistortionCorrParams"), N_("DistortionCorrParams"), IfdId::sony2010eId, + SectionId::makerTags, signedShort, 16, printValue}, + {6289, "LensFormat", N_("LensFormat"), N_("LensFormat"), IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, 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, + {6290, "LensMount", N_("LensMount"), N_("LensMount"), IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, printValue}, - {4732, "MaxFocalLength", N_("MaxFocalLength"), N_("MaxFocalLength"), sony2010eId, makerTags, unsignedShort, 1, + {6291, "LensType2", N_("LensType2"), N_("LensType2"), IfdId::sony2010eId, SectionId::makerTags, unsignedShort, 1, + printValue}, + {6294, "LensType", N_("LensType"), N_("LensType"), IfdId::sony2010eId, SectionId::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}, + IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, printValue}, {6297, "DistortionCorrParamsNumber", N_("DistortionCorrParamsNumber"), N_("DistortionCorrParamsNumber"), - sony2010eId, makerTags, unsignedByte, 1, printValue}, + IfdId::sony2010eId, SectionId::makerTags, unsignedByte, 1, printValue}, // End of list marker - {0xffff, "(UnknownSony2010eTag)", "(UnknownSony2010eTag)", "(UnknownSony2010eTag)", sony2010eId, makerTags, - unsignedByte, 1, printValue}, + {0xffff, "(UnknownSony2010eTag)", "(UnknownSony2010eTag)", "(UnknownSony2010eTag)", IfdId::sony2010eId, + SectionId::makerTags, unsignedByte, 1, printValue}, }; const TagInfo* SonyMakerNote::tagList2010e() { diff --git a/src/tags.cpp b/src/tags.cpp index f084dd9d11..91605f8927 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -20,28 +20,28 @@ using namespace Internal; //! List of all defined Exif sections. constexpr auto sectionInfo = std::array{ - SectionInfo(sectionIdNotSet, "(UnknownSection)", N_("Unknown section")), - SectionInfo(imgStruct, "ImageStructure", N_("Image data structure")), - SectionInfo(recOffset, "RecordingOffset", N_("Recording offset")), - SectionInfo(imgCharacter, "ImageCharacteristics", N_("Image data characteristics")), - SectionInfo(otherTags, "OtherTags", N_("Other data")), - SectionInfo(exifFormat, "ExifFormat", N_("Exif data structure")), - SectionInfo(exifVersion, "ExifVersion", N_("Exif version")), - SectionInfo(imgConfig, "ImageConfig", N_("Image configuration")), - SectionInfo(userInfo, "UserInfo", N_("User information")), - SectionInfo(relatedFile, "RelatedFile", N_("Related file")), - SectionInfo(dateTime, "DateTime", N_("Date and time")), - SectionInfo(captureCond, "CaptureConditions", N_("Picture taking conditions")), - SectionInfo(gpsTags, "GPS", N_("GPS information")), - SectionInfo(iopTags, "Interoperability", N_("Interoperability information")), - SectionInfo(mpfTags, "MPF", N_("CIPA Multi-Picture Format")), - SectionInfo(makerTags, "Makernote", N_("Vendor specific information")), - SectionInfo(dngTags, "DngTags", N_("Adobe DNG tags")), - SectionInfo(panaRaw, "PanasonicRaw", N_("Panasonic RAW tags")), - SectionInfo(tiffEp, "TIFF/EP", N_("TIFF/EP tags")), - SectionInfo(tiffPm6, "TIFF&PM6", N_("TIFF PageMaker 6.0 tags")), - SectionInfo(adobeOpi, "AdobeOPI", N_("Adobe OPI tags")), - SectionInfo(lastSectionId, "(LastSection)", N_("Last section")), + SectionInfo(SectionId::sectionIdNotSet, "(UnknownSection)", N_("Unknown section")), + SectionInfo(SectionId::imgStruct, "ImageStructure", N_("Image data structure")), + SectionInfo(SectionId::recOffset, "RecordingOffset", N_("Recording offset")), + SectionInfo(SectionId::imgCharacter, "ImageCharacteristics", N_("Image data characteristics")), + SectionInfo(SectionId::otherTags, "OtherTags", N_("Other data")), + SectionInfo(SectionId::exifFormat, "ExifFormat", N_("Exif data structure")), + SectionInfo(SectionId::exifVersion, "ExifVersion", N_("Exif version")), + SectionInfo(SectionId::imgConfig, "ImageConfig", N_("Image configuration")), + SectionInfo(SectionId::userInfo, "UserInfo", N_("User information")), + SectionInfo(SectionId::relatedFile, "RelatedFile", N_("Related file")), + SectionInfo(SectionId::dateTime, "DateTime", N_("Date and time")), + SectionInfo(SectionId::captureCond, "CaptureConditions", N_("Picture taking conditions")), + SectionInfo(SectionId::gpsTags, "GPS", N_("GPS information")), + SectionInfo(SectionId::iopTags, "Interoperability", N_("Interoperability information")), + SectionInfo(SectionId::mpfTags, "MPF", N_("CIPA Multi-Picture Format")), + SectionInfo(SectionId::makerTags, "Makernote", N_("Vendor specific information")), + SectionInfo(SectionId::dngTags, "DngTags", N_("Adobe DNG tags")), + SectionInfo(SectionId::panaRaw, "PanasonicRaw", N_("Panasonic RAW tags")), + SectionInfo(SectionId::tiffEp, "TIFF/EP", N_("TIFF/EP tags")), + SectionInfo(SectionId::tiffPm6, "TIFF&PM6", N_("TIFF PageMaker 6.0 tags")), + SectionInfo(SectionId::adobeOpi, "AdobeOPI", N_("Adobe OPI tags")), + SectionInfo(SectionId::lastSectionId, "(LastSection)", N_("Last section")), }; } // namespace Exiv2 @@ -54,8 +54,14 @@ bool TagVocabulary::operator==(const std::string& key) const { } // Unknown Tag -static const TagInfo unknownTag{0xffff, "Unknown tag", N_("Unknown tag"), N_("Unknown tag"), - ifdIdNotSet, sectionIdNotSet, asciiString, -1, +static const TagInfo unknownTag{0xffff, + "Unknown tag", + N_("Unknown tag"), + N_("Unknown tag"), + IfdId::ifdIdNotSet, + SectionId::sectionIdNotSet, + asciiString, + -1, printValue}; } // namespace Exiv2::Internal @@ -66,7 +72,7 @@ GroupInfo::GroupName::GroupName(std::string groupName) : g_(std::move(groupName) } //! @endcond -bool GroupInfo::operator==(int ifdId) const { +bool GroupInfo::operator==(IfdId ifdId) const { return ifdId_ == ifdId; } @@ -75,15 +81,15 @@ bool GroupInfo::operator==(const GroupName& groupName) const { } const char* ExifTags::sectionName(const ExifKey& key) { - const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); + const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); if (!ti) - return sectionInfo[unknownTag.sectionId_].name_; - return sectionInfo[ti->sectionId_].name_; + return sectionInfo[static_cast(unknownTag.sectionId_)].name_; + return sectionInfo[static_cast(ti->sectionId_)].name_; } /// \todo not used internally. At least we should test it uint16_t ExifTags::defaultCount(const ExifKey& key) { - const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); + const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); if (!ti) return unknownTag.count_; return ti->count_; @@ -169,12 +175,12 @@ struct ExifKey::Impl { // DATA static constexpr auto familyName_ = "Exif"; //!< "Exif" - const TagInfo* tagInfo_{}; //!< Tag info - uint16_t tag_{0}; //!< Tag value - IfdId ifdId_{ifdIdNotSet}; //!< The IFD associated with this tag - int idx_{0}; //!< Unique id of the Exif key in the image - std::string groupName_; //!< The group name - std::string key_; //!< %Key + const TagInfo* tagInfo_{}; //!< Tag info + uint16_t tag_{0}; //!< Tag value + IfdId ifdId_{IfdId::ifdIdNotSet}; //!< The IFD associated with this tag + int idx_{0}; //!< Unique id of the Exif key in the image + std::string groupName_; //!< The group name + std::string key_; //!< %Key }; std::string ExifKey::Impl::tagName() const { @@ -208,7 +214,7 @@ void ExifKey::Impl::decomposeKey(const std::string& key) { // Find IfdId IfdId ifdId = groupId(groupName); - if (ifdId == ifdIdNotSet) + if (ifdId == IfdId::ifdIdNotSet) throw Error(ErrorCode::kerInvalidKey, key); if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { throw Error(ErrorCode::kerInvalidKey, key); @@ -324,7 +330,7 @@ ExifKey* ExifKey::clone_() const { return new ExifKey(*this); } -int ExifKey::ifdId() const { +IfdId ExifKey::ifdId() const { return p_->ifdId_; } diff --git a/src/tags_int.cpp b/src/tags_int.cpp index 2b300c59cb..398b2141e4 100644 --- a/src/tags_int.cpp +++ b/src/tags_int.cpp @@ -39,131 +39,132 @@ std::ostream& printVersion(std::ostream& os, const std::string& str) { namespace Exiv2::Internal { //! List of all known Exif groups. Important: Group name (3rd column) must be unique! -constexpr GroupInfo groupInfo[] = {{ifdIdNotSet, "Unknown IFD", "Unknown", nullptr}, - {ifd0Id, "IFD0", "Image", ifdTagList}, - {ifd1Id, "IFD1", "Thumbnail", ifdTagList}, - {ifd2Id, "IFD2", "Image2", ifdTagList}, - {ifd3Id, "IFD3", "Image3", ifdTagList}, - {exifId, "Exif", "Photo", exifTagList}, - {gpsId, "GPSInfo", "GPSInfo", gpsTagList}, - {iopId, "Iop", "Iop", iopTagList}, - {mpfId, "MPF", "MpfInfo", mpfTagList}, - {subImage1Id, "SubImage1", "SubImage1", ifdTagList}, - {subImage2Id, "SubImage2", "SubImage2", ifdTagList}, - {subImage3Id, "SubImage3", "SubImage3", ifdTagList}, - {subImage4Id, "SubImage4", "SubImage4", ifdTagList}, - {subImage5Id, "SubImage5", "SubImage5", ifdTagList}, - {subImage6Id, "SubImage6", "SubImage6", ifdTagList}, - {subImage7Id, "SubImage7", "SubImage7", ifdTagList}, - {subImage8Id, "SubImage8", "SubImage8", ifdTagList}, - {subImage9Id, "SubImage9", "SubImage9", ifdTagList}, - {subThumb1Id, "SubThumb1", "SubThumb1", ifdTagList}, - {panaRawId, "PanaRaw", "PanasonicRaw", PanasonicMakerNote::tagListRaw}, - {mnId, "Makernote", "MakerNote", mnTagList}, - {canonId, "Makernote", "Canon", CanonMakerNote::tagList}, - {canonCsId, "Makernote", "CanonCs", CanonMakerNote::tagListCs}, - {canonSiId, "Makernote", "CanonSi", CanonMakerNote::tagListSi}, - {canonCfId, "Makernote", "CanonCf", CanonMakerNote::tagListCf}, - {canonPiId, "Makernote", "CanonPi", CanonMakerNote::tagListPi}, - {canonTiId, "Makernote", "CanonTi", CanonMakerNote::tagListTi}, - {canonFiId, "Makernote", "CanonFi", CanonMakerNote::tagListFi}, - {canonPaId, "Makernote", "CanonPa", CanonMakerNote::tagListPa}, - {canonPrId, "Makernote", "CanonPr", CanonMakerNote::tagListPr}, - {canonVigCor2Id, "Makernote", "CanonVigCor2", CanonMakerNote::tagListVigCor2}, - {canonLiOpId, "Makernote", "CanonLiOp", CanonMakerNote::tagListLiOp}, - {canonAfMiAdjId, "Makernote", "CanonAfMiAdj", CanonMakerNote::tagListAfMiAdj}, - {canonLeId, "Makernote", "CanonLe", CanonMakerNote::tagListLe}, - {canonAmId, "Makernote", "CanonAm", CanonMakerNote::tagListAm}, - {canonFilId, "Makernote", "CanonFil", CanonMakerNote::tagListFil}, - {canonMeId, "Makernote", "CanonMe", CanonMakerNote::tagListMe}, - {canonHdrId, "Makernote", "CanonHdr", CanonMakerNote::tagListHdr}, - {canonAfCId, "Makernote", "CanonAfC", CanonMakerNote::tagListAfC}, - {canonRawBId, "Makernote", "CanonRawB", CanonMakerNote::tagListRawB}, - {casioId, "Makernote", "Casio", CasioMakerNote::tagList}, - {casio2Id, "Makernote", "Casio2", Casio2MakerNote::tagList}, - {fujiId, "Makernote", "Fujifilm", FujiMakerNote::tagList}, - {minoltaId, "Makernote", "Minolta", MinoltaMakerNote::tagList}, - {minoltaCs5DId, "Makernote", "MinoltaCs5D", MinoltaMakerNote::tagListCs5D}, - {minoltaCs7DId, "Makernote", "MinoltaCs7D", MinoltaMakerNote::tagListCs7D}, - {minoltaCsOldId, "Makernote", "MinoltaCsOld", MinoltaMakerNote::tagListCsStd}, - {minoltaCsNewId, "Makernote", "MinoltaCsNew", MinoltaMakerNote::tagListCsStd}, - {nikon1Id, "Makernote", "Nikon1", Nikon1MakerNote::tagList}, - {nikon2Id, "Makernote", "Nikon2", Nikon2MakerNote::tagList}, - {nikon3Id, "Makernote", "Nikon3", Nikon3MakerNote::tagList}, - {nikonPvId, "Makernote", "NikonPreview", ifdTagList}, - {nikonVrId, "Makernote", "NikonVr", Nikon3MakerNote::tagListVr}, - {nikonPcId, "Makernote", "NikonPc", Nikon3MakerNote::tagListPc}, - {nikonWtId, "Makernote", "NikonWt", Nikon3MakerNote::tagListWt}, - {nikonIiId, "Makernote", "NikonIi", Nikon3MakerNote::tagListIi}, - {nikonAfId, "Makernote", "NikonAf", Nikon3MakerNote::tagListAf}, - {nikonAf21Id, "Makernote", "NikonAf2", Nikon3MakerNote::tagListAf21}, - {nikonAf22Id, "Makernote", "NikonAf22", Nikon3MakerNote::tagListAf22}, - {nikonAFTId, "Makernote", "NikonAFT", Nikon3MakerNote::tagListAFT}, - {nikonFiId, "Makernote", "NikonFi", Nikon3MakerNote::tagListFi}, - {nikonMeId, "Makernote", "NikonMe", Nikon3MakerNote::tagListMe}, - {nikonFl1Id, "Makernote", "NikonFl1", Nikon3MakerNote::tagListFl1}, - {nikonFl2Id, "Makernote", "NikonFl2", Nikon3MakerNote::tagListFl2}, - {nikonFl3Id, "Makernote", "NikonFl3", Nikon3MakerNote::tagListFl3}, - {nikonFl7Id, "Makernote", "NikonFl7", Nikon3MakerNote::tagListFl7}, - {nikonSi1Id, "Makernote", "NikonSiD80", Nikon3MakerNote::tagListSi1}, - {nikonSi2Id, "Makernote", "NikonSiD40", Nikon3MakerNote::tagListSi2}, - {nikonSi3Id, "Makernote", "NikonSiD300a", Nikon3MakerNote::tagListSi3}, - {nikonSi4Id, "Makernote", "NikonSiD300b", Nikon3MakerNote::tagListSi4}, - {nikonSi5Id, "Makernote", "NikonSi02xx", Nikon3MakerNote::tagListSi5}, - {nikonSi6Id, "Makernote", "NikonSi01xx", Nikon3MakerNote::tagListSi5}, - {nikonCb1Id, "Makernote", "NikonCb1", Nikon3MakerNote::tagListCb1}, - {nikonCb2Id, "Makernote", "NikonCb2", Nikon3MakerNote::tagListCb2}, - {nikonCb2aId, "Makernote", "NikonCb2a", Nikon3MakerNote::tagListCb2a}, - {nikonCb2bId, "Makernote", "NikonCb2b", Nikon3MakerNote::tagListCb2b}, - {nikonCb3Id, "Makernote", "NikonCb3", Nikon3MakerNote::tagListCb3}, - {nikonCb4Id, "Makernote", "NikonCb4", Nikon3MakerNote::tagListCb4}, - {nikonLd1Id, "Makernote", "NikonLd1", Nikon3MakerNote::tagListLd1}, - {nikonLd2Id, "Makernote", "NikonLd2", Nikon3MakerNote::tagListLd2}, - {nikonLd3Id, "Makernote", "NikonLd3", Nikon3MakerNote::tagListLd3}, - {nikonLd4Id, "Makernote", "NikonLd4", Nikon3MakerNote::tagListLd4}, - {olympusId, "Makernote", "Olympus", OlympusMakerNote::tagList}, - {olympus2Id, "Makernote", "Olympus2", OlympusMakerNote::tagList}, - {olympusCsId, "Makernote", "OlympusCs", OlympusMakerNote::tagListCs}, - {olympusEqId, "Makernote", "OlympusEq", OlympusMakerNote::tagListEq}, - {olympusRdId, "Makernote", "OlympusRd", OlympusMakerNote::tagListRd}, - {olympusRd2Id, "Makernote", "OlympusRd2", OlympusMakerNote::tagListRd2}, - {olympusIpId, "Makernote", "OlympusIp", OlympusMakerNote::tagListIp}, - {olympusFiId, "Makernote", "OlympusFi", OlympusMakerNote::tagListFi}, - {olympusFe1Id, "Makernote", "OlympusFe1", OlympusMakerNote::tagListFe}, - {olympusFe2Id, "Makernote", "OlympusFe2", OlympusMakerNote::tagListFe}, - {olympusFe3Id, "Makernote", "OlympusFe3", OlympusMakerNote::tagListFe}, - {olympusFe4Id, "Makernote", "OlympusFe4", OlympusMakerNote::tagListFe}, - {olympusFe5Id, "Makernote", "OlympusFe5", OlympusMakerNote::tagListFe}, - {olympusFe6Id, "Makernote", "OlympusFe6", OlympusMakerNote::tagListFe}, - {olympusFe7Id, "Makernote", "OlympusFe7", OlympusMakerNote::tagListFe}, - {olympusFe8Id, "Makernote", "OlympusFe8", OlympusMakerNote::tagListFe}, - {olympusFe9Id, "Makernote", "OlympusFe9", OlympusMakerNote::tagListFe}, - {olympusRiId, "Makernote", "OlympusRi", OlympusMakerNote::tagListRi}, - {panasonicId, "Makernote", "Panasonic", PanasonicMakerNote::tagList}, - {pentaxDngId, "Makernote", "PentaxDng", PentaxMakerNote::tagList}, - {pentaxId, "Makernote", "Pentax", PentaxMakerNote::tagList}, - {samsung2Id, "Makernote", "Samsung2", Samsung2MakerNote::tagList}, - {samsungPvId, "Makernote", "SamsungPreview", ifdTagList}, - {samsungPwId, "Makernote", "SamsungPictureWizard", Samsung2MakerNote::tagListPw}, - {sigmaId, "Makernote", "Sigma", SigmaMakerNote::tagList}, - {sony1Id, "Makernote", "Sony1", SonyMakerNote::tagList}, - {sony2Id, "Makernote", "Sony2", SonyMakerNote::tagList}, - {sonyMltId, "Makernote", "SonyMinolta", MinoltaMakerNote::tagList}, - {sony1CsId, "Makernote", "Sony1Cs", SonyMakerNote::tagListCs}, - {sony1Cs2Id, "Makernote", "Sony1Cs2", SonyMakerNote::tagListCs2}, - {sony1MltCs7DId, "Makernote", "Sony1MltCs7D", MinoltaMakerNote::tagListCs7D}, - {sony1MltCsOldId, "Makernote", "Sony1MltCsOld", MinoltaMakerNote::tagListCsStd}, - {sony1MltCsNewId, "Makernote", "Sony1MltCsNew", MinoltaMakerNote::tagListCsStd}, - {sony1MltCsA100Id, "Makernote", "Sony1MltCsA100", MinoltaMakerNote::tagListCsA100}, - {sony2CsId, "Makernote", "Sony2Cs", SonyMakerNote::tagListCs}, - {sony2Cs2Id, "Makernote", "Sony2Cs2", SonyMakerNote::tagListCs2}, - {sony2FpId, "Makernote", "Sony2Fp", SonyMakerNote::tagListFp}, - {sonyMisc1Id, "Makernote", "SonyMisc1", SonyMakerNote::tagListSonyMisc1}, - {sonyMisc2bId, "Makernote", "SonyMisc2b", SonyMakerNote::tagListSonyMisc2b}, - {sonyMisc3cId, "Makernote", "SonyMisc3c", SonyMakerNote::tagListSonyMisc3c}, - {sonySInfo1Id, "Makernote", "SonySInfo1", SonyMakerNote::tagListSonySInfo1}, - {sony2010eId, "Makernote", "Sony2010e", SonyMakerNote::tagList2010e}, - {lastId, "(Last IFD info)", "(Last IFD item)", nullptr}}; +constexpr GroupInfo groupInfo[] = { + {IfdId::ifdIdNotSet, "Unknown IFD", "Unknown", nullptr}, + {IfdId::ifd0Id, "IFD0", "Image", ifdTagList}, + {IfdId::ifd1Id, "IFD1", "Thumbnail", ifdTagList}, + {IfdId::ifd2Id, "IFD2", "Image2", ifdTagList}, + {IfdId::ifd3Id, "IFD3", "Image3", ifdTagList}, + {IfdId::exifId, "Exif", "Photo", exifTagList}, + {IfdId::gpsId, "GPSInfo", "GPSInfo", gpsTagList}, + {IfdId::iopId, "Iop", "Iop", iopTagList}, + {IfdId::mpfId, "MPF", "MpfInfo", mpfTagList}, + {IfdId::subImage1Id, "SubImage1", "SubImage1", ifdTagList}, + {IfdId::subImage2Id, "SubImage2", "SubImage2", ifdTagList}, + {IfdId::subImage3Id, "SubImage3", "SubImage3", ifdTagList}, + {IfdId::subImage4Id, "SubImage4", "SubImage4", ifdTagList}, + {IfdId::subImage5Id, "SubImage5", "SubImage5", ifdTagList}, + {IfdId::subImage6Id, "SubImage6", "SubImage6", ifdTagList}, + {IfdId::subImage7Id, "SubImage7", "SubImage7", ifdTagList}, + {IfdId::subImage8Id, "SubImage8", "SubImage8", ifdTagList}, + {IfdId::subImage9Id, "SubImage9", "SubImage9", ifdTagList}, + {IfdId::subThumb1Id, "SubThumb1", "SubThumb1", ifdTagList}, + {IfdId::panaRawId, "PanaRaw", "PanasonicRaw", PanasonicMakerNote::tagListRaw}, + {IfdId::mnId, "Makernote", "MakerNote", mnTagList}, + {IfdId::canonId, "Makernote", "Canon", CanonMakerNote::tagList}, + {IfdId::canonCsId, "Makernote", "CanonCs", CanonMakerNote::tagListCs}, + {IfdId::canonSiId, "Makernote", "CanonSi", CanonMakerNote::tagListSi}, + {IfdId::canonCfId, "Makernote", "CanonCf", CanonMakerNote::tagListCf}, + {IfdId::canonPiId, "Makernote", "CanonPi", CanonMakerNote::tagListPi}, + {IfdId::canonTiId, "Makernote", "CanonTi", CanonMakerNote::tagListTi}, + {IfdId::canonFiId, "Makernote", "CanonFi", CanonMakerNote::tagListFi}, + {IfdId::canonPaId, "Makernote", "CanonPa", CanonMakerNote::tagListPa}, + {IfdId::canonPrId, "Makernote", "CanonPr", CanonMakerNote::tagListPr}, + {IfdId::canonVigCor2Id, "Makernote", "CanonVigCor2", CanonMakerNote::tagListVigCor2}, + {IfdId::canonLiOpId, "Makernote", "CanonLiOp", CanonMakerNote::tagListLiOp}, + {IfdId::canonAfMiAdjId, "Makernote", "CanonAfMiAdj", CanonMakerNote::tagListAfMiAdj}, + {IfdId::canonLeId, "Makernote", "CanonLe", CanonMakerNote::tagListLe}, + {IfdId::canonAmId, "Makernote", "CanonAm", CanonMakerNote::tagListAm}, + {IfdId::canonFilId, "Makernote", "CanonFil", CanonMakerNote::tagListFil}, + {IfdId::canonMeId, "Makernote", "CanonMe", CanonMakerNote::tagListMe}, + {IfdId::canonHdrId, "Makernote", "CanonHdr", CanonMakerNote::tagListHdr}, + {IfdId::canonAfCId, "Makernote", "CanonAfC", CanonMakerNote::tagListAfC}, + {IfdId::canonRawBId, "Makernote", "CanonRawB", CanonMakerNote::tagListRawB}, + {IfdId::casioId, "Makernote", "Casio", CasioMakerNote::tagList}, + {IfdId::casio2Id, "Makernote", "Casio2", Casio2MakerNote::tagList}, + {IfdId::fujiId, "Makernote", "Fujifilm", FujiMakerNote::tagList}, + {IfdId::minoltaId, "Makernote", "Minolta", MinoltaMakerNote::tagList}, + {IfdId::minoltaCs5DId, "Makernote", "MinoltaCs5D", MinoltaMakerNote::tagListCs5D}, + {IfdId::minoltaCs7DId, "Makernote", "MinoltaCs7D", MinoltaMakerNote::tagListCs7D}, + {IfdId::minoltaCsOldId, "Makernote", "MinoltaCsOld", MinoltaMakerNote::tagListCsStd}, + {IfdId::minoltaCsNewId, "Makernote", "MinoltaCsNew", MinoltaMakerNote::tagListCsStd}, + {IfdId::nikon1Id, "Makernote", "Nikon1", Nikon1MakerNote::tagList}, + {IfdId::nikon2Id, "Makernote", "Nikon2", Nikon2MakerNote::tagList}, + {IfdId::nikon3Id, "Makernote", "Nikon3", Nikon3MakerNote::tagList}, + {IfdId::nikonPvId, "Makernote", "NikonPreview", ifdTagList}, + {IfdId::nikonVrId, "Makernote", "NikonVr", Nikon3MakerNote::tagListVr}, + {IfdId::nikonPcId, "Makernote", "NikonPc", Nikon3MakerNote::tagListPc}, + {IfdId::nikonWtId, "Makernote", "NikonWt", Nikon3MakerNote::tagListWt}, + {IfdId::nikonIiId, "Makernote", "NikonIi", Nikon3MakerNote::tagListIi}, + {IfdId::nikonAfId, "Makernote", "NikonAf", Nikon3MakerNote::tagListAf}, + {IfdId::nikonAf21Id, "Makernote", "NikonAf2", Nikon3MakerNote::tagListAf21}, + {IfdId::nikonAf22Id, "Makernote", "NikonAf22", Nikon3MakerNote::tagListAf22}, + {IfdId::nikonAFTId, "Makernote", "NikonAFT", Nikon3MakerNote::tagListAFT}, + {IfdId::nikonFiId, "Makernote", "NikonFi", Nikon3MakerNote::tagListFi}, + {IfdId::nikonMeId, "Makernote", "NikonMe", Nikon3MakerNote::tagListMe}, + {IfdId::nikonFl1Id, "Makernote", "NikonFl1", Nikon3MakerNote::tagListFl1}, + {IfdId::nikonFl2Id, "Makernote", "NikonFl2", Nikon3MakerNote::tagListFl2}, + {IfdId::nikonFl3Id, "Makernote", "NikonFl3", Nikon3MakerNote::tagListFl3}, + {IfdId::nikonFl7Id, "Makernote", "NikonFl7", Nikon3MakerNote::tagListFl7}, + {IfdId::nikonSi1Id, "Makernote", "NikonSiD80", Nikon3MakerNote::tagListSi1}, + {IfdId::nikonSi2Id, "Makernote", "NikonSiD40", Nikon3MakerNote::tagListSi2}, + {IfdId::nikonSi3Id, "Makernote", "NikonSiD300a", Nikon3MakerNote::tagListSi3}, + {IfdId::nikonSi4Id, "Makernote", "NikonSiD300b", Nikon3MakerNote::tagListSi4}, + {IfdId::nikonSi5Id, "Makernote", "NikonSi02xx", Nikon3MakerNote::tagListSi5}, + {IfdId::nikonSi6Id, "Makernote", "NikonSi01xx", Nikon3MakerNote::tagListSi5}, + {IfdId::nikonCb1Id, "Makernote", "NikonCb1", Nikon3MakerNote::tagListCb1}, + {IfdId::nikonCb2Id, "Makernote", "NikonCb2", Nikon3MakerNote::tagListCb2}, + {IfdId::nikonCb2aId, "Makernote", "NikonCb2a", Nikon3MakerNote::tagListCb2a}, + {IfdId::nikonCb2bId, "Makernote", "NikonCb2b", Nikon3MakerNote::tagListCb2b}, + {IfdId::nikonCb3Id, "Makernote", "NikonCb3", Nikon3MakerNote::tagListCb3}, + {IfdId::nikonCb4Id, "Makernote", "NikonCb4", Nikon3MakerNote::tagListCb4}, + {IfdId::nikonLd1Id, "Makernote", "NikonLd1", Nikon3MakerNote::tagListLd1}, + {IfdId::nikonLd2Id, "Makernote", "NikonLd2", Nikon3MakerNote::tagListLd2}, + {IfdId::nikonLd3Id, "Makernote", "NikonLd3", Nikon3MakerNote::tagListLd3}, + {IfdId::nikonLd4Id, "Makernote", "NikonLd4", Nikon3MakerNote::tagListLd4}, + {IfdId::olympusId, "Makernote", "Olympus", OlympusMakerNote::tagList}, + {IfdId::olympus2Id, "Makernote", "Olympus2", OlympusMakerNote::tagList}, + {IfdId::olympusCsId, "Makernote", "OlympusCs", OlympusMakerNote::tagListCs}, + {IfdId::olympusEqId, "Makernote", "OlympusEq", OlympusMakerNote::tagListEq}, + {IfdId::olympusRdId, "Makernote", "OlympusRd", OlympusMakerNote::tagListRd}, + {IfdId::olympusRd2Id, "Makernote", "OlympusRd2", OlympusMakerNote::tagListRd2}, + {IfdId::olympusIpId, "Makernote", "OlympusIp", OlympusMakerNote::tagListIp}, + {IfdId::olympusFiId, "Makernote", "OlympusFi", OlympusMakerNote::tagListFi}, + {IfdId::olympusFe1Id, "Makernote", "OlympusFe1", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe2Id, "Makernote", "OlympusFe2", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe3Id, "Makernote", "OlympusFe3", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe4Id, "Makernote", "OlympusFe4", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe5Id, "Makernote", "OlympusFe5", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe6Id, "Makernote", "OlympusFe6", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe7Id, "Makernote", "OlympusFe7", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe8Id, "Makernote", "OlympusFe8", OlympusMakerNote::tagListFe}, + {IfdId::olympusFe9Id, "Makernote", "OlympusFe9", OlympusMakerNote::tagListFe}, + {IfdId::olympusRiId, "Makernote", "OlympusRi", OlympusMakerNote::tagListRi}, + {IfdId::panasonicId, "Makernote", "Panasonic", PanasonicMakerNote::tagList}, + {IfdId::pentaxDngId, "Makernote", "PentaxDng", PentaxMakerNote::tagList}, + {IfdId::pentaxId, "Makernote", "Pentax", PentaxMakerNote::tagList}, + {IfdId::samsung2Id, "Makernote", "Samsung2", Samsung2MakerNote::tagList}, + {IfdId::samsungPvId, "Makernote", "SamsungPreview", ifdTagList}, + {IfdId::samsungPwId, "Makernote", "SamsungPictureWizard", Samsung2MakerNote::tagListPw}, + {IfdId::sigmaId, "Makernote", "Sigma", SigmaMakerNote::tagList}, + {IfdId::sony1Id, "Makernote", "Sony1", SonyMakerNote::tagList}, + {IfdId::sony2Id, "Makernote", "Sony2", SonyMakerNote::tagList}, + {IfdId::sonyMltId, "Makernote", "SonyMinolta", MinoltaMakerNote::tagList}, + {IfdId::sony1CsId, "Makernote", "Sony1Cs", SonyMakerNote::tagListCs}, + {IfdId::sony1Cs2Id, "Makernote", "Sony1Cs2", SonyMakerNote::tagListCs2}, + {IfdId::sony1MltCs7DId, "Makernote", "Sony1MltCs7D", MinoltaMakerNote::tagListCs7D}, + {IfdId::sony1MltCsOldId, "Makernote", "Sony1MltCsOld", MinoltaMakerNote::tagListCsStd}, + {IfdId::sony1MltCsNewId, "Makernote", "Sony1MltCsNew", MinoltaMakerNote::tagListCsStd}, + {IfdId::sony1MltCsA100Id, "Makernote", "Sony1MltCsA100", MinoltaMakerNote::tagListCsA100}, + {IfdId::sony2CsId, "Makernote", "Sony2Cs", SonyMakerNote::tagListCs}, + {IfdId::sony2Cs2Id, "Makernote", "Sony2Cs2", SonyMakerNote::tagListCs2}, + {IfdId::sony2FpId, "Makernote", "Sony2Fp", SonyMakerNote::tagListFp}, + {IfdId::sonyMisc1Id, "Makernote", "SonyMisc1", SonyMakerNote::tagListSonyMisc1}, + {IfdId::sonyMisc2bId, "Makernote", "SonyMisc2b", SonyMakerNote::tagListSonyMisc2b}, + {IfdId::sonyMisc3cId, "Makernote", "SonyMisc3c", SonyMakerNote::tagListSonyMisc3c}, + {IfdId::sonySInfo1Id, "Makernote", "SonySInfo1", SonyMakerNote::tagListSonySInfo1}, + {IfdId::sony2010eId, "Makernote", "Sony2010e", SonyMakerNote::tagList2010e}, + {IfdId::lastId, "(Last IFD info)", "(Last IFD item)", nullptr}}; //! Units for measuring X and Y resolution, tags 0x0128, 0xa210 constexpr TagDetails exifUnit[] = {{1, N_("none")}, {2, N_("inch")}, {3, N_("cm")}}; @@ -401,157 +402,157 @@ 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}, + IfdId::ifd0Id, SectionId::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 + N_("A general indication of the kind of data contained in this subfile."), IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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)}, + IfdId::ifd0Id, SectionId::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)}, + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 - {0x010a, "FillOrder", N_("Fill Order"), N_("The logical order of bits within a byte"), ifd0Id, imgStruct, - unsignedShort, 1, printValue}, // TIFF tag + IfdId::ifd0Id, SectionId::imgStruct, unsignedShort, 1, printValue}, // TIFF tag + {0x010a, "FillOrder", N_("Fill Order"), N_("The logical order of bits within a byte"), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, - {0x0112, "Orientation", N_("Orientation"), N_("The image orientation viewed in terms of rows and columns."), ifd0Id, - imgStruct, unsignedShort, 1, print0x0112}, + IfdId::ifd0Id, SectionId::recOffset, unsignedLong, -1, printValue}, + {0x0112, "Orientation", N_("Orientation"), N_("The image orientation viewed in terms of rows and columns."), + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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, printInt64}, + IfdId::ifd0Id, SectionId::imgStruct, unsignedRational, 1, printInt64}, {0x011b, "YResolution", N_("Y-Resolution"), N_("The number of pixels per in the " "direction. The same value as is designated."), - ifd0Id, imgStruct, unsignedRational, 1, printInt64}, + IfdId::ifd0Id, SectionId::imgStruct, unsignedRational, 1, printInt64}, {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)}, - {0x011d, "PageName", N_("Page Name"), N_("The name of the page from which this image was scanned."), ifd0Id, - imgStruct, asciiString, 0, printValue}, // TIFF tag + IfdId::ifd0Id, SectionId::imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPlanarConfiguration)}, + {0x011d, "PageName", N_("Page Name"), N_("The name of the page from which this image was scanned."), IfdId::ifd0Id, + SectionId::imgStruct, asciiString, 0, printValue}, // TIFF tag {0x011e, "XPosition", N_("X Position"), N_("X position of the image. The X offset in ResolutionUnits of the " "left side of the image, with respect to the left side of the page."), - ifd0Id, imgStruct, unsignedRational, 1, printValue}, // TIFF tag + IfdId::ifd0Id, SectionId::imgStruct, unsignedRational, 1, printValue}, // TIFF tag {0x011f, "YPosition", N_("Y Position"), N_("Y position of the image. The Y offset in ResolutionUnits of the " "top of the image, with respect to the top of the page. In the TIFF " "coordinate scheme, the positive Y direction is down, so that " "YPosition is always positive."), - ifd0Id, imgStruct, unsignedRational, 1, printValue}, // TIFF tag + IfdId::ifd0Id, SectionId::imgStruct, unsignedRational, 1, printValue}, // TIFF tag {0x0122, "GrayResponseUnit", N_("Gray Response Unit"), - N_("The precision of the information contained in the GrayResponseCurve."), ifd0Id, imgStruct, unsignedShort, 1, - printValue}, // TIFF tag + N_("The precision of the information contained in the GrayResponseCurve."), IfdId::ifd0Id, SectionId::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 - {0x0124, "T4Options", N_("T4 Options"), N_("T.4-encoding 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 + N_("For grayscale data, the optical density of each possible pixel value."), IfdId::ifd0Id, SectionId::imgStruct, + unsignedShort, -1, printValue}, // TIFF tag + {0x0124, "T4Options", N_("T4 Options"), N_("T.4-encoding options."), IfdId::ifd0Id, SectionId::imgStruct, + unsignedLong, 1, printValue}, // TIFF tag + {0x0125, "T6Options", N_("T6 Options"), N_("T.6-encoding options."), IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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 " @@ -559,113 +560,113 @@ constexpr TagInfo ifdTagInfo[] = { "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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + N_("The tile length (height) in pixels. This is the number of rows in each tile."), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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}, + N_("Defined by Adobe Corporation to enable TIFF Trees within a TIFF file."), IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + N_("The name of each ink used in a separated (PhotometricInterpretation=5) image."), IfdId::ifd0Id, + SectionId::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 + N_("The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples."), IfdId::ifd0Id, + SectionId::imgStruct, unsignedShort, 1, printValue}, // TIFF tag {0x0150, "DotRange", N_("Dot Range"), /* xgettext:no-c-format */ - N_("The component values that correspond to a 0% dot and 100% dot."), ifd0Id, imgStruct, unsignedByte, -1, - printValue}, // TIFF tag + N_("The component values that correspond to a 0% dot and 100% dot."), IfdId::ifd0Id, SectionId::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 + N_("A description of the printing environment for which this separation is intended."), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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 - {0x0154, "SMinSampleValue", N_("SMin Sample Value"), N_("This field specifies the minimum 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 - {0x0156, "TransferRange", N_("Transfer Range"), N_("Expands the range of the TransferFunction"), ifd0Id, - imgCharacter, unsignedShort, 6, printValue}, // TIFF tag + N_("This field specifies how to interpret each data sample in a pixel."), IfdId::ifd0Id, SectionId::imgStruct, + unsignedShort, -1, EXV_PRINT_TAG(exifSampleFormat)}, // TIFF tag + {0x0154, "SMinSampleValue", N_("SMin Sample Value"), N_("This field specifies the minimum sample value."), + IfdId::ifd0Id, SectionId::imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0155, "SMaxSampleValue", N_("SMax Sample Value"), N_("This field specifies the maximum sample value."), + IfdId::ifd0Id, SectionId::imgStruct, unsignedShort, -1, printValue}, // TIFF tag + {0x0156, "TransferRange", N_("Transfer Range"), N_("Expands the range of the TransferFunction"), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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 " @@ -673,30 +674,30 @@ constexpr TagInfo ifdTagInfo[] = { "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}, + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + N_("This Field points to a list of point transform values, one per component."), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -705,12 +706,12 @@ constexpr TagInfo ifdTagInfo[] = { "color space information tag, with the default being the value " "that gives the optimal image characteristics " "Interoperability this condition."), - ifd0Id, imgCharacter, unsignedRational, 3, printValue}, + IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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 " @@ -725,7 +726,7 @@ constexpr TagInfo ifdTagInfo[] = { ", 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}, + IfdId::ifd0Id, SectionId::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 " @@ -733,36 +734,36 @@ constexpr TagInfo ifdTagInfo[] = { "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}, - {0x02bc, "XMLPacket", N_("XML Packet"), N_("XMP Metadata (Adobe technote 9-14-02)"), ifd0Id, otherTags, - unsignedByte, -1, printValue}, - {0x4746, "Rating", N_("Windows Rating"), N_("Rating tag used by Windows"), 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 + IfdId::ifd0Id, SectionId::imgCharacter, unsignedRational, 6, printValue}, + {0x02bc, "XMLPacket", N_("XML Packet"), N_("XMP Metadata (Adobe technote 9-14-02)"), IfdId::ifd0Id, + SectionId::otherTags, unsignedByte, -1, printValue}, + {0x4746, "Rating", N_("Windows Rating"), N_("Rating tag used by Windows"), IfdId::ifd0Id, SectionId::otherTags, + unsignedShort, -1, printValue}, // Windows Tag + {0x4749, "RatingPercent", N_("Windows Rating Percent"), N_("Rating tag used by Windows, value in percent"), + IfdId::ifd0Id, SectionId::otherTags, unsignedShort, -1, printValue}, // Windows Tag {0x7032, "VignettingCorrParams", N_("Vignetting Correction Params"), N_("Sony vignetting correction parameters"), - ifd0Id, otherTags, signedShort, 17, printValue}, // Sony Tag + IfdId::ifd0Id, SectionId::otherTags, signedShort, 17, printValue}, // Sony Tag {0x7035, "ChromaticAberrationCorrParams", N_("Chromatic Aberration Correction Params"), - N_("Sony chromatic aberration correction parameters"), ifd0Id, otherTags, signedShort, 33, + N_("Sony chromatic aberration correction parameters"), IfdId::ifd0Id, SectionId::otherTags, signedShort, 33, printValue}, // Sony Tag {0x7037, "DistortionCorrParams", N_("Distortion Correction Params"), N_("Sony distortion correction parameters"), - ifd0Id, otherTags, signedShort, 17, printValue}, // Sony Tag + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -782,131 +783,132 @@ constexpr TagInfo ifdTagInfo[] = { "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}, - {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, + IfdId::ifd0Id, SectionId::otherTags, asciiString, 0, print0x8298}, + {0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds."), IfdId::ifd0Id, + SectionId::tiffEp, unsignedRational, 1, print0x829a}, // TIFF/EP tag + {0x829d, "FNumber", N_("FNumber"), N_("The F number."), IfdId::ifd0Id, SectionId::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 + {0x83bb, "IPTCNAA", N_("IPTC/NAA"), N_("Contains an IPTC/NAA record"), IfdId::ifd0Id, SectionId::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}, + N_("Contains information embedded by the Adobe Photoshop application"), IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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}, + N_("Contains an InterColor Consortium (ICC) format color space characterization/profile"), IfdId::ifd0Id, + SectionId::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 + N_("The class of the program used by the camera to set exposure when the picture is taken."), IfdId::ifd0Id, + SectionId::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 + N_("Indicates the spectral sensitivity of each channel of the camera used."), IfdId::ifd0Id, SectionId::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}, + IfdId::ifd0Id, SectionId::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 + N_("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232."), + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::tiffEp, undefined, 0, printValue}, // TIFF/EP tag + {0x8829, "Interlace", N_("Interlace"), N_("Indicates the field number of multifield images."), IfdId::ifd0Id, + SectionId::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}, + IfdId::ifd0Id, SectionId::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 + N_("Number of seconds image capture was delayed from button press."), IfdId::ifd0Id, SectionId::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 + N_("The date and time when the original image data was generated."), IfdId::ifd0Id, SectionId::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, + N_("Specific to compressed data; states the compressed bits per pixel."), IfdId::ifd0Id, SectionId::tiffEp, + unsignedRational, 1, printFloat}, // TIFF/EP tag + {0x9201, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed."), IfdId::ifd0Id, SectionId::tiffEp, + signedRational, 1, print0x9201}, // TIFF/EP tag + {0x9202, "ApertureValue", N_("Aperture Value"), N_("The lens aperture."), IfdId::ifd0Id, SectionId::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, + {0x9203, "BrightnessValue", N_("Brightness Value"), N_("The value of brightness."), IfdId::ifd0Id, + SectionId::tiffEp, signedRational, 1, printFloat}, // TIFF/EP tag + {0x9204, "ExposureBiasValue", N_("Exposure Bias Value"), N_("The exposure bias."), IfdId::ifd0Id, SectionId::tiffEp, + signedRational, 1, print0x9204}, // TIFF/EP tag + {0x9205, "MaxApertureValue", N_("Max Aperture Value"), N_("The smallest F number of the lens."), IfdId::ifd0Id, + SectionId::tiffEp, unsignedRational, 1, print0x9202}, // TIFF/EP tag + {0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), + IfdId::ifd0Id, SectionId::tiffEp, signedRational, 1, print0x9206}, // TIFF/EP tag + {0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), IfdId::ifd0Id, SectionId::tiffEp, + unsignedShort, 1, print0x9207}, // TIFF/EP tag + {0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), IfdId::ifd0Id, SectionId::tiffEp, + unsignedShort, 1, print0x9208}, // TIFF/EP tag + {0x9209, "Flash", N_("Flash"), N_("Indicates the status of flash when the image was shot."), IfdId::ifd0Id, + SectionId::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."), IfdId::ifd0Id, + SectionId::tiffEp, unsignedRational, 1, print0x920a}, // TIFF/EP tag + {0x920b, "FlashEnergy", N_("Flash Energy"), N_("Amount of flash energy (BCPS)."), IfdId::ifd0Id, SectionId::tiffEp, + unsignedRational, 0, printValue}, // TIFF/EP tag + {0x920c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), N_("SFR of the camera."), IfdId::ifd0Id, + SectionId::tiffEp, undefined, 0, printValue}, // TIFF/EP tag + {0x920d, "Noise", N_("Noise"), N_("Noise measurement values."), IfdId::ifd0Id, SectionId::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 + N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image."), IfdId::ifd0Id, + SectionId::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 + N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image."), + IfdId::ifd0Id, SectionId::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 + N_("Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391)."), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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, + N_("Security classification assigned to the image."), IfdId::ifd0Id, SectionId::tiffEp, asciiString, 0, printValue}, // TIFF/EP tag + {0x9213, "ImageHistory", N_("Image History"), N_("Record of what has been done to the image."), IfdId::ifd0Id, + SectionId::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."), IfdId::ifd0Id, SectionId::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 + N_("Encodes the camera exposure index setting when image was captured."), IfdId::ifd0Id, SectionId::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 - {0x9217, "SensingMethod", N_("Sensing Method"), N_("Type of image sensor."), 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 - {0x9c9c, "XPComment", N_("Windows Comment"), N_("Comment tag used by Windows, encoded in UCS2"), 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 - {0x9c9e, "XPKeywords", N_("Windows Keywords"), N_("Keywords tag used by Windows, encoded in UCS2"), 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 - {0xc4a5, "PrintImageMatching", N_("Print Image Matching"), N_("Print Image Matching, description needed."), ifd0Id, - otherTags, undefined, -1, printValue}, + IfdId::ifd0Id, SectionId::tiffEp, unsignedByte, 4, printValue}, // TIFF/EP Tag + {0x9217, "SensingMethod", N_("Sensing Method"), N_("Type of image sensor."), IfdId::ifd0Id, SectionId::tiffEp, + unsignedShort, 1, EXV_PRINT_TAG(tiffSensingMethod)}, // TIFF/EP tag + {0x9c9b, "XPTitle", N_("Windows Title"), N_("Title tag used by Windows, encoded in UCS2"), IfdId::ifd0Id, + SectionId::otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9c, "XPComment", N_("Windows Comment"), N_("Comment tag used by Windows, encoded in UCS2"), IfdId::ifd0Id, + SectionId::otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9d, "XPAuthor", N_("Windows Author"), N_("Author tag used by Windows, encoded in UCS2"), IfdId::ifd0Id, + SectionId::otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9e, "XPKeywords", N_("Windows Keywords"), N_("Keywords tag used by Windows, encoded in UCS2"), IfdId::ifd0Id, + SectionId::otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0x9c9f, "XPSubject", N_("Windows Subject"), N_("Subject tag used by Windows, encoded in UCS2"), IfdId::ifd0Id, + SectionId::otherTags, unsignedByte, -1, printUcs2}, // Windows Tag + {0xc4a5, "PrintImageMatching", N_("Print Image Matching"), N_("Print Image Matching, description needed."), + IfdId::ifd0Id, SectionId::otherTags, undefined, -1, printValue}, //////////////////////////////////////// // https://wwwimages.adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/dng_spec_1.5.0.0.pdf {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 + IfdId::ifd0Id, SectionId::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" @@ -915,7 +917,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -923,55 +925,55 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 - {0xc617, "CFALayout", N_("CFA Layout"), N_("Describes the spatial layout of the CFA."), ifd0Id, dngTags, - unsignedShort, 1, EXV_PRINT_TAG(dngCfaLayout)}, // DNG tag + IfdId::ifd0Id, SectionId::dngTags, unsignedByte, -1, printValue}, // DNG tag + {0xc617, "CFALayout", N_("CFA Layout"), N_("Describes the spatial layout of the CFA."), IfdId::ifd0Id, + SectionId::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 + IfdId::ifd0Id, SectionId::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, + N_("Specifies repeat pattern size for the BlackLevel tag."), IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -979,7 +981,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -987,27 +989,27 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1017,7 +1019,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1027,21 +1029,21 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1051,18 +1053,18 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1077,21 +1079,21 @@ constexpr TagInfo ifdTagInfo[] = { "(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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1100,7 +1102,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1108,15 +1110,15 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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, " @@ -1125,23 +1127,23 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1149,7 +1151,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1157,7 +1159,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1166,7 +1168,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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, " @@ -1174,7 +1176,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1183,11 +1185,11 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1198,11 +1200,11 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1210,7 +1212,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1222,7 +1224,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1232,21 +1234,21 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1254,31 +1256,31 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1286,20 +1288,20 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1309,7 +1311,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1319,7 +1321,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1328,60 +1330,60 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1389,18 +1391,18 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1415,19 +1417,19 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1435,7 +1437,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::dngTags, tiffDouble, -1, printValue}, // DNG tag //////////////////////////////////////// // https://www.adobe.com/content/dam/acom/en/devnet/CinemaDNG/pdf/CinemaDNG_Format_Specification_v1_1.pdf {0xc763, "TimeCodes", N_("TimeCodes"), @@ -1446,14 +1448,14 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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. " @@ -1464,47 +1466,47 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1512,29 +1514,29 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 " @@ -1542,38 +1544,38 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + N_("Specifies the measurement units for the DepthNear and DepthFar tags."), IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + N_("A string that documents how the enhanced image data was processed."), IfdId::ifd0Id, SectionId::dngTags, + asciiString, 0, printValue}, // DNG 1.5 tag //////////////////////////////////////// // https://helpx.adobe.com/photoshop/kb/dng-specification-tags.html {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 - {0xcd2e, "SemanticName", N_("Semantic Name"), N_("A string that identifies the semantic mask."), ifd0Id, dngTags, - asciiString, 0, printValue}, // DNG 1.6 tag + IfdId::ifd0Id, SectionId::dngTags, undefined, -1, printValue}, // DNG 1.6 tag + {0xcd2e, "SemanticName", N_("Semantic Name"), N_("A string that identifies the semantic mask."), IfdId::ifd0Id, + SectionId::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 + N_("A string that identifies a specific instance in a semantic mask."), IfdId::ifd0Id, SectionId::dngTags, + asciiString, 0, printValue}, // DNG 1.6 tag {0xcd31, "CalibrationIlluminant3", N_("Calibration Illuminant 3"), N_("The illuminant used for an optional third set of color calibration " "tags (ColorMatrix3, CameraCalibration3, ReductionMatrix3). The legal " @@ -1582,7 +1584,7 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 " @@ -1592,40 +1594,40 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::dngTags, undefined, -1, printValue}, // DNG 1.6 tag {0xcd38, "MaskSubArea", N_("Mask Subarea"), N_("This tag identifies the crop rectangle of this IFD's mask, " "relative to the main image."), - ifd0Id, dngTags, unsignedLong, 4, printValue}, // DNG 1.6 tag + IfdId::ifd0Id, SectionId::dngTags, unsignedLong, 4, 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 " @@ -1635,14 +1637,14 @@ constexpr TagInfo ifdTagInfo[] = { "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 + IfdId::ifd0Id, SectionId::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 + IfdId::ifd0Id, SectionId::dngTags, signedRational, -1, printValue}, // DNG 1.6 tag {0xcd3b, "RGBTables", N_("RGB Tables"), N_("This tag specifies color transforms that can be applied to masked image " "regions. Color transforms are specified using RGB-to-RGB color lookup tables. " @@ -1650,12 +1652,12 @@ constexpr TagInfo ifdTagInfo[] = { "to a sub-region of the image. The overall color transform is a linear " "combination of the color tables, weighted by their corresponding Semantic " "Masks."), - ifd0Id, dngTags, undefined, -1, printValue}, // DNG 1.6 tag + IfdId::ifd0Id, SectionId::dngTags, undefined, -1, printValue}, // DNG 1.6 tag //////////////////////////////////////// // End of list marker - {0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"), N_("Unknown IFD tag"), ifd0Id, sectionIdNotSet, asciiString, -1, - printValue}, + {0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"), N_("Unknown IFD tag"), IfdId::ifd0Id, SectionId::sectionIdNotSet, + asciiString, -1, printValue}, }; const TagInfo* ifdTagList() { @@ -1668,78 +1670,80 @@ constexpr TagDetails exifCompositeImage[] = { // Exif IFD Tags constexpr TagInfo exifTagInfo[] = { - {0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds (sec)."), exifId, captureCond, - unsignedRational, 1, print0x829a}, - {0x829d, "FNumber", N_("FNumber"), N_("The F number."), exifId, captureCond, unsignedRational, 1, print0x829d}, + {0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds (sec)."), IfdId::exifId, + SectionId::captureCond, unsignedRational, 1, print0x829a}, + {0x829d, "FNumber", N_("FNumber"), N_("The F number."), IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + N_("The date and time when the image was stored as digital data."), IfdId::exifId, SectionId::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 + N_("Time difference from Universal Time Coordinated including daylight saving time of DateTime tag."), + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 " @@ -1749,93 +1753,93 @@ constexpr TagInfo exifTagInfo[] = { "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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, - {0x9202, "ApertureValue", N_("Aperture"), N_("The lens aperture. The unit is the APEX value."), exifId, captureCond, - unsignedRational, 1, print0x9202}, + IfdId::exifId, SectionId::captureCond, signedRational, 1, print0x9201}, + {0x9202, "ApertureValue", N_("Aperture"), N_("The lens aperture. The unit is the APEX value."), IfdId::exifId, + SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, - {0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), exifId, - captureCond, unsignedRational, 1, print0x9206}, - {0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), exifId, captureCond, unsignedShort, 1, - print0x9207}, - {0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), exifId, captureCond, unsignedShort, 1, - print0x9208}, + IfdId::exifId, SectionId::captureCond, unsignedRational, 1, print0x9202}, + {0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), + IfdId::exifId, SectionId::captureCond, unsignedRational, 1, print0x9206}, + {0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), IfdId::exifId, SectionId::captureCond, + unsignedShort, 1, print0x9207}, + {0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), IfdId::exifId, SectionId::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)}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + N_("A tag used to record fractions of seconds for the tag."), IfdId::exifId, SectionId::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}, + N_("A tag used to record fractions of seconds for the tag."), IfdId::exifId, + SectionId::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}, + N_("A tag used to record fractions of seconds for the tag."), IfdId::exifId, + SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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 " @@ -1844,14 +1848,14 @@ constexpr TagInfo exifTagInfo[] = { "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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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 " @@ -1860,14 +1864,14 @@ constexpr TagInfo exifTagInfo[] = { "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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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 " @@ -1875,157 +1879,158 @@ constexpr TagInfo exifTagInfo[] = { "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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + N_("Indicates the image sensor type on the camera or input device."), IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + N_("This tag indicates the white balance mode set when the image was shot."), IfdId::exifId, + SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::captureCond, undefined, 0, printValue}, {0xa40c, "SubjectDistanceRange", N_("Subject Distance Range"), - N_("This tag indicates the distance to the subject."), exifId, captureCond, unsignedShort, 1, print0xa40c}, + N_("This tag indicates the distance to the subject."), IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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}, - {0xa433, "LensMake", N_("Lens Make"), N_("This tag records the lens manufactor as an ASCII string."), exifId, - otherTags, asciiString, 0, printValue}, + IfdId::exifId, SectionId::otherTags, unsignedRational, 4, printValue}, + {0xa433, "LensMake", N_("Lens Make"), N_("This tag records the lens manufactor as an ASCII string."), IfdId::exifId, + SectionId::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}, + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::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 + N_("Indicates whether the recorded image is a composite image or not."), IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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 + IfdId::exifId, SectionId::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}, + IfdId::exifId, SectionId::imgCharacter, unsignedRational, 1, printFloat}, // End of list marker - {0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"), N_("Unknown Exif tag"), exifId, sectionIdNotSet, asciiString, - -1, printValue}, + {0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"), N_("Unknown Exif tag"), IfdId::exifId, + SectionId::sectionIdNotSet, asciiString, -1, printValue}, }; const TagInfo* exifTagList() { @@ -2068,11 +2073,11 @@ constexpr TagInfo gpsTagInfo[] = { "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}, + IfdId::gpsId, SectionId::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)}, + IfdId::gpsId, SectionId::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, " @@ -2080,11 +2085,11 @@ constexpr TagInfo gpsTagInfo[] = { "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}, + IfdId::gpsId, SectionId::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)}, + IfdId::gpsId, SectionId::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, " @@ -2092,7 +2097,7 @@ constexpr TagInfo gpsTagInfo[] = { "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}, + IfdId::gpsId, SectionId::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 " @@ -2100,66 +2105,66 @@ constexpr TagInfo gpsTagInfo[] = { "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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, - {0x000d, "GPSSpeed", N_("GPS Speed"), N_("Indicates the speed of GPS receiver movement."), gpsId, gpsTags, - unsignedRational, 1, printFloat}, + IfdId::gpsId, SectionId::gpsTags, asciiString, 2, print0x000c}, + {0x000d, "GPSSpeed", N_("GPS Speed"), N_("Indicates the speed of GPS receiver movement."), IfdId::gpsId, + SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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)}, + IfdId::gpsId, SectionId::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. " @@ -2167,53 +2172,53 @@ constexpr TagInfo gpsTagInfo[] = { "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}, + IfdId::gpsId, SectionId::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)}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::gpsTags, asciiString, 2, print0x0019}, {0x001a, "GPSDestDistance", N_("GPS Destination Distance"), N_("Indicates the distance to the destination point."), - gpsId, gpsTags, unsignedRational, 1, printFloat}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + IfdId::gpsId, SectionId::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}, + N_("Indicates whether differential correction is applied to the GPS receiver."), IfdId::gpsId, SectionId::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}, + N_("This tag indicates horizontal positioning errors in meters."), IfdId::gpsId, SectionId::gpsTags, + unsignedRational, 1, printFloat}, // End of list marker - {0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), N_("Unknown GPSInfo tag"), gpsId, gpsTags, asciiString, -1, - printValue}, + {0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), N_("Unknown GPSInfo tag"), IfdId::gpsId, SectionId::gpsTags, + asciiString, -1, printValue}, }; const TagInfo* gpsTagList() { @@ -2222,42 +2227,47 @@ const TagInfo* gpsTagList() { // MPF Tags http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html constexpr TagInfo mpfTagInfo[] = { - {0xb000, "MPFVersion", N_("MPFVersion"), N_("MPF Version"), mpfId, mpfTags, asciiString, 0, printValue}, - {0xb001, "MPFNumberOfImages", N_("MPFNumberOfImages"), N_("MPF Number of Images"), mpfId, mpfTags, undefined, -1, - printExifVersion}, - {0xb002, "MPFImageList", N_("MPFImageList"), N_("MPF Image List"), mpfId, mpfTags, asciiString, 0, printValue}, - {0xb003, "MPFImageUIDList", N_("MPFImageUIDList "), N_("MPF Image UID List"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb004, "MPFTotalFrames", N_("MPFTotalFrames"), N_("MPF Total Frames"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb101, "MPFIndividualNum", N_("MPFIndividualNum"), N_("MPF Individual Num"), mpfId, mpfTags, unsignedLong, 1, + {0xb000, "MPFVersion", N_("MPFVersion"), N_("MPF Version"), IfdId::mpfId, SectionId::mpfTags, asciiString, 0, printValue}, - {0xb201, "MPFPanOrientation", N_("MPFPanOrientation"), N_("MPFPanOrientation"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb202, "MPFPanOverlapH", N_("MPFPanOverlapH"), N_("MPF Pan Overlap Horizonal"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb203, "MPFPanOverlapV", N_("MPFPanOverlapV"), N_("MPF Pan Overlap Vertical"), mpfId, mpfTags, unsignedLong, 1, + {0xb001, "MPFNumberOfImages", N_("MPFNumberOfImages"), N_("MPF Number of Images"), IfdId::mpfId, SectionId::mpfTags, + undefined, -1, printExifVersion}, + {0xb002, "MPFImageList", N_("MPFImageList"), N_("MPF Image List"), IfdId::mpfId, SectionId::mpfTags, asciiString, 0, printValue}, - {0xb204, "MPFBaseViewpointNum", N_("MPFBaseViewpointNum"), N_("MPF Base Viewpoint Number"), mpfId, mpfTags, + {0xb003, "MPFImageUIDList", N_("MPFImageUIDList "), N_("MPF Image UID List"), IfdId::mpfId, SectionId::mpfTags, unsignedLong, 1, printValue}, - {0xb205, "MPFConvergenceAngle", N_("MPFConvergenceAngle"), N_("MPF Convergence Angle"), mpfId, mpfTags, + {0xb004, "MPFTotalFrames", N_("MPFTotalFrames"), N_("MPF Total Frames"), IfdId::mpfId, SectionId::mpfTags, unsignedLong, 1, printValue}, - {0xb206, "MPFBaselineLength", N_("MPFBaselineLength"), N_("MPF Baseline Length"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb207, "MPFVerticalDivergence", N_("MPFVerticalDivergence"), N_("MPF Vertical Divergence"), mpfId, mpfTags, + {0xb101, "MPFIndividualNum", N_("MPFIndividualNum"), N_("MPF Individual Num"), IfdId::mpfId, SectionId::mpfTags, unsignedLong, 1, printValue}, - {0xb208, "MPFAxisDistanceX", N_("MPFAxisDistanceX"), N_("MPF Axis Distance X"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb209, "MPFAxisDistanceY", N_("MPFAxisDistanceY"), N_("MPF Axis Distance Y"), mpfId, mpfTags, unsignedLong, 1, - printValue}, - {0xb20a, "MPFAxisDistanceZ", N_("MPFAxisDistanceZ"), N_("MPF Axis Distance Z"), mpfId, mpfTags, unsignedLong, 1, + {0xb201, "MPFPanOrientation", N_("MPFPanOrientation"), N_("MPFPanOrientation"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb202, "MPFPanOverlapH", N_("MPFPanOverlapH"), N_("MPF Pan Overlap Horizonal"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb203, "MPFPanOverlapV", N_("MPFPanOverlapV"), N_("MPF Pan Overlap Vertical"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb204, "MPFBaseViewpointNum", N_("MPFBaseViewpointNum"), N_("MPF Base Viewpoint Number"), IfdId::mpfId, + SectionId::mpfTags, unsignedLong, 1, printValue}, + {0xb205, "MPFConvergenceAngle", N_("MPFConvergenceAngle"), N_("MPF Convergence Angle"), IfdId::mpfId, + SectionId::mpfTags, unsignedLong, 1, printValue}, + {0xb206, "MPFBaselineLength", N_("MPFBaselineLength"), N_("MPF Baseline Length"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb207, "MPFVerticalDivergence", N_("MPFVerticalDivergence"), N_("MPF Vertical Divergence"), IfdId::mpfId, + SectionId::mpfTags, unsignedLong, 1, printValue}, + {0xb208, "MPFAxisDistanceX", N_("MPFAxisDistanceX"), N_("MPF Axis Distance X"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb209, "MPFAxisDistanceY", N_("MPFAxisDistanceY"), N_("MPF Axis Distance Y"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb20a, "MPFAxisDistanceZ", N_("MPFAxisDistanceZ"), N_("MPF Axis Distance Z"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb20b, "MPFYawAngle", N_("MPFYawAngle"), N_("MPF Yaw Angle"), IfdId::mpfId, SectionId::mpfTags, unsignedLong, 1, printValue}, - {0xb20b, "MPFYawAngle", N_("MPFYawAngle"), N_("MPF Yaw Angle"), mpfId, mpfTags, unsignedLong, 1, printValue}, - {0xb20c, "MPFPitchAngle", N_("MPFPitchAngle"), N_("MPF Pitch Angle"), mpfId, mpfTags, unsignedLong, 1, printValue}, - {0xb20d, "MPFRollAngle", N_("MPFRollAngle"), N_("MPF Roll Angle"), mpfId, mpfTags, unsignedLong, 1, printValue}, + {0xb20c, "MPFPitchAngle", N_("MPFPitchAngle"), N_("MPF Pitch Angle"), IfdId::mpfId, SectionId::mpfTags, + unsignedLong, 1, printValue}, + {0xb20d, "MPFRollAngle", N_("MPFRollAngle"), N_("MPF Roll Angle"), IfdId::mpfId, SectionId::mpfTags, unsignedLong, + 1, printValue}, // End of list marker - {0xffff, "(UnknownMpfTag)", N_("Unknown MPF tag"), N_("Unknown MPF tag"), mpfId, mpfTags, asciiString, -1, - printValue}, + {0xffff, "(UnknownMpfTag)", N_("Unknown MPF tag"), N_("Unknown MPF tag"), IfdId::mpfId, SectionId::mpfTags, + asciiString, -1, printValue}, }; const TagInfo* mpfTagList() { @@ -2272,18 +2282,18 @@ constexpr TagInfo iopTagInfo[] = { "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}, - {0x0002, "InteroperabilityVersion", N_("Interoperability Version"), N_("Interoperability version"), iopId, iopTags, - undefined, -1, printExifVersion}, - {0x1000, "RelatedImageFileFormat", N_("Related Image File Format"), N_("File format of image file"), iopId, iopTags, - asciiString, 0, printValue}, - {0x1001, "RelatedImageWidth", N_("Related Image Width"), N_("Image width"), iopId, iopTags, unsignedLong, 1, - printValue}, - {0x1002, "RelatedImageLength", N_("Related Image Length"), N_("Image height"), iopId, iopTags, unsignedLong, 1, - printValue}, + IfdId::iopId, SectionId::iopTags, asciiString, 0, printValue}, + {0x0002, "InteroperabilityVersion", N_("Interoperability Version"), N_("Interoperability version"), IfdId::iopId, + SectionId::iopTags, undefined, -1, printExifVersion}, + {0x1000, "RelatedImageFileFormat", N_("Related Image File Format"), N_("File format of image file"), IfdId::iopId, + SectionId::iopTags, asciiString, 0, printValue}, + {0x1001, "RelatedImageWidth", N_("Related Image Width"), N_("Image width"), IfdId::iopId, SectionId::iopTags, + unsignedLong, 1, printValue}, + {0x1002, "RelatedImageLength", N_("Related Image Length"), N_("Image height"), IfdId::iopId, SectionId::iopTags, + unsignedLong, 1, printValue}, // End of list marker - {0xffff, "(UnknownIopTag)", N_("Unknown Exif Interoperability tag"), N_("Unknown Exif Interoperability tag"), iopId, - iopTags, asciiString, -1, printValue}, + {0xffff, "(UnknownIopTag)", N_("Unknown Exif Interoperability tag"), N_("Unknown Exif Interoperability tag"), + IfdId::iopId, SectionId::iopTags, asciiString, -1, printValue}, }; const TagInfo* iopTagList() { @@ -2292,14 +2302,14 @@ const TagInfo* iopTagList() { // Synthesized Exiv2 Makernote info Tags (read-only) constexpr TagInfo mnTagInfo[] = { - {0x0001, "Offset", N_("Offset"), N_("Offset of the makernote from the start of the TIFF header."), mnId, makerTags, - unsignedLong, 1, printValue}, + {0x0001, "Offset", N_("Offset"), N_("Offset of the makernote from the start of the TIFF header."), IfdId::mnId, + SectionId::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}, + N_("Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-endian)."), IfdId::mnId, + SectionId::makerTags, asciiString, 0, printValue}, // End of list marker - {0xffff, "(UnknownMnTag)", N_("Unknown Exiv2 Makernote info tag"), N_("Unknown Exiv2 Makernote info tag"), mnId, - makerTags, asciiString, -1, printValue}, + {0xffff, "(UnknownMnTag)", N_("Unknown Exiv2 Makernote info tag"), N_("Unknown Exiv2 Makernote info tag"), + IfdId::mnId, SectionId::makerTags, asciiString, -1, printValue}, }; const TagInfo* mnTagList() { @@ -2318,25 +2328,25 @@ bool isMakerIfd(IfdId ifdId) { bool isExifIfd(IfdId ifdId) { bool rc; switch (ifdId) { - case ifd0Id: - case exifId: - case gpsId: - case iopId: - case ifd1Id: - case ifd2Id: - case ifd3Id: - case mpfId: - case subImage1Id: - case subImage2Id: - case subImage3Id: - case subImage4Id: - case subImage5Id: - case subImage6Id: - case subImage7Id: - case subImage8Id: - case subImage9Id: - case subThumb1Id: - case panaRawId: + case IfdId::ifd0Id: + case IfdId::exifId: + case IfdId::gpsId: + case IfdId::iopId: + case IfdId::ifd1Id: + case IfdId::ifd2Id: + case IfdId::ifd3Id: + case IfdId::mpfId: + case IfdId::subImage1Id: + case IfdId::subImage2Id: + case IfdId::subImage3Id: + case IfdId::subImage4Id: + case IfdId::subImage5Id: + case IfdId::subImage6Id: + case IfdId::subImage7Id: + case IfdId::subImage8Id: + case IfdId::subImage9Id: + case IfdId::subThumb1Id: + case IfdId::panaRawId: rc = true; break; default: @@ -2390,7 +2400,7 @@ const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId) { } // tagInfo IfdId groupId(const std::string& groupName) { - IfdId ifdId = ifdIdNotSet; + IfdId ifdId = IfdId::ifdIdNotSet; const GroupInfo* ii = find(groupInfo, GroupInfo::GroupName(groupName)); if (ii) ifdId = static_cast(ii->ifdId_); diff --git a/src/tags_int.hpp b/src/tags_int.hpp index f8f7384512..c7b76554dc 100644 --- a/src/tags_int.hpp +++ b/src/tags_int.hpp @@ -14,180 +14,6 @@ namespace Exiv2::Internal { // ***************************************************************************** // class definitions -//! Type to specify the IFD to which a metadata belongs -enum IfdId { - ifdIdNotSet, - ifd0Id, - ifd1Id, - ifd2Id, - ifd3Id, - exifId, - gpsId, - iopId, - mpfId, - subImage1Id, - subImage2Id, - subImage3Id, - subImage4Id, - subImage5Id, - subImage6Id, - subImage7Id, - subImage8Id, - subImage9Id, - subThumb1Id, - panaRawId, - mnId, - canonId, - canonAfCId, - canonAfMiAdjId, - canonAmId, - canonAsId, - canonCbId, - canonCiId, - canonCsId, - canonFilId, - canonFlId, - canonHdrId, - canonLeId, - canonMeId, - canonMoID, - canonMvId, - canonRawBId, - canonSiId, - canonCfId, - canonContrastId, - canonFcd1Id, - canonFcd2Id, - canonFcd3Id, - canonLiOpId, - canonMyColorID, - canonPiId, - canonPaId, - canonTiId, - canonFiId, - canonPrId, - canonPreID, - canonVigCorId, - canonVigCor2Id, - canonWbId, - casioId, - casio2Id, - fujiId, - minoltaId, - minoltaCs5DId, - minoltaCs7DId, - minoltaCsOldId, - minoltaCsNewId, - nikon1Id, - nikon2Id, - nikon3Id, - nikonPvId, - nikonVrId, - nikonPcId, - nikonWtId, - nikonIiId, - nikonAfId, - nikonAf21Id, - nikonAf22Id, - nikonAFTId, - nikonFiId, - nikonMeId, - nikonFl1Id, - nikonFl2Id, - nikonFl3Id, - nikonFl7Id, - nikonSi1Id, - nikonSi2Id, - nikonSi3Id, - nikonSi4Id, - nikonSi5Id, - nikonSi6Id, - nikonLd1Id, - nikonLd2Id, - nikonLd3Id, - nikonLd4Id, - nikonCb1Id, - nikonCb2Id, - nikonCb2aId, - nikonCb2bId, - nikonCb3Id, - nikonCb4Id, - olympusId, - olympus2Id, - olympusCsId, - olympusEqId, - olympusRdId, - olympusRd2Id, - olympusIpId, - olympusFiId, - olympusFe1Id, - olympusFe2Id, - olympusFe3Id, - olympusFe4Id, - olympusFe5Id, - olympusFe6Id, - olympusFe7Id, - olympusFe8Id, - olympusFe9Id, - olympusRiId, - panasonicId, - pentaxId, - pentaxDngId, - samsung2Id, - samsungPvId, - samsungPwId, - sigmaId, - sony1Id, - sony2Id, - sonyMltId, - sony1CsId, - sony1Cs2Id, - sony2CsId, - sony2Cs2Id, - sony2FpId, - sonyMisc1Id, - sonyMisc2bId, - sonyMisc3cId, - sonySInfo1Id, - sony2010eId, - sony1MltCs7DId, - sony1MltCsOldId, - sony1MltCsNewId, - sony1MltCsA100Id, - tagInfoMvId, - lastId, - ignoreId = lastId -}; - -/*! - @brief Section identifiers to logically group tags. A section consists - of nothing more than a name, based on the Exif standard. - */ -enum SectionId { - sectionIdNotSet, - imgStruct, // 4.6.4 A - recOffset, // 4.6.4 B - imgCharacter, // 4.6.4 C - otherTags, // 4.6.4 D - exifFormat, // 4.6.3 - exifVersion, // 4.6.5 A - imgConfig, // 4.6.5 C - userInfo, // 4.6.5 D - relatedFile, // 4.6.5 E - dateTime, // 4.6.5 F - captureCond, // 4.6.5 G - gpsTags, // 4.6.6 - iopTags, // 4.6.7 - mpfTags, - makerTags, // MakerNote - dngTags, // DNG Spec - panaRaw, - tiffEp, // TIFF-EP Spec - tiffPm6, - adobeOpi, - lastSectionId -}; - //! The details of a section. struct SectionInfo { constexpr SectionInfo(SectionId sectionId, const char* name, const char* desc) : diff --git a/src/tiffcomposite_int.cpp b/src/tiffcomposite_int.cpp index f488c5e694..2bed3790aa 100644 --- a/src/tiffcomposite_int.cpp +++ b/src/tiffcomposite_int.cpp @@ -456,7 +456,7 @@ TiffComponent* TiffDirectory::doAddPath(uint16_t tag, TiffPath& tiffPath, TiffCo // composite tag on the stack or the tag to add is the MakerNote tag. // This is used to prevent duplicate entries. Sub-IFDs also, but the > 1 // condition takes care of them, see below. - if (tiffPath.size() > 1 || (tpi.extendedTag() == 0x927c && tpi.group() == exifId)) { + if (tiffPath.size() > 1 || (tpi.extendedTag() == 0x927c && tpi.group() == IfdId::exifId)) { if (tpi.extendedTag() == Tag::next) { tc = pNext_; } else { @@ -841,7 +841,7 @@ uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64 return 0; // Remember the offset of the CR2 RAW IFD - if (group() == ifd3Id) { + if (group() == IfdId::ifd3Id) { #ifdef EXIV2_DEBUG_MESSAGES std::cerr << "Directory " << groupName(group()) << " offset is 0x" << std::setw(8) << std::setfill('0') << std::hex << offset << std::dec << "\n"; @@ -853,7 +853,7 @@ uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64 // TIFF standard requires IFD entries to be sorted in ascending order by tag. // Not sorting makernote directories sometimes preserves them better. - if (group() < mnId) { + if (group() < IfdId::mnId) { std::sort(components_.begin(), components_.end(), cmpTagLt); } // Size of IFD values and additional data @@ -1025,7 +1025,7 @@ uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int6 uint32_t dataIdx, uint32_t& imageIdx) { uint32_t o2 = imageIdx; // For makernotes, write TIFF image data to the data area - if (group() > mnId) + if (group() > IfdId::mnId) o2 = static_cast(offset + dataIdx); #ifdef EXIV2_DEBUG_MESSAGES std::cerr << "TiffImageEntry, Directory " << groupName(group()) << ", entry 0x" << std::setw(4) << std::setfill('0') @@ -1036,8 +1036,8 @@ uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int6 for (auto&& strip : strips_) { idx += writeOffset(buf.data(idx), o2, tiffType(), byteOrder); o2 += strip.second; - o2 += strip.second & 1; // Align strip data to word boundary - if (!(group() > mnId)) { // Todo: FIX THIS!! SHOULDN'T USE > + o2 += strip.second & 1; // Align strip data to word boundary + if (!(group() > IfdId::mnId)) { // Todo: FIX THIS!! SHOULDN'T USE > imageIdx += strip.second; imageIdx += strip.second & 1; // Align strip data to word boundary } @@ -1172,7 +1172,7 @@ uint32_t TiffImageEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) const { uint32_t len = 0; // For makernotes, write TIFF image data to the data area - if (group() > mnId) { // Todo: FIX THIS HACK!!! + if (group() > IfdId::mnId) { // Todo: FIX THIS HACK!!! len = writeImage(ioWrapper, byteOrder); } return len; @@ -1404,7 +1404,7 @@ size_t TiffEntryBase::doSizeData() const { size_t TiffImageEntry::doSizeData() const { size_t len = 0; // For makernotes, TIFF image data is written to the data area - if (group() > mnId) { // Todo: Fix this hack!! + if (group() > IfdId::mnId) { // Todo: Fix this hack!! len = sizeImage(); } return len; @@ -1473,7 +1473,9 @@ size_t TiffImageEntry::doSizeImage() const { static const TagInfo* findTagInfo(uint16_t tag, IfdId group) { const TagInfo* result = nullptr; - const TagInfo* tags = group == exifId ? Internal::exifTagList() : group == gpsId ? Internal::gpsTagList() : nullptr; + const TagInfo* tags = group == IfdId::exifId ? Internal::exifTagList() + : group == IfdId::gpsId ? Internal::gpsTagList() + : nullptr; if (tags) { for (size_t idx = 0; !result && tags[idx].tag_ != 0xffff; ++idx) { if (tags[idx].tag_ == tag) { @@ -1497,7 +1499,7 @@ TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group) { // http://dev.exiv2.org/boards/3/topics/1337 change unsignedByte to signedByte // Exif.NikonAFT.AFFineTuneAdj || Exif.Pentax.Temperature if (ti == Exiv2::unsignedByte) { - if ((tag == 0x0002 && group == nikonAFTId) || (tag == 0x0047 && group == pentaxId)) { + if ((tag == 0x0002 && group == IfdId::nikonAFTId) || (tag == 0x0047 && group == IfdId::pentaxId)) { ti = Exiv2::signedByte; } } @@ -1530,7 +1532,7 @@ TiffComponent::UniquePtr newTiffEntry(uint16_t tag, IfdId group) { } TiffComponent::UniquePtr newTiffMnEntry(uint16_t tag, IfdId group) { - return std::make_unique(tag, group, mnId); + return std::make_unique(tag, group, IfdId::mnId); } TiffComponent::UniquePtr newTiffBinaryElement(uint16_t tag, IfdId group) { diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp index 1e6938d42b..518bd5b893 100644 --- a/src/tiffimage.cpp +++ b/src/tiffimage.cpp @@ -223,7 +223,7 @@ WriteMethod TiffParser::encode(BasicIo& io, const byte* pData, size_t size, Byte // Delete IFDs which do not occur in TIFF images static constexpr auto filteredIfds = std::array{ - panaRawId, + IfdId::panaRawId, }; for (auto&& filteredIfd : filteredIfds) { #ifdef EXIV2_DEBUG_MESSAGES diff --git a/src/tiffimage_int.cpp b/src/tiffimage_int.cpp index 1b34a3241f..67e0008b05 100644 --- a/src/tiffimage_int.cpp +++ b/src/tiffimage_int.cpp @@ -21,7 +21,7 @@ namespace Exiv2::Internal { constexpr CryptFct notEncrypted = nullptr; //! Canon Camera Settings binary array - configuration -constexpr ArrayCfg canonCsCfg = {canonCsId, // Group for the elements +constexpr ArrayCfg canonCsCfg = {IfdId::canonCsId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -36,7 +36,7 @@ constexpr ArrayDef canonCsDef[] = { }; //! Canon Shot Info binary array - configuration -constexpr ArrayCfg canonSiCfg = {canonSiId, // Group for the elements +constexpr ArrayCfg canonSiCfg = {IfdId::canonSiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -46,7 +46,7 @@ constexpr ArrayCfg canonSiCfg = {canonSiId, // Group for the elements {0, ttUnsignedShort, 1}}; //! Canon Panorama binary array - configuration -constexpr ArrayCfg canonPaCfg = {canonPaId, // Group for the elements +constexpr ArrayCfg canonPaCfg = {IfdId::canonPaId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -56,7 +56,7 @@ constexpr ArrayCfg canonPaCfg = {canonPaId, // Group for the elements {0, ttUnsignedShort, 1}}; //! Canon Custom Function binary array - configuration -constexpr ArrayCfg canonCfCfg = {canonCfId, // Group for the elements +constexpr ArrayCfg canonCfCfg = {IfdId::canonCfId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -66,7 +66,7 @@ constexpr ArrayCfg canonCfCfg = {canonCfId, // Group for the elements {0, ttUnsignedShort, 1}}; //! Canon Picture Info binary array - configuration -constexpr ArrayCfg canonPiCfg = {canonPiId, // Group for the elements +constexpr ArrayCfg canonPiCfg = {IfdId::canonPiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -76,7 +76,7 @@ constexpr ArrayCfg canonPiCfg = {canonPiId, // Group for the elements {0, ttUnsignedShort, 1}}; //! Canon Time Info binary array - configuration -constexpr ArrayCfg canonTiCfg = {canonTiId, // Group for the elements +constexpr ArrayCfg canonTiCfg = {IfdId::canonTiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttSignedLong, // Type for array entry and size element notEncrypted, // Not encrypted @@ -86,7 +86,7 @@ constexpr ArrayCfg canonTiCfg = {canonTiId, // Group for the elements {0, ttSignedLong, 1}}; //! Canon File Info binary array - configuration -constexpr ArrayCfg canonFiCfg = {canonFiId, // Group for the elements +constexpr ArrayCfg canonFiCfg = {IfdId::canonFiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -98,7 +98,7 @@ constexpr ArrayCfg canonFiCfg = {canonFiId, // Group for the elements constexpr ArrayDef canonFiDef[] = {{2, ttUnsignedLong, 1}}; //! Canon Processing Info binary array - configuration -constexpr ArrayCfg canonPrCfg = {canonPrId, // Group for the elements +constexpr ArrayCfg canonPrCfg = {IfdId::canonPrId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUnsignedShort, // Type for array entry and size element notEncrypted, // Not encrypted @@ -108,37 +108,37 @@ constexpr ArrayCfg canonPrCfg = {canonPrId, // Group for the elements {0, ttSignedShort, 1}}; //! Canon canonAfMiAdj Info binary array - configuration -extern const ArrayCfg canonAfMiAdjCfg = {canonAfMiAdjId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonAfMiAdjCfg = {IfdId::canonAfMiAdjId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttSignedLong, 1}}; //! Canon Vignetting Correction 2 Info binary array - configuration -extern const ArrayCfg canonVigCor2Cfg = {canonVigCor2Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonVigCor2Cfg = {IfdId::canonVigCor2Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttSignedLong, 1}}; //! Canon Lighting Optimization Info binary array - configuration -extern const ArrayCfg canonLiOpCfg = {canonLiOpId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonLiOpCfg = {IfdId::canonLiOpId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttSignedLong, 1}}; //! Canon LensInfo binary array - configuration -extern const ArrayCfg canonLeCfg = {canonLeId, // Group for the elements +extern const ArrayCfg canonLeCfg = {IfdId::canonLeId, // Group for the elements invalidByteOrder, // Use byte order from parent ttSignedLong, // Type for array entry and size element notEncrypted, // Not encrypted @@ -148,7 +148,7 @@ extern const ArrayCfg canonLeCfg = {canonLeId, // Group for the elements {0, ttSignedLong, 1}}; //! Canon Ambience Selction Info binary array - configuration -extern const ArrayCfg canonAmCfg = {canonAmId, // Group for the elements +extern const ArrayCfg canonAmCfg = {IfdId::canonAmId, // Group for the elements invalidByteOrder, // Use byte order from parent ttSignedLong, // Type for array entry and size element notEncrypted, // Not encrypted @@ -158,7 +158,7 @@ extern const ArrayCfg canonAmCfg = {canonAmId, // Group for the elements {0, ttSignedLong, 1}}; //! Canon MultiExposure Selction Info binary array - configuration -extern const ArrayCfg canonMeCfg = {canonMeId, // Group for the elements +extern const ArrayCfg canonMeCfg = {IfdId::canonMeId, // Group for the elements invalidByteOrder, // Use byte order from parent ttSignedLong, // Type for array entry and size element notEncrypted, // Not encrypted @@ -168,47 +168,47 @@ extern const ArrayCfg canonMeCfg = {canonMeId, // Group for the elements {0, ttSignedLong, 1}}; //! Canon Filter Info binary array - configuration -extern const ArrayCfg canonFilCfg = {canonFilId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonFilCfg = {IfdId::canonFilId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttSignedLong, 1}}; //! Canon Hdr Info binary array - configuration -extern const ArrayCfg canonHdrCfg = {canonHdrId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonHdrCfg = {IfdId::canonHdrId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttSignedLong, 1}}; //! Canon AF Config Info binary array - configuration -extern const ArrayCfg canonAfCCfg = {canonAfCId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonAfCCfg = {IfdId::canonAfCId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttSignedLong, 1}}; //! Canon RawBurst Info binary array - configuration -extern const ArrayCfg canonRawBCfg = {canonRawBId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttSignedLong, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps +extern const ArrayCfg canonRawBCfg = {IfdId::canonRawBId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttSignedLong, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedLong, 1}}; //! Nikon Vibration Reduction binary array - configuration -constexpr ArrayCfg nikonVrCfg = {nikonVrId, // Group for the elements +constexpr ArrayCfg nikonVrCfg = {IfdId::nikonVrId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry notEncrypted, // Not encrypted @@ -223,7 +223,7 @@ constexpr ArrayDef nikonVrDef[] = { }; //! Nikon Picture Control binary array - configuration -constexpr ArrayCfg nikonPcCfg = {nikonPcId, // Group for the elements +constexpr ArrayCfg nikonPcCfg = {IfdId::nikonPcId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry notEncrypted, // Not encrypted @@ -241,7 +241,7 @@ constexpr ArrayDef nikonPcDef[] = { }; //! Nikon World Time binary array - configuration -constexpr ArrayCfg nikonWtCfg = {nikonWtId, // Group for the elements +constexpr ArrayCfg nikonWtCfg = {IfdId::nikonWtId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry notEncrypted, // Not encrypted @@ -253,13 +253,13 @@ constexpr ArrayCfg nikonWtCfg = {nikonWtId, // Group for the elements constexpr ArrayDef nikonWtDef[] = {{0, ttSignedShort, 1}, {2, ttUnsignedByte, 1}, {3, ttUnsignedByte, 1}}; //! Nikon ISO info binary array - configuration -constexpr ArrayCfg nikonIiCfg = {nikonIiId, // Group for the elements - bigEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonIiCfg = {IfdId::nikonIiId, // Group for the elements + bigEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon ISO info binary array - definition constexpr ArrayDef nikonIiDef[] = { @@ -271,7 +271,7 @@ constexpr ArrayDef nikonIiDef[] = { }; //! Nikon Auto Focus binary array - configuration -constexpr ArrayCfg nikonAfCfg = {nikonAfId, // Group for the elements +constexpr ArrayCfg nikonAfCfg = {IfdId::nikonAfId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry notEncrypted, // Not encrypted @@ -285,13 +285,13 @@ constexpr ArrayDef nikonAfDef[] = { }; //! Nikon Auto Focus 21 binary array - configuration -constexpr ArrayCfg nikonAf21Cfg = {nikonAf21Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonAf21Cfg = {IfdId::nikonAf21Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Auto Focus 21 binary array - definition constexpr ArrayDef nikonAf21Def[] = { @@ -310,13 +310,13 @@ constexpr ArrayDef nikonAf21Def[] = { {28, ttUnsignedByte, 1}, // ContrastDetectAFInFocus }; //! Nikon Auto Focus 22 binary array - configuration -constexpr ArrayCfg nikonAf22Cfg = {nikonAf22Id, // Group for the elements - invalidByteOrder, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonAf22Cfg = {IfdId::nikonAf22Id, // Group for the elements + invalidByteOrder, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Auto Focus 22 binary array - definition constexpr ArrayDef nikonAf22Def[] = { @@ -343,13 +343,13 @@ constexpr ArraySet nikonAf2Set[] = { }; //! Nikon AF Fine Tune binary array - configuration -constexpr ArrayCfg nikonAFTCfg = {nikonAFTId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonAFTCfg = {IfdId::nikonAFTId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon AF Fine Tune binary array - definition constexpr ArrayDef nikonAFTDef[] = { @@ -359,7 +359,7 @@ constexpr ArrayDef nikonAFTDef[] = { }; //! Nikon File Info binary array - configuration -constexpr ArrayCfg nikonFiCfg = {nikonFiId, // Group for the elements +constexpr ArrayCfg nikonFiCfg = {IfdId::nikonFiId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry notEncrypted, // Not encrypted @@ -375,7 +375,7 @@ constexpr ArrayDef nikonFiDef[] = { }; //! Nikon Multi Exposure binary array - configuration -constexpr ArrayCfg nikonMeCfg = {nikonMeId, // Group for the elements +constexpr ArrayCfg nikonMeCfg = {IfdId::nikonMeId, // Group for the elements invalidByteOrder, // Use byte order from parent ttUndefined, // Type for array entry notEncrypted, // Not encrypted @@ -392,13 +392,13 @@ constexpr ArrayDef nikonMeDef[] = { }; //! Nikon Flash Info binary array - configuration 1 -constexpr ArrayCfg nikonFl1Cfg = {nikonFl1Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonFl1Cfg = {IfdId::nikonFl1Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Flash Info binary array - definition 1 constexpr ArrayDef nikonFl1Def[] = { @@ -414,13 +414,13 @@ constexpr ArrayDef nikonFl1Def[] = { {16, ttUnsignedByte, 1} // FlashGroupBControlMode }; //! Nikon Flash Info binary array - configuration 2 -constexpr ArrayCfg nikonFl2Cfg = {nikonFl2Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonFl2Cfg = {IfdId::nikonFl2Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Flash Info binary array - definition 2 constexpr ArrayDef nikonFl2Def[] = { @@ -434,13 +434,13 @@ constexpr ArrayDef nikonFl2Def[] = { {15, ttUnsignedByte, 1}, // FlashGNDistance }; //! Nikon Flash Info binary array - configuration 3 -constexpr ArrayCfg nikonFl3Cfg = {nikonFl3Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonFl3Cfg = {IfdId::nikonFl3Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Flash Info binary array - definition constexpr ArrayDef nikonFl3Def[] = { @@ -455,13 +455,13 @@ constexpr ArrayDef nikonFl3Def[] = { {16, ttUnsignedByte, 1}, // FlashColorFilter }; //! Nikon Flash Info 7 (0107 and 0108) binary array - configuration -constexpr ArrayCfg nikonFl7Cfg = {nikonFl7Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonFl7Cfg = {IfdId::nikonFl7Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Flash Info 7 (0107 and 0108) binary array - definition constexpr ArrayDef nikonFl7Def[] = { @@ -491,13 +491,13 @@ constexpr ArraySet nikonFlSet[] = { }; //! Nikon Shot Info binary array - configuration 1 (D80) -constexpr ArrayCfg nikonSi1Cfg = {nikonSi1Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonSi1Cfg = {IfdId::nikonSi1Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Shot Info binary array - definition 1 (D80) constexpr ArrayDef nikonSi1Def[] = { @@ -506,13 +506,13 @@ constexpr ArrayDef nikonSi1Def[] = { {1155, ttUnsignedByte, 1} // The array contains 1156 bytes }; //! Nikon Shot Info binary array - configuration 2 (D40) -constexpr ArrayCfg nikonSi2Cfg = {nikonSi2Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonSi2Cfg = {IfdId::nikonSi2Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Shot Info binary array - definition 2 (D40) constexpr ArrayDef nikonSi2Def[] = { @@ -522,13 +522,13 @@ constexpr ArrayDef nikonSi2Def[] = { {1112, ttUnsignedByte, 1} // The array contains 1113 bytes }; //! Nikon Shot Info binary array - configuration 3 (D300a) -constexpr ArrayCfg nikonSi3Cfg = {nikonSi3Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonSi3Cfg = {IfdId::nikonSi3Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Shot Info binary array - definition 3 (D300a) constexpr ArrayDef nikonSi3Def[] = { @@ -539,13 +539,13 @@ constexpr ArrayDef nikonSi3Def[] = { {814, ttUndefined, 4478} // The array contains 5291 bytes }; //! Nikon Shot Info binary array - configuration 4 (D300b) -constexpr ArrayCfg nikonSi4Cfg = {nikonSi4Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonSi4Cfg = {IfdId::nikonSi4Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Shot Info binary array - definition 4 (D300b) constexpr ArrayDef nikonSi4Def[] = { @@ -555,13 +555,13 @@ constexpr ArrayDef nikonSi4Def[] = { {826, ttUndefined, 4478} // The array contains 5303 bytes }; //! Nikon Shot Info binary array - configuration 5 (ver 02.xx) -constexpr ArrayCfg nikonSi5Cfg = {nikonSi5Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags (don't know how many) - true, // Concatenate gaps +constexpr ArrayCfg nikonSi5Cfg = {IfdId::nikonSi5Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags (don't know how many) + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Shot Info binary array - definition 5 (ver 01.xx and ver 02.xx) constexpr ArrayDef nikonSi5Def[] = { @@ -576,13 +576,13 @@ constexpr ArrayDef nikonSi5Def[] = { {630, ttUnsignedLong, 1} // ShutterCount }; //! Nikon Shot Info binary array - configuration 6 (ver 01.xx) -constexpr ArrayCfg nikonSi6Cfg = {nikonSi6Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - false, // Write all tags (don't know how many) - true, // Concatenate gaps +constexpr ArrayCfg nikonSi6Cfg = {IfdId::nikonSi6Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + false, // Write all tags (don't know how many) + true, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Lens Data configurations and definitions constexpr ArraySet nikonSiSet[] = { @@ -595,40 +595,40 @@ constexpr ArraySet nikonSiSet[] = { }; //! Nikon Lens Data binary array - configuration 1 -constexpr ArrayCfg nikonLd1Cfg = {nikonLd1Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - true, // Write all tags - false, // Concatenate gaps +constexpr ArrayCfg nikonLd1Cfg = {IfdId::nikonLd1Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + true, // Write all tags + false, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Lens Data binary array - configuration 2 -constexpr ArrayCfg nikonLd2Cfg = {nikonLd2Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - false, // Concatenate gaps +constexpr ArrayCfg nikonLd2Cfg = {IfdId::nikonLd2Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + false, // Concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Lens Data binary array - configuration 3 -constexpr ArrayCfg nikonLd3Cfg = {nikonLd3Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - false, // Don't concatenate gaps +constexpr ArrayCfg nikonLd3Cfg = {IfdId::nikonLd3Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Lens Data binary array - configuration 3 -constexpr ArrayCfg nikonLd4Cfg = {nikonLd4Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - false, // Don't concatenate gaps +constexpr ArrayCfg nikonLd4Cfg = {IfdId::nikonLd4Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; //! Nikon Lens Data binary array - definition constexpr ArrayDef nikonLdDef[] = { @@ -651,58 +651,58 @@ constexpr ArraySet nikonLdSet[] = { }; //! Nikon Color Balance binary array - configuration 1 -constexpr ArrayCfg nikonCb1Cfg = {nikonCb1Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonCb1Cfg = {IfdId::nikonCb1Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Nikon Color Balance binary array - configuration 2 -constexpr ArrayCfg nikonCb2Cfg = {nikonCb2Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonCb2Cfg = {IfdId::nikonCb2Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Nikon Color Balance binary array - configuration 2a -constexpr ArrayCfg nikonCb2aCfg = {nikonCb2aId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonCb2aCfg = {IfdId::nikonCb2aId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Nikon Color Balance binary array - configuration 2b -constexpr ArrayCfg nikonCb2bCfg = {nikonCb2bId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonCb2bCfg = {IfdId::nikonCb2bId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Nikon Color Balance binary array - configuration 3 -constexpr ArrayCfg nikonCb3Cfg = {nikonCb3Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonCb3Cfg = {IfdId::nikonCb3Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Nikon Color Balance binary array - configuration 4 -constexpr ArrayCfg nikonCb4Cfg = {nikonCb4Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg nikonCb4Cfg = {IfdId::nikonCb4Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Nikon Color Balance binary array - definition 1 (D100) constexpr ArrayDef nikonCb1Def[] = { @@ -746,33 +746,33 @@ constexpr ArraySet nikonCbSet[] = { }; //! Minolta Camera Settings (old) binary array - configuration -constexpr ArrayCfg minoCsoCfg = {minoltaCsOldId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg minoCsoCfg = {IfdId::minoltaCsOldId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedLong, 1}}; //! Minolta Camera Settings (new) binary array - configuration -constexpr ArrayCfg minoCsnCfg = {minoltaCsNewId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg minoCsnCfg = {IfdId::minoltaCsNewId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedLong, 1}}; //! Minolta 7D Camera Settings binary array - configuration -constexpr ArrayCfg minoCs7Cfg = {minoltaCs7DId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg minoCs7Cfg = {IfdId::minoltaCs7DId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Minolta 7D Camera Settings binary array - definition constexpr ArrayDef minoCs7Def[] = { @@ -781,13 +781,13 @@ constexpr ArrayDef minoCs7Def[] = { }; //! Minolta 5D Camera Settings binary array - configuration -constexpr ArrayCfg minoCs5Cfg = {minoltaCs5DId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg minoCs5Cfg = {IfdId::minoltaCs5DId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Minolta 5D Camera Settings binary array - definition constexpr ArrayDef minoCs5Def[] = { @@ -800,31 +800,31 @@ constexpr ArrayDef minoCs5Def[] = { // setting in all four configurations. //! Sony1 Camera Settings binary array - configuration -constexpr ArrayCfg sony1CsCfg = {sony1CsId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony1CsCfg = {IfdId::sony1CsId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Sony1 Camera Settings 2 binary array - configuration -constexpr ArrayCfg sony1Cs2Cfg = {sony1Cs2Id, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony1Cs2Cfg = {IfdId::sony1Cs2Id, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; -constexpr ArrayCfg sony2FpCfg = {sony2FpId, // Group for the elements - bigEndian, // Big endian - ttUnsignedByte, // Type for array entry and size element - sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony2FpCfg = {IfdId::sony2FpId, // Group for the elements + bigEndian, // Big endian + ttUnsignedByte, // Type for array entry and size element + sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; constexpr ArrayDef sony2FpDef[] = { {0x4, ttSignedByte, 1}, // Exif.Sony2Fp.AmbientTemperature @@ -838,26 +838,26 @@ constexpr ArraySet sony2FpSet[] = { {sony2FpCfg, sony2FpDef, std::size(sony2FpDef)}, }; -constexpr ArrayCfg sonyMisc1Cfg = {sonyMisc1Id, // Group for the elements - bigEndian, // Big endian - ttUnsignedByte, // Type for array entry and size element - sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sonyMisc1Cfg = {IfdId::sonyMisc1Id, // Group for the elements + bigEndian, // Big endian + ttUnsignedByte, // Type for array entry and size element + sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; constexpr ArrayDef sonyMisc1Def[] = { {0x05, ttSignedByte, 1}, // Exif.SonyMisc1.CameraTemperature }; -constexpr ArrayCfg sonyMisc2bCfg = {sonyMisc2bId, // Group for the elements - littleEndian, // Little endian - ttUnsignedByte, // Type for array entry and size element - sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sonyMisc2bCfg = {IfdId::sonyMisc2bId, // Group for the elements + littleEndian, // Little endian + ttUnsignedByte, // Type for array entry and size element + sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; constexpr ArrayDef sonyMisc2bDef[] = { @@ -872,13 +872,13 @@ constexpr ArraySet sonyMisc2bSet[] = { {sonyMisc2bCfg, sonyMisc2bDef, std::size(sonyMisc2bDef)}, }; -constexpr ArrayCfg sonyMisc3cCfg = {sonyMisc3cId, // Group for the elements - littleEndian, // Little endian - ttUnsignedByte, // Type for array entry and size element - sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sonyMisc3cCfg = {IfdId::sonyMisc3cId, // Group for the elements + littleEndian, // Little endian + ttUnsignedByte, // Type for array entry and size element + sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; constexpr ArrayDef sonyMisc3cDef[] = { @@ -899,13 +899,13 @@ constexpr ArraySet sonyMisc3cSet[] = { {sonyMisc3cCfg, sonyMisc3cDef, std::size(sonyMisc3cDef)}, }; -constexpr ArrayCfg sonySInfo1Cfg = {sonySInfo1Id, // Group for the elements - littleEndian, // Little endian - ttUnsignedByte, // Type for array entry and size element - notEncrypted, // (uint16_t, const byte*, uint32_t, TiffComponent* const); - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sonySInfo1Cfg = {IfdId::sonySInfo1Id, // Group for the elements + littleEndian, // Little endian + ttUnsignedByte, // Type for array entry and size element + notEncrypted, // (uint16_t, const byte*, uint32_t, TiffComponent* const); + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; constexpr ArrayDef sonySInfo1Def[] = { {6, ttAsciiString, 20}, // Exif.SonySInfo1.SonyDateTime @@ -916,13 +916,13 @@ constexpr ArrayDef sonySInfo1Def[] = { // }; -constexpr ArrayCfg sony2010eCfg = {sony2010eId, // Group for the elements - invalidByteOrder, // inherit from file. Usually littleEndian - ttUnsignedByte, // Type for array entry and size element - sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony2010eCfg = {IfdId::sony2010eId, // Group for the elements + invalidByteOrder, // inherit from file. Usually littleEndian + ttUnsignedByte, // Type for array entry and size element + sonyTagDecipher, // (uint16_t, const byte*, uint32_t, TiffComponent* const); + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedByte, 1}}; constexpr ArrayDef sony2010eDef[] = { {0, ttUnsignedLong, 1}, // Exif.Sony2010. SequenceImageNumber @@ -973,22 +973,22 @@ constexpr ArrayDef sonyCsDef[] = { {12, ttSignedShort, 1} // Exif.Sony[12]Cs.WhiteBalanceFineTune }; //! Sony2 Camera Settings binary array - configuration -constexpr ArrayCfg sony2CsCfg = {sony2CsId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony2CsCfg = {IfdId::sony2CsId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Sony2 Camera Settings 2 binary array - configuration -constexpr ArrayCfg sony2Cs2Cfg = {sony2Cs2Id, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony2Cs2Cfg = {IfdId::sony2Cs2Id, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Sony[12] Camera Settings 2 binary array - definition constexpr ArrayDef sonyCs2Def[] = { @@ -1006,43 +1006,43 @@ constexpr ArraySet sony2CsSet[] = { }; //! Sony Minolta Camera Settings (old) binary array - configuration -constexpr ArrayCfg sony1MCsoCfg = {sony1MltCsOldId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony1MCsoCfg = {IfdId::sony1MltCsOldId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedLong, 1}}; //! Sony Minolta Camera Settings (new) binary array - configuration -constexpr ArrayCfg sony1MCsnCfg = {sony1MltCsNewId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony1MCsnCfg = {IfdId::sony1MltCsNewId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedLong, 1}}; //! Sony Minolta 7D Camera Settings binary array - configuration -constexpr ArrayCfg sony1MCs7Cfg = {sony1MltCs7DId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony1MCs7Cfg = {IfdId::sony1MltCs7DId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Sony Minolta A100 Camera Settings binary array - configuration -constexpr ArrayCfg sony1MCsA100Cfg = {sony1MltCsA100Id, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps +constexpr ArrayCfg sony1MCsA100Cfg = {IfdId::sony1MltCsA100Id, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps {0, ttUnsignedShort, 1}}; //! Sony Minolta A100 Camera Settings binary array - definition constexpr ArrayDef sony1MCsA100Def[] = { @@ -1052,13 +1052,13 @@ constexpr ArrayDef sony1MCsA100Def[] = { }; //! Samsung PictureWizard binary array - configuration -constexpr ArrayCfg samsungPwCfg = {samsungPwId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps +constexpr ArrayCfg samsungPwCfg = {IfdId::samsungPwId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps {0, ttUnsignedShort, 1}}; //! Samsung PictureWizard binary array - definition constexpr ArrayDef samsungPwDef[] = { @@ -1081,139 +1081,139 @@ constexpr ArrayDef samsungPwDef[] = { const TiffTreeStruct TiffCreator::tiffTreeStruct_[] = { // root group parent group parent tag //--------- ----------------- ----------------- ---------- - {Tag::root, ifdIdNotSet, ifdIdNotSet, Tag::root}, - {Tag::root, ifd0Id, ifdIdNotSet, Tag::root}, - {Tag::root, subImage1Id, ifd0Id, 0x014a}, - {Tag::root, subImage2Id, ifd0Id, 0x014a}, - {Tag::root, subImage3Id, ifd0Id, 0x014a}, - {Tag::root, subImage4Id, ifd0Id, 0x014a}, - {Tag::root, subImage5Id, ifd0Id, 0x014a}, - {Tag::root, subImage6Id, ifd0Id, 0x014a}, - {Tag::root, subImage7Id, ifd0Id, 0x014a}, - {Tag::root, subImage8Id, ifd0Id, 0x014a}, - {Tag::root, subImage9Id, ifd0Id, 0x014a}, - {Tag::root, exifId, ifd0Id, 0x8769}, - {Tag::root, gpsId, ifd0Id, 0x8825}, - {Tag::root, iopId, exifId, 0xa005}, - {Tag::root, ifd1Id, ifd0Id, Tag::next}, - {Tag::root, ifd2Id, ifd1Id, Tag::next}, - {Tag::root, ifd3Id, ifd2Id, Tag::next}, - {Tag::root, olympusId, exifId, 0x927c}, - {Tag::root, olympus2Id, exifId, 0x927c}, - {Tag::root, subThumb1Id, ifd1Id, 0x014a}, - {Tag::root, olympusEqId, olympus2Id, 0x2010}, - {Tag::root, olympusCsId, olympus2Id, 0x2020}, - {Tag::root, olympusRdId, olympus2Id, 0x2030}, - {Tag::root, olympusRd2Id, olympus2Id, 0x2031}, - {Tag::root, olympusIpId, olympus2Id, 0x2040}, - {Tag::root, olympusFiId, olympus2Id, 0x2050}, - {Tag::root, olympusFe1Id, olympus2Id, 0x2100}, - {Tag::root, olympusFe2Id, olympus2Id, 0x2200}, - {Tag::root, olympusFe3Id, olympus2Id, 0x2300}, - {Tag::root, olympusFe4Id, olympus2Id, 0x2400}, - {Tag::root, olympusFe5Id, olympus2Id, 0x2500}, - {Tag::root, olympusFe6Id, olympus2Id, 0x2600}, - {Tag::root, olympusFe7Id, olympus2Id, 0x2700}, - {Tag::root, olympusFe8Id, olympus2Id, 0x2800}, - {Tag::root, olympusFe9Id, olympus2Id, 0x2900}, - {Tag::root, olympusRiId, olympus2Id, 0x3000}, - {Tag::root, fujiId, exifId, 0x927c}, - {Tag::root, canonId, exifId, 0x927c}, - {Tag::root, canonCsId, canonId, 0x0001}, - {Tag::root, canonSiId, canonId, 0x0004}, - {Tag::root, canonPaId, canonId, 0x0005}, - {Tag::root, canonCfId, canonId, 0x000f}, - {Tag::root, canonPiId, canonId, 0x0012}, - {Tag::root, canonTiId, canonId, 0x0035}, - {Tag::root, canonFiId, canonId, 0x0093}, - {Tag::root, canonPrId, canonId, 0x00a0}, - {Tag::root, canonAfMiAdjId, canonId, 0x4013}, - {Tag::root, canonVigCor2Id, canonId, 0x4016}, - {Tag::root, canonLiOpId, canonId, 0x4018}, - {Tag::root, canonLeId, canonId, 0x4019}, - {Tag::root, canonAmId, canonId, 0x4020}, - {Tag::root, canonMeId, canonId, 0x4021}, - {Tag::root, canonFilId, canonId, 0x4024}, - {Tag::root, canonHdrId, canonId, 0x4025}, - {Tag::root, canonAfCId, canonId, 0x4028}, - {Tag::root, canonRawBId, canonId, 0x403f}, - {Tag::root, nikon1Id, exifId, 0x927c}, - {Tag::root, nikon2Id, exifId, 0x927c}, - {Tag::root, nikon3Id, exifId, 0x927c}, - {Tag::root, nikonPvId, nikon3Id, 0x0011}, - {Tag::root, nikonVrId, nikon3Id, 0x001f}, - {Tag::root, nikonPcId, nikon3Id, 0x0023}, - {Tag::root, nikonWtId, nikon3Id, 0x0024}, - {Tag::root, nikonIiId, nikon3Id, 0x0025}, - {Tag::root, nikonAfId, nikon3Id, 0x0088}, - {Tag::root, nikonSi1Id, nikon3Id, 0x0091}, - {Tag::root, nikonSi2Id, nikon3Id, 0x0091}, - {Tag::root, nikonSi3Id, nikon3Id, 0x0091}, - {Tag::root, nikonSi4Id, nikon3Id, 0x0091}, - {Tag::root, nikonSi5Id, nikon3Id, 0x0091}, - {Tag::root, nikonSi6Id, nikon3Id, 0x0091}, - {Tag::root, nikonCb1Id, nikon3Id, 0x0097}, - {Tag::root, nikonCb2Id, nikon3Id, 0x0097}, - {Tag::root, nikonCb2aId, nikon3Id, 0x0097}, - {Tag::root, nikonCb2bId, nikon3Id, 0x0097}, - {Tag::root, nikonCb3Id, nikon3Id, 0x0097}, - {Tag::root, nikonCb4Id, nikon3Id, 0x0097}, - {Tag::root, nikonLd1Id, nikon3Id, 0x0098}, - {Tag::root, nikonLd2Id, nikon3Id, 0x0098}, - {Tag::root, nikonLd3Id, nikon3Id, 0x0098}, - {Tag::root, nikonLd4Id, nikon3Id, 0x0098}, - {Tag::root, nikonMeId, nikon3Id, 0x00b0}, - {Tag::root, nikonAf21Id, nikon3Id, 0x00b7}, - {Tag::root, nikonAf22Id, nikon3Id, 0x00b7}, - {Tag::root, nikonFiId, nikon3Id, 0x00b8}, - {Tag::root, nikonAFTId, nikon3Id, 0x00b9}, - {Tag::root, nikonFl1Id, nikon3Id, 0x00a8}, - {Tag::root, nikonFl2Id, nikon3Id, 0x00a8}, - {Tag::root, nikonFl3Id, nikon3Id, 0x00a8}, - {Tag::root, nikonFl7Id, nikon3Id, 0x00a8}, - {Tag::root, panasonicId, exifId, 0x927c}, - {Tag::root, pentaxId, exifId, 0x927c}, - {Tag::root, pentaxDngId, ifd0Id, 0xc634}, - {Tag::root, samsung2Id, exifId, 0x927c}, - {Tag::root, samsungPwId, samsung2Id, 0x0021}, - {Tag::root, samsungPvId, samsung2Id, 0x0035}, - {Tag::root, sigmaId, exifId, 0x927c}, - {Tag::root, sony1Id, exifId, 0x927c}, - {Tag::root, sony2010eId, sony1Id, 0x2010}, - {Tag::root, sony2FpId, sony1Id, 0x9402}, - {Tag::root, sonyMisc1Id, sony1Id, 0x9403}, - {Tag::root, sonyMisc2bId, sony1Id, 0x9404}, - {Tag::root, sonyMisc3cId, sony1Id, 0x9400}, - {Tag::root, sonySInfo1Id, sony1Id, 0x3000}, - {Tag::root, sony1CsId, sony1Id, 0x0114}, - {Tag::root, sony1Cs2Id, sony1Id, 0x0114}, - {Tag::root, sonyMltId, sony1Id, 0xb028}, - {Tag::root, sony1MltCsOldId, sonyMltId, 0x0001}, - {Tag::root, sony1MltCsNewId, sonyMltId, 0x0003}, - {Tag::root, sony1MltCs7DId, sonyMltId, 0x0004}, - {Tag::root, sony1MltCsA100Id, sonyMltId, 0x0114}, - {Tag::root, sony2Id, exifId, 0x927c}, - {Tag::root, sony2010eId, sony2Id, 0x2010}, - {Tag::root, sony2FpId, sony2Id, 0x9402}, - {Tag::root, sonyMisc1Id, sony2Id, 0x9403}, - {Tag::root, sonyMisc2bId, sony2Id, 0x9404}, - {Tag::root, sonyMisc3cId, sony2Id, 0x9400}, - {Tag::root, sonySInfo1Id, sony2Id, 0x3000}, - {Tag::root, sony2CsId, sony2Id, 0x0114}, - {Tag::root, sony2Cs2Id, sony2Id, 0x0114}, - {Tag::root, minoltaId, exifId, 0x927c}, - {Tag::root, minoltaCsOldId, minoltaId, 0x0001}, - {Tag::root, minoltaCsNewId, minoltaId, 0x0003}, - {Tag::root, minoltaCs7DId, minoltaId, 0x0004}, - {Tag::root, minoltaCs5DId, minoltaId, 0x0114}, - {Tag::root, casioId, exifId, 0x927c}, - {Tag::root, casio2Id, exifId, 0x927c}, + {Tag::root, IfdId::ifdIdNotSet, IfdId::ifdIdNotSet, Tag::root}, + {Tag::root, IfdId::ifd0Id, IfdId::ifdIdNotSet, Tag::root}, + {Tag::root, IfdId::subImage1Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage2Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage3Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage4Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage5Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage6Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage7Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage8Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::subImage9Id, IfdId::ifd0Id, 0x014a}, + {Tag::root, IfdId::exifId, IfdId::ifd0Id, 0x8769}, + {Tag::root, IfdId::gpsId, IfdId::ifd0Id, 0x8825}, + {Tag::root, IfdId::iopId, IfdId::exifId, 0xa005}, + {Tag::root, IfdId::ifd1Id, IfdId::ifd0Id, Tag::next}, + {Tag::root, IfdId::ifd2Id, IfdId::ifd1Id, Tag::next}, + {Tag::root, IfdId::ifd3Id, IfdId::ifd2Id, Tag::next}, + {Tag::root, IfdId::olympusId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::olympus2Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::subThumb1Id, IfdId::ifd1Id, 0x014a}, + {Tag::root, IfdId::olympusEqId, IfdId::olympus2Id, 0x2010}, + {Tag::root, IfdId::olympusCsId, IfdId::olympus2Id, 0x2020}, + {Tag::root, IfdId::olympusRdId, IfdId::olympus2Id, 0x2030}, + {Tag::root, IfdId::olympusRd2Id, IfdId::olympus2Id, 0x2031}, + {Tag::root, IfdId::olympusIpId, IfdId::olympus2Id, 0x2040}, + {Tag::root, IfdId::olympusFiId, IfdId::olympus2Id, 0x2050}, + {Tag::root, IfdId::olympusFe1Id, IfdId::olympus2Id, 0x2100}, + {Tag::root, IfdId::olympusFe2Id, IfdId::olympus2Id, 0x2200}, + {Tag::root, IfdId::olympusFe3Id, IfdId::olympus2Id, 0x2300}, + {Tag::root, IfdId::olympusFe4Id, IfdId::olympus2Id, 0x2400}, + {Tag::root, IfdId::olympusFe5Id, IfdId::olympus2Id, 0x2500}, + {Tag::root, IfdId::olympusFe6Id, IfdId::olympus2Id, 0x2600}, + {Tag::root, IfdId::olympusFe7Id, IfdId::olympus2Id, 0x2700}, + {Tag::root, IfdId::olympusFe8Id, IfdId::olympus2Id, 0x2800}, + {Tag::root, IfdId::olympusFe9Id, IfdId::olympus2Id, 0x2900}, + {Tag::root, IfdId::olympusRiId, IfdId::olympus2Id, 0x3000}, + {Tag::root, IfdId::fujiId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::canonId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::canonCsId, IfdId::canonId, 0x0001}, + {Tag::root, IfdId::canonSiId, IfdId::canonId, 0x0004}, + {Tag::root, IfdId::canonPaId, IfdId::canonId, 0x0005}, + {Tag::root, IfdId::canonCfId, IfdId::canonId, 0x000f}, + {Tag::root, IfdId::canonPiId, IfdId::canonId, 0x0012}, + {Tag::root, IfdId::canonTiId, IfdId::canonId, 0x0035}, + {Tag::root, IfdId::canonFiId, IfdId::canonId, 0x0093}, + {Tag::root, IfdId::canonPrId, IfdId::canonId, 0x00a0}, + {Tag::root, IfdId::canonAfMiAdjId, IfdId::canonId, 0x4013}, + {Tag::root, IfdId::canonVigCor2Id, IfdId::canonId, 0x4016}, + {Tag::root, IfdId::canonLiOpId, IfdId::canonId, 0x4018}, + {Tag::root, IfdId::canonLeId, IfdId::canonId, 0x4019}, + {Tag::root, IfdId::canonAmId, IfdId::canonId, 0x4020}, + {Tag::root, IfdId::canonMeId, IfdId::canonId, 0x4021}, + {Tag::root, IfdId::canonFilId, IfdId::canonId, 0x4024}, + {Tag::root, IfdId::canonHdrId, IfdId::canonId, 0x4025}, + {Tag::root, IfdId::canonAfCId, IfdId::canonId, 0x4028}, + {Tag::root, IfdId::canonRawBId, IfdId::canonId, 0x403f}, + {Tag::root, IfdId::nikon1Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::nikon2Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::nikon3Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::nikonPvId, IfdId::nikon3Id, 0x0011}, + {Tag::root, IfdId::nikonVrId, IfdId::nikon3Id, 0x001f}, + {Tag::root, IfdId::nikonPcId, IfdId::nikon3Id, 0x0023}, + {Tag::root, IfdId::nikonWtId, IfdId::nikon3Id, 0x0024}, + {Tag::root, IfdId::nikonIiId, IfdId::nikon3Id, 0x0025}, + {Tag::root, IfdId::nikonAfId, IfdId::nikon3Id, 0x0088}, + {Tag::root, IfdId::nikonSi1Id, IfdId::nikon3Id, 0x0091}, + {Tag::root, IfdId::nikonSi2Id, IfdId::nikon3Id, 0x0091}, + {Tag::root, IfdId::nikonSi3Id, IfdId::nikon3Id, 0x0091}, + {Tag::root, IfdId::nikonSi4Id, IfdId::nikon3Id, 0x0091}, + {Tag::root, IfdId::nikonSi5Id, IfdId::nikon3Id, 0x0091}, + {Tag::root, IfdId::nikonSi6Id, IfdId::nikon3Id, 0x0091}, + {Tag::root, IfdId::nikonCb1Id, IfdId::nikon3Id, 0x0097}, + {Tag::root, IfdId::nikonCb2Id, IfdId::nikon3Id, 0x0097}, + {Tag::root, IfdId::nikonCb2aId, IfdId::nikon3Id, 0x0097}, + {Tag::root, IfdId::nikonCb2bId, IfdId::nikon3Id, 0x0097}, + {Tag::root, IfdId::nikonCb3Id, IfdId::nikon3Id, 0x0097}, + {Tag::root, IfdId::nikonCb4Id, IfdId::nikon3Id, 0x0097}, + {Tag::root, IfdId::nikonLd1Id, IfdId::nikon3Id, 0x0098}, + {Tag::root, IfdId::nikonLd2Id, IfdId::nikon3Id, 0x0098}, + {Tag::root, IfdId::nikonLd3Id, IfdId::nikon3Id, 0x0098}, + {Tag::root, IfdId::nikonLd4Id, IfdId::nikon3Id, 0x0098}, + {Tag::root, IfdId::nikonMeId, IfdId::nikon3Id, 0x00b0}, + {Tag::root, IfdId::nikonAf21Id, IfdId::nikon3Id, 0x00b7}, + {Tag::root, IfdId::nikonAf22Id, IfdId::nikon3Id, 0x00b7}, + {Tag::root, IfdId::nikonFiId, IfdId::nikon3Id, 0x00b8}, + {Tag::root, IfdId::nikonAFTId, IfdId::nikon3Id, 0x00b9}, + {Tag::root, IfdId::nikonFl1Id, IfdId::nikon3Id, 0x00a8}, + {Tag::root, IfdId::nikonFl2Id, IfdId::nikon3Id, 0x00a8}, + {Tag::root, IfdId::nikonFl3Id, IfdId::nikon3Id, 0x00a8}, + {Tag::root, IfdId::nikonFl7Id, IfdId::nikon3Id, 0x00a8}, + {Tag::root, IfdId::panasonicId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::pentaxId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::pentaxDngId, IfdId::ifd0Id, 0xc634}, + {Tag::root, IfdId::samsung2Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::samsungPwId, IfdId::samsung2Id, 0x0021}, + {Tag::root, IfdId::samsungPvId, IfdId::samsung2Id, 0x0035}, + {Tag::root, IfdId::sigmaId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::sony1Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::sony2010eId, IfdId::sony1Id, 0x2010}, + {Tag::root, IfdId::sony2FpId, IfdId::sony1Id, 0x9402}, + {Tag::root, IfdId::sonyMisc1Id, IfdId::sony1Id, 0x9403}, + {Tag::root, IfdId::sonyMisc2bId, IfdId::sony1Id, 0x9404}, + {Tag::root, IfdId::sonyMisc3cId, IfdId::sony1Id, 0x9400}, + {Tag::root, IfdId::sonySInfo1Id, IfdId::sony1Id, 0x3000}, + {Tag::root, IfdId::sony1CsId, IfdId::sony1Id, 0x0114}, + {Tag::root, IfdId::sony1Cs2Id, IfdId::sony1Id, 0x0114}, + {Tag::root, IfdId::sonyMltId, IfdId::sony1Id, 0xb028}, + {Tag::root, IfdId::sony1MltCsOldId, IfdId::sonyMltId, 0x0001}, + {Tag::root, IfdId::sony1MltCsNewId, IfdId::sonyMltId, 0x0003}, + {Tag::root, IfdId::sony1MltCs7DId, IfdId::sonyMltId, 0x0004}, + {Tag::root, IfdId::sony1MltCsA100Id, IfdId::sonyMltId, 0x0114}, + {Tag::root, IfdId::sony2Id, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::sony2010eId, IfdId::sony2Id, 0x2010}, + {Tag::root, IfdId::sony2FpId, IfdId::sony2Id, 0x9402}, + {Tag::root, IfdId::sonyMisc1Id, IfdId::sony2Id, 0x9403}, + {Tag::root, IfdId::sonyMisc2bId, IfdId::sony2Id, 0x9404}, + {Tag::root, IfdId::sonyMisc3cId, IfdId::sony2Id, 0x9400}, + {Tag::root, IfdId::sonySInfo1Id, IfdId::sony2Id, 0x3000}, + {Tag::root, IfdId::sony2CsId, IfdId::sony2Id, 0x0114}, + {Tag::root, IfdId::sony2Cs2Id, IfdId::sony2Id, 0x0114}, + {Tag::root, IfdId::minoltaId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::minoltaCsOldId, IfdId::minoltaId, 0x0001}, + {Tag::root, IfdId::minoltaCsNewId, IfdId::minoltaId, 0x0003}, + {Tag::root, IfdId::minoltaCs7DId, IfdId::minoltaId, 0x0004}, + {Tag::root, IfdId::minoltaCs5DId, IfdId::minoltaId, 0x0114}, + {Tag::root, IfdId::casioId, IfdId::exifId, 0x927c}, + {Tag::root, IfdId::casio2Id, IfdId::exifId, 0x927c}, // --------------------------------------------------------- // Panasonic RW2 raw images - {Tag::pana, ifdIdNotSet, ifdIdNotSet, Tag::pana}, - {Tag::pana, panaRawId, ifdIdNotSet, Tag::pana}, - {Tag::pana, exifId, panaRawId, 0x8769}, - {Tag::pana, gpsId, panaRawId, 0x8825}}; + {Tag::pana, IfdId::ifdIdNotSet, IfdId::ifdIdNotSet, Tag::pana}, + {Tag::pana, IfdId::panaRawId, IfdId::ifdIdNotSet, Tag::pana}, + {Tag::pana, IfdId::exifId, IfdId::panaRawId, 0x8769}, + {Tag::pana, IfdId::gpsId, IfdId::panaRawId, 0x8825}}; /* This table describes the layout of each known TIFF group (including @@ -1231,555 +1231,555 @@ const TiffGroupStruct TiffCreator::tiffGroupStruct_[] = { // ext. tag group create function //--------- ----------------- ----------------------------------------- // Root directory - {Tag::root, ifdIdNotSet, newTiffDirectory}, + {Tag::root, IfdId::ifdIdNotSet, newTiffDirectory}, // Fujifilm RAF #1402. Use different root when parsing embedded tiff. - {Tag::fuji, ifdIdNotSet, newTiffDirectory}, - {0xf000, fujiId, newTiffSubIfd}, + {Tag::fuji, IfdId::ifdIdNotSet, newTiffDirectory}, + {0xf000, IfdId::fujiId, newTiffSubIfd}, // CR3 images #1475 - {Tag::cmt2, ifdIdNotSet, newTiffDirectory}, - {Tag::cmt3, ifdIdNotSet, newTiffDirectory}, - {Tag::cmt4, ifdIdNotSet, newTiffDirectory}, + {Tag::cmt2, IfdId::ifdIdNotSet, newTiffDirectory}, + {Tag::cmt3, IfdId::ifdIdNotSet, newTiffDirectory}, + {Tag::cmt4, IfdId::ifdIdNotSet, newTiffDirectory}, // IFD0 - {0x8769, ifd0Id, newTiffSubIfd}, - {0x8825, ifd0Id, newTiffSubIfd}, - {0x0111, ifd0Id, newTiffImageData<0x0117, ifd0Id>}, - {0x0117, ifd0Id, newTiffImageSize<0x0111, ifd0Id>}, - {0x0144, ifd0Id, newTiffImageData<0x0145, ifd0Id>}, - {0x0145, ifd0Id, newTiffImageSize<0x0144, ifd0Id>}, - {0x0201, ifd0Id, newTiffImageData<0x0202, ifd0Id>}, - {0x0202, ifd0Id, newTiffImageSize<0x0201, ifd0Id>}, - {0x014a, ifd0Id, newTiffSubIfd}, - {0xc634, ifd0Id, newTiffMnEntry}, - {Tag::next, ifd0Id, newTiffDirectory}, - {Tag::all, ifd0Id, newTiffEntry}, + {0x8769, IfdId::ifd0Id, newTiffSubIfd}, + {0x8825, IfdId::ifd0Id, newTiffSubIfd}, + {0x0111, IfdId::ifd0Id, newTiffImageData<0x0117, IfdId::ifd0Id>}, + {0x0117, IfdId::ifd0Id, newTiffImageSize<0x0111, IfdId::ifd0Id>}, + {0x0144, IfdId::ifd0Id, newTiffImageData<0x0145, IfdId::ifd0Id>}, + {0x0145, IfdId::ifd0Id, newTiffImageSize<0x0144, IfdId::ifd0Id>}, + {0x0201, IfdId::ifd0Id, newTiffImageData<0x0202, IfdId::ifd0Id>}, + {0x0202, IfdId::ifd0Id, newTiffImageSize<0x0201, IfdId::ifd0Id>}, + {0x014a, IfdId::ifd0Id, newTiffSubIfd}, + {0xc634, IfdId::ifd0Id, newTiffMnEntry}, + {Tag::next, IfdId::ifd0Id, newTiffDirectory}, + {Tag::all, IfdId::ifd0Id, newTiffEntry}, // Subdir subImage1 - {0x0111, subImage1Id, newTiffImageData<0x0117, subImage1Id>}, - {0x0117, subImage1Id, newTiffImageSize<0x0111, subImage1Id>}, - {0x0144, subImage1Id, newTiffImageData<0x0145, subImage1Id>}, - {0x0145, subImage1Id, newTiffImageSize<0x0144, subImage1Id>}, - {0x0201, subImage1Id, newTiffImageData<0x0202, subImage1Id>}, - {0x0202, subImage1Id, newTiffImageSize<0x0201, subImage1Id>}, - {Tag::next, subImage1Id, ignoreTiffComponent}, - {Tag::all, subImage1Id, newTiffEntry}, + {0x0111, IfdId::subImage1Id, newTiffImageData<0x0117, IfdId::subImage1Id>}, + {0x0117, IfdId::subImage1Id, newTiffImageSize<0x0111, IfdId::subImage1Id>}, + {0x0144, IfdId::subImage1Id, newTiffImageData<0x0145, IfdId::subImage1Id>}, + {0x0145, IfdId::subImage1Id, newTiffImageSize<0x0144, IfdId::subImage1Id>}, + {0x0201, IfdId::subImage1Id, newTiffImageData<0x0202, IfdId::subImage1Id>}, + {0x0202, IfdId::subImage1Id, newTiffImageSize<0x0201, IfdId::subImage1Id>}, + {Tag::next, IfdId::subImage1Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage1Id, newTiffEntry}, // Subdir subImage2 - {0x0111, subImage2Id, newTiffImageData<0x0117, subImage2Id>}, - {0x0117, subImage2Id, newTiffImageSize<0x0111, subImage2Id>}, - {0x0144, subImage2Id, newTiffImageData<0x0145, subImage2Id>}, - {0x0145, subImage2Id, newTiffImageSize<0x0144, subImage2Id>}, - {0x0201, subImage2Id, newTiffImageData<0x0202, subImage2Id>}, - {0x0202, subImage2Id, newTiffImageSize<0x0201, subImage2Id>}, - {Tag::next, subImage2Id, ignoreTiffComponent}, - {Tag::all, subImage2Id, newTiffEntry}, + {0x0111, IfdId::subImage2Id, newTiffImageData<0x0117, IfdId::subImage2Id>}, + {0x0117, IfdId::subImage2Id, newTiffImageSize<0x0111, IfdId::subImage2Id>}, + {0x0144, IfdId::subImage2Id, newTiffImageData<0x0145, IfdId::subImage2Id>}, + {0x0145, IfdId::subImage2Id, newTiffImageSize<0x0144, IfdId::subImage2Id>}, + {0x0201, IfdId::subImage2Id, newTiffImageData<0x0202, IfdId::subImage2Id>}, + {0x0202, IfdId::subImage2Id, newTiffImageSize<0x0201, IfdId::subImage2Id>}, + {Tag::next, IfdId::subImage2Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage2Id, newTiffEntry}, // Subdir subImage3 - {0x0111, subImage3Id, newTiffImageData<0x0117, subImage3Id>}, - {0x0117, subImage3Id, newTiffImageSize<0x0111, subImage3Id>}, - {0x0144, subImage3Id, newTiffImageData<0x0145, subImage3Id>}, - {0x0145, subImage3Id, newTiffImageSize<0x0144, subImage3Id>}, - {0x0201, subImage3Id, newTiffImageData<0x0202, subImage3Id>}, - {0x0202, subImage3Id, newTiffImageSize<0x0201, subImage3Id>}, - {Tag::next, subImage3Id, ignoreTiffComponent}, - {Tag::all, subImage3Id, newTiffEntry}, + {0x0111, IfdId::subImage3Id, newTiffImageData<0x0117, IfdId::subImage3Id>}, + {0x0117, IfdId::subImage3Id, newTiffImageSize<0x0111, IfdId::subImage3Id>}, + {0x0144, IfdId::subImage3Id, newTiffImageData<0x0145, IfdId::subImage3Id>}, + {0x0145, IfdId::subImage3Id, newTiffImageSize<0x0144, IfdId::subImage3Id>}, + {0x0201, IfdId::subImage3Id, newTiffImageData<0x0202, IfdId::subImage3Id>}, + {0x0202, IfdId::subImage3Id, newTiffImageSize<0x0201, IfdId::subImage3Id>}, + {Tag::next, IfdId::subImage3Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage3Id, newTiffEntry}, // Subdir subImage4 - {0x0111, subImage4Id, newTiffImageData<0x0117, subImage4Id>}, - {0x0117, subImage4Id, newTiffImageSize<0x0111, subImage4Id>}, - {0x0144, subImage4Id, newTiffImageData<0x0145, subImage4Id>}, - {0x0145, subImage4Id, newTiffImageSize<0x0144, subImage4Id>}, - {0x0201, subImage4Id, newTiffImageData<0x0202, subImage4Id>}, - {0x0202, subImage4Id, newTiffImageSize<0x0201, subImage4Id>}, - {Tag::next, subImage4Id, ignoreTiffComponent}, - {Tag::all, subImage4Id, newTiffEntry}, + {0x0111, IfdId::subImage4Id, newTiffImageData<0x0117, IfdId::subImage4Id>}, + {0x0117, IfdId::subImage4Id, newTiffImageSize<0x0111, IfdId::subImage4Id>}, + {0x0144, IfdId::subImage4Id, newTiffImageData<0x0145, IfdId::subImage4Id>}, + {0x0145, IfdId::subImage4Id, newTiffImageSize<0x0144, IfdId::subImage4Id>}, + {0x0201, IfdId::subImage4Id, newTiffImageData<0x0202, IfdId::subImage4Id>}, + {0x0202, IfdId::subImage4Id, newTiffImageSize<0x0201, IfdId::subImage4Id>}, + {Tag::next, IfdId::subImage4Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage4Id, newTiffEntry}, // Subdir subImage5 - {0x0111, subImage5Id, newTiffImageData<0x0117, subImage5Id>}, - {0x0117, subImage5Id, newTiffImageSize<0x0111, subImage5Id>}, - {0x0144, subImage5Id, newTiffImageData<0x0145, subImage5Id>}, - {0x0145, subImage5Id, newTiffImageSize<0x0144, subImage5Id>}, - {0x0201, subImage5Id, newTiffImageData<0x0202, subImage5Id>}, - {0x0202, subImage5Id, newTiffImageSize<0x0201, subImage5Id>}, - {Tag::next, subImage5Id, ignoreTiffComponent}, - {Tag::all, subImage5Id, newTiffEntry}, + {0x0111, IfdId::subImage5Id, newTiffImageData<0x0117, IfdId::subImage5Id>}, + {0x0117, IfdId::subImage5Id, newTiffImageSize<0x0111, IfdId::subImage5Id>}, + {0x0144, IfdId::subImage5Id, newTiffImageData<0x0145, IfdId::subImage5Id>}, + {0x0145, IfdId::subImage5Id, newTiffImageSize<0x0144, IfdId::subImage5Id>}, + {0x0201, IfdId::subImage5Id, newTiffImageData<0x0202, IfdId::subImage5Id>}, + {0x0202, IfdId::subImage5Id, newTiffImageSize<0x0201, IfdId::subImage5Id>}, + {Tag::next, IfdId::subImage5Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage5Id, newTiffEntry}, // Subdir subImage6 - {0x0111, subImage6Id, newTiffImageData<0x0117, subImage6Id>}, - {0x0117, subImage6Id, newTiffImageSize<0x0111, subImage6Id>}, - {0x0144, subImage6Id, newTiffImageData<0x0145, subImage6Id>}, - {0x0145, subImage6Id, newTiffImageSize<0x0144, subImage6Id>}, - {0x0201, subImage6Id, newTiffImageData<0x0202, subImage6Id>}, - {0x0202, subImage6Id, newTiffImageSize<0x0201, subImage6Id>}, - {Tag::next, subImage6Id, ignoreTiffComponent}, - {Tag::all, subImage6Id, newTiffEntry}, + {0x0111, IfdId::subImage6Id, newTiffImageData<0x0117, IfdId::subImage6Id>}, + {0x0117, IfdId::subImage6Id, newTiffImageSize<0x0111, IfdId::subImage6Id>}, + {0x0144, IfdId::subImage6Id, newTiffImageData<0x0145, IfdId::subImage6Id>}, + {0x0145, IfdId::subImage6Id, newTiffImageSize<0x0144, IfdId::subImage6Id>}, + {0x0201, IfdId::subImage6Id, newTiffImageData<0x0202, IfdId::subImage6Id>}, + {0x0202, IfdId::subImage6Id, newTiffImageSize<0x0201, IfdId::subImage6Id>}, + {Tag::next, IfdId::subImage6Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage6Id, newTiffEntry}, // Subdir subImage7 - {0x0111, subImage7Id, newTiffImageData<0x0117, subImage7Id>}, - {0x0117, subImage7Id, newTiffImageSize<0x0111, subImage7Id>}, - {0x0144, subImage7Id, newTiffImageData<0x0145, subImage7Id>}, - {0x0145, subImage7Id, newTiffImageSize<0x0144, subImage7Id>}, - {0x0201, subImage7Id, newTiffImageData<0x0202, subImage7Id>}, - {0x0202, subImage7Id, newTiffImageSize<0x0201, subImage7Id>}, - {Tag::next, subImage7Id, ignoreTiffComponent}, - {Tag::all, subImage7Id, newTiffEntry}, + {0x0111, IfdId::subImage7Id, newTiffImageData<0x0117, IfdId::subImage7Id>}, + {0x0117, IfdId::subImage7Id, newTiffImageSize<0x0111, IfdId::subImage7Id>}, + {0x0144, IfdId::subImage7Id, newTiffImageData<0x0145, IfdId::subImage7Id>}, + {0x0145, IfdId::subImage7Id, newTiffImageSize<0x0144, IfdId::subImage7Id>}, + {0x0201, IfdId::subImage7Id, newTiffImageData<0x0202, IfdId::subImage7Id>}, + {0x0202, IfdId::subImage7Id, newTiffImageSize<0x0201, IfdId::subImage7Id>}, + {Tag::next, IfdId::subImage7Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage7Id, newTiffEntry}, // Subdir subImage8 - {0x0111, subImage8Id, newTiffImageData<0x0117, subImage8Id>}, - {0x0117, subImage8Id, newTiffImageSize<0x0111, subImage8Id>}, - {0x0144, subImage8Id, newTiffImageData<0x0145, subImage8Id>}, - {0x0145, subImage8Id, newTiffImageSize<0x0144, subImage8Id>}, - {0x0201, subImage8Id, newTiffImageData<0x0202, subImage8Id>}, - {0x0202, subImage8Id, newTiffImageSize<0x0201, subImage8Id>}, - {Tag::next, subImage8Id, ignoreTiffComponent}, - {Tag::all, subImage8Id, newTiffEntry}, + {0x0111, IfdId::subImage8Id, newTiffImageData<0x0117, IfdId::subImage8Id>}, + {0x0117, IfdId::subImage8Id, newTiffImageSize<0x0111, IfdId::subImage8Id>}, + {0x0144, IfdId::subImage8Id, newTiffImageData<0x0145, IfdId::subImage8Id>}, + {0x0145, IfdId::subImage8Id, newTiffImageSize<0x0144, IfdId::subImage8Id>}, + {0x0201, IfdId::subImage8Id, newTiffImageData<0x0202, IfdId::subImage8Id>}, + {0x0202, IfdId::subImage8Id, newTiffImageSize<0x0201, IfdId::subImage8Id>}, + {Tag::next, IfdId::subImage8Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage8Id, newTiffEntry}, // Subdir subImage9 - {0x0111, subImage9Id, newTiffImageData<0x0117, subImage9Id>}, - {0x0117, subImage9Id, newTiffImageSize<0x0111, subImage9Id>}, - {0x0144, subImage9Id, newTiffImageData<0x0145, subImage9Id>}, - {0x0145, subImage9Id, newTiffImageSize<0x0144, subImage9Id>}, - {0x0201, subImage9Id, newTiffImageData<0x0202, subImage9Id>}, - {0x0202, subImage9Id, newTiffImageSize<0x0201, subImage9Id>}, - {Tag::next, subImage9Id, ignoreTiffComponent}, - {Tag::all, subImage9Id, newTiffEntry}, + {0x0111, IfdId::subImage9Id, newTiffImageData<0x0117, IfdId::subImage9Id>}, + {0x0117, IfdId::subImage9Id, newTiffImageSize<0x0111, IfdId::subImage9Id>}, + {0x0144, IfdId::subImage9Id, newTiffImageData<0x0145, IfdId::subImage9Id>}, + {0x0145, IfdId::subImage9Id, newTiffImageSize<0x0144, IfdId::subImage9Id>}, + {0x0201, IfdId::subImage9Id, newTiffImageData<0x0202, IfdId::subImage9Id>}, + {0x0202, IfdId::subImage9Id, newTiffImageSize<0x0201, IfdId::subImage9Id>}, + {Tag::next, IfdId::subImage9Id, ignoreTiffComponent}, + {Tag::all, IfdId::subImage9Id, newTiffEntry}, // Exif subdir - {0xa005, exifId, newTiffSubIfd}, - {0x927c, exifId, newTiffMnEntry}, - {Tag::next, exifId, ignoreTiffComponent}, - {Tag::all, exifId, newTiffEntry}, + {0xa005, IfdId::exifId, newTiffSubIfd}, + {0x927c, IfdId::exifId, newTiffMnEntry}, + {Tag::next, IfdId::exifId, ignoreTiffComponent}, + {Tag::all, IfdId::exifId, newTiffEntry}, // GPS subdir - {Tag::next, gpsId, ignoreTiffComponent}, - {Tag::all, gpsId, newTiffEntry}, + {Tag::next, IfdId::gpsId, ignoreTiffComponent}, + {Tag::all, IfdId::gpsId, newTiffEntry}, // IOP subdir - {Tag::next, iopId, ignoreTiffComponent}, - {Tag::all, iopId, newTiffEntry}, + {Tag::next, IfdId::iopId, ignoreTiffComponent}, + {Tag::all, IfdId::iopId, newTiffEntry}, // IFD1 - {0x0111, ifd1Id, newTiffThumbData<0x0117, ifd1Id>}, - {0x0117, ifd1Id, newTiffThumbSize<0x0111, ifd1Id>}, - {0x0144, ifd1Id, newTiffImageData<0x0145, ifd1Id>}, - {0x0145, ifd1Id, newTiffImageSize<0x0144, ifd1Id>}, - {0x014a, ifd1Id, newTiffSubIfd}, - {0x0201, ifd1Id, newTiffThumbData<0x0202, ifd1Id>}, - {0x0202, ifd1Id, newTiffThumbSize<0x0201, ifd1Id>}, - {Tag::next, ifd1Id, newTiffDirectory}, - {Tag::all, ifd1Id, newTiffEntry}, + {0x0111, IfdId::ifd1Id, newTiffThumbData<0x0117, IfdId::ifd1Id>}, + {0x0117, IfdId::ifd1Id, newTiffThumbSize<0x0111, IfdId::ifd1Id>}, + {0x0144, IfdId::ifd1Id, newTiffImageData<0x0145, IfdId::ifd1Id>}, + {0x0145, IfdId::ifd1Id, newTiffImageSize<0x0144, IfdId::ifd1Id>}, + {0x014a, IfdId::ifd1Id, newTiffSubIfd}, + {0x0201, IfdId::ifd1Id, newTiffThumbData<0x0202, IfdId::ifd1Id>}, + {0x0202, IfdId::ifd1Id, newTiffThumbSize<0x0201, IfdId::ifd1Id>}, + {Tag::next, IfdId::ifd1Id, newTiffDirectory}, + {Tag::all, IfdId::ifd1Id, newTiffEntry}, // Subdir subThumb1 - {0x0111, subThumb1Id, newTiffImageData<0x0117, subThumb1Id>}, - {0x0117, subThumb1Id, newTiffImageSize<0x0111, subThumb1Id>}, - {0x0144, subThumb1Id, newTiffImageData<0x0145, subThumb1Id>}, - {0x0145, subThumb1Id, newTiffImageSize<0x0144, subThumb1Id>}, - {0x0201, subThumb1Id, newTiffImageData<0x0202, subThumb1Id>}, - {0x0202, subThumb1Id, newTiffImageSize<0x0201, subThumb1Id>}, - {Tag::next, subThumb1Id, ignoreTiffComponent}, - {Tag::all, subThumb1Id, newTiffEntry}, + {0x0111, IfdId::subThumb1Id, newTiffImageData<0x0117, IfdId::subThumb1Id>}, + {0x0117, IfdId::subThumb1Id, newTiffImageSize<0x0111, IfdId::subThumb1Id>}, + {0x0144, IfdId::subThumb1Id, newTiffImageData<0x0145, IfdId::subThumb1Id>}, + {0x0145, IfdId::subThumb1Id, newTiffImageSize<0x0144, IfdId::subThumb1Id>}, + {0x0201, IfdId::subThumb1Id, newTiffImageData<0x0202, IfdId::subThumb1Id>}, + {0x0202, IfdId::subThumb1Id, newTiffImageSize<0x0201, IfdId::subThumb1Id>}, + {Tag::next, IfdId::subThumb1Id, ignoreTiffComponent}, + {Tag::all, IfdId::subThumb1Id, newTiffEntry}, // IFD2 (eg, in Pentax PEF and Canon CR2 files) - {0x0111, ifd2Id, newTiffImageData<0x0117, ifd2Id>}, - {0x0117, ifd2Id, newTiffImageSize<0x0111, ifd2Id>}, - {0x0144, ifd1Id, newTiffImageData<0x0145, ifd2Id>}, - {0x0145, ifd1Id, newTiffImageSize<0x0144, ifd2Id>}, - {0x0201, ifd2Id, newTiffImageData<0x0202, ifd2Id>}, - {0x0202, ifd2Id, newTiffImageSize<0x0201, ifd2Id>}, - {Tag::next, ifd2Id, newTiffDirectory}, - {Tag::all, ifd2Id, newTiffEntry}, + {0x0111, IfdId::ifd2Id, newTiffImageData<0x0117, IfdId::ifd2Id>}, + {0x0117, IfdId::ifd2Id, newTiffImageSize<0x0111, IfdId::ifd2Id>}, + {0x0144, IfdId::ifd1Id, newTiffImageData<0x0145, IfdId::ifd2Id>}, + {0x0145, IfdId::ifd1Id, newTiffImageSize<0x0144, IfdId::ifd2Id>}, + {0x0201, IfdId::ifd2Id, newTiffImageData<0x0202, IfdId::ifd2Id>}, + {0x0202, IfdId::ifd2Id, newTiffImageSize<0x0201, IfdId::ifd2Id>}, + {Tag::next, IfdId::ifd2Id, newTiffDirectory}, + {Tag::all, IfdId::ifd2Id, newTiffEntry}, // IFD3 (eg, in Canon CR2 files) - {0x0111, ifd3Id, newTiffImageData<0x0117, ifd3Id>}, - {0x0117, ifd3Id, newTiffImageSize<0x0111, ifd3Id>}, - {0x0144, ifd1Id, newTiffImageData<0x0145, ifd3Id>}, - {0x0145, ifd1Id, newTiffImageSize<0x0144, ifd3Id>}, - {0x0201, ifd3Id, newTiffImageData<0x0202, ifd3Id>}, - {0x0202, ifd3Id, newTiffImageSize<0x0201, ifd3Id>}, - {Tag::next, ifd3Id, ignoreTiffComponent}, - {Tag::all, ifd3Id, newTiffEntry}, + {0x0111, IfdId::ifd3Id, newTiffImageData<0x0117, IfdId::ifd3Id>}, + {0x0117, IfdId::ifd3Id, newTiffImageSize<0x0111, IfdId::ifd3Id>}, + {0x0144, IfdId::ifd1Id, newTiffImageData<0x0145, IfdId::ifd3Id>}, + {0x0145, IfdId::ifd1Id, newTiffImageSize<0x0144, IfdId::ifd3Id>}, + {0x0201, IfdId::ifd3Id, newTiffImageData<0x0202, IfdId::ifd3Id>}, + {0x0202, IfdId::ifd3Id, newTiffImageSize<0x0201, IfdId::ifd3Id>}, + {Tag::next, IfdId::ifd3Id, ignoreTiffComponent}, + {Tag::all, IfdId::ifd3Id, newTiffEntry}, // Olympus makernote - some Olympus cameras use Minolta structures // Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups - {0x0001, olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)}, - {0x0003, olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg)}, - {Tag::next, olympusId, ignoreTiffComponent}, - {Tag::all, olympusId, newTiffEntry}, + {0x0001, IfdId::olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)}, + {0x0003, IfdId::olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg)}, + {Tag::next, IfdId::olympusId, ignoreTiffComponent}, + {Tag::all, IfdId::olympusId, newTiffEntry}, // Olympus2 makernote - {0x0001, olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)}, - {0x0003, olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg)}, - {0x2010, olympus2Id, newTiffSubIfd}, - {0x2020, olympus2Id, newTiffSubIfd}, - {0x2030, olympus2Id, newTiffSubIfd}, - {0x2031, olympus2Id, newTiffSubIfd}, - {0x2040, olympus2Id, newTiffSubIfd}, - {0x2050, olympus2Id, newTiffSubIfd}, - {0x2100, olympus2Id, newTiffSubIfd}, - {0x2200, olympus2Id, newTiffSubIfd}, - {0x2300, olympus2Id, newTiffSubIfd}, - {0x2400, olympus2Id, newTiffSubIfd}, - {0x2500, olympus2Id, newTiffSubIfd}, - {0x2600, olympus2Id, newTiffSubIfd}, - {0x2700, olympus2Id, newTiffSubIfd}, - {0x2800, olympus2Id, newTiffSubIfd}, - {0x2900, olympus2Id, newTiffSubIfd}, - {0x3000, olympus2Id, newTiffSubIfd}, - {Tag::next, olympus2Id, ignoreTiffComponent}, - {Tag::all, olympus2Id, newTiffEntry}, + {0x0001, IfdId::olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)}, + {0x0003, IfdId::olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg)}, + {0x2010, IfdId::olympus2Id, newTiffSubIfd}, + {0x2020, IfdId::olympus2Id, newTiffSubIfd}, + {0x2030, IfdId::olympus2Id, newTiffSubIfd}, + {0x2031, IfdId::olympus2Id, newTiffSubIfd}, + {0x2040, IfdId::olympus2Id, newTiffSubIfd}, + {0x2050, IfdId::olympus2Id, newTiffSubIfd}, + {0x2100, IfdId::olympus2Id, newTiffSubIfd}, + {0x2200, IfdId::olympus2Id, newTiffSubIfd}, + {0x2300, IfdId::olympus2Id, newTiffSubIfd}, + {0x2400, IfdId::olympus2Id, newTiffSubIfd}, + {0x2500, IfdId::olympus2Id, newTiffSubIfd}, + {0x2600, IfdId::olympus2Id, newTiffSubIfd}, + {0x2700, IfdId::olympus2Id, newTiffSubIfd}, + {0x2800, IfdId::olympus2Id, newTiffSubIfd}, + {0x2900, IfdId::olympus2Id, newTiffSubIfd}, + {0x3000, IfdId::olympus2Id, newTiffSubIfd}, + {Tag::next, IfdId::olympus2Id, ignoreTiffComponent}, + {Tag::all, IfdId::olympus2Id, newTiffEntry}, // Olympus2 equipment subdir - {Tag::all, olympusEqId, newTiffEntry}, + {Tag::all, IfdId::olympusEqId, newTiffEntry}, // Olympus2 camera settings subdir - {0x0101, olympusCsId, newTiffImageData<0x0102, olympusCsId>}, - {0x0102, olympusCsId, newTiffImageSize<0x0101, olympusCsId>}, - {Tag::all, olympusCsId, newTiffEntry}, + {0x0101, IfdId::olympusCsId, newTiffImageData<0x0102, IfdId::olympusCsId>}, + {0x0102, IfdId::olympusCsId, newTiffImageSize<0x0101, IfdId::olympusCsId>}, + {Tag::all, IfdId::olympusCsId, newTiffEntry}, // Olympus2 raw development subdir - {Tag::all, olympusRdId, newTiffEntry}, + {Tag::all, IfdId::olympusRdId, newTiffEntry}, // Olympus2 raw development 2 subdir - {Tag::all, olympusRd2Id, newTiffEntry}, + {Tag::all, IfdId::olympusRd2Id, newTiffEntry}, // Olympus2 image processing subdir - {Tag::all, olympusIpId, newTiffEntry}, + {Tag::all, IfdId::olympusIpId, newTiffEntry}, // Olympus2 focus info subdir - {Tag::all, olympusFiId, newTiffEntry}, + {Tag::all, IfdId::olympusFiId, newTiffEntry}, // Olympus2 FE 1 subdir - {Tag::all, olympusFe1Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe1Id, newTiffEntry}, // Olympus2 FE 2 subdir - {Tag::all, olympusFe2Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe2Id, newTiffEntry}, // Olympus2 FE 3 subdir - {Tag::all, olympusFe3Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe3Id, newTiffEntry}, // Olympus2 FE 4 subdir - {Tag::all, olympusFe4Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe4Id, newTiffEntry}, // Olympus2 FE 5 subdir - {Tag::all, olympusFe5Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe5Id, newTiffEntry}, // Olympus2 FE 6 subdir - {Tag::all, olympusFe6Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe6Id, newTiffEntry}, // Olympus2 FE 7 subdir - {Tag::all, olympusFe7Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe7Id, newTiffEntry}, // Olympus2 FE 8 subdir - {Tag::all, olympusFe8Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe8Id, newTiffEntry}, // Olympus2 FE 9 subdir - {Tag::all, olympusFe9Id, newTiffEntry}, + {Tag::all, IfdId::olympusFe9Id, newTiffEntry}, // Olympus2 Raw Info subdir - {Tag::all, olympusRiId, newTiffEntry}, + {Tag::all, IfdId::olympusRiId, newTiffEntry}, // Fujifilm makernote - {Tag::next, fujiId, ignoreTiffComponent}, - {Tag::all, fujiId, newTiffEntry}, + {Tag::next, IfdId::fujiId, ignoreTiffComponent}, + {Tag::all, IfdId::fujiId, newTiffEntry}, // Canon makernote - {0x0001, canonId, EXV_BINARY_ARRAY(canonCsCfg, canonCsDef)}, - {0x0004, canonId, EXV_SIMPLE_BINARY_ARRAY(canonSiCfg)}, - {0x0005, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPaCfg)}, - {0x000f, canonId, EXV_SIMPLE_BINARY_ARRAY(canonCfCfg)}, - {0x0012, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPiCfg)}, - {0x0035, canonId, EXV_SIMPLE_BINARY_ARRAY(canonTiCfg)}, - {0x0093, canonId, EXV_BINARY_ARRAY(canonFiCfg, canonFiDef)}, - {0x00a0, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPrCfg)}, - {0x4013, canonId, EXV_SIMPLE_BINARY_ARRAY(canonAfMiAdjCfg)}, - // { 0x4015, canonId, EXV_SIMPLE_BINARY_ARRAY(canonVigCorCfg) }, - {0x4016, canonId, EXV_SIMPLE_BINARY_ARRAY(canonVigCor2Cfg)}, - {0x4018, canonId, EXV_SIMPLE_BINARY_ARRAY(canonLiOpCfg)}, - {0x4019, canonId, EXV_SIMPLE_BINARY_ARRAY(canonLeCfg)}, - {0x4020, canonId, EXV_SIMPLE_BINARY_ARRAY(canonAmCfg)}, - {0x4021, canonId, EXV_SIMPLE_BINARY_ARRAY(canonMeCfg)}, - {0x4024, canonId, EXV_SIMPLE_BINARY_ARRAY(canonFilCfg)}, - {0x4025, canonId, EXV_SIMPLE_BINARY_ARRAY(canonHdrCfg)}, - {0x4028, canonId, EXV_SIMPLE_BINARY_ARRAY(canonAfCCfg)}, - {0x403f, canonId, EXV_SIMPLE_BINARY_ARRAY(canonRawBCfg)}, - {Tag::next, canonId, ignoreTiffComponent}, - {Tag::all, canonId, newTiffEntry}, + {0x0001, IfdId::canonId, EXV_BINARY_ARRAY(canonCsCfg, canonCsDef)}, + {0x0004, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonSiCfg)}, + {0x0005, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonPaCfg)}, + {0x000f, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonCfCfg)}, + {0x0012, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonPiCfg)}, + {0x0035, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonTiCfg)}, + {0x0093, IfdId::canonId, EXV_BINARY_ARRAY(canonFiCfg, canonFiDef)}, + {0x00a0, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonPrCfg)}, + {0x4013, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonAfMiAdjCfg)}, + // { 0x4015, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonVigCorCfg) }, + {0x4016, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonVigCor2Cfg)}, + {0x4018, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonLiOpCfg)}, + {0x4019, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonLeCfg)}, + {0x4020, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonAmCfg)}, + {0x4021, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonMeCfg)}, + {0x4024, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonFilCfg)}, + {0x4025, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonHdrCfg)}, + {0x4028, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonAfCCfg)}, + {0x403f, IfdId::canonId, EXV_SIMPLE_BINARY_ARRAY(canonRawBCfg)}, + {Tag::next, IfdId::canonId, ignoreTiffComponent}, + {Tag::all, IfdId::canonId, newTiffEntry}, // Canon makernote composite tags - {Tag::all, canonCsId, newTiffBinaryElement}, - {Tag::all, canonSiId, newTiffBinaryElement}, - {Tag::all, canonPaId, newTiffBinaryElement}, - {Tag::all, canonCfId, newTiffBinaryElement}, - {Tag::all, canonPiId, newTiffBinaryElement}, - {Tag::all, canonTiId, newTiffBinaryElement}, - {Tag::all, canonFiId, newTiffBinaryElement}, - {Tag::all, canonPrId, newTiffBinaryElement}, - {Tag::all, canonAfMiAdjId, newTiffBinaryElement}, - // { Tag::all, canonVigCorId, newTiffBinaryElement }, - {Tag::all, canonVigCor2Id, newTiffBinaryElement}, - {Tag::all, canonLiOpId, newTiffBinaryElement}, - {Tag::all, canonLeId, newTiffBinaryElement}, - {Tag::all, canonAmId, newTiffBinaryElement}, - {Tag::all, canonMeId, newTiffBinaryElement}, - {Tag::all, canonFilId, newTiffBinaryElement}, - {Tag::all, canonHdrId, newTiffBinaryElement}, - {Tag::all, canonAfCId, newTiffBinaryElement}, - {Tag::all, canonRawBId, newTiffBinaryElement}, + {Tag::all, IfdId::canonCsId, newTiffBinaryElement}, + {Tag::all, IfdId::canonSiId, newTiffBinaryElement}, + {Tag::all, IfdId::canonPaId, newTiffBinaryElement}, + {Tag::all, IfdId::canonCfId, newTiffBinaryElement}, + {Tag::all, IfdId::canonPiId, newTiffBinaryElement}, + {Tag::all, IfdId::canonTiId, newTiffBinaryElement}, + {Tag::all, IfdId::canonFiId, newTiffBinaryElement}, + {Tag::all, IfdId::canonPrId, newTiffBinaryElement}, + {Tag::all, IfdId::canonAfMiAdjId, newTiffBinaryElement}, + // { Tag::all, IfdId::canonVigCorId, newTiffBinaryElement }, + {Tag::all, IfdId::canonVigCor2Id, newTiffBinaryElement}, + {Tag::all, IfdId::canonLiOpId, newTiffBinaryElement}, + {Tag::all, IfdId::canonLeId, newTiffBinaryElement}, + {Tag::all, IfdId::canonAmId, newTiffBinaryElement}, + {Tag::all, IfdId::canonMeId, newTiffBinaryElement}, + {Tag::all, IfdId::canonFilId, newTiffBinaryElement}, + {Tag::all, IfdId::canonHdrId, newTiffBinaryElement}, + {Tag::all, IfdId::canonAfCId, newTiffBinaryElement}, + {Tag::all, IfdId::canonRawBId, newTiffBinaryElement}, // Nikon1 makernote - {Tag::next, nikon1Id, ignoreTiffComponent}, - {Tag::all, nikon1Id, newTiffEntry}, + {Tag::next, IfdId::nikon1Id, ignoreTiffComponent}, + {Tag::all, IfdId::nikon1Id, newTiffEntry}, // Nikon2 makernote - {Tag::next, nikon2Id, ignoreTiffComponent}, - {Tag::all, nikon2Id, newTiffEntry}, + {Tag::next, IfdId::nikon2Id, ignoreTiffComponent}, + {Tag::all, IfdId::nikon2Id, newTiffEntry}, // Nikon3 makernote - {Tag::next, nikon3Id, ignoreTiffComponent}, - {0x0011, nikon3Id, newTiffSubIfd}, - {0x001f, nikon3Id, EXV_BINARY_ARRAY(nikonVrCfg, nikonVrDef)}, - {0x0023, nikon3Id, EXV_BINARY_ARRAY(nikonPcCfg, nikonPcDef)}, - {0x0024, nikon3Id, EXV_BINARY_ARRAY(nikonWtCfg, nikonWtDef)}, - {0x0025, nikon3Id, EXV_BINARY_ARRAY(nikonIiCfg, nikonIiDef)}, - {0x0088, nikon3Id, EXV_BINARY_ARRAY(nikonAfCfg, nikonAfDef)}, - {0x0091, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonSiSet, nikonSelector)}, - {0x0097, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonCbSet, nikonSelector)}, - {0x0098, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonLdSet, nikonSelector)}, - {0x00a8, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonFlSet, nikonSelector)}, - {0x00b0, nikon3Id, EXV_BINARY_ARRAY(nikonMeCfg, nikonMeDef)}, - {0x00b7, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonAf2Set, nikonSelector)}, - {0x00b8, nikon3Id, EXV_BINARY_ARRAY(nikonFiCfg, nikonFiDef)}, - {0x00b9, nikon3Id, EXV_BINARY_ARRAY(nikonAFTCfg, nikonAFTDef)}, - {Tag::all, nikon3Id, newTiffEntry}, + {Tag::next, IfdId::nikon3Id, ignoreTiffComponent}, + {0x0011, IfdId::nikon3Id, newTiffSubIfd}, + {0x001f, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonVrCfg, nikonVrDef)}, + {0x0023, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonPcCfg, nikonPcDef)}, + {0x0024, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonWtCfg, nikonWtDef)}, + {0x0025, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonIiCfg, nikonIiDef)}, + {0x0088, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonAfCfg, nikonAfDef)}, + {0x0091, IfdId::nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonSiSet, nikonSelector)}, + {0x0097, IfdId::nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonCbSet, nikonSelector)}, + {0x0098, IfdId::nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonLdSet, nikonSelector)}, + {0x00a8, IfdId::nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonFlSet, nikonSelector)}, + {0x00b0, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonMeCfg, nikonMeDef)}, + {0x00b7, IfdId::nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonAf2Set, nikonSelector)}, + {0x00b8, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonFiCfg, nikonFiDef)}, + {0x00b9, IfdId::nikon3Id, EXV_BINARY_ARRAY(nikonAFTCfg, nikonAFTDef)}, + {Tag::all, IfdId::nikon3Id, newTiffEntry}, // Nikon3 makernote preview subdir - {0x0201, nikonPvId, newTiffThumbData<0x0202, nikonPvId>}, - {0x0202, nikonPvId, newTiffThumbSize<0x0201, nikonPvId>}, - {Tag::next, nikonPvId, ignoreTiffComponent}, - {Tag::all, nikonPvId, newTiffEntry}, + {0x0201, IfdId::nikonPvId, newTiffThumbData<0x0202, IfdId::nikonPvId>}, + {0x0202, IfdId::nikonPvId, newTiffThumbSize<0x0201, IfdId::nikonPvId>}, + {Tag::next, IfdId::nikonPvId, ignoreTiffComponent}, + {Tag::all, IfdId::nikonPvId, newTiffEntry}, // Nikon3 vibration reduction - {Tag::all, nikonVrId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonVrId, newTiffBinaryElement}, // Nikon3 picture control - {Tag::all, nikonPcId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonPcId, newTiffBinaryElement}, // Nikon3 world time - {Tag::all, nikonWtId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonWtId, newTiffBinaryElement}, // Nikon3 ISO info - {Tag::all, nikonIiId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonIiId, newTiffBinaryElement}, // Nikon3 auto focus - {Tag::all, nikonAfId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonAfId, newTiffBinaryElement}, // Nikon3 auto focus 2 - {Tag::all, nikonAf21Id, newTiffBinaryElement}, - {Tag::all, nikonAf22Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonAf21Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonAf22Id, newTiffBinaryElement}, // Nikon3 AF Fine Tune - {Tag::all, nikonAFTId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonAFTId, newTiffBinaryElement}, // Nikon3 file info - {Tag::all, nikonFiId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonFiId, newTiffBinaryElement}, // Nikon3 multi exposure - {Tag::all, nikonMeId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonMeId, newTiffBinaryElement}, // Nikon3 flash info - {Tag::all, nikonFl1Id, newTiffBinaryElement}, - {Tag::all, nikonFl2Id, newTiffBinaryElement}, - {Tag::all, nikonFl3Id, newTiffBinaryElement}, - {Tag::all, nikonFl7Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonFl1Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonFl2Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonFl3Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonFl7Id, newTiffBinaryElement}, // Nikon3 shot info - {Tag::all, nikonSi1Id, newTiffBinaryElement}, - {Tag::all, nikonSi2Id, newTiffBinaryElement}, - {Tag::all, nikonSi3Id, newTiffBinaryElement}, - {Tag::all, nikonSi4Id, newTiffBinaryElement}, - {Tag::all, nikonSi5Id, newTiffBinaryElement}, - {Tag::all, nikonSi6Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonSi1Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonSi2Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonSi3Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonSi4Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonSi5Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonSi6Id, newTiffBinaryElement}, // Nikon3 color balance - {Tag::all, nikonCb1Id, newTiffBinaryElement}, - {Tag::all, nikonCb2Id, newTiffBinaryElement}, - {Tag::all, nikonCb2aId, newTiffBinaryElement}, - {Tag::all, nikonCb2bId, newTiffBinaryElement}, - {Tag::all, nikonCb3Id, newTiffBinaryElement}, - {Tag::all, nikonCb4Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonCb1Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonCb2Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonCb2aId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonCb2bId, newTiffBinaryElement}, + {Tag::all, IfdId::nikonCb3Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonCb4Id, newTiffBinaryElement}, // Nikon3 lens data - {Tag::all, nikonLd1Id, newTiffBinaryElement}, - {Tag::all, nikonLd2Id, newTiffBinaryElement}, - {Tag::all, nikonLd3Id, newTiffBinaryElement}, - {Tag::all, nikonLd4Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonLd1Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonLd2Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonLd3Id, newTiffBinaryElement}, + {Tag::all, IfdId::nikonLd4Id, newTiffBinaryElement}, // Panasonic makernote - {Tag::next, panasonicId, ignoreTiffComponent}, - {Tag::all, panasonicId, newTiffEntry}, + {Tag::next, IfdId::panasonicId, ignoreTiffComponent}, + {Tag::all, IfdId::panasonicId, newTiffEntry}, // Pentax DNG makernote - {0x0003, pentaxDngId, newTiffThumbSize<0x0004, pentaxDngId>}, - {0x0004, pentaxDngId, newTiffThumbData<0x0003, pentaxDngId>}, - {Tag::next, pentaxDngId, ignoreTiffComponent}, - {Tag::all, pentaxDngId, newTiffEntry}, + {0x0003, IfdId::pentaxDngId, newTiffThumbSize<0x0004, IfdId::pentaxDngId>}, + {0x0004, IfdId::pentaxDngId, newTiffThumbData<0x0003, IfdId::pentaxDngId>}, + {Tag::next, IfdId::pentaxDngId, ignoreTiffComponent}, + {Tag::all, IfdId::pentaxDngId, newTiffEntry}, // Pentax makernote - {0x0003, pentaxId, newTiffThumbSize<0x0004, pentaxId>}, - {0x0004, pentaxId, newTiffThumbData<0x0003, pentaxId>}, - {Tag::next, pentaxId, ignoreTiffComponent}, - {Tag::all, pentaxId, newTiffEntry}, + {0x0003, IfdId::pentaxId, newTiffThumbSize<0x0004, IfdId::pentaxId>}, + {0x0004, IfdId::pentaxId, newTiffThumbData<0x0003, IfdId::pentaxId>}, + {Tag::next, IfdId::pentaxId, ignoreTiffComponent}, + {Tag::all, IfdId::pentaxId, newTiffEntry}, // Samsung2 makernote - {0x0021, samsung2Id, EXV_BINARY_ARRAY(samsungPwCfg, samsungPwDef)}, - {0x0035, samsung2Id, newTiffSubIfd}, - {Tag::next, samsung2Id, ignoreTiffComponent}, - {Tag::all, samsung2Id, newTiffEntry}, + {0x0021, IfdId::samsung2Id, EXV_BINARY_ARRAY(samsungPwCfg, samsungPwDef)}, + {0x0035, IfdId::samsung2Id, newTiffSubIfd}, + {Tag::next, IfdId::samsung2Id, ignoreTiffComponent}, + {Tag::all, IfdId::samsung2Id, newTiffEntry}, // Samsung PictureWizard binary array - {Tag::all, samsungPwId, newTiffBinaryElement}, + {Tag::all, IfdId::samsungPwId, newTiffBinaryElement}, // Samsung2 makernote preview subdir - {0x0201, samsungPvId, newTiffThumbData<0x0202, samsungPvId>}, - {0x0202, samsungPvId, newTiffThumbSize<0x0201, samsungPvId>}, - {Tag::next, samsungPvId, ignoreTiffComponent}, - {Tag::all, samsungPvId, newTiffEntry}, + {0x0201, IfdId::samsungPvId, newTiffThumbData<0x0202, IfdId::samsungPvId>}, + {0x0202, IfdId::samsungPvId, newTiffThumbSize<0x0201, IfdId::samsungPvId>}, + {Tag::next, IfdId::samsungPvId, ignoreTiffComponent}, + {Tag::all, IfdId::samsungPvId, newTiffEntry}, // Sigma/Foveon makernote - {Tag::next, sigmaId, ignoreTiffComponent}, - {Tag::all, sigmaId, newTiffEntry}, + {Tag::next, IfdId::sigmaId, ignoreTiffComponent}, + {Tag::all, IfdId::sigmaId, newTiffEntry}, - {Tag::all, sony2010eId, newTiffBinaryElement}, - {0x2010, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony2010eSet, sony2010eSelector)}, + {Tag::all, IfdId::sony2010eId, newTiffBinaryElement}, + {0x2010, IfdId::sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony2010eSet, sony2010eSelector)}, // Tag 0x9402 Sony2Fp Focus Position - {Tag::all, sony2FpId, newTiffBinaryElement}, - {0x9402, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony2FpSet, sony2FpSelector)}, + {Tag::all, IfdId::sony2FpId, newTiffBinaryElement}, + {0x9402, IfdId::sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony2FpSet, sony2FpSelector)}, // Tag 0x9404 SonyMisc2b - {Tag::all, sonyMisc2bId, newTiffBinaryElement}, - {0x9404, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc2bSet, sonyMisc2bSelector)}, + {Tag::all, IfdId::sonyMisc2bId, newTiffBinaryElement}, + {0x9404, IfdId::sony1Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc2bSet, sonyMisc2bSelector)}, // Tag 0x9400 SonyMisc3c - {Tag::all, sonyMisc3cId, newTiffBinaryElement}, - {0x9400, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc3cSet, sonyMisc3cSelector)}, + {Tag::all, IfdId::sonyMisc3cId, newTiffBinaryElement}, + {0x9400, IfdId::sony1Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc3cSet, sonyMisc3cSelector)}, // Tag 0x9403 SonyMisc1 - {Tag::all, sonyMisc1Id, newTiffBinaryElement}, - {0x9403, sony1Id, EXV_BINARY_ARRAY(sonyMisc1Cfg, sonyMisc1Def)}, + {Tag::all, IfdId::sonyMisc1Id, newTiffBinaryElement}, + {0x9403, IfdId::sony1Id, EXV_BINARY_ARRAY(sonyMisc1Cfg, sonyMisc1Def)}, // Tag 0x3000 SonySInfo1 - {Tag::all, sonySInfo1Id, newTiffBinaryElement}, - {0x3000, sony1Id, EXV_BINARY_ARRAY(sonySInfo1Cfg, sonySInfo1Def)}, + {Tag::all, IfdId::sonySInfo1Id, newTiffBinaryElement}, + {0x3000, IfdId::sony1Id, EXV_BINARY_ARRAY(sonySInfo1Cfg, sonySInfo1Def)}, // Sony1 makernote - {0x0114, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony1CsSet, sonyCsSelector)}, - {0xb028, sony1Id, newTiffSubIfd}, - {Tag::next, sony1Id, ignoreTiffComponent}, - {Tag::all, sony1Id, newTiffEntry}, + {0x0114, IfdId::sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony1CsSet, sonyCsSelector)}, + {0xb028, IfdId::sony1Id, newTiffSubIfd}, + {Tag::next, IfdId::sony1Id, ignoreTiffComponent}, + {Tag::all, IfdId::sony1Id, newTiffEntry}, // Sony1 camera settings - {Tag::all, sony1CsId, newTiffBinaryElement}, - {Tag::all, sony1Cs2Id, newTiffBinaryElement}, + {Tag::all, IfdId::sony1CsId, newTiffBinaryElement}, + {Tag::all, IfdId::sony1Cs2Id, newTiffBinaryElement}, - {Tag::all, sony2010eId, newTiffBinaryElement}, - {0x2010, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2010eSet, sony2010eSelector)}, + {Tag::all, IfdId::sony2010eId, newTiffBinaryElement}, + {0x2010, IfdId::sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2010eSet, sony2010eSelector)}, // Tag 0x9402 Sony2Fp Focus Position - {Tag::all, sony2FpId, newTiffBinaryElement}, - {0x9402, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2FpSet, sony2FpSelector)}, + {Tag::all, IfdId::sony2FpId, newTiffBinaryElement}, + {0x9402, IfdId::sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2FpSet, sony2FpSelector)}, // Tag 0x9403 SonyMisc1 - {Tag::all, sonyMisc1Id, newTiffBinaryElement}, - {0x9403, sony2Id, EXV_BINARY_ARRAY(sonyMisc1Cfg, sonyMisc1Def)}, + {Tag::all, IfdId::sonyMisc1Id, newTiffBinaryElement}, + {0x9403, IfdId::sony2Id, EXV_BINARY_ARRAY(sonyMisc1Cfg, sonyMisc1Def)}, // Tag 0x9404 SonyMisc2b - {Tag::all, sonyMisc2bId, newTiffBinaryElement}, - {0x9404, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc2bSet, sonyMisc2bSelector)}, + {Tag::all, IfdId::sonyMisc2bId, newTiffBinaryElement}, + {0x9404, IfdId::sony2Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc2bSet, sonyMisc2bSelector)}, // Tag 0x9400 SonyMisc3c - {Tag::all, sonyMisc3cId, newTiffBinaryElement}, - {0x9400, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc3cSet, sonyMisc3cSelector)}, + {Tag::all, IfdId::sonyMisc3cId, newTiffBinaryElement}, + {0x9400, IfdId::sony2Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc3cSet, sonyMisc3cSelector)}, // Tag 0x3000 SonySInfo1 - {Tag::all, sonySInfo1Id, newTiffBinaryElement}, - {0x3000, sony2Id, EXV_BINARY_ARRAY(sonySInfo1Cfg, sonySInfo1Def)}, + {Tag::all, IfdId::sonySInfo1Id, newTiffBinaryElement}, + {0x3000, IfdId::sony2Id, EXV_BINARY_ARRAY(sonySInfo1Cfg, sonySInfo1Def)}, // Sony2 makernote - {0x0114, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2CsSet, sonyCsSelector)}, - {Tag::next, sony2Id, ignoreTiffComponent}, - {Tag::all, sony2Id, newTiffEntry}, + {0x0114, IfdId::sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2CsSet, sonyCsSelector)}, + {Tag::next, IfdId::sony2Id, ignoreTiffComponent}, + {Tag::all, IfdId::sony2Id, newTiffEntry}, // Sony2 camera settings - {Tag::all, sony2CsId, newTiffBinaryElement}, - {Tag::all, sony2Cs2Id, newTiffBinaryElement}, + {Tag::all, IfdId::sony2CsId, newTiffBinaryElement}, + {Tag::all, IfdId::sony2Cs2Id, newTiffBinaryElement}, // Sony1 Minolta makernote - {0x0001, sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsoCfg)}, - {0x0003, sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsnCfg)}, - {0x0004, sonyMltId, EXV_BINARY_ARRAY(sony1MCs7Cfg, minoCs7Def)}, // minoCs7Def [sic] - {0x0088, sonyMltId, newTiffThumbData<0x0089, sonyMltId>}, - {0x0089, sonyMltId, newTiffThumbSize<0x0088, sonyMltId>}, - {0x0114, sonyMltId, EXV_BINARY_ARRAY(sony1MCsA100Cfg, sony1MCsA100Def)}, - {Tag::next, sonyMltId, ignoreTiffComponent}, - {Tag::all, sonyMltId, newTiffEntry}, + {0x0001, IfdId::sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsoCfg)}, + {0x0003, IfdId::sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsnCfg)}, + {0x0004, IfdId::sonyMltId, EXV_BINARY_ARRAY(sony1MCs7Cfg, minoCs7Def)}, // minoCs7Def [sic] + {0x0088, IfdId::sonyMltId, newTiffThumbData<0x0089, IfdId::sonyMltId>}, + {0x0089, IfdId::sonyMltId, newTiffThumbSize<0x0088, IfdId::sonyMltId>}, + {0x0114, IfdId::sonyMltId, EXV_BINARY_ARRAY(sony1MCsA100Cfg, sony1MCsA100Def)}, + {Tag::next, IfdId::sonyMltId, ignoreTiffComponent}, + {Tag::all, IfdId::sonyMltId, newTiffEntry}, // Sony1 Minolta makernote composite tags - {Tag::all, sony1MltCsOldId, newTiffBinaryElement}, - {Tag::all, sony1MltCsNewId, newTiffBinaryElement}, - {Tag::all, sony1MltCs7DId, newTiffBinaryElement}, - {Tag::all, sony1MltCsA100Id, newTiffBinaryElement}, + {Tag::all, IfdId::sony1MltCsOldId, newTiffBinaryElement}, + {Tag::all, IfdId::sony1MltCsNewId, newTiffBinaryElement}, + {Tag::all, IfdId::sony1MltCs7DId, newTiffBinaryElement}, + {Tag::all, IfdId::sony1MltCsA100Id, newTiffBinaryElement}, // Minolta makernote - {0x0001, minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)}, - {0x0003, minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg)}, - {0x0004, minoltaId, EXV_BINARY_ARRAY(minoCs7Cfg, minoCs7Def)}, - {0x0088, minoltaId, newTiffThumbData<0x0089, minoltaId>}, - {0x0089, minoltaId, newTiffThumbSize<0x0088, minoltaId>}, - {0x0114, minoltaId, EXV_BINARY_ARRAY(minoCs5Cfg, minoCs5Def)}, - {Tag::next, minoltaId, ignoreTiffComponent}, - {Tag::all, minoltaId, newTiffEntry}, + {0x0001, IfdId::minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)}, + {0x0003, IfdId::minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg)}, + {0x0004, IfdId::minoltaId, EXV_BINARY_ARRAY(minoCs7Cfg, minoCs7Def)}, + {0x0088, IfdId::minoltaId, newTiffThumbData<0x0089, IfdId::minoltaId>}, + {0x0089, IfdId::minoltaId, newTiffThumbSize<0x0088, IfdId::minoltaId>}, + {0x0114, IfdId::minoltaId, EXV_BINARY_ARRAY(minoCs5Cfg, minoCs5Def)}, + {Tag::next, IfdId::minoltaId, ignoreTiffComponent}, + {Tag::all, IfdId::minoltaId, newTiffEntry}, // Minolta makernote composite tags - {Tag::all, minoltaCsOldId, newTiffBinaryElement}, - {Tag::all, minoltaCsNewId, newTiffBinaryElement}, - {Tag::all, minoltaCs7DId, newTiffBinaryElement}, - {Tag::all, minoltaCs5DId, newTiffBinaryElement}, + {Tag::all, IfdId::minoltaCsOldId, newTiffBinaryElement}, + {Tag::all, IfdId::minoltaCsNewId, newTiffBinaryElement}, + {Tag::all, IfdId::minoltaCs7DId, newTiffBinaryElement}, + {Tag::all, IfdId::minoltaCs5DId, newTiffBinaryElement}, // ----------------------------------------------------------------------- // Root directory of Panasonic RAW images - {Tag::pana, ifdIdNotSet, newTiffDirectory}, + {Tag::pana, IfdId::ifdIdNotSet, newTiffDirectory}, // IFD0 of Panasonic RAW images - {0x8769, panaRawId, newTiffSubIfd}, - {0x8825, panaRawId, newTiffSubIfd}, - // { 0x0111, panaRawId, newTiffImageData<0x0117, panaRawId> }, - // { 0x0117, panaRawId, newTiffImageSize<0x0111, panaRawId> }, - {Tag::next, panaRawId, ignoreTiffComponent}, - {Tag::all, panaRawId, newTiffEntry}, + {0x8769, IfdId::panaRawId, newTiffSubIfd}, + {0x8825, IfdId::panaRawId, newTiffSubIfd}, + // { 0x0111, IfdId::panaRawId, newTiffImageData<0x0117, IfdId::panaRawId> }, + // { 0x0117, IfdId::panaRawId, newTiffImageSize<0x0111, IfdId::panaRawId> }, + {Tag::next, IfdId::panaRawId, ignoreTiffComponent}, + {Tag::all, IfdId::panaRawId, newTiffEntry}, // Casio makernote - {Tag::next, casioId, ignoreTiffComponent}, - {Tag::all, casioId, newTiffEntry}, + {Tag::next, IfdId::casioId, ignoreTiffComponent}, + {Tag::all, IfdId::casioId, newTiffEntry}, // Casio2 makernote - {Tag::next, casio2Id, ignoreTiffComponent}, - {Tag::all, casio2Id, newTiffEntry}, + {Tag::next, IfdId::casio2Id, ignoreTiffComponent}, + {Tag::all, IfdId::casio2Id, newTiffEntry}, // ----------------------------------------------------------------------- // Tags which are not de/encoded - {Tag::next, ignoreId, ignoreTiffComponent}, - {Tag::all, ignoreId, newTiffEntry}}; + {Tag::next, IfdId::ignoreId, ignoreTiffComponent}, + {Tag::all, IfdId::ignoreId, newTiffEntry}}; // TIFF mapping table for special decoding and encoding requirements const TiffMappingInfo TiffMapping::tiffMappingInfo_[] = { - {"*", Tag::all, ignoreId, nullptr, nullptr}, // Do not decode tags with group == ignoreId - {"*", 0x02bc, ifd0Id, &TiffDecoder::decodeXmp, nullptr /*done before the tree is traversed*/}, - {"*", 0x83bb, ifd0Id, &TiffDecoder::decodeIptc, nullptr /*done before the tree is traversed*/}, - {"*", 0x8649, ifd0Id, &TiffDecoder::decodeIptc, nullptr /*done before the tree is traversed*/}, - {"*", 0x0026, canonId, &TiffDecoder::decodeCanonAFInfo, nullptr /* Exiv2.Canon.AFInfo is read-only */}, + {"*", Tag::all, IfdId::ignoreId, nullptr, nullptr}, // Do not decode tags with group == IfdId::ignoreId + {"*", 0x02bc, IfdId::ifd0Id, &TiffDecoder::decodeXmp, nullptr /*done before the tree is traversed*/}, + {"*", 0x83bb, IfdId::ifd0Id, &TiffDecoder::decodeIptc, nullptr /*done before the tree is traversed*/}, + {"*", 0x8649, IfdId::ifd0Id, &TiffDecoder::decodeIptc, nullptr /*done before the tree is traversed*/}, + {"*", 0x0026, IfdId::canonId, &TiffDecoder::decodeCanonAFInfo, nullptr /* Exiv2.Canon.AFInfo is read-only */}, }; DecoderFct TiffMapping::findDecoder(const std::string& make, uint32_t extendedTag, IfdId group) { @@ -1834,7 +1834,7 @@ void TiffCreator::getPath(TiffPath& tiffPath, uint32_t extendedTag, IfdId group, ts = find(tiffTreeStruct_, TiffTreeStruct::Key(root, group)); extendedTag = ts->parentExtTag_; group = ts->parentGroup_; - } while (!(ts->root_ == root && ts->group_ == ifdIdNotSet)); + } while (!(ts->root_ == root && ts->group_ == IfdId::ifdIdNotSet)); } ByteOrder TiffParserWorker::decode(ExifData& exifData, IptcData& iptcData, XmpData& xmpData, const byte* pData, @@ -1878,7 +1878,7 @@ WriteMethod TiffParserWorker::encode(BasicIo& io, const byte* pData, size_t size writeMethod = wmNonIntrusive; } if (writeMethod == wmIntrusive) { - auto createdTree = TiffCreator::create(root, ifdIdNotSet); + auto createdTree = TiffCreator::create(root, IfdId::ifdIdNotSet); if (parsedTree) { // Copy image tags from the original image to the composite TiffCopier copier(createdTree.get(), root, pHeader, &primaryGroups); @@ -1917,7 +1917,7 @@ TiffComponent::UniquePtr TiffParserWorker::parse(const byte* pData, size_t size, if (!pHeader->read(pData, size) || pHeader->offset() >= size) { throw Error(ErrorCode::kerNotAnImage, "TIFF"); } - auto rootDir = TiffCreator::create(root, ifdIdNotSet); + auto rootDir = TiffCreator::create(root, IfdId::ifdIdNotSet); if (rootDir) { rootDir->setStart(pData + pHeader->offset()); TiffRwState state(pHeader->byteOrder(), 0); @@ -1934,8 +1934,9 @@ void TiffParserWorker::findPrimaryGroups(PrimaryGroups& primaryGroups, TiffCompo return; static constexpr auto imageGroups = std::array{ - ifd0Id, ifd1Id, ifd2Id, ifd3Id, subImage1Id, subImage2Id, subImage3Id, - subImage4Id, subImage5Id, subImage6Id, subImage7Id, subImage8Id, subImage9Id, + IfdId::ifd0Id, IfdId::ifd1Id, IfdId::ifd2Id, IfdId::ifd3Id, IfdId::subImage1Id, + IfdId::subImage2Id, IfdId::subImage3Id, IfdId::subImage4Id, IfdId::subImage5Id, IfdId::subImage6Id, + IfdId::subImage7Id, IfdId::subImage8Id, IfdId::subImage9Id, }; for (auto&& imageGroup : imageGroups) { @@ -2041,72 +2042,72 @@ bool TiffHeaderBase::isImageTag(uint16_t /*tag*/, IfdId /*group*/, const Primary bool isTiffImageTag(uint16_t tag, IfdId group) { //! List of TIFF image tags static const TiffImgTagStruct tiffImageTags[] = { - {0x00fe, ifd0Id}, // Exif.Image.NewSubfileType - {0x00ff, ifd0Id}, // Exif.Image.SubfileType - {0x0100, ifd0Id}, // Exif.Image.ImageWidth - {0x0101, ifd0Id}, // Exif.Image.ImageLength - {0x0102, ifd0Id}, // Exif.Image.BitsPerSample - {0x0103, ifd0Id}, // Exif.Image.Compression - {0x0106, ifd0Id}, // Exif.Image.PhotometricInterpretation - {0x010a, ifd0Id}, // Exif.Image.FillOrder - {0x0111, ifd0Id}, // Exif.Image.StripOffsets - {0x0115, ifd0Id}, // Exif.Image.SamplesPerPixel - {0x0116, ifd0Id}, // Exif.Image.RowsPerStrip - {0x0117, ifd0Id}, // Exif.Image.StripByteCounts - {0x011a, ifd0Id}, // Exif.Image.XResolution - {0x011b, ifd0Id}, // Exif.Image.YResolution - {0x011c, ifd0Id}, // Exif.Image.PlanarConfiguration - {0x0122, ifd0Id}, // Exif.Image.GrayResponseUnit - {0x0123, ifd0Id}, // Exif.Image.GrayResponseCurve - {0x0124, ifd0Id}, // Exif.Image.T4Options - {0x0125, ifd0Id}, // Exif.Image.T6Options - {0x0128, ifd0Id}, // Exif.Image.ResolutionUnit - {0x0129, ifd0Id}, // Exif.Image.PageNumber - {0x012d, ifd0Id}, // Exif.Image.TransferFunction - {0x013d, ifd0Id}, // Exif.Image.Predictor - {0x013e, ifd0Id}, // Exif.Image.WhitePoint - {0x013f, ifd0Id}, // Exif.Image.PrimaryChromaticities - {0x0140, ifd0Id}, // Exif.Image.ColorMap - {0x0141, ifd0Id}, // Exif.Image.HalftoneHints - {0x0142, ifd0Id}, // Exif.Image.TileWidth - {0x0143, ifd0Id}, // Exif.Image.TileLength - {0x0144, ifd0Id}, // Exif.Image.TileOffsets - {0x0145, ifd0Id}, // Exif.Image.TileByteCounts - {0x014c, ifd0Id}, // Exif.Image.InkSet - {0x014d, ifd0Id}, // Exif.Image.InkNames - {0x014e, ifd0Id}, // Exif.Image.NumberOfInks - {0x0150, ifd0Id}, // Exif.Image.DotRange - {0x0151, ifd0Id}, // Exif.Image.TargetPrinter - {0x0152, ifd0Id}, // Exif.Image.ExtraSamples - {0x0153, ifd0Id}, // Exif.Image.SampleFormat - {0x0154, ifd0Id}, // Exif.Image.SMinSampleValue - {0x0155, ifd0Id}, // Exif.Image.SMaxSampleValue - {0x0156, ifd0Id}, // Exif.Image.TransferRange - {0x0157, ifd0Id}, // Exif.Image.ClipPath - {0x0158, ifd0Id}, // Exif.Image.XClipPathUnits - {0x0159, ifd0Id}, // Exif.Image.YClipPathUnits - {0x015a, ifd0Id}, // Exif.Image.Indexed - {0x015b, ifd0Id}, // Exif.Image.JPEGTables - {0x0200, ifd0Id}, // Exif.Image.JPEGProc - {0x0201, ifd0Id}, // Exif.Image.JPEGInterchangeFormat - {0x0202, ifd0Id}, // Exif.Image.JPEGInterchangeFormatLength - {0x0203, ifd0Id}, // Exif.Image.JPEGRestartInterval - {0x0205, ifd0Id}, // Exif.Image.JPEGLosslessPredictors - {0x0206, ifd0Id}, // Exif.Image.JPEGPointTransforms - {0x0207, ifd0Id}, // Exif.Image.JPEGQTables - {0x0208, ifd0Id}, // Exif.Image.JPEGDCTables - {0x0209, ifd0Id}, // Exif.Image.JPEGACTables - {0x0211, ifd0Id}, // Exif.Image.YCbCrCoefficients - {0x0212, ifd0Id}, // Exif.Image.YCbCrSubSampling - {0x0213, ifd0Id}, // Exif.Image.YCbCrPositioning - {0x0214, ifd0Id}, // Exif.Image.ReferenceBlackWhite - {0x828d, ifd0Id}, // Exif.Image.CFARepeatPatternDim - {0x828e, ifd0Id}, // Exif.Image.CFAPattern - // { 0x8773, ifd0Id }, // Exif.Image.InterColorProfile - {0x8824, ifd0Id}, // Exif.Image.SpectralSensitivity - {0x8828, ifd0Id}, // Exif.Image.OECF - {0x9102, ifd0Id}, // Exif.Image.CompressedBitsPerPixel - {0x9217, ifd0Id}, // Exif.Image.SensingMethod + {0x00fe, IfdId::ifd0Id}, // Exif.Image.NewSubfileType + {0x00ff, IfdId::ifd0Id}, // Exif.Image.SubfileType + {0x0100, IfdId::ifd0Id}, // Exif.Image.ImageWidth + {0x0101, IfdId::ifd0Id}, // Exif.Image.ImageLength + {0x0102, IfdId::ifd0Id}, // Exif.Image.BitsPerSample + {0x0103, IfdId::ifd0Id}, // Exif.Image.Compression + {0x0106, IfdId::ifd0Id}, // Exif.Image.PhotometricInterpretation + {0x010a, IfdId::ifd0Id}, // Exif.Image.FillOrder + {0x0111, IfdId::ifd0Id}, // Exif.Image.StripOffsets + {0x0115, IfdId::ifd0Id}, // Exif.Image.SamplesPerPixel + {0x0116, IfdId::ifd0Id}, // Exif.Image.RowsPerStrip + {0x0117, IfdId::ifd0Id}, // Exif.Image.StripByteCounts + {0x011a, IfdId::ifd0Id}, // Exif.Image.XResolution + {0x011b, IfdId::ifd0Id}, // Exif.Image.YResolution + {0x011c, IfdId::ifd0Id}, // Exif.Image.PlanarConfiguration + {0x0122, IfdId::ifd0Id}, // Exif.Image.GrayResponseUnit + {0x0123, IfdId::ifd0Id}, // Exif.Image.GrayResponseCurve + {0x0124, IfdId::ifd0Id}, // Exif.Image.T4Options + {0x0125, IfdId::ifd0Id}, // Exif.Image.T6Options + {0x0128, IfdId::ifd0Id}, // Exif.Image.ResolutionUnit + {0x0129, IfdId::ifd0Id}, // Exif.Image.PageNumber + {0x012d, IfdId::ifd0Id}, // Exif.Image.TransferFunction + {0x013d, IfdId::ifd0Id}, // Exif.Image.Predictor + {0x013e, IfdId::ifd0Id}, // Exif.Image.WhitePoint + {0x013f, IfdId::ifd0Id}, // Exif.Image.PrimaryChromaticities + {0x0140, IfdId::ifd0Id}, // Exif.Image.ColorMap + {0x0141, IfdId::ifd0Id}, // Exif.Image.HalftoneHints + {0x0142, IfdId::ifd0Id}, // Exif.Image.TileWidth + {0x0143, IfdId::ifd0Id}, // Exif.Image.TileLength + {0x0144, IfdId::ifd0Id}, // Exif.Image.TileOffsets + {0x0145, IfdId::ifd0Id}, // Exif.Image.TileByteCounts + {0x014c, IfdId::ifd0Id}, // Exif.Image.InkSet + {0x014d, IfdId::ifd0Id}, // Exif.Image.InkNames + {0x014e, IfdId::ifd0Id}, // Exif.Image.NumberOfInks + {0x0150, IfdId::ifd0Id}, // Exif.Image.DotRange + {0x0151, IfdId::ifd0Id}, // Exif.Image.TargetPrinter + {0x0152, IfdId::ifd0Id}, // Exif.Image.ExtraSamples + {0x0153, IfdId::ifd0Id}, // Exif.Image.SampleFormat + {0x0154, IfdId::ifd0Id}, // Exif.Image.SMinSampleValue + {0x0155, IfdId::ifd0Id}, // Exif.Image.SMaxSampleValue + {0x0156, IfdId::ifd0Id}, // Exif.Image.TransferRange + {0x0157, IfdId::ifd0Id}, // Exif.Image.ClipPath + {0x0158, IfdId::ifd0Id}, // Exif.Image.XClipPathUnits + {0x0159, IfdId::ifd0Id}, // Exif.Image.YClipPathUnits + {0x015a, IfdId::ifd0Id}, // Exif.Image.Indexed + {0x015b, IfdId::ifd0Id}, // Exif.Image.JPEGTables + {0x0200, IfdId::ifd0Id}, // Exif.Image.JPEGProc + {0x0201, IfdId::ifd0Id}, // Exif.Image.JPEGInterchangeFormat + {0x0202, IfdId::ifd0Id}, // Exif.Image.JPEGInterchangeFormatLength + {0x0203, IfdId::ifd0Id}, // Exif.Image.JPEGRestartInterval + {0x0205, IfdId::ifd0Id}, // Exif.Image.JPEGLosslessPredictors + {0x0206, IfdId::ifd0Id}, // Exif.Image.JPEGPointTransforms + {0x0207, IfdId::ifd0Id}, // Exif.Image.JPEGQTables + {0x0208, IfdId::ifd0Id}, // Exif.Image.JPEGDCTables + {0x0209, IfdId::ifd0Id}, // Exif.Image.JPEGACTables + {0x0211, IfdId::ifd0Id}, // Exif.Image.YCbCrCoefficients + {0x0212, IfdId::ifd0Id}, // Exif.Image.YCbCrSubSampling + {0x0213, IfdId::ifd0Id}, // Exif.Image.YCbCrPositioning + {0x0214, IfdId::ifd0Id}, // Exif.Image.ReferenceBlackWhite + {0x828d, IfdId::ifd0Id}, // Exif.Image.CFARepeatPatternDim + {0x828e, IfdId::ifd0Id}, // Exif.Image.CFAPattern + // { 0x8773, IfdId::ifd0Id }, // Exif.Image.InterColorProfile + {0x8824, IfdId::ifd0Id}, // Exif.Image.SpectralSensitivity + {0x8828, IfdId::ifd0Id}, // Exif.Image.OECF + {0x9102, IfdId::ifd0Id}, // Exif.Image.CompressedBitsPerPixel + {0x9217, IfdId::ifd0Id}, // Exif.Image.SensingMethod }; // If tag, group is one of the image tags listed above -> bingo! @@ -2146,7 +2147,7 @@ bool TiffHeader::isImageTag(uint16_t tag, IfdId group, const PrimaryGroups* pPri } // All tags of marked primary groups other than IFD0 are considered // image tags. That should take care of NEFs until we know better. - if (pPrimaryGroups && !pPrimaryGroups->empty() && group != ifd0Id) { + if (pPrimaryGroups && !pPrimaryGroups->empty() && group != IfdId::ifd0Id) { #ifdef EXIV2_DEBUG_MESSAGES ExifKey key(tag, groupName(group)); std::cerr << "Image tag: " << key << " (2)\n"; diff --git a/src/tiffimage_int.hpp b/src/tiffimage_int.hpp index a928ca9cce..d134cf803b 100644 --- a/src/tiffimage_int.hpp +++ b/src/tiffimage_int.hpp @@ -393,7 +393,7 @@ class OffsetWriter { class FindExifdatum { public: //! Constructor, initializes the object with the IfdId to look for. - explicit FindExifdatum(Exiv2::Internal::IfdId ifdId) : ifdId_(ifdId) { + explicit FindExifdatum(Exiv2::IfdId ifdId) : ifdId_(ifdId) { } //! Returns true if IFD id matches. bool operator()(const Exiv2::Exifdatum& md) const { @@ -401,7 +401,7 @@ class FindExifdatum { } private: - Exiv2::Internal::IfdId ifdId_; + Exiv2::IfdId ifdId_; }; // class FindExifdatum diff --git a/src/tiffvisitor_int.cpp b/src/tiffvisitor_int.cpp index 61ea1d2960..077558689a 100644 --- a/src/tiffvisitor_int.cpp +++ b/src/tiffvisitor_int.cpp @@ -23,7 +23,7 @@ namespace { class FindExifdatum2 { public: //! Constructor, initializes the object with the group and index to look for. - FindExifdatum2(Exiv2::Internal::IfdId group, int idx) : groupName_(Exiv2::Internal::groupName(group)), idx_(idx) { + FindExifdatum2(Exiv2::IfdId group, int idx) : groupName_(Exiv2::Internal::groupName(group)), idx_(idx) { } //! Returns true if group and index match. bool operator()(const Exiv2::Exifdatum& md) const { @@ -201,7 +201,7 @@ TiffDecoder::TiffDecoder(ExifData& exifData, IptcData& iptcData, XmpData& xmpDat make_ = exifData_.findKey(key)->toString(); } else { // Find camera make by looking for tag 0x010f in IFD0 - TiffFinder finder(0x010f, ifd0Id); + TiffFinder finder(0x010f, IfdId::ifd0Id); pRoot_->accept(finder); auto te = dynamic_cast(finder.result()); if (te && te->pValue()) { @@ -275,7 +275,7 @@ void TiffDecoder::decodeXmp(const TiffEntryBase* object) { const byte* pData = nullptr; size_t size = 0; - getObjData(pData, size, 0x02bc, ifd0Id, object); + getObjData(pData, size, 0x02bc, IfdId::ifd0Id, object); if (pData) { std::string xmpPacket; xmpPacket.assign(reinterpret_cast(pData), size); @@ -308,7 +308,7 @@ void TiffDecoder::decodeIptc(const TiffEntryBase* object) { // 1st choice: IPTCNAA const byte* pData = nullptr; size_t size = 0; - getObjData(pData, size, 0x83bb, ifd0Id, object); + getObjData(pData, size, 0x83bb, IfdId::ifd0Id, object); if (pData) { if (0 == IptcParser::decode(iptcData_, pData, size)) { return; @@ -324,7 +324,7 @@ void TiffDecoder::decodeIptc(const TiffEntryBase* object) { // ImageResources pData = nullptr; size = 0; - getObjData(pData, size, 0x8649, ifd0Id, object); + getObjData(pData, size, 0x8649, IfdId::ifd0Id, object); if (pData) { const byte* record = nullptr; uint32_t sizeHdr = 0; @@ -471,7 +471,7 @@ TiffEncoder::TiffEncoder(ExifData exifData, const IptcData& iptcData, const XmpD make_ = pos->toString(); } if (make_.empty() && pRoot_) { - TiffFinder finder(0x010f, ifd0Id); + TiffFinder finder(0x010f, IfdId::ifd0Id); pRoot_->accept(finder); auto te = dynamic_cast(finder.result()); if (te && te->pValue()) { @@ -935,7 +935,7 @@ void TiffEncoder::add(TiffComponent* pRootDir, TiffComponent* pSourceDir, uint32 for (auto i = exifData_.begin(); i != exifData_.end(); ++i) { IfdId group = groupId(i->groupName()); // Skip synthesized info tags - if (group == mnId) { + if (group == IfdId::mnId) { if (i->tag() == 0x0002) { posBo = i; } @@ -973,7 +973,7 @@ void TiffEncoder::add(TiffComponent* pRootDir, TiffComponent* pSourceDir, uint32 if (posBo == exifData_.end()) return; - TiffFinder finder(0x927c, exifId); + TiffFinder finder(0x927c, IfdId::exifId); pRootDir->accept(finder); auto te = dynamic_cast(finder.result()); if (te) { @@ -1158,7 +1158,7 @@ void TiffReader::visitSubIfd(TiffSubIfd* object) { object->count() >= 1) { // Todo: Fix hack uint32_t maxi = 9; - if (object->group() == ifd1Id) + if (object->group() == IfdId::ifd1Id) maxi = 1; for (uint32_t i = 0; i < object->count(); ++i) { uint32_t offset = getLong(object->pData() + 4 * i, byteOrder()); @@ -1177,7 +1177,8 @@ void TiffReader::visitSubIfd(TiffSubIfd* object) { break; } // If there are multiple dirs, group is incremented for each - auto td = std::make_unique(object->tag(), static_cast(object->newGroup_ + i)); + auto td = std::make_unique(object->tag(), + static_cast(static_cast(object->newGroup_) + i)); td->setStart(pData_ + baseOffset() + offset); object->addChild(std::move(td)); } @@ -1194,7 +1195,7 @@ void TiffReader::visitSubIfd(TiffSubIfd* object) { void TiffReader::visitMnEntry(TiffMnEntry* object) { readTiffEntry(object); // Find camera make - TiffFinder finder(0x010f, ifd0Id); + TiffFinder finder(0x010f, IfdId::ifd0Id); pRoot_->accept(finder); auto te = dynamic_cast(finder.result()); std::string make; diff --git a/src/tiffvisitor_int.hpp b/src/tiffvisitor_int.hpp index 40fbc45ac0..328bf5b0c3 100644 --- a/src/tiffvisitor_int.hpp +++ b/src/tiffvisitor_int.hpp @@ -655,7 +655,7 @@ class TiffReader : public TiffVisitor { private: using DirList = std::map; - using IdxSeq = std::map; + using IdxSeq = std::map; using PostList = std::vector; // DATA