From a818b4c0520be70e1c506252ddc19a63fd206b33 Mon Sep 17 00:00:00 2001 From: Andreas Huggel Date: Sat, 2 Feb 2008 16:34:09 +0000 Subject: [PATCH] Removed remaining XMP exif TagDetails tables. --- src/properties.cpp | 138 +++++++++++++++------------------------------ src/tags.cpp | 90 +++++++++++++++++++++++++---- src/tags.hpp | 14 +++++ 3 files changed, 139 insertions(+), 103 deletions(-) diff --git a/src/properties.cpp b/src/properties.cpp index 8c9234bc..6c03807f 100644 --- a/src/properties.cpp +++ b/src/properties.cpp @@ -446,50 +446,6 @@ namespace Exiv2 { { 0, 0, 0, invalidTypeId, xmpInternal, 0 } }; - //! exif:GPSAltitudeRef - extern const TagDetails xmpExifGPSAltitudeRef[] = { - { 0, N_("Above sea level") }, - { 1, N_("Below sea level") } - }; - - //! exif:GPSStatus - extern const TagDetails xmpExifGPSStatus[] = { - { 'A', N_("measurement in progress") }, - { 'V', N_("measurement is interoperability") } - }; - - //! exif:GPSMeasureMode - extern const TagDetails xmpExifGPSMeasureMode[] = { - { 2, N_("two-dimensional measurement") }, - { 3, N_("three-dimensional measurement") } - }; - - //! exif:GPSSpeedRef - extern const TagDetails xmpExifGPSSpeedRef[] = { - { 'K', N_("kilometers per hour") }, - { 'M', N_("miles per hour") }, - { 'N', N_("knots") } - }; - - //! exif:GPSTrackRef, exif:GPSImgDirectionRef, exif:GPSDestBearingRef - extern const TagDetails xmpExifGPSDirection[] = { - { 'T', N_("true direction") }, - { 'M', N_("magnetic direction") } - }; - - //! exif:GPSDestDistanceRef - extern const TagDetails xmpExifGPSDestDistanceRef[] = { - { 'K', N_("kilometers") }, - { 'M', N_("miles") }, - { 'N', N_("knots") } - }; - - //! exif:GPSDifferential - extern const TagDetails xmpExifGPSDifferential[] = { - { 0, N_("Without correction") }, - { 1, N_("Correction applied") } - }; - extern const XmpPropertyInfo xmpExifInfo[] = { { "ExifVersion", N_("Exif Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 36864, 0x9000. EXIF version number.") }, { "FlashpixVersion", N_("Flashpix Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 40960, 0xA000. Version of FlashPix.") }, @@ -632,53 +588,53 @@ namespace Exiv2 { }; extern const XmpPrintInfo xmpPrintInfo[] = { - {"Xmp.crs.CropUnits", EXV_PRINT_TAG(xmpCrsCropUnits) }, - {"Xmp.exif.ApertureValue", print0x9202 }, - {"Xmp.exif.BrightnessValue", printFloat }, - {"Xmp.exif.ColorSpace", print0xa001 }, - {"Xmp.exif.ComponentsConfiguration", print0x9101 }, - {"Xmp.exif.Contrast", printNormalSoftHard }, - {"Xmp.exif.CreateDate", printXmpDate }, - {"Xmp.exif.CustomRendered", print0xa401 }, - {"Xmp.exif.DateTimeOriginal", printXmpDate }, - {"Xmp.exif.ExifVersion", printXmpVersion }, - {"Xmp.exif.ExposureBiasValue", print0x9204 }, - {"Xmp.exif.ExposureMode", print0xa402 }, - {"Xmp.exif.ExposureProgram", print0x8822 }, - {"Xmp.exif.FileSource", print0xa300 }, - {"Xmp.exif.FlashpixVersion", printXmpVersion }, - {"Xmp.exif.FNumber", print0x829d }, - {"Xmp.exif.FocalLength", print0x920a }, - {"Xmp.exif.FocalPlaneResolutionUnit", printExifUnit }, - {"Xmp.exif.FocalPlaneXResolution", printFloat }, - {"Xmp.exif.FocalPlaneYResolution", printFloat }, - {"Xmp.exif.GainControl", print0xa407 }, - {"Xmp.exif.GPSAltitudeRef", EXV_PRINT_TAG(xmpExifGPSAltitudeRef) }, - {"Xmp.exif.GPSDestBearingRef", EXV_PRINT_TAG(xmpExifGPSDirection) }, - {"Xmp.exif.GPSDestDistanceRef", EXV_PRINT_TAG(xmpExifGPSDestDistanceRef) }, - {"Xmp.exif.GPSDifferential", EXV_PRINT_TAG(xmpExifGPSDifferential) }, - {"Xmp.exif.GPSImgDirectionRef", EXV_PRINT_TAG(xmpExifGPSDirection) }, - {"Xmp.exif.GPSMeasureMode", EXV_PRINT_TAG(xmpExifGPSMeasureMode) }, - {"Xmp.exif.GPSSpeedRef", EXV_PRINT_TAG(xmpExifGPSSpeedRef) }, - {"Xmp.exif.GPSStatus", EXV_PRINT_TAG(xmpExifGPSStatus) }, - {"Xmp.exif.GPSTimeStamp", printXmpDate }, - {"Xmp.exif.GPSTrackRef", EXV_PRINT_TAG(xmpExifGPSDirection) }, - {"Xmp.exif.LightSource", print0x9208 }, - {"Xmp.exif.MeteringMode", print0x9207 }, - {"Xmp.exif.ModifyDate", printXmpDate }, - {"Xmp.exif.Saturation", print0xa409 }, - {"Xmp.exif.SceneCaptureType", print0xa406 }, - {"Xmp.exif.SceneType", print0xa301 }, - {"Xmp.exif.SensingMethod", print0xa217 }, - {"Xmp.exif.Sharpness", printNormalSoftHard }, - {"Xmp.exif.ShutterSpeedValue", print0x9201 }, - {"Xmp.exif.SubjectDistanceRange", print0xa40c }, - {"Xmp.exif.WhiteBalance", print0xa403 }, - {"Xmp.tiff.Orientation", print0x0112 }, - {"Xmp.tiff.ResolutionUnit", printExifUnit }, - {"Xmp.tiff.XResolution", printLong }, - {"Xmp.tiff.YCbCrPositioning", print0x0213 }, - {"Xmp.tiff.YResolution", printLong } + {"Xmp.crs.CropUnits", EXV_PRINT_TAG(xmpCrsCropUnits)}, + {"Xmp.exif.ApertureValue", print0x9202 }, + {"Xmp.exif.BrightnessValue", printFloat }, + {"Xmp.exif.ColorSpace", print0xa001 }, + {"Xmp.exif.ComponentsConfiguration", print0x9101 }, + {"Xmp.exif.Contrast", printNormalSoftHard }, + {"Xmp.exif.CreateDate", printXmpDate }, + {"Xmp.exif.CustomRendered", print0xa401 }, + {"Xmp.exif.DateTimeOriginal", printXmpDate }, + {"Xmp.exif.ExifVersion", printXmpVersion }, + {"Xmp.exif.ExposureBiasValue", print0x9204 }, + {"Xmp.exif.ExposureMode", print0xa402 }, + {"Xmp.exif.ExposureProgram", print0x8822 }, + {"Xmp.exif.FileSource", print0xa300 }, + {"Xmp.exif.FlashpixVersion", printXmpVersion }, + {"Xmp.exif.FNumber", print0x829d }, + {"Xmp.exif.FocalLength", print0x920a }, + {"Xmp.exif.FocalPlaneResolutionUnit", printExifUnit }, + {"Xmp.exif.FocalPlaneXResolution", printFloat }, + {"Xmp.exif.FocalPlaneYResolution", printFloat }, + {"Xmp.exif.GainControl", print0xa407 }, + {"Xmp.exif.GPSAltitudeRef", print0x0005 }, + {"Xmp.exif.GPSDestBearingRef", printGPSDirRef }, + {"Xmp.exif.GPSDestDistanceRef", print0x0019 }, + {"Xmp.exif.GPSDifferential", print0x001e }, + {"Xmp.exif.GPSImgDirectionRef", printGPSDirRef }, + {"Xmp.exif.GPSMeasureMode", print0x000a }, + {"Xmp.exif.GPSSpeedRef", print0x000c }, + {"Xmp.exif.GPSStatus", print0x0009 }, + {"Xmp.exif.GPSTimeStamp", printXmpDate }, + {"Xmp.exif.GPSTrackRef", printGPSDirRef }, + {"Xmp.exif.LightSource", print0x9208 }, + {"Xmp.exif.MeteringMode", print0x9207 }, + {"Xmp.exif.ModifyDate", printXmpDate }, + {"Xmp.exif.Saturation", print0xa409 }, + {"Xmp.exif.SceneCaptureType", print0xa406 }, + {"Xmp.exif.SceneType", print0xa301 }, + {"Xmp.exif.SensingMethod", print0xa217 }, + {"Xmp.exif.Sharpness", printNormalSoftHard }, + {"Xmp.exif.ShutterSpeedValue", print0x9201 }, + {"Xmp.exif.SubjectDistanceRange", print0xa40c }, + {"Xmp.exif.WhiteBalance", print0xa403 }, + {"Xmp.tiff.Orientation", print0x0112 }, + {"Xmp.tiff.ResolutionUnit", printExifUnit }, + {"Xmp.tiff.XResolution", printLong }, + {"Xmp.tiff.YCbCrPositioning", print0x0213 }, + {"Xmp.tiff.YResolution", printLong } }; XmpNsInfo::Ns::Ns(const std::string& ns) diff --git a/src/tags.cpp b/src/tags.cpp index e46c71ba..dec5ac5e 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -985,11 +985,42 @@ namespace Exiv2 { { 1, N_("Below sea level") } }; + //! GPS status, tag 0x0009 + extern const TagDetails exifGPSStatus[] = { + { 'A', N_("Measurement in progress") }, + { 'V', N_("Measurement Interoperability") } + }; + + //! GPS measurement mode, tag 0x000a + extern const TagDetails exifGPSMeasureMode[] = { + { '2', N_("Two-dimensional measurement") }, + { '3', N_("Three-dimensional measurement") } + }; + //! GPS speed reference, tag 0x000c extern const TagDetails exifGPSSpeedRef[] = { - { 75, N_("km/h") }, - { 77, N_("mph") }, - { 78, N_("knots") } + { 'K', N_("km/h") }, + { 'M', N_("mph") }, + { 'N', N_("knots") } + }; + + //! GPS direction ref, tags 0x000e, 0x0010, 0x0017 + extern const TagDetails exifGPSDirRef[] = { + { 'T', N_("True direction") }, + { 'M', N_("Magnetic direction") } + }; + + //! GPS Destination distance ref, tag 0x0019 + extern const TagDetails exifGPSDestDistanceRef[] = { + { 'K', N_("Kilometers") }, + { 'M', N_("Miles") }, + { 'N', N_("Knots") } + }; + + //! GPS Differential, tag 0x001e + extern const TagDetails exifGPSDifferential[] = { + { 0, N_("Without correction") }, + { 1, N_("Correction applied") } }; // GPS Info Tags @@ -1032,7 +1063,7 @@ namespace Exiv2 { "and the altitude is indicated as an absolute value in the " "GSPAltitude tag. The reference unit is meters. Note that this tag " "is BYTE type, unlike other reference tags."), - gpsIfdId, gpsTags, unsignedByte, EXV_PRINT_TAG(exifGPSAltitudeRef)), + gpsIfdId, gpsTags, unsignedByte, print0x0005), TagInfo(0x0006, "GPSAltitude", N_("GPS Altitude"), N_("Indicates the altitude based on the reference in GPSAltitudeRef. " "Altitude is expressed as one RATIONAL value. The reference unit is meters."), @@ -1053,11 +1084,11 @@ namespace Exiv2 { N_("Indicates the status of the GPS receiver when the image is recorded. " "\"A\" means measurement is in progress, and \"V\" means the measurement " "is Interoperability."), - gpsIfdId, gpsTags, asciiString, printValue), + gpsIfdId, gpsTags, asciiString, print0x0009), TagInfo(0x000a, "GPSMeasureMode", N_("GPS Measure Mode"), N_("Indicates the GPS measurement mode. \"2\" means two-dimensional measurement and \"3\" " "means three-dimensional measurement is in progress."), - gpsIfdId, gpsTags, asciiString, printValue), + gpsIfdId, gpsTags, asciiString, print0x000a), TagInfo(0x000b, "GPSDOP", N_("GPS Data Degree of Precision"), N_("Indicates the GPS DOP (data degree of precision). An HDOP value is written " "during two-dimensional measurement, and PDOP during three-dimensional measurement."), @@ -1065,14 +1096,14 @@ namespace Exiv2 { TagInfo(0x000c, "GPSSpeedRef", N_("GPS Speed Reference"), N_("Indicates the unit used to express the GPS receiver speed of movement. " "\"K\" \"M\" and \"N\" represents kilometers per hour, miles per hour, and knots."), - gpsIfdId, gpsTags, asciiString, EXV_PRINT_TAG(exifGPSSpeedRef)), + gpsIfdId, gpsTags, asciiString, print0x000c), TagInfo(0x000d, "GPSSpeed", N_("GPS Speed"), N_("Indicates the speed of GPS receiver movement."), gpsIfdId, gpsTags, unsignedRational, printValue), TagInfo(0x000e, "GPSTrackRef", N_("GPS Track Ref"), N_("Indicates the reference for giving the direction of GPS receiver movement. " "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsIfdId, gpsTags, asciiString, printValue), + gpsIfdId, gpsTags, asciiString, printGPSDirRef), TagInfo(0x000f, "GPSTrack", N_("GPS Track"), N_("Indicates the direction of GPS receiver movement. The range of values is " "from 0.00 to 359.99."), @@ -1080,7 +1111,7 @@ namespace Exiv2 { TagInfo(0x0010, "GPSImgDirectionRef", N_("GPS Image Direction Reference"), N_("Indicates the reference for giving the direction of the image when it is captured. " "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsIfdId, gpsTags, asciiString, printValue), + gpsIfdId, gpsTags, asciiString, printGPSDirRef), TagInfo(0x0011, "GPSImgDirection", N_("GPS Image Direction"), N_("Indicates the direction of the image when it was captured. The range of values " "is from 0.00 to 359.99."), @@ -1115,7 +1146,7 @@ namespace Exiv2 { TagInfo(0x0017, "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), N_("Indicates the reference used for giving the bearing to the destination point. " "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsIfdId, gpsTags, asciiString, printValue), + gpsIfdId, gpsTags, asciiString, printGPSDirRef), TagInfo(0x0018, "GPSDestBearing", N_("GPS Destination Bearing"), N_("Indicates the bearing to the destination point. The range of values is from " "0.00 to 359.99."), @@ -1123,7 +1154,7 @@ namespace Exiv2 { TagInfo(0x0019, "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), N_("Indicates the unit used to express the distance to the destination point. " "\"K\", \"M\" and \"N\" represent kilometers, miles and knots."), - gpsIfdId, gpsTags, asciiString, printValue), + gpsIfdId, gpsTags, asciiString, print0x0019), TagInfo(0x001a, "GPSDestDistance", N_("GPS Destination Distance"), N_("Indicates the distance to the destination point."), gpsIfdId, gpsTags, unsignedRational, printValue), @@ -1142,7 +1173,7 @@ namespace Exiv2 { gpsIfdId, gpsTags, asciiString, printValue), TagInfo(0x001e, "GPSDifferential", N_("GPS Differential"), N_("Indicates whether differential correction is applied to the GPS receiver."), - gpsIfdId, gpsTags, unsignedShort, printValue), + gpsIfdId, gpsTags, unsignedShort, print0x001e), // End of list marker TagInfo(0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), N_("Unknown GPSInfo tag"), @@ -1780,6 +1811,11 @@ namespace Exiv2 { return os; } + std::ostream& print0x0005(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSAltitudeRef)(os, value); + } + std::ostream& print0x0006(std::ostream& os, const Value& value) { std::ostringstream oss; @@ -1821,6 +1857,31 @@ namespace Exiv2 { return os; } + std::ostream& print0x0009(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSStatus)(os, value); + } + + std::ostream& print0x000a(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSMeasureMode)(os, value); + } + + std::ostream& print0x000c(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSSpeedRef)(os, value); + } + + std::ostream& print0x0019(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSDestDistanceRef)(os, value); + } + + std::ostream& print0x001e(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSDifferential)(os, value); + } + std::ostream& print0x0112(std::ostream& os, const Value& value) { return EXV_PRINT_TAG(exifOrientation)(os, value); @@ -2109,6 +2170,11 @@ namespace Exiv2 { return EXV_PRINT_TAG(exifSubjectDistanceRange)(os, value); } + std::ostream& printGPSDirRef(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGPSDirRef)(os, value); + } + std::ostream& printNormalSoftHard(std::ostream& os, const Value& value) { return EXV_PRINT_TAG(exifNormalSoftHard)(os, value); diff --git a/src/tags.hpp b/src/tags.hpp index 1ceac900..427b8db5 100644 --- a/src/tags.hpp +++ b/src/tags.hpp @@ -448,10 +448,22 @@ namespace Exiv2 { std::ostream& printExifUnit(std::ostream& os, const Value& value); //! Print GPS version std::ostream& print0x0000(std::ostream& os, const Value& value); + //! Print GPS altitude ref + std::ostream& print0x0005(std::ostream& os, const Value& value); //! Print GPS altitude std::ostream& print0x0006(std::ostream& os, const Value& value); //! Print GPS timestamp std::ostream& print0x0007(std::ostream& os, const Value& value); + //! Print GPS status + std::ostream& print0x0009(std::ostream& os, const Value& value); + //! Print GPS measurement mode + std::ostream& print0x000a(std::ostream& os, const Value& value); + //! Print GPS speed ref + std::ostream& print0x000c(std::ostream& os, const Value& value); + //! Print GPS destination distance ref + std::ostream& print0x0019(std::ostream& os, const Value& value); + //! Print GPS differential correction + std::ostream& print0x001e(std::ostream& os, const Value& value); //! Print orientation std::ostream& print0x0112(std::ostream& os, const Value& value); //! Print YCbCrPositioning @@ -510,6 +522,8 @@ namespace Exiv2 { std::ostream& print0xa409(std::ostream& os, const Value& value); //! Print subject distance range std::ostream& print0xa40c(std::ostream& os, const Value& value); + //! Print GPS direction ref + std::ostream& printGPSDirRef(std::ostream& os, const Value& value); //! Print contrast, sharpness (normal, soft, hard) std::ostream& printNormalSoftHard(std::ostream& os, const Value& value); //! Print any version packed in 4 Bytes format : major major minor minor