Merge pull request #2276 from kevinbackhouse/TagInfo-enums

Move enums from tags_int.hpp to tags.hpp
main
Kevin Backhouse 3 years ago committed by GitHub
commit 05586628b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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)

@ -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<int>(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,14 +196,43 @@ 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
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
@ -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;

File diff suppressed because it is too large Load Diff

@ -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() {

@ -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);

@ -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

@ -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());

@ -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),

@ -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<Internal::IfdId>(key_->ifdId())) : "";
return key_ ? Internal::ifdName(static_cast<IfdId>(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

@ -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() {

@ -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<const char*>(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<const char*>(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<TiffEntryBase*>(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<TiffEntryBase*>(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<std::string>(value->toString());
}

@ -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() {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -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

@ -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() {

@ -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() {

@ -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());
}
}

@ -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()) {

@ -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() {

@ -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() {

@ -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() {

@ -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<Internal::IfdId>(key.ifdId()));
const TagInfo* ti = tagInfo(key.tag(), static_cast<IfdId>(key.ifdId()));
if (!ti)
return sectionInfo[unknownTag.sectionId_].name_;
return sectionInfo[ti->sectionId_].name_;
return sectionInfo[static_cast<int>(unknownTag.sectionId_)].name_;
return sectionInfo[static_cast<int>(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<Internal::IfdId>(key.ifdId()));
const TagInfo* ti = tagInfo(key.tag(), static_cast<IfdId>(key.ifdId()));
if (!ti)
return unknownTag.count_;
return ti->count_;
@ -171,7 +177,7 @@ struct ExifKey::Impl {
const TagInfo* tagInfo_{}; //!< Tag info
uint16_t tag_{0}; //!< Tag value
IfdId ifdId_{ifdIdNotSet}; //!< The IFD associated with this tag
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
@ -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_;
}

File diff suppressed because it is too large Load Diff

@ -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) :

@ -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<uint32_t>(offset + dataIdx);
#ifdef EXIV2_DEBUG_MESSAGES
std::cerr << "TiffImageEntry, Directory " << groupName(group()) << ", entry 0x" << std::setw(4) << std::setfill('0')
@ -1037,7 +1037,7 @@ uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int6
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 >
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<TiffMnEntry>(tag, group, mnId);
return std::make_unique<TiffMnEntry>(tag, group, IfdId::mnId);
}
TiffComponent::UniquePtr newTiffBinaryElement(uint16_t tag, IfdId group) {

@ -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

File diff suppressed because it is too large Load Diff

@ -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

@ -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<TiffEntryBase*>(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<const char*>(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<TiffEntryBase*>(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<TiffMnEntry*>(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<TiffDirectory>(object->tag(), static_cast<IfdId>(object->newGroup_ + i));
auto td = std::make_unique<TiffDirectory>(object->tag(),
static_cast<IfdId>(static_cast<uint32_t>(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<TiffEntryBase*>(finder.result());
std::string make;

@ -655,7 +655,7 @@ class TiffReader : public TiffVisitor {
private:
using DirList = std::map<const byte*, IfdId>;
using IdxSeq = std::map<uint16_t, int>;
using IdxSeq = std::map<IfdId, int>;
using PostList = std::vector<TiffComponent*>;
// DATA

Loading…
Cancel
Save