|
|
@ -106,164 +106,165 @@ namespace Exiv2 {
|
|
|
|
const char* desc,
|
|
|
|
const char* desc,
|
|
|
|
IfdId ifdId,
|
|
|
|
IfdId ifdId,
|
|
|
|
SectionId sectionId,
|
|
|
|
SectionId sectionId,
|
|
|
|
|
|
|
|
TypeId typeId,
|
|
|
|
PrintFct printFct
|
|
|
|
PrintFct printFct
|
|
|
|
)
|
|
|
|
)
|
|
|
|
: tag_(tag), name_(name), desc_(desc), ifdId_(ifdId),
|
|
|
|
: tag_(tag), name_(name), desc_(desc), ifdId_(ifdId),
|
|
|
|
sectionId_(sectionId), printFct_(printFct)
|
|
|
|
sectionId_(sectionId), typeId_(typeId), printFct_(printFct)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Base IFD Tags (IFD0 and IFD1)
|
|
|
|
// Base IFD Tags (IFD0 and IFD1)
|
|
|
|
static const TagInfo ifdTagInfo[] = {
|
|
|
|
static const TagInfo ifdTagInfo[] = {
|
|
|
|
TagInfo(0x0100, "ImageWidth", "Image width", ifd0Id, imgStruct, printValue),
|
|
|
|
TagInfo(0x0100, "ImageWidth", "Image width", ifd0Id, imgStruct, unsignedLong, printValue),
|
|
|
|
TagInfo(0x0101, "ImageLength", "Image height", ifd0Id, imgStruct, printValue),
|
|
|
|
TagInfo(0x0101, "ImageLength", "Image height", ifd0Id, imgStruct, unsignedLong, printValue),
|
|
|
|
TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0Id, imgStruct, printValue),
|
|
|
|
TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0Id, imgStruct, unsignedShort, printValue),
|
|
|
|
TagInfo(0x0103, "Compression", "Compression scheme", ifd0Id, imgStruct, print0x0103),
|
|
|
|
TagInfo(0x0103, "Compression", "Compression scheme", ifd0Id, imgStruct, unsignedShort, print0x0103),
|
|
|
|
TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0Id, imgStruct, print0x0106),
|
|
|
|
TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0Id, imgStruct, unsignedShort, print0x0106),
|
|
|
|
TagInfo(0x010e, "ImageDescription", "Image title", ifd0Id, otherTags, printValue),
|
|
|
|
TagInfo(0x010e, "ImageDescription", "Image title", ifd0Id, otherTags, asciiString, printValue),
|
|
|
|
TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0Id, otherTags, printValue),
|
|
|
|
TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0Id, otherTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0110, "Model", "Model of image input equipment", ifd0Id, otherTags, printValue),
|
|
|
|
TagInfo(0x0110, "Model", "Model of image input equipment", ifd0Id, otherTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0111, "StripOffsets", "Image data location", ifd0Id, recOffset, printValue),
|
|
|
|
TagInfo(0x0111, "StripOffsets", "Image data location", ifd0Id, recOffset, unsignedLong, printValue),
|
|
|
|
TagInfo(0x0112, "Orientation", "Orientation of image", ifd0Id, imgStruct, print0x0112),
|
|
|
|
TagInfo(0x0112, "Orientation", "Orientation of image", ifd0Id, imgStruct, unsignedShort, print0x0112),
|
|
|
|
TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0Id, imgStruct, printValue),
|
|
|
|
TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0Id, imgStruct, unsignedShort, printValue),
|
|
|
|
TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0Id, recOffset, printValue),
|
|
|
|
TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0Id, recOffset, unsignedLong, printValue),
|
|
|
|
TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0Id, recOffset, printValue),
|
|
|
|
TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0Id, recOffset, unsignedLong, printValue),
|
|
|
|
TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0Id, imgStruct, printLong),
|
|
|
|
TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0Id, imgStruct, unsignedRational, printLong),
|
|
|
|
TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0Id, imgStruct, printLong),
|
|
|
|
TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0Id, imgStruct, unsignedRational, printLong),
|
|
|
|
TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0Id, imgStruct, printValue),
|
|
|
|
TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0Id, imgStruct, unsignedShort, printValue),
|
|
|
|
TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0Id, imgStruct, printUnit),
|
|
|
|
TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0Id, imgStruct, unsignedShort, printUnit),
|
|
|
|
TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0Id, imgCharacter, printValue),
|
|
|
|
TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0Id, imgCharacter, unsignedShort, printValue),
|
|
|
|
TagInfo(0x0131, "Software", "Software used", ifd0Id, otherTags, printValue),
|
|
|
|
TagInfo(0x0131, "Software", "Software used", ifd0Id, otherTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0132, "DateTime", "File change date and time", ifd0Id, otherTags, printValue),
|
|
|
|
TagInfo(0x0132, "DateTime", "File change date and time", ifd0Id, otherTags, asciiString, printValue),
|
|
|
|
TagInfo(0x013b, "Artist", "Person who created the image", ifd0Id, otherTags, printValue),
|
|
|
|
TagInfo(0x013b, "Artist", "Person who created the image", ifd0Id, otherTags, asciiString, printValue),
|
|
|
|
TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0Id, imgCharacter, printValue),
|
|
|
|
TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0Id, imgCharacter, unsignedRational, printValue),
|
|
|
|
TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0Id, imgCharacter, printValue),
|
|
|
|
TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0Id, imgCharacter, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0Id, recOffset, printValue),
|
|
|
|
TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0Id, recOffset, unsignedLong, printValue),
|
|
|
|
TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0Id, recOffset, printValue),
|
|
|
|
TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0Id, recOffset, unsignedLong, printValue),
|
|
|
|
TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0Id, imgCharacter, printValue),
|
|
|
|
TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0Id, imgCharacter, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0Id, imgStruct, printValue),
|
|
|
|
TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0Id, imgStruct, unsignedShort, printValue),
|
|
|
|
TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0Id, imgStruct, print0x0213),
|
|
|
|
TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0Id, imgStruct, unsignedShort, print0x0213),
|
|
|
|
TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0Id, imgCharacter, printValue),
|
|
|
|
TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0Id, imgCharacter, unsignedRational, printValue),
|
|
|
|
TagInfo(0x8298, "Copyright", "Copyright holder", ifd0Id, otherTags, print0x8298),
|
|
|
|
TagInfo(0x8298, "Copyright", "Copyright holder", ifd0Id, otherTags, asciiString, print0x8298),
|
|
|
|
TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0Id, exifFormat, printValue),
|
|
|
|
TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0Id, exifFormat, unsignedLong, printValue),
|
|
|
|
TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0Id, exifFormat, printValue),
|
|
|
|
TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0Id, exifFormat, unsignedLong, printValue),
|
|
|
|
// End of list marker
|
|
|
|
// End of list marker
|
|
|
|
TagInfo(0xffff, "(UnknownIfdTag)", "Unknown IFD tag", ifdIdNotSet, sectionIdNotSet, printValue)
|
|
|
|
TagInfo(0xffff, "(UnknownIfdTag)", "Unknown IFD tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Exif IFD Tags
|
|
|
|
// Exif IFD Tags
|
|
|
|
static const TagInfo exifTagInfo[] = {
|
|
|
|
static const TagInfo exifTagInfo[] = {
|
|
|
|
TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfdId, captureCond, print0x829a),
|
|
|
|
TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfdId, captureCond, unsignedRational, print0x829a),
|
|
|
|
TagInfo(0x829d, "FNumber", "F number", exifIfdId, captureCond, print0x829d),
|
|
|
|
TagInfo(0x829d, "FNumber", "F number", exifIfdId, captureCond, unsignedRational, print0x829d),
|
|
|
|
TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfdId, captureCond, print0x8822),
|
|
|
|
TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfdId, captureCond, unsignedShort, print0x8822),
|
|
|
|
TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfdId, captureCond, asciiString, printValue),
|
|
|
|
TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfdId, captureCond, print0x8827),
|
|
|
|
TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfdId, captureCond, unsignedShort, print0x8827),
|
|
|
|
TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfdId, captureCond, undefined, printValue),
|
|
|
|
TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfdId, exifVersion, printValue),
|
|
|
|
TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfdId, exifVersion, undefined, printValue),
|
|
|
|
TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfdId, dateTime, printValue),
|
|
|
|
TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfdId, dateTime, asciiString, printValue),
|
|
|
|
TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfdId, dateTime, printValue),
|
|
|
|
TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfdId, dateTime, asciiString, printValue),
|
|
|
|
TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfdId, imgConfig, print0x9101),
|
|
|
|
TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfdId, imgConfig, undefined, print0x9101),
|
|
|
|
TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfdId, imgConfig, printFloat),
|
|
|
|
TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfdId, imgConfig, unsignedRational, printFloat),
|
|
|
|
TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfdId, captureCond, printFloat),
|
|
|
|
TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfdId, captureCond, signedRational, printFloat),
|
|
|
|
TagInfo(0x9202, "ApertureValue", "Aperture", exifIfdId, captureCond, printFloat),
|
|
|
|
TagInfo(0x9202, "ApertureValue", "Aperture", exifIfdId, captureCond, unsignedRational, printFloat),
|
|
|
|
TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfdId, captureCond, printFloat),
|
|
|
|
TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfdId, captureCond, signedRational, printFloat),
|
|
|
|
TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfdId, captureCond, print0x9204),
|
|
|
|
TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfdId, captureCond, signedRational, print0x9204),
|
|
|
|
TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfdId, captureCond, printFloat),
|
|
|
|
TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfdId, captureCond, unsignedRational, printFloat),
|
|
|
|
TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfdId, captureCond, print0x9206),
|
|
|
|
TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfdId, captureCond, unsignedRational, print0x9206),
|
|
|
|
TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfdId, captureCond, print0x9207),
|
|
|
|
TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfdId, captureCond, unsignedShort, print0x9207),
|
|
|
|
TagInfo(0x9208, "LightSource", "Light source", exifIfdId, captureCond, print0x9208),
|
|
|
|
TagInfo(0x9208, "LightSource", "Light source", exifIfdId, captureCond, unsignedShort, print0x9208),
|
|
|
|
TagInfo(0x9209, "Flash", "Flash", exifIfdId, captureCond, print0x9209),
|
|
|
|
TagInfo(0x9209, "Flash", "Flash", exifIfdId, captureCond, unsignedShort, print0x9209),
|
|
|
|
TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfdId, captureCond, print0x920a),
|
|
|
|
TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfdId, captureCond, unsignedRational, print0x920a),
|
|
|
|
TagInfo(0x9214, "SubjectArea", "Subject area", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0x9214, "SubjectArea", "Subject area", exifIfdId, captureCond, unsignedShort, printValue),
|
|
|
|
TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfdId, userInfo, printValue),
|
|
|
|
TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfdId, userInfo, undefined, printValue),
|
|
|
|
TagInfo(0x9286, "UserComment", "User comments", exifIfdId, userInfo, print0x9286),
|
|
|
|
TagInfo(0x9286, "UserComment", "User comments", exifIfdId, userInfo, comment, print0x9286),
|
|
|
|
TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfdId, dateTime, printValue),
|
|
|
|
TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfdId, dateTime, asciiString, printValue),
|
|
|
|
TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfdId, dateTime, printValue),
|
|
|
|
TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfdId, dateTime, asciiString, printValue),
|
|
|
|
TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfdId, dateTime, printValue),
|
|
|
|
TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfdId, dateTime, asciiString, printValue),
|
|
|
|
TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfdId, exifVersion, printValue),
|
|
|
|
TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfdId, exifVersion, undefined, printValue),
|
|
|
|
TagInfo(0xa001, "ColorSpace", "Color space information", exifIfdId, imgCharacter, print0xa001),
|
|
|
|
TagInfo(0xa001, "ColorSpace", "Color space information", exifIfdId, imgCharacter, unsignedShort, print0xa001),
|
|
|
|
TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfdId, imgConfig, printValue),
|
|
|
|
TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfdId, imgConfig, unsignedLong, printValue),
|
|
|
|
TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfdId, imgConfig, printValue),
|
|
|
|
TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfdId, imgConfig, unsignedLong, printValue),
|
|
|
|
TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfdId, relatedFile, printValue),
|
|
|
|
TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfdId, relatedFile, asciiString, printValue),
|
|
|
|
TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfdId, exifFormat, printValue),
|
|
|
|
TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfdId, exifFormat, unsignedLong, printValue),
|
|
|
|
TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfdId, captureCond, unsignedRational, printValue),
|
|
|
|
TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfdId, captureCond, undefined, printValue),
|
|
|
|
TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfdId, captureCond, printFloat),
|
|
|
|
TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfdId, captureCond, unsignedRational, printFloat),
|
|
|
|
TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfdId, captureCond, printFloat),
|
|
|
|
TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfdId, captureCond, unsignedRational, printFloat),
|
|
|
|
TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfdId, captureCond, printUnit),
|
|
|
|
TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfdId, captureCond, unsignedShort, printUnit),
|
|
|
|
TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfdId, captureCond, unsignedShort, printValue),
|
|
|
|
TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfdId, captureCond, unsignedRational, printValue),
|
|
|
|
TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfdId, captureCond, print0xa217),
|
|
|
|
TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfdId, captureCond, unsignedShort, print0xa217),
|
|
|
|
TagInfo(0xa300, "FileSource", "File source", exifIfdId, captureCond, print0xa300),
|
|
|
|
TagInfo(0xa300, "FileSource", "File source", exifIfdId, captureCond, undefined, print0xa300),
|
|
|
|
TagInfo(0xa301, "SceneType", "Scene type", exifIfdId, captureCond, print0xa301),
|
|
|
|
TagInfo(0xa301, "SceneType", "Scene type", exifIfdId, captureCond, undefined, print0xa301),
|
|
|
|
TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfdId, captureCond, undefined, printValue),
|
|
|
|
TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfdId, captureCond, unsignedShort, printValue),
|
|
|
|
TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfdId, captureCond, print0xa402),
|
|
|
|
TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfdId, captureCond, unsignedShort, print0xa402),
|
|
|
|
TagInfo(0xa403, "WhiteBalance", "White balance", exifIfdId, captureCond, print0xa403),
|
|
|
|
TagInfo(0xa403, "WhiteBalance", "White balance", exifIfdId, captureCond, unsignedShort, print0xa403),
|
|
|
|
TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfdId, captureCond, print0xa404),
|
|
|
|
TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfdId, captureCond, unsignedRational, print0xa404),
|
|
|
|
TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfdId, captureCond, print0xa405),
|
|
|
|
TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfdId, captureCond, unsignedShort, print0xa405),
|
|
|
|
TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfdId, captureCond, print0xa406),
|
|
|
|
TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfdId, captureCond, unsignedShort, print0xa406),
|
|
|
|
TagInfo(0xa407, "GainControl", "Gain control", exifIfdId, captureCond, print0xa407),
|
|
|
|
TagInfo(0xa407, "GainControl", "Gain control", exifIfdId, captureCond, unsignedRational, print0xa407),
|
|
|
|
TagInfo(0xa408, "Contrast", "Contrast", exifIfdId, captureCond, print0xa408),
|
|
|
|
TagInfo(0xa408, "Contrast", "Contrast", exifIfdId, captureCond, unsignedShort, print0xa408),
|
|
|
|
TagInfo(0xa409, "Saturation", "Saturation", exifIfdId, captureCond, print0xa409),
|
|
|
|
TagInfo(0xa409, "Saturation", "Saturation", exifIfdId, captureCond, unsignedShort, print0xa409),
|
|
|
|
TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfdId, captureCond, print0xa40a),
|
|
|
|
TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfdId, captureCond, unsignedShort, print0xa40a),
|
|
|
|
TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfdId, captureCond, printValue),
|
|
|
|
TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfdId, captureCond, undefined, printValue),
|
|
|
|
TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfdId, captureCond, print0xa40c),
|
|
|
|
TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfdId, captureCond, unsignedShort, print0xa40c),
|
|
|
|
TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfdId, otherTags, printValue),
|
|
|
|
TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfdId, otherTags, asciiString, printValue),
|
|
|
|
// End of list marker
|
|
|
|
// End of list marker
|
|
|
|
TagInfo(0xffff, "(UnknownExifTag)", "Unknown Exif tag", ifdIdNotSet, sectionIdNotSet, printValue)
|
|
|
|
TagInfo(0xffff, "(UnknownExifTag)", "Unknown Exif tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// GPS Info Tags
|
|
|
|
// GPS Info Tags
|
|
|
|
static const TagInfo gpsTagInfo[] = {
|
|
|
|
static const TagInfo gpsTagInfo[] = {
|
|
|
|
TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfdId, gpsTags, unsignedByte, printValue),
|
|
|
|
TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfdId, gpsTags, unsignedByte, printValue),
|
|
|
|
TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfdId, gpsTags, unsignedRational, printValue),
|
|
|
|
TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfdId, gpsTags, undefined, printValue),
|
|
|
|
TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfdId, gpsTags, undefined, printValue),
|
|
|
|
TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfdId, gpsTags, asciiString, printValue),
|
|
|
|
TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfdId, gpsTags, printValue),
|
|
|
|
TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfdId, gpsTags, unsignedShort, printValue),
|
|
|
|
// End of list marker
|
|
|
|
// End of list marker
|
|
|
|
TagInfo(0xffff, "(UnknownGpsTag)", "Unknown GPSInfo tag", ifdIdNotSet, sectionIdNotSet, printValue)
|
|
|
|
TagInfo(0xffff, "(UnknownGpsTag)", "Unknown GPSInfo tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Exif Interoperability IFD Tags
|
|
|
|
// Exif Interoperability IFD Tags
|
|
|
|
static const TagInfo iopTagInfo[] = {
|
|
|
|
static const TagInfo iopTagInfo[] = {
|
|
|
|
TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfdId, iopTags, printValue),
|
|
|
|
TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfdId, iopTags, asciiString, printValue),
|
|
|
|
TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfdId, iopTags, printValue),
|
|
|
|
TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfdId, iopTags, undefined, printValue),
|
|
|
|
TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfdId, iopTags, printValue),
|
|
|
|
TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfdId, iopTags, asciiString, printValue),
|
|
|
|
TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfdId, iopTags, printValue),
|
|
|
|
TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfdId, iopTags, unsignedLong, printValue),
|
|
|
|
TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfdId, iopTags, printValue),
|
|
|
|
TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfdId, iopTags, unsignedLong, printValue),
|
|
|
|
// End of list marker
|
|
|
|
// End of list marker
|
|
|
|
TagInfo(0xffff, "(UnknownIopTag)", "Unknown Exif Interoperability tag", ifdIdNotSet, sectionIdNotSet, printValue)
|
|
|
|
TagInfo(0xffff, "(UnknownIopTag)", "Unknown Exif Interoperability tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Unknown Tag
|
|
|
|
// Unknown Tag
|
|
|
|
static const TagInfo unknownTag(0xffff, "Unknown tag", "Unknown tag", ifdIdNotSet, sectionIdNotSet, printValue);
|
|
|
|
static const TagInfo unknownTag(0xffff, "Unknown tag", "Unknown tag", ifdIdNotSet, sectionIdNotSet, asciiString, printValue);
|
|
|
|
|
|
|
|
|
|
|
|
// Tag lookup lists with tag names, desc and where they (preferably) belong to;
|
|
|
|
// Tag lookup lists with tag names, desc and where they (preferably) belong to;
|
|
|
|
// this is an array with pointers to one list per IFD. The IfdId is used as the
|
|
|
|
// this is an array with pointers to one list per IFD. The IfdId is used as the
|
|
|
@ -385,7 +386,7 @@ namespace Exiv2 {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
|
|
|
|
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].name_;
|
|
|
|
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].name_;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
return "";
|
|
|
|
} // ExifTags::sectionName
|
|
|
|
} // ExifTags::sectionName
|
|
|
@ -400,7 +401,7 @@ namespace Exiv2 {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
|
|
|
|
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].desc_;
|
|
|
|
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].desc_;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
return "";
|
|
|
|
} // ExifTags::sectionDesc
|
|
|
|
} // ExifTags::sectionDesc
|
|
|
@ -419,9 +420,6 @@ namespace Exiv2 {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tagName, ifdId);
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tagName, ifdId);
|
|
|
|
if (tagInfo != 0) tag = tagInfo->tag_;
|
|
|
|
if (tagInfo != 0) tag = tagInfo->tag_;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -468,6 +466,19 @@ namespace Exiv2 {
|
|
|
|
return SectionId(i);
|
|
|
|
return SectionId(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TypeId ExifTags::tagType(uint16_t tag, IfdId ifdId)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (isExifIfd(ifdId)) {
|
|
|
|
|
|
|
|
int idx = tagInfoIdx(tag, ifdId);
|
|
|
|
|
|
|
|
if (idx != -1) return tagInfos_[ifdId][idx].typeId_;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isMakerIfd(ifdId)) {
|
|
|
|
|
|
|
|
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
|
|
|
|
|
|
|
|
if (tagInfo != 0) return tagInfo->typeId_;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return unknownTag.typeId_;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::ostream& ExifTags::printTag(std::ostream& os,
|
|
|
|
std::ostream& ExifTags::printTag(std::ostream& os,
|
|
|
|
uint16_t tag,
|
|
|
|
uint16_t tag,
|
|
|
|
IfdId ifdId,
|
|
|
|
IfdId ifdId,
|
|
|
@ -659,6 +670,8 @@ namespace Exiv2 {
|
|
|
|
<< std::right << std::hex << ti.tag_ << ", "
|
|
|
|
<< std::right << std::hex << ti.tag_ << ", "
|
|
|
|
<< ExifTags::ifdName(ti.ifdId_) << ", "
|
|
|
|
<< ExifTags::ifdName(ti.ifdId_) << ", "
|
|
|
|
<< exifKey.key() << ", "
|
|
|
|
<< exifKey.key() << ", "
|
|
|
|
|
|
|
|
<< TypeInfo::typeName(
|
|
|
|
|
|
|
|
ExifTags::tagType(ti.tag_, ti.ifdId_)) << ", "
|
|
|
|
<< ExifTags::tagDesc(ti.tag_, ti.ifdId_);
|
|
|
|
<< ExifTags::tagDesc(ti.tag_, ti.ifdId_);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|