From 8239c44ee81a0654017aee82f6bad0c88bd91545 Mon Sep 17 00:00:00 2001 From: Andreas Huggel Date: Thu, 31 Jan 2008 08:32:52 +0000 Subject: [PATCH] More XMP TagDetails removed, intermediate. --- src/properties.cpp | 51 +++++-------------------------------- src/tags.cpp | 48 +++++++++++++++++++++++----------- src/tags.hpp | 10 ++++++++ test/bugfixes-test.sh | 4 +++ test/data/exiv2-bug540.jpg | Bin 0 -> 10011 bytes 5 files changed, 53 insertions(+), 60 deletions(-) create mode 100644 test/data/exiv2-bug540.jpg diff --git a/src/properties.cpp b/src/properties.cpp index c70f1e09..8c9234bc 100644 --- a/src/properties.cpp +++ b/src/properties.cpp @@ -446,45 +446,6 @@ namespace Exiv2 { { 0, 0, 0, invalidTypeId, xmpInternal, 0 } }; - //! exif:SceneCaptureType - extern const TagDetails xmpExifSceneCaptureType[] = { - { 0, N_("Standard") }, - { 1, N_("Landscape") }, - { 2, N_("Portrait") }, - { 3, N_("Night scene") } - }; - - //! exif:GainControl - extern const TagDetails xmpExifGainControl[] = { - { 0, N_("None") }, - { 1, N_("Low gain up") }, - { 2, N_("High gain up") }, - { 3, N_("Low gain down") }, - { 4, N_("High gain down") } - }; - - //! exif:Contrast, exif:Sharpness - extern const TagDetails xmpExifNormalSoftHard[] = { - { 0, N_("Normal") }, - { 1, N_("Soft") }, - { 2, N_("Hard") } - }; - - //! exif:Saturation - extern const TagDetails xmpExifSaturation[] = { - { 0, N_("Normal") }, - { 1, N_("Low saturation") }, - { 2, N_("High saturation") } - }; - - //! exif:SubjectDistanceRange - extern const TagDetails xmpExifSubjectDistanceRange[] = { - { 0, N_("Unknown") }, - { 1, N_("Macro") }, - { 2, N_("Close view") }, - { 3, N_("Distant view") } - }; - //! exif:GPSAltitudeRef extern const TagDetails xmpExifGPSAltitudeRef[] = { { 0, N_("Above sea level") }, @@ -676,7 +637,7 @@ namespace Exiv2 { {"Xmp.exif.BrightnessValue", printFloat }, {"Xmp.exif.ColorSpace", print0xa001 }, {"Xmp.exif.ComponentsConfiguration", print0x9101 }, - {"Xmp.exif.Contrast", EXV_PRINT_TAG(xmpExifNormalSoftHard) }, + {"Xmp.exif.Contrast", printNormalSoftHard }, {"Xmp.exif.CreateDate", printXmpDate }, {"Xmp.exif.CustomRendered", print0xa401 }, {"Xmp.exif.DateTimeOriginal", printXmpDate }, @@ -691,7 +652,7 @@ namespace Exiv2 { {"Xmp.exif.FocalPlaneResolutionUnit", printExifUnit }, {"Xmp.exif.FocalPlaneXResolution", printFloat }, {"Xmp.exif.FocalPlaneYResolution", printFloat }, - {"Xmp.exif.GainControl", EXV_PRINT_TAG(xmpExifGainControl) }, + {"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) }, @@ -705,13 +666,13 @@ namespace Exiv2 { {"Xmp.exif.LightSource", print0x9208 }, {"Xmp.exif.MeteringMode", print0x9207 }, {"Xmp.exif.ModifyDate", printXmpDate }, - {"Xmp.exif.Saturation", EXV_PRINT_TAG(xmpExifSaturation) }, - {"Xmp.exif.SceneCaptureType", EXV_PRINT_TAG(xmpExifSceneCaptureType) }, + {"Xmp.exif.Saturation", print0xa409 }, + {"Xmp.exif.SceneCaptureType", print0xa406 }, {"Xmp.exif.SceneType", print0xa301 }, {"Xmp.exif.SensingMethod", print0xa217 }, - {"Xmp.exif.Sharpness", EXV_PRINT_TAG(xmpExifNormalSoftHard) }, + {"Xmp.exif.Sharpness", printNormalSoftHard }, {"Xmp.exif.ShutterSpeedValue", print0x9201 }, - {"Xmp.exif.SubjectDistanceRange", EXV_PRINT_TAG(xmpExifSubjectDistanceRange) }, + {"Xmp.exif.SubjectDistanceRange", print0xa40c }, {"Xmp.exif.WhiteBalance", print0xa403 }, {"Xmp.tiff.Orientation", print0x0112 }, {"Xmp.tiff.ResolutionUnit", printExifUnit }, diff --git a/src/tags.cpp b/src/tags.cpp index b2eee002..e46c71ba 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -674,8 +674,8 @@ namespace Exiv2 { { 4, N_("High gain down") } }; - //! Contrast, tag 0xa408 - extern const TagDetails exifContrast[] = { + //! Contrast, tag 0xa408 and Sharpness, tag 0xa40a + extern const TagDetails exifNormalSoftHard[] = { { 0, N_("Normal") }, { 1, N_("Soft") }, { 2, N_("Hard") } @@ -688,13 +688,6 @@ namespace Exiv2 { { 2, N_("High") } }; - //! Sharpness, tag 0xa40a - extern const TagDetails exifSharpness[] = { - { 0, N_("Normal") }, - { 1, N_("Soft") }, - { 2, N_("Hard") } - }; - //! SubjectDistanceRange, tag 0xa40c extern const TagDetails exifSubjectDistanceRange[] = { { 0, N_("Unknown") }, @@ -934,22 +927,22 @@ namespace Exiv2 { N_("This tag indicates the type of scene that was shot. It can " "also be used to record the mode in which the image was " "shot. Note that this differs from the tag."), - exifIfdId, captureCond, unsignedShort, EXV_PRINT_TAG(exifSceneCaptureType)), + exifIfdId, captureCond, unsignedShort, print0xa406), TagInfo(0xa407, "GainControl", N_("Gain Control"), N_("This tag indicates the degree of overall image gain adjustment."), - exifIfdId, captureCond, unsignedShort, EXV_PRINT_TAG(exifGainControl)), + exifIfdId, captureCond, unsignedShort, print0xa407), TagInfo(0xa408, "Contrast", N_("Contrast"), N_("This tag indicates the direction of contrast processing " "applied by the camera when the image was shot."), - exifIfdId, captureCond, unsignedShort, EXV_PRINT_TAG(exifContrast)), + exifIfdId, captureCond, unsignedShort, printNormalSoftHard), TagInfo(0xa409, "Saturation", N_("Saturation"), N_("This tag indicates the direction of saturation processing " "applied by the camera when the image was shot."), - exifIfdId, captureCond, unsignedShort, EXV_PRINT_TAG(exifSaturation)), + exifIfdId, captureCond, unsignedShort, print0xa409), TagInfo(0xa40a, "Sharpness", N_("Sharpness"), N_("This tag indicates the direction of sharpness processing " "applied by the camera when the image was shot."), - exifIfdId, captureCond, unsignedShort, EXV_PRINT_TAG(exifSharpness)), + exifIfdId, captureCond, unsignedShort, printNormalSoftHard), TagInfo(0xa40b, "DeviceSettingDescription", N_("Device Setting Description"), N_("This tag indicates information on the picture-taking " "conditions of a particular camera model. The tag is used " @@ -957,7 +950,7 @@ namespace Exiv2 { exifIfdId, captureCond, undefined, printValue), TagInfo(0xa40c, "SubjectDistanceRange", N_("Subject Distance Range"), N_("This tag indicates the distance to the subject."), - exifIfdId, captureCond, unsignedShort, EXV_PRINT_TAG(exifSubjectDistanceRange)), + exifIfdId, captureCond, unsignedShort, print0xa40c), TagInfo(0xa420, "ImageUniqueID", N_("Image Unique ID"), N_("This tag indicates an identifier assigned uniquely to " "each image. It is recorded as an ASCII string equivalent " @@ -2096,6 +2089,31 @@ namespace Exiv2 { return os; } + std::ostream& print0xa406(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifSceneCaptureType)(os, value); + } + + std::ostream& print0xa407(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifGainControl)(os, value); + } + + std::ostream& print0xa409(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifSaturation)(os, value); + } + + std::ostream& print0xa40c(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifSubjectDistanceRange)(os, value); + } + + std::ostream& printNormalSoftHard(std::ostream& os, const Value& value) + { + return EXV_PRINT_TAG(exifNormalSoftHard)(os, value); + } + std::ostream& printExifVersion(std::ostream& os, const Value& value) { if (value.size() != 4 || value.typeId() != undefined) { diff --git a/src/tags.hpp b/src/tags.hpp index 9a7c5da9..1ceac900 100644 --- a/src/tags.hpp +++ b/src/tags.hpp @@ -502,6 +502,16 @@ namespace Exiv2 { std::ostream& print0xa404(std::ostream& os, const Value& value); //! Print 35mm equivalent focal length std::ostream& print0xa405(std::ostream& os, const Value& value); + //! Print scene capture type + std::ostream& print0xa406(std::ostream& os, const Value& value); + //! Print gain control + std::ostream& print0xa407(std::ostream& os, const Value& value); + //! Print saturation + std::ostream& print0xa409(std::ostream& os, const Value& value); + //! Print subject distance range + std::ostream& print0xa40c(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 std::ostream& printExifVersion(std::ostream& os, const Value& value); //! Print any version encoded in the ASCII string majormajorminorminor diff --git a/test/bugfixes-test.sh b/test/bugfixes-test.sh index de63a62e..2fed3b72 100755 --- a/test/bugfixes-test.sh +++ b/test/bugfixes-test.sh @@ -82,6 +82,10 @@ num=501 filename=`prep_file $num` $exiv2 -pi $filename +num=540 +filename=`prep_file $num` +$exiv2 -px $filename + ) > $results 2>&1 # ---------------------------------------------------------------------- diff --git a/test/data/exiv2-bug540.jpg b/test/data/exiv2-bug540.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62c0e562a04f29c2fd4fd33fd2056b745451aacf GIT binary patch literal 10011 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