diff --git a/doc/getting-started.html b/doc/getting-started.html index 94529942..8c98d607 100644 --- a/doc/getting-started.html +++ b/doc/getting-started.html @@ -86,7 +86,7 @@ own header and source files.

Exiv2 Components Diagram

-

Exiv2 components diagram

+

Exiv2 components diagram

 

diff --git a/doc/iptc.xml b/doc/iptc.xml index 7cfec25b..8e440dc8 100644 --- a/doc/iptc.xml +++ b/doc/iptc.xml @@ -20,6 +20,7 @@ 2 2 Iptc.Envelope.ModelVersion + Short Version of IIM part 1 @@ -32,6 +33,7 @@ 0 1024 Iptc.Envelope.Destination + String Routing information @@ -44,6 +46,7 @@ 2 2 Iptc.Envelope.FileFormat + Short IIM appendix A file format @@ -56,6 +59,7 @@ 2 2 Iptc.Envelope.FileVersion + Short File format version @@ -68,6 +72,7 @@ 0 10 Iptc.Envelope.ServiceId + String Identifies the provider and product @@ -80,6 +85,7 @@ 8 8 Iptc.Envelope.EnvelopeNumber + String Combined unique identification @@ -92,6 +98,7 @@ 0 32 Iptc.Envelope.ProductId + String Identifies service subset @@ -104,6 +111,7 @@ 1 1 Iptc.Envelope.EnvelopePriority + String Envelope handling priority @@ -116,6 +124,7 @@ 8 8 Iptc.Envelope.DateSent + Date Date material was sent @@ -128,6 +137,7 @@ 11 11 Iptc.Envelope.TimeSent + Time Time material was sent @@ -140,6 +150,7 @@ 0 32 Iptc.Envelope.CharacterSet + Undefined Specifies character sets @@ -152,6 +163,7 @@ 14 80 Iptc.Envelope.UNO + String Unique Name of Object @@ -164,6 +176,7 @@ 2 2 Iptc.Envelope.ARMId + Short Abstract Relationship Method identifier @@ -176,6 +189,7 @@ 2 2 Iptc.Envelope.ARMVersion + Short Abstract Relationship Method version @@ -188,6 +202,7 @@ 2 2 Iptc.Application2.RecordVersion + Short Version of IIM part 2 @@ -200,6 +215,7 @@ 3 67 Iptc.Application2.ObjectType + String IIM appendix G object type @@ -212,6 +228,7 @@ 4 68 Iptc.Application2.ObjectAttribute + String IIM appendix G object attribute @@ -224,6 +241,7 @@ 0 64 Iptc.Application2.ObjectName + String Shorthand reference of content @@ -236,6 +254,7 @@ 0 64 Iptc.Application2.EditStatus + String Content status @@ -248,6 +267,7 @@ 2 2 Iptc.Application2.EditorialUpdate + String Indicates the type of update @@ -260,6 +280,7 @@ 1 1 Iptc.Application2.Urgency + String Editorial urgency of content @@ -272,6 +293,7 @@ 13 236 Iptc.Application2.Subject + String Structured definition of the subject @@ -284,6 +306,7 @@ 0 3 Iptc.Application2.Category + String Identifies the subject @@ -296,6 +319,7 @@ 0 32 Iptc.Application2.SuppCategory + String Refines the subject @@ -308,6 +332,7 @@ 0 32 Iptc.Application2.FixtureId + String Identifies content that recurs @@ -320,6 +345,7 @@ 0 64 Iptc.Application2.Keywords + String Information retrieval words @@ -332,6 +358,7 @@ 3 3 Iptc.Application2.LocationCode + String ISO country code for content @@ -344,6 +371,7 @@ 0 64 Iptc.Application2.LocationName + String Full country name for content @@ -356,6 +384,7 @@ 8 8 Iptc.Application2.ReleaseDate + Date Earliest intended usable date @@ -368,6 +397,7 @@ 11 11 Iptc.Application2.ReleaseTime + Time Earliest intended usable time @@ -380,6 +410,7 @@ 8 8 Iptc.Application2.ExpirationDate + Date Latest intended usable date @@ -392,6 +423,7 @@ 11 11 Iptc.Application2.ExpirationTime + Time Latest intended usable time @@ -404,6 +436,7 @@ 0 256 Iptc.Application2.SpecialInstructions + String Editorial usage instructions @@ -416,6 +449,7 @@ 2 2 Iptc.Application2.ActionAdvised + String Action provided to previous data @@ -428,6 +462,7 @@ 0 10 Iptc.Application2.ReferenceService + String Service Identifier of a prior envelope @@ -440,6 +475,7 @@ 8 8 Iptc.Application2.ReferenceDate + Date Date of a prior envelope @@ -452,6 +488,7 @@ 8 8 Iptc.Application2.ReferenceNumber + String Envelope Number of a prior envelope @@ -464,6 +501,7 @@ 8 8 Iptc.Application2.DateCreated + Date Creation date of intellectual content @@ -476,6 +514,7 @@ 11 11 Iptc.Application2.TimeCreated + Time Creation time of intellectual content @@ -488,6 +527,7 @@ 8 8 Iptc.Application2.DigitizationDate + Date Creation date of digital representation @@ -500,6 +540,7 @@ 11 11 Iptc.Application2.DigitizationTime + Time Creation time of digital representation @@ -512,6 +553,7 @@ 0 32 Iptc.Application2.Program + String Content creation program @@ -524,6 +566,7 @@ 0 10 Iptc.Application2.ProgramVersion + String Content creation program version @@ -536,6 +579,7 @@ 1 1 Iptc.Application2.ObjectCycle + String Morning @@ -548,6 +592,7 @@ 0 32 Iptc.Application2.Byline + String Name of content creator @@ -560,6 +605,7 @@ 0 32 Iptc.Application2.BylineTitle + String Title of content creator @@ -572,6 +618,7 @@ 0 32 Iptc.Application2.City + String City of content origin @@ -584,6 +631,7 @@ 0 32 Iptc.Application2.SubLocation + String Location within city @@ -596,6 +644,7 @@ 0 32 Iptc.Application2.ProvinceState + String Province/State of content origin @@ -608,6 +657,7 @@ 3 3 Iptc.Application2.CountryCode + String ISO country code of content origin @@ -620,6 +670,7 @@ 0 64 Iptc.Application2.CountryName + String Full country name of content origin @@ -632,6 +683,7 @@ 0 32 Iptc.Application2.TransmissionReference + String Location of original transmission @@ -644,6 +696,7 @@ 0 256 Iptc.Application2.Headline + String Content synopsis @@ -656,6 +709,7 @@ 0 32 Iptc.Application2.Credit + String Content provider @@ -668,6 +722,7 @@ 0 32 Iptc.Application2.Source + String Original owner of content @@ -680,6 +735,7 @@ 0 128 Iptc.Application2.Copyright + String Necessary copyright notice @@ -692,6 +748,7 @@ 0 128 Iptc.Application2.Contact + String Person or organisation to contact @@ -704,6 +761,7 @@ 0 2000 Iptc.Application2.Caption + String Content description @@ -716,6 +774,7 @@ 0 32 Iptc.Application2.Writer + String Person responsible for caption @@ -728,6 +787,7 @@ 7360 7360 Iptc.Application2.RasterizedCaption + Undefined Black and white caption image @@ -740,6 +800,7 @@ 2 2 Iptc.Application2.ImageType + String Color components in an image @@ -752,6 +813,7 @@ 1 1 Iptc.Application2.ImageOrientation + String Indicates the layout of an image @@ -764,6 +826,7 @@ 2 3 Iptc.Application2.Language + String ISO 639:1988 language code @@ -776,6 +839,7 @@ 2 2 Iptc.Application2.AudioType + String Information about audio content @@ -788,6 +852,7 @@ 6 6 Iptc.Application2.AudioRate + String Sampling rate of audio content @@ -800,6 +865,7 @@ 2 2 Iptc.Application2.AudioResolution + String Sampling resolution of audio content @@ -812,6 +878,7 @@ 6 6 Iptc.Application2.AudioDuration + String Duration of audio content @@ -824,6 +891,7 @@ 0 64 Iptc.Application2.AudioOutcue + String Final words or sounds of audio content @@ -836,6 +904,7 @@ 2 2 Iptc.Application2.PreviewFormat + Short IIM appendix A file format of preview @@ -848,6 +917,7 @@ 2 2 Iptc.Application2.PreviewVersion + Short File format version of preview @@ -860,6 +930,7 @@ 0 256000 Iptc.Application2.Preview + Undefined Binary preview data diff --git a/doc/iptc.xsl b/doc/iptc.xsl index 488c5269..93110e50 100644 --- a/doc/iptc.xsl +++ b/doc/iptc.xsl @@ -53,10 +53,11 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - - - + + + + @@ -68,15 +69,16 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - Tag name - Tag description - Tag (dec) Tag (hex) - Mandatory - Repeatable + Tag (dec) + Record + Key + Type + M. + R. Min. bytes Max. bytes - Key + Tag description @@ -98,10 +100,11 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - - - + + + + @@ -130,7 +133,7 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - + @@ -140,7 +143,7 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> // + 0x0000 + 0 + 0x0000 + Makernote + Exif.Canon.0x0000 + Short + Unknown + + CameraSettings1 1 0x0001 Makernote Exif.Canon.CameraSettings1 + Short Various camera settings (1) - + + 0x0002 + 2 + 0x0002 + Makernote + Exif.Canon.0x0002 + Short + Unknown + + + 0x0003 + 3 + 0x0003 + Makernote + Exif.Canon.0x0003 + Short + Unknown + + CameraSettings2 4 0x0004 Makernote Exif.Canon.CameraSettings2 + Short Various camera settings (2) - + ImageType 6 0x0006 Makernote Exif.Canon.ImageType + Ascii Image type - + FirmwareVersion 7 0x0007 Makernote Exif.Canon.FirmwareVersion + Ascii Firmware version - + ImageNumber 8 0x0008 Makernote Exif.Canon.ImageNumber + Long Image number - + OwnerName 9 0x0009 Makernote Exif.Canon.OwnerName + Ascii Owner Name - + SerialNumber 12 0x000c Makernote Exif.Canon.SerialNumber + Long Camera serial number - + + 0x000d + 13 + 0x000d + Makernote + Exif.Canon.0x000d + Short + Unknown + + EosD30Functions 15 0x000f Makernote Exif.Canon.EosD30Functions + Short EOS D30 Custom Functions diff --git a/doc/tags-fujifilm.xml b/doc/tags-fujifilm.xml index a2cfb6bc..6596917a 100644 --- a/doc/tags-fujifilm.xml +++ b/doc/tags-fujifilm.xml @@ -15,6 +15,7 @@ 0x0000 Makernote Exif.Fujifilm.Version + Undefined Fujifilm Makernote version @@ -23,6 +24,7 @@ 0x1000 Makernote Exif.Fujifilm.Quality + Ascii Image quality setting @@ -31,6 +33,7 @@ 0x1001 Makernote Exif.Fujifilm.Sharpness + Short Sharpness setting @@ -39,6 +42,7 @@ 0x1002 Makernote Exif.Fujifilm.WhiteBalance + Short White balance setting @@ -47,6 +51,7 @@ 0x1003 Makernote Exif.Fujifilm.Color + Short Chroma saturation setting @@ -55,6 +60,7 @@ 0x1004 Makernote Exif.Fujifilm.Tone + Short Contrast setting @@ -63,6 +69,7 @@ 0x1010 Makernote Exif.Fujifilm.FlashMode + Short Flash firing mode setting @@ -71,6 +78,7 @@ 0x1011 Makernote Exif.Fujifilm.FlashStrength + SRational Flash firing strength compensation setting @@ -79,6 +87,7 @@ 0x1020 Makernote Exif.Fujifilm.Macro + Short Macro mode setting @@ -87,54 +96,97 @@ 0x1021 Makernote Exif.Fujifilm.FocusMode + Short Focusing mode setting + 0x1022 + 4130 + 0x1022 + Makernote + Exif.Fujifilm.0x1022 + Short + Unknown + + SlowSync 4144 0x1030 Makernote Exif.Fujifilm.SlowSync + Short Slow synchro mode setting - + PictureMode 4145 0x1031 Makernote Exif.Fujifilm.PictureMode + Short Picture mode setting - + + 0x1032 + 4146 + 0x1032 + Makernote + Exif.Fujifilm.0x1032 + Short + Unknown + + Continuous 4352 0x1100 Makernote Exif.Fujifilm.Continuous + Short Continuous shooting or auto bracketing setting - + + 0x1101 + 4353 + 0x1101 + Makernote + Exif.Fujifilm.0x1101 + Short + Unknown + + + 0x1200 + 4608 + 0x1200 + Makernote + Exif.Fujifilm.0x1200 + Short + Unknown + + BlurWarning 4864 0x1300 Makernote Exif.Fujifilm.BlurWarning + Short Blur warning status - + FocusWarning 4865 0x1301 Makernote Exif.Fujifilm.FocusWarning + Short Auto Focus warning status - + AeWarning 4866 0x1302 Makernote Exif.Fujifilm.AeWarning + Short Auto Exposure warning status diff --git a/doc/tags-nikon1.xml b/doc/tags-nikon1.xml index cd311af3..59125b82 100644 --- a/doc/tags-nikon1.xml +++ b/doc/tags-nikon1.xml @@ -15,6 +15,7 @@ 0x0001 Makernote Exif.Nikon1.Version + Undefined Nikon Makernote version @@ -23,6 +24,7 @@ 0x0002 Makernote Exif.Nikon1.ISOSpeed + Short ISO speed setting @@ -31,6 +33,7 @@ 0x0003 Makernote Exif.Nikon1.ColorMode + Ascii Color mode @@ -39,6 +42,7 @@ 0x0004 Makernote Exif.Nikon1.Quality + Ascii Image quality setting @@ -47,6 +51,7 @@ 0x0005 Makernote Exif.Nikon1.WhiteBalance + Ascii White balance @@ -55,6 +60,7 @@ 0x0006 Makernote Exif.Nikon1.Sharpening + Ascii Image sharpening setting @@ -63,6 +69,7 @@ 0x0007 Makernote Exif.Nikon1.Focus + Ascii Focus mode @@ -71,54 +78,79 @@ 0x0008 Makernote Exif.Nikon1.Flash + Ascii Flash mode + 0x000a + 10 + 0x000a + Makernote + Exif.Nikon1.0x000a + Rational + Unknown + + ISOSelection 15 0x000f Makernote Exif.Nikon1.ISOSelection + Ascii ISO selection - + + DataDump + 16 + 0x0010 + Makernote + Exif.Nikon1.DataDump + Undefined + Data dump + + ImageAdjustment 128 0x0080 Makernote Exif.Nikon1.ImageAdjustment + Ascii Image adjustment setting - + Adapter 130 0x0082 Makernote Exif.Nikon1.Adapter + Ascii Adapter used - + FocusDistance 133 0x0085 Makernote Exif.Nikon1.FocusDistance + Rational Manual focus distance - + DigitalZoom 134 0x0086 Makernote Exif.Nikon1.DigitalZoom + Rational Digital zoom setting - + AFFocusPos 136 0x0088 Makernote Exif.Nikon1.AFFocusPos + Undefined AF focus position diff --git a/doc/tags-nikon2.xml b/doc/tags-nikon2.xml index 86198867..90b72579 100644 --- a/doc/tags-nikon2.xml +++ b/doc/tags-nikon2.xml @@ -10,68 +10,103 @@ + 0x0002 + 2 + 0x0002 + Makernote + Exif.Nikon2.0x0002 + Ascii + Unknown + + Quality 3 0x0003 Makernote Exif.Nikon2.Quality + Short Image quality setting - + ColorMode 4 0x0004 Makernote Exif.Nikon2.ColorMode + Short Color mode - + ImageAdjustment 5 0x0005 Makernote Exif.Nikon2.ImageAdjustment + Short Image adjustment setting - + ISOSpeed 6 0x0006 Makernote Exif.Nikon2.ISOSpeed + Short ISO speed setting - + WhiteBalance 7 0x0007 Makernote Exif.Nikon2.WhiteBalance + Short White balance - + Focus 8 0x0008 Makernote Exif.Nikon2.Focus + Rational Focus mode - + + 0x0009 + 9 + 0x0009 + Makernote + Exif.Nikon2.0x0009 + Ascii + Unknown + + DigitalZoom 10 0x000a Makernote Exif.Nikon2.DigitalZoom + Rational Digital zoom setting - + Adapter 11 0x000b Makernote Exif.Nikon2.Adapter + Short Adapter used + + 0x0f00 + 3840 + 0x0f00 + Makernote + Exif.Nikon2.0x0f00 + Long + Unknown + diff --git a/doc/tags-nikon3.xml b/doc/tags-nikon3.xml index 3bcebfaa..4524514b 100644 --- a/doc/tags-nikon3.xml +++ b/doc/tags-nikon3.xml @@ -15,6 +15,7 @@ 0x0001 Makernote Exif.Nikon3.Version + Undefined Nikon Makernote version @@ -23,6 +24,7 @@ 0x0002 Makernote Exif.Nikon3.ISOSpeed + Short ISO speed used @@ -31,6 +33,7 @@ 0x0003 Makernote Exif.Nikon3.ColorMode + Ascii Color mode @@ -39,6 +42,7 @@ 0x0004 Makernote Exif.Nikon3.Quality + Ascii Image quality setting @@ -47,6 +51,7 @@ 0x0005 Makernote Exif.Nikon3.WhiteBalance + Ascii White balance @@ -55,6 +60,7 @@ 0x0006 Makernote Exif.Nikon3.Sharpening + Ascii Image sharpening setting @@ -63,6 +69,7 @@ 0x0007 Makernote Exif.Nikon3.Focus + Ascii Focus mode @@ -71,6 +78,7 @@ 0x0008 Makernote Exif.Nikon3.FlashSetting + Ascii Flash setting @@ -79,6 +87,7 @@ 0x0009 Makernote Exif.Nikon3.FlashMode + Ascii Flash mode @@ -87,15 +96,17 @@ 0x000b Makernote Exif.Nikon3.WhiteBalanceBias + SShort White balance bias - ColorBalance1 - 12 - 0x000c + 0x000d + 13 + 0x000d Makernote - Exif.Nikon3.ColorBalance1 - Color balance 1 + Exif.Nikon3.0x000d + Undefined + Unknown ExposureDiff @@ -103,6 +114,7 @@ 0x000e Makernote Exif.Nikon3.ExposureDiff + Undefined Exposure difference @@ -111,15 +123,17 @@ 0x000f Makernote Exif.Nikon3.ISOSelection + Ascii ISO selection - WhiteBalanceBias - 11 - 0x000b + DataDump + 16 + 0x0010 Makernote - Exif.Nikon3.WhiteBalanceBias - White balance bias + Exif.Nikon3.DataDump + Undefined + Data dump ThumbOffset @@ -127,6 +141,7 @@ 0x0011 Makernote Exif.Nikon3.ThumbOffset + Long Thumbnail IFD offset @@ -135,6 +150,7 @@ 0x0012 Makernote Exif.Nikon3.FlashComp + Undefined Flash compensation setting @@ -143,6 +159,7 @@ 0x0013 Makernote Exif.Nikon3.ISOSetting + Short ISO speed setting @@ -151,231 +168,350 @@ 0x0016 Makernote Exif.Nikon3.ImageBoundry + Short Image boundry + 0x0017 + 23 + 0x0017 + Makernote + Exif.Nikon3.0x0017 + Undefined + Unknown + + FlashBracketComp 24 0x0018 Makernote Exif.Nikon3.FlashBracketComp + Undefined Flash bracket compensation applied - + ExposureBracketComp 25 0x0019 Makernote Exif.Nikon3.ExposureBracketComp + SRational AE bracket compensation applied - + ImageAdjustment 128 0x0080 Makernote Exif.Nikon3.ImageAdjustment + Ascii Image adjustment setting - + ToneComp 129 0x0081 Makernote Exif.Nikon3.ToneComp + Ascii Tone compensation setting (contrast) - + AuxiliaryLens 130 0x0082 Makernote Exif.Nikon3.AuxiliaryLens + Ascii Auxiliary lens (adapter) - + LensType 131 0x0083 Makernote Exif.Nikon3.LensType + Byte Lens type - + Lens 132 0x0084 Makernote Exif.Nikon3.Lens + Rational Lens - + FocusDistance 133 0x0085 Makernote Exif.Nikon3.FocusDistance + Rational Manual focus distance - + DigitalZoom 134 0x0086 Makernote Exif.Nikon3.DigitalZoom + Rational Digital zoom setting - + FlashType 135 0x0087 Makernote Exif.Nikon3.FlashType + Byte Type of flash used - + AFFocusPos 136 0x0088 Makernote Exif.Nikon3.AFFocusPos + Undefined AF focus position - + Bracketing 137 0x0089 Makernote Exif.Nikon3.Bracketing + Short Bracketing - - NEFCurve1 - 140 - 0x008c - Makernote - Exif.Nikon3.NEFCurve1 - NEF curve 1 - + 0x008a + 138 + 0x008a + Makernote + Exif.Nikon3.0x008a + Short + Unknown + + + 0x008b + 139 + 0x008b + Makernote + Exif.Nikon3.0x008b + Undefined + Unknown + + ColorMode 141 0x008d Makernote Exif.Nikon3.ColorMode + Ascii Color mode - + SceneMode 143 0x008f Makernote Exif.Nikon3.SceneMode + Ascii Scene mode - + LightingType 144 0x0090 Makernote Exif.Nikon3.LightingType + Ascii Lighting type - + + 0x0091 + 145 + 0x0091 + Makernote + Exif.Nikon3.0x0091 + Undefined + Unknown + + HueAdjustment 146 0x0092 Makernote Exif.Nikon3.HueAdjustment + SShort Hue adjustment - + Saturation 148 0x0094 Makernote Exif.Nikon3.Saturation + SShort Saturation adjustment - + NoiseReduction 149 0x0095 Makernote Exif.Nikon3.NoiseReduction + Ascii Noise reduction - - NEFCurve2 - 150 - 0x0096 - Makernote - Exif.Nikon3.NEFCurve2 - NEF curve 2 - - + ColorBalance2 151 0x0097 Makernote Exif.Nikon3.ColorBalance2 + Undefined Color balance 2 - + + 0x0098 + 152 + 0x0098 + Makernote + Exif.Nikon3.0x0098 + Undefined + Unknown + + NEFThumbnailSize 153 0x0099 Makernote Exif.Nikon3.NEFThumbnailSize + Short NEF thumbnail size - + + 0x009a + 154 + 0x009a + Makernote + Exif.Nikon3.0x009a + Rational + Unknown + + + 0x009b + 155 + 0x009b + Makernote + Exif.Nikon3.0x009b + Short + Unknown + + + 0x009f + 159 + 0x009f + Makernote + Exif.Nikon3.0x009f + SShort + Unknown + + SerialNumber 160 0x00a0 Makernote Exif.Nikon3.SerialNumber + Ascii Camera serial number - + + 0x00a2 + 162 + 0x00a2 + Makernote + Exif.Nikon3.0x00a2 + Long + Unknown + + + 0x00a3 + 163 + 0x00a3 + Makernote + Exif.Nikon3.0x00a3 + Byte + Unknown + + + 0x00a5 + 165 + 0x00a5 + Makernote + Exif.Nikon3.0x00a5 + Long + Unknown + + + 0x00a6 + 166 + 0x00a6 + Makernote + Exif.Nikon3.0x00a6 + Long + Unknown + + ShutterCount 167 0x00a7 Makernote Exif.Nikon3.ShutterCount + Long Number of shots taken by camera - + + 0x00a8 + 168 + 0x00a8 + Makernote + Exif.Nikon3.0x00a8 + Undefined + Unknown + + ImageOptimization 169 0x00a9 Makernote Exif.Nikon3.ImageOptimization + Ascii Image optimization - + Saturation 170 0x00aa Makernote Exif.Nikon3.Saturation + Ascii Saturation - + VariProgram 171 0x00ab Makernote Exif.Nikon3.VariProgram + Ascii Vari program - - PrintIM - 3584 - 0x0e00 - Makernote - Exif.Nikon3.PrintIM - Print image matching - diff --git a/doc/tags-sigma.xml b/doc/tags-sigma.xml index ac0791e6..98e0df26 100644 --- a/doc/tags-sigma.xml +++ b/doc/tags-sigma.xml @@ -15,6 +15,7 @@ 0x0002 Makernote Exif.Sigma.SerialNumber + Ascii Camera serial number @@ -23,6 +24,7 @@ 0x0003 Makernote Exif.Sigma.DriveMode + Ascii Drive Mode @@ -31,6 +33,7 @@ 0x0004 Makernote Exif.Sigma.ResolutionMode + Ascii Resolution Mode @@ -39,6 +42,7 @@ 0x0005 Makernote Exif.Sigma.AutofocusMode + Ascii Autofocus mode @@ -47,6 +51,7 @@ 0x0006 Makernote Exif.Sigma.FocusSetting + Ascii Focus setting @@ -55,6 +60,7 @@ 0x0007 Makernote Exif.Sigma.WhiteBalance + Ascii White balance @@ -63,6 +69,7 @@ 0x0008 Makernote Exif.Sigma.ExposureMode + Ascii Exposure mode @@ -71,6 +78,7 @@ 0x0009 Makernote Exif.Sigma.MeteringMode + Ascii Metering mode @@ -79,6 +87,7 @@ 0x000a Makernote Exif.Sigma.LensRange + Ascii Lens focal length range @@ -87,6 +96,7 @@ 0x000b Makernote Exif.Sigma.ColorSpace + Ascii Color space @@ -95,6 +105,7 @@ 0x000c Makernote Exif.Sigma.Exposure + Ascii Exposure @@ -103,6 +114,7 @@ 0x000d Makernote Exif.Sigma.Contrast + Ascii Contrast @@ -111,6 +123,7 @@ 0x000e Makernote Exif.Sigma.Shadow + Ascii Shadow @@ -119,6 +132,7 @@ 0x000f Makernote Exif.Sigma.Highlight + Ascii Highlight @@ -127,6 +141,7 @@ 0x0010 Makernote Exif.Sigma.Saturation + Ascii Saturation @@ -135,6 +150,7 @@ 0x0011 Makernote Exif.Sigma.Sharpness + Ascii Sharpness @@ -143,6 +159,7 @@ 0x0012 Makernote Exif.Sigma.FillLight + Ascii X3 Fill light @@ -151,6 +168,7 @@ 0x0014 Makernote Exif.Sigma.ColorAdjustment + Ascii Color adjustment @@ -159,6 +177,7 @@ 0x0015 Makernote Exif.Sigma.AdjustmentMode + Ascii Adjustment mode @@ -167,6 +186,7 @@ 0x0016 Makernote Exif.Sigma.Quality + Ascii Quality @@ -175,6 +195,7 @@ 0x0017 Makernote Exif.Sigma.Firmware + Ascii Firmware @@ -183,6 +204,7 @@ 0x0018 Makernote Exif.Sigma.Software + Ascii Software @@ -191,6 +213,7 @@ 0x0019 Makernote Exif.Sigma.AutoBracket + Ascii Auto bracket diff --git a/doc/tags.xml b/doc/tags.xml index 2adfb9c6..7097c321 100644 --- a/doc/tags.xml +++ b/doc/tags.xml @@ -18,6 +18,7 @@ 0x0100 IFD0 Exif.Image.ImageWidth + Long Image width @@ -26,6 +27,7 @@ 0x0101 IFD0 Exif.Image.ImageLength + Long Image height @@ -34,6 +36,7 @@ 0x0102 IFD0 Exif.Image.BitsPerSample + Short Number of bits per component @@ -42,6 +45,7 @@ 0x0103 IFD0 Exif.Image.Compression + Short Compression scheme @@ -50,6 +54,7 @@ 0x0106 IFD0 Exif.Image.PhotometricInterpretation + Short Pixel composition @@ -58,6 +63,7 @@ 0x010e IFD0 Exif.Image.ImageDescription + Ascii Image title @@ -66,6 +72,7 @@ 0x010f IFD0 Exif.Image.Make + Ascii Manufacturer of image input equipment @@ -74,6 +81,7 @@ 0x0110 IFD0 Exif.Image.Model + Ascii Model of image input equipment @@ -82,6 +90,7 @@ 0x0111 IFD0 Exif.Image.StripOffsets + Long Image data location @@ -90,6 +99,7 @@ 0x0112 IFD0 Exif.Image.Orientation + Short Orientation of image @@ -98,6 +108,7 @@ 0x0115 IFD0 Exif.Image.SamplesPerPixel + Short Number of components @@ -106,6 +117,7 @@ 0x0116 IFD0 Exif.Image.RowsPerStrip + Long Number of rows per strip @@ -114,6 +126,7 @@ 0x0117 IFD0 Exif.Image.StripByteCounts + Long Bytes per compressed strip @@ -122,6 +135,7 @@ 0x011a IFD0 Exif.Image.XResolution + Rational Image resolution in width direction @@ -130,6 +144,7 @@ 0x011b IFD0 Exif.Image.YResolution + Rational Image resolution in height direction @@ -138,6 +153,7 @@ 0x011c IFD0 Exif.Image.PlanarConfiguration + Short Image data arrangement @@ -146,6 +162,7 @@ 0x0128 IFD0 Exif.Image.ResolutionUnit + Short Unit of X and Y resolution @@ -154,6 +171,7 @@ 0x012d IFD0 Exif.Image.TransferFunction + Short Transfer function @@ -162,6 +180,7 @@ 0x0131 IFD0 Exif.Image.Software + Ascii Software used @@ -170,6 +189,7 @@ 0x0132 IFD0 Exif.Image.DateTime + Ascii File change date and time @@ -178,6 +198,7 @@ 0x013b IFD0 Exif.Image.Artist + Ascii Person who created the image @@ -186,6 +207,7 @@ 0x013e IFD0 Exif.Image.WhitePoint + Rational White point chromaticity @@ -194,6 +216,7 @@ 0x013f IFD0 Exif.Image.PrimaryChromaticities + Rational Chromaticities of primaries @@ -202,6 +225,7 @@ 0x0201 IFD0 Exif.Image.JPEGInterchangeFormat + Long Offset to JPEG SOI @@ -210,6 +234,7 @@ 0x0202 IFD0 Exif.Image.JPEGInterchangeFormatLength + Long Bytes of JPEG data @@ -218,6 +243,7 @@ 0x0211 IFD0 Exif.Image.YCbCrCoefficients + Rational Color space transformation matrix coefficients @@ -226,6 +252,7 @@ 0x0212 IFD0 Exif.Image.YCbCrSubSampling + Short Subsampling ratio of Y to C @@ -234,6 +261,7 @@ 0x0213 IFD0 Exif.Image.YCbCrPositioning + Short Y and C positioning @@ -242,6 +270,7 @@ 0x0214 IFD0 Exif.Image.ReferenceBlackWhite + Rational Pair of black and white reference values @@ -250,6 +279,7 @@ 0x8298 IFD0 Exif.Image.Copyright + Ascii Copyright holder @@ -258,6 +288,7 @@ 0x8769 IFD0 Exif.Image.ExifTag + Long Exif IFD Pointer @@ -266,6 +297,7 @@ 0x8825 IFD0 Exif.Image.GPSTag + Long GPSInfo IFD Pointer @@ -274,6 +306,7 @@ 0x829a Exif Exif.Photo.ExposureTime + Rational Exposure time @@ -282,6 +315,7 @@ 0x829d Exif Exif.Photo.FNumber + Rational F number @@ -290,6 +324,7 @@ 0x8822 Exif Exif.Photo.ExposureProgram + Short Exposure program @@ -298,6 +333,7 @@ 0x8824 Exif Exif.Photo.SpectralSensitivity + Ascii Spectral sensitivity @@ -306,6 +342,7 @@ 0x8827 Exif Exif.Photo.ISOSpeedRatings + Short ISO speed ratings @@ -314,6 +351,7 @@ 0x8828 Exif Exif.Photo.OECF + Undefined Optoelectric coefficient @@ -322,6 +360,7 @@ 0x9000 Exif Exif.Photo.ExifVersion + Undefined Exif Version @@ -330,6 +369,7 @@ 0x9003 Exif Exif.Photo.DateTimeOriginal + Ascii Date and time original image was generated @@ -338,6 +378,7 @@ 0x9004 Exif Exif.Photo.DateTimeDigitized + Ascii Date and time image was made digital data @@ -346,6 +387,7 @@ 0x9101 Exif Exif.Photo.ComponentsConfiguration + Undefined Meaning of each component @@ -354,6 +396,7 @@ 0x9102 Exif Exif.Photo.CompressedBitsPerPixel + Rational Image compression mode @@ -362,6 +405,7 @@ 0x9201 Exif Exif.Photo.ShutterSpeedValue + SRational Shutter speed @@ -370,6 +414,7 @@ 0x9202 Exif Exif.Photo.ApertureValue + Rational Aperture @@ -378,6 +423,7 @@ 0x9203 Exif Exif.Photo.BrightnessValue + SRational Brightness @@ -386,6 +432,7 @@ 0x9204 Exif Exif.Photo.ExposureBiasValue + SRational Exposure bias @@ -394,6 +441,7 @@ 0x9205 Exif Exif.Photo.MaxApertureValue + Rational Maximum lens aperture @@ -402,6 +450,7 @@ 0x9206 Exif Exif.Photo.SubjectDistance + Rational Subject distance @@ -410,6 +459,7 @@ 0x9207 Exif Exif.Photo.MeteringMode + Short Metering mode @@ -418,6 +468,7 @@ 0x9208 Exif Exif.Photo.LightSource + Short Light source @@ -426,6 +477,7 @@ 0x9209 Exif Exif.Photo.Flash + Short Flash @@ -434,6 +486,7 @@ 0x920a Exif Exif.Photo.FocalLength + Rational Lens focal length @@ -442,6 +495,7 @@ 0x9214 Exif Exif.Photo.SubjectArea + Short Subject area @@ -450,6 +504,7 @@ 0x927c Exif Exif.Photo.MakerNote + Undefined Manufacturer notes @@ -458,6 +513,7 @@ 0x9286 Exif Exif.Photo.UserComment + Comment User comments @@ -466,6 +522,7 @@ 0x9290 Exif Exif.Photo.SubSecTime + Ascii DateTime subseconds @@ -474,6 +531,7 @@ 0x9291 Exif Exif.Photo.SubSecTimeOriginal + Ascii DateTimeOriginal subseconds @@ -482,6 +540,7 @@ 0x9292 Exif Exif.Photo.SubSecTimeDigitized + Ascii DateTimeDigitized subseconds @@ -490,6 +549,7 @@ 0xa000 Exif Exif.Photo.FlashpixVersion + Undefined Supported Flashpix version @@ -498,6 +558,7 @@ 0xa001 Exif Exif.Photo.ColorSpace + Short Color space information @@ -506,6 +567,7 @@ 0xa002 Exif Exif.Photo.PixelXDimension + Long Valid image width @@ -514,6 +576,7 @@ 0xa003 Exif Exif.Photo.PixelYDimension + Long Valid image height @@ -522,6 +585,7 @@ 0xa004 Exif Exif.Photo.RelatedSoundFile + Ascii Related audio file @@ -530,6 +594,7 @@ 0xa005 Exif Exif.Photo.InteroperabilityTag + Long Interoperability IFD Pointer @@ -538,6 +603,7 @@ 0xa20b Exif Exif.Photo.FlashEnergy + Rational Flash energy @@ -546,6 +612,7 @@ 0xa20c Exif Exif.Photo.SpatialFrequencyResponse + Undefined Spatial frequency response @@ -554,6 +621,7 @@ 0xa20e Exif Exif.Photo.FocalPlaneXResolution + Rational Focal plane X resolution @@ -562,6 +630,7 @@ 0xa20f Exif Exif.Photo.FocalPlaneYResolution + Rational Focal plane Y resolution @@ -570,6 +639,7 @@ 0xa210 Exif Exif.Photo.FocalPlaneResolutionUnit + Short Focal plane resolution unit @@ -578,6 +648,7 @@ 0xa214 Exif Exif.Photo.SubjectLocation + Short Subject location @@ -586,6 +657,7 @@ 0xa215 Exif Exif.Photo.ExposureIndex + Rational Exposure index @@ -594,6 +666,7 @@ 0xa217 Exif Exif.Photo.SensingMethod + Short Sensing method @@ -602,6 +675,7 @@ 0xa300 Exif Exif.Photo.FileSource + Undefined File source @@ -610,6 +684,7 @@ 0xa301 Exif Exif.Photo.SceneType + Undefined Scene type @@ -618,6 +693,7 @@ 0xa302 Exif Exif.Photo.CFAPattern + Undefined CFA pattern @@ -626,6 +702,7 @@ 0xa401 Exif Exif.Photo.CustomRendered + Short Custom image processing @@ -634,6 +711,7 @@ 0xa402 Exif Exif.Photo.ExposureMode + Short Exposure mode @@ -642,6 +720,7 @@ 0xa403 Exif Exif.Photo.WhiteBalance + Short White balance @@ -650,6 +729,7 @@ 0xa404 Exif Exif.Photo.DigitalZoomRatio + Rational Digital zoom ratio @@ -658,6 +738,7 @@ 0xa405 Exif Exif.Photo.FocalLengthIn35mmFilm + Short Focal length in 35 mm film @@ -666,6 +747,7 @@ 0xa406 Exif Exif.Photo.SceneCaptureType + Short Scene capture type @@ -674,6 +756,7 @@ 0xa407 Exif Exif.Photo.GainControl + Rational Gain control @@ -682,6 +765,7 @@ 0xa408 Exif Exif.Photo.Contrast + Short Contrast @@ -690,6 +774,7 @@ 0xa409 Exif Exif.Photo.Saturation + Short Saturation @@ -698,6 +783,7 @@ 0xa40a Exif Exif.Photo.Sharpness + Short Sharpness @@ -706,6 +792,7 @@ 0xa40b Exif Exif.Photo.DeviceSettingDescription + Undefined Device settings description @@ -714,6 +801,7 @@ 0xa40c Exif Exif.Photo.SubjectDistanceRange + Short Subject distance range @@ -722,6 +810,7 @@ 0xa420 Exif Exif.Photo.ImageUniqueID + Ascii Unique image ID @@ -730,6 +819,7 @@ 0x0001 Iop Exif.Iop.InteroperabilityIndex + Ascii Interoperability Identification @@ -738,6 +828,7 @@ 0x0002 Iop Exif.Iop.InteroperabilityVersion + Undefined Interoperability version @@ -746,6 +837,7 @@ 0x1000 Iop Exif.Iop.RelatedImageFileFormat + Ascii File format of image file @@ -754,6 +846,7 @@ 0x1001 Iop Exif.Iop.RelatedImageWidth + Long Image width @@ -762,6 +855,7 @@ 0x1002 Iop Exif.Iop.RelatedImageLength + Long Image height @@ -770,6 +864,7 @@ 0x0000 GPSInfo Exif.GPSInfo.GPSVersionID + Byte GPS tag version @@ -778,6 +873,7 @@ 0x0001 GPSInfo Exif.GPSInfo.GPSLatitudeRef + Ascii North or South Latitude @@ -786,6 +882,7 @@ 0x0002 GPSInfo Exif.GPSInfo.GPSLatitude + Rational Latitude @@ -794,6 +891,7 @@ 0x0003 GPSInfo Exif.GPSInfo.GPSLongitudeRef + Ascii East or West Longitude @@ -802,6 +900,7 @@ 0x0004 GPSInfo Exif.GPSInfo.GPSLongitude + Rational Longitude @@ -810,6 +909,7 @@ 0x0005 GPSInfo Exif.GPSInfo.GPSAltitudeRef + Byte Altitude reference @@ -818,6 +918,7 @@ 0x0006 GPSInfo Exif.GPSInfo.GPSAltitude + Rational Altitude @@ -826,6 +927,7 @@ 0x0007 GPSInfo Exif.GPSInfo.GPSTimeStamp + Rational GPS time (atomic clock) @@ -834,6 +936,7 @@ 0x0008 GPSInfo Exif.GPSInfo.GPSSatellites + Ascii GPS satellites used for measurement @@ -842,6 +945,7 @@ 0x0009 GPSInfo Exif.GPSInfo.GPSStatus + Ascii GPS receiver status @@ -850,6 +954,7 @@ 0x000a GPSInfo Exif.GPSInfo.GPSMeasureMode + Ascii GPS measurement mode @@ -858,6 +963,7 @@ 0x000b GPSInfo Exif.GPSInfo.GPSDOP + Rational Measurement precision @@ -866,6 +972,7 @@ 0x000c GPSInfo Exif.GPSInfo.GPSSpeedRef + Ascii Speed unit @@ -874,6 +981,7 @@ 0x000d GPSInfo Exif.GPSInfo.GPSSpeed + Rational Speed of GPS receiver @@ -882,6 +990,7 @@ 0x000e GPSInfo Exif.GPSInfo.GPSTrackRef + Ascii Reference for direction of movement @@ -890,6 +999,7 @@ 0x000f GPSInfo Exif.GPSInfo.GPSTrack + Rational Direction of movement @@ -898,6 +1008,7 @@ 0x0010 GPSInfo Exif.GPSInfo.GPSImgDirectionRef + Ascii Reference for direction of image @@ -906,6 +1017,7 @@ 0x0011 GPSInfo Exif.GPSInfo.GPSImgDirection + Rational Direction of image @@ -914,6 +1026,7 @@ 0x0012 GPSInfo Exif.GPSInfo.GPSMapDatum + Ascii Geodetic survey data used @@ -922,6 +1035,7 @@ 0x0013 GPSInfo Exif.GPSInfo.GPSDestLatitudeRef + Ascii Reference for latitude of destination @@ -930,6 +1044,7 @@ 0x0014 GPSInfo Exif.GPSInfo.GPSDestLatitude + Rational Latitude of destination @@ -938,6 +1053,7 @@ 0x0015 GPSInfo Exif.GPSInfo.GPSDestLongitudeRef + Ascii Reference for longitude of destination @@ -946,6 +1062,7 @@ 0x0016 GPSInfo Exif.GPSInfo.GPSDestLongitude + Rational Longitude of destination @@ -954,6 +1071,7 @@ 0x0017 GPSInfo Exif.GPSInfo.GPSDestBearingRef + Ascii Reference for bearing of destination @@ -962,6 +1080,7 @@ 0x0018 GPSInfo Exif.GPSInfo.GPSDestBearing + Rational Bearing of destination @@ -970,6 +1089,7 @@ 0x0019 GPSInfo Exif.GPSInfo.GPSDestDistanceRef + Ascii Reference for distance to destination @@ -978,6 +1098,7 @@ 0x001a GPSInfo Exif.GPSInfo.GPSDestDistance + Rational Distance to destination @@ -986,6 +1107,7 @@ 0x001b GPSInfo Exif.GPSInfo.GPSProcessingMethod + Undefined Name of GPS processing method @@ -994,6 +1116,7 @@ 0x001c GPSInfo Exif.GPSInfo.GPSAreaInformation + Undefined Name of GPS area @@ -1002,6 +1125,7 @@ 0x001d GPSInfo Exif.GPSInfo.GPSDateStamp + Ascii GPS date @@ -1010,6 +1134,7 @@ 0x001e GPSInfo Exif.GPSInfo.GPSDifferential + Short GPS differential correction diff --git a/doc/tags.xsl b/doc/tags.xsl index 294324ae..7b5fe356 100644 --- a/doc/tags.xsl +++ b/doc/tags.xsl @@ -53,10 +53,10 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - - - + + + @@ -65,12 +65,12 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - Tag name - Tag description - Tag (dec) Tag (hex) + Tag (dec) IFD Key + Type + Tag description @@ -92,12 +92,12 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - - - + + + @@ -107,7 +107,7 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> //read(value); } diff --git a/src/exif.hpp b/src/exif.hpp index 3ba55729..b50523eb 100644 --- a/src/exif.hpp +++ b/src/exif.hpp @@ -141,9 +141,10 @@ namespace Exiv2 { */ void setValue(const Value* pValue); /*! - @brief Set the value to the string \em value. - Uses Value::read(const std::string&). If the %Exifdatum - does not have a value yet, then an AsciiValue is created. + @brief Set the value to the string \em value. Uses Value::read(const + std::string&). If the %Exifdatum does not have a Value yet, + then a %Value of the correct type for this %Exifdatum is + created. An AsciiValue is created for unknown tags. */ void setValue(const std::string& value); /*! diff --git a/src/exifcomment.cpp b/src/exifcomment.cpp index 51a94d46..f35b40c5 100644 --- a/src/exifcomment.cpp +++ b/src/exifcomment.cpp @@ -44,23 +44,25 @@ try { Exiv2::ExifData &exifData = image->exifData(); /* - Use Exiv2::CommentValue for Exif user comments. The format of the comment - string includes an optional charset specification at the beginning: + Exiv2 uses a CommentValue for Exif user comments. The format of the + comment string includes an optional charset specification at the beginning: [charset=["]Ascii|Jis|Unicode|Undefined["] ]comment Undefined is used as a default if the comment doesn't start with a charset definition. - Following are a few examples of valid comments. Only the last one is - written to the file. + Following are a few examples of valid comments. The last one is written to + the file. */ - Exiv2::CommentValue value("charset=Ascii An ASCII Exif comment added with Exiv2"); - value.read("charset=\"Unicode\" An Unicode Exif comment added with Exiv2"); - value.read("charset=\"Undefined\" An undefined Exif comment added with Exiv2"); - value.read("Another undefined Exif comment added with Exiv2"); - - exifData["Exif.Photo.UserComment"] = value; + exifData["Exif.Photo.UserComment"] + = "charset=\"Unicode\" An Unicode Exif comment added with Exiv2"; + exifData["Exif.Photo.UserComment"] + = "charset=\"Undefined\" An undefined Exif comment added with Exiv2"; + exifData["Exif.Photo.UserComment"] + = "Another undefined Exif comment added with Exiv2"; + exifData["Exif.Photo.UserComment"] + = "charset=Ascii An ASCII Exif comment added with Exiv2"; std::cout << "Writing user comment '" << exifData["Exif.Photo.UserComment"] diff --git a/src/exiv2.cpp b/src/exiv2.cpp index 00c15722..a0a3f4e4 100644 --- a/src/exiv2.cpp +++ b/src/exiv2.cpp @@ -726,7 +726,8 @@ namespace { try { Exiv2::ExifKey exifKey(key); metadataId = exif; - defaultType = Exiv2::asciiString; + defaultType = Exiv2::ExifTags::tagType(exifKey.tag(), + exifKey.ifdId()); } catch (const Exiv2::Error&) {} } diff --git a/src/fujimn.cpp b/src/fujimn.cpp index 3364b193..be940b8d 100644 --- a/src/fujimn.cpp +++ b/src/fujimn.cpp @@ -57,24 +57,28 @@ namespace Exiv2 { // Fujifilm MakerNote Tag Info const TagInfo FujiMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", "Fujifilm Makernote version", fujiIfdId, makerTags, printValue), - TagInfo(0x1000, "Quality", "Image quality setting", fujiIfdId, makerTags, printValue), - TagInfo(0x1001, "Sharpness", "Sharpness setting", fujiIfdId, makerTags, print0x1001), - TagInfo(0x1002, "WhiteBalance", "White balance setting", fujiIfdId, makerTags, print0x1002), - TagInfo(0x1003, "Color", "Chroma saturation setting", fujiIfdId, makerTags, print0x1003), - TagInfo(0x1004, "Tone", "Contrast setting", fujiIfdId, makerTags, print0x1004), - TagInfo(0x1010, "FlashMode", "Flash firing mode setting", fujiIfdId, makerTags, print0x1010), - TagInfo(0x1011, "FlashStrength", "Flash firing strength compensation setting", fujiIfdId, makerTags, printValue), - TagInfo(0x1020, "Macro", "Macro mode setting", fujiIfdId, makerTags, printOffOn), - TagInfo(0x1021, "FocusMode", "Focusing mode setting", fujiIfdId, makerTags, print0x1021), - TagInfo(0x1030, "SlowSync", "Slow synchro mode setting", fujiIfdId, makerTags, printOffOn), - TagInfo(0x1031, "PictureMode", "Picture mode setting", fujiIfdId, makerTags, print0x1031), - TagInfo(0x1100, "Continuous", "Continuous shooting or auto bracketing setting", fujiIfdId, makerTags, printOffOn), - TagInfo(0x1300, "BlurWarning", "Blur warning status", fujiIfdId, makerTags, printOffOn), - TagInfo(0x1301, "FocusWarning", "Auto Focus warning status", fujiIfdId, makerTags, printOffOn), - TagInfo(0x1302, "AeWarning", "Auto Exposure warning status", fujiIfdId, makerTags, printOffOn), + TagInfo(0x0000, "Version", "Fujifilm Makernote version", fujiIfdId, makerTags, undefined, printValue), + TagInfo(0x1000, "Quality", "Image quality setting", fujiIfdId, makerTags, asciiString, printValue), + TagInfo(0x1001, "Sharpness", "Sharpness setting", fujiIfdId, makerTags, unsignedShort, print0x1001), + TagInfo(0x1002, "WhiteBalance", "White balance setting", fujiIfdId, makerTags, unsignedShort, print0x1002), + TagInfo(0x1003, "Color", "Chroma saturation setting", fujiIfdId, makerTags, unsignedShort, print0x1003), + TagInfo(0x1004, "Tone", "Contrast setting", fujiIfdId, makerTags, unsignedShort, print0x1004), + TagInfo(0x1010, "FlashMode", "Flash firing mode setting", fujiIfdId, makerTags, unsignedShort, print0x1010), + TagInfo(0x1011, "FlashStrength", "Flash firing strength compensation setting", fujiIfdId, makerTags, signedRational, printValue), + TagInfo(0x1020, "Macro", "Macro mode setting", fujiIfdId, makerTags, unsignedShort, printOffOn), + TagInfo(0x1021, "FocusMode", "Focusing mode setting", fujiIfdId, makerTags, unsignedShort, print0x1021), + TagInfo(0x1022, "0x1022", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue), + TagInfo(0x1030, "SlowSync", "Slow synchro mode setting", fujiIfdId, makerTags, unsignedShort, printOffOn), + TagInfo(0x1031, "PictureMode", "Picture mode setting", fujiIfdId, makerTags, unsignedShort, print0x1031), + TagInfo(0x1032, "0x1032", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue), + TagInfo(0x1100, "Continuous", "Continuous shooting or auto bracketing setting", fujiIfdId, makerTags, unsignedShort, printOffOn), + TagInfo(0x1101, "0x1101", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue), + TagInfo(0x1200, "0x1200", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue), + TagInfo(0x1300, "BlurWarning", "Blur warning status", fujiIfdId, makerTags, unsignedShort, printOffOn), + TagInfo(0x1301, "FocusWarning", "Auto Focus warning status", fujiIfdId, makerTags, unsignedShort, printOffOn), + TagInfo(0x1302, "AeWarning", "Auto Exposure warning status", fujiIfdId, makerTags, unsignedShort, printOffOn), // End of list marker - TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "Unknown FujiMakerNote tag", fujiIfdId, makerTags, printValue) + TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "Unknown FujiMakerNote tag", fujiIfdId, makerTags, invalidTypeId, printValue) }; FujiMakerNote::FujiMakerNote(bool alloc) diff --git a/src/nikonmn.cpp b/src/nikonmn.cpp index af6c98a3..61e7a83c 100644 --- a/src/nikonmn.cpp +++ b/src/nikonmn.cpp @@ -56,22 +56,24 @@ namespace Exiv2 { // Nikon1 MakerNote Tag Info const TagInfo Nikon1MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", "Nikon Makernote version", nikon1IfdId, makerTags, printValue), - TagInfo(0x0002, "ISOSpeed", "ISO speed setting", nikon1IfdId, makerTags, print0x0002), - TagInfo(0x0003, "ColorMode", "Color mode", nikon1IfdId, makerTags, printValue), - TagInfo(0x0004, "Quality", "Image quality setting", nikon1IfdId, makerTags, printValue), - TagInfo(0x0005, "WhiteBalance", "White balance", nikon1IfdId, makerTags, printValue), - TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon1IfdId, makerTags, printValue), - TagInfo(0x0007, "Focus", "Focus mode", nikon1IfdId, makerTags, print0x0007), - TagInfo(0x0008, "Flash", "Flash mode", nikon1IfdId, makerTags, printValue), - TagInfo(0x000f, "ISOSelection", "ISO selection", nikon1IfdId, makerTags, printValue), - TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon1IfdId, makerTags, printValue), - TagInfo(0x0082, "Adapter", "Adapter used", nikon1IfdId, makerTags, printValue), - TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon1IfdId, makerTags, print0x0085), - TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon1IfdId, makerTags, print0x0086), - TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon1IfdId, makerTags, print0x0088), + TagInfo(0x0001, "Version", "Nikon Makernote version", nikon1IfdId, makerTags, undefined, printValue), + TagInfo(0x0002, "ISOSpeed", "ISO speed setting", nikon1IfdId, makerTags, unsignedShort, print0x0002), + TagInfo(0x0003, "ColorMode", "Color mode", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0004, "Quality", "Image quality setting", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0005, "WhiteBalance", "White balance", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0007, "Focus", "Focus mode", nikon1IfdId, makerTags, asciiString, print0x0007), + TagInfo(0x0008, "Flash", "Flash mode", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x000a, "0x000a", "Unknown", nikon1IfdId, makerTags, unsignedRational, printValue), + TagInfo(0x000f, "ISOSelection", "ISO selection", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0010, "DataDump", "Data dump", nikon1IfdId, makerTags, undefined, printValue), + TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0082, "Adapter", "Adapter used", nikon1IfdId, makerTags, asciiString, printValue), + TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon1IfdId, makerTags, unsignedRational, print0x0085), + TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon1IfdId, makerTags, unsignedRational, print0x0086), + TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon1IfdId, makerTags, undefined, print0x0088), // End of list marker - TagInfo(0xffff, "(UnknownNikon1MnTag)", "Unknown Nikon1MakerNote tag", nikon1IfdId, makerTags, printValue) + TagInfo(0xffff, "(UnknownNikon1MnTag)", "Unknown Nikon1MakerNote tag", nikon1IfdId, makerTags, invalidTypeId, printValue) }; Nikon1MakerNote::Nikon1MakerNote(bool alloc) @@ -191,16 +193,19 @@ namespace Exiv2 { // Nikon2 MakerNote Tag Info const TagInfo Nikon2MakerNote::tagInfo_[] = { - TagInfo(0x0003, "Quality", "Image quality setting", nikon2IfdId, makerTags, print0x0003), - TagInfo(0x0004, "ColorMode", "Color mode", nikon2IfdId, makerTags, print0x0004), - TagInfo(0x0005, "ImageAdjustment", "Image adjustment setting", nikon2IfdId, makerTags, print0x0005), - TagInfo(0x0006, "ISOSpeed", "ISO speed setting", nikon2IfdId, makerTags, print0x0006), - TagInfo(0x0007, "WhiteBalance", "White balance", nikon2IfdId, makerTags, print0x0007), - TagInfo(0x0008, "Focus", "Focus mode", nikon2IfdId, makerTags, printValue), - TagInfo(0x000a, "DigitalZoom", "Digital zoom setting", nikon2IfdId, makerTags, print0x000a), - TagInfo(0x000b, "Adapter", "Adapter used", nikon2IfdId, makerTags, printValue), + TagInfo(0x0002, "0x0002", "Unknown", nikon2IfdId, makerTags, asciiString, printValue), + TagInfo(0x0003, "Quality", "Image quality setting", nikon2IfdId, makerTags, unsignedShort, print0x0003), + TagInfo(0x0004, "ColorMode", "Color mode", nikon2IfdId, makerTags, unsignedShort, print0x0004), + TagInfo(0x0005, "ImageAdjustment", "Image adjustment setting", nikon2IfdId, makerTags, unsignedShort, print0x0005), + TagInfo(0x0006, "ISOSpeed", "ISO speed setting", nikon2IfdId, makerTags, unsignedShort, print0x0006), + TagInfo(0x0007, "WhiteBalance", "White balance", nikon2IfdId, makerTags, unsignedShort, print0x0007), + TagInfo(0x0008, "Focus", "Focus mode", nikon2IfdId, makerTags, unsignedRational, printValue), + TagInfo(0x0009, "0x0009", "Unknown", nikon2IfdId, makerTags, asciiString, printValue), + TagInfo(0x000a, "DigitalZoom", "Digital zoom setting", nikon2IfdId, makerTags, unsignedRational, print0x000a), + TagInfo(0x000b, "Adapter", "Adapter used", nikon2IfdId, makerTags, unsignedShort, printValue), + TagInfo(0x0f00, "0x0f00", "Unknown", nikon2IfdId, makerTags, unsignedLong, printValue), // End of list marker - TagInfo(0xffff, "(UnknownNikon2MnTag)", "Unknown Nikon2MakerNote tag", nikon2IfdId, makerTags, printValue) + TagInfo(0xffff, "(UnknownNikon2MnTag)", "Unknown Nikon2MakerNote tag", nikon2IfdId, makerTags, invalidTypeId, printValue) }; Nikon2MakerNote::Nikon2MakerNote(bool alloc) @@ -363,54 +368,68 @@ namespace Exiv2 { // Nikon3 MakerNote Tag Info const TagInfo Nikon3MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", "Nikon Makernote version", nikon3IfdId, makerTags, printValue), - TagInfo(0x0002, "ISOSpeed", "ISO speed used", nikon3IfdId, makerTags, print0x0002), - TagInfo(0x0003, "ColorMode", "Color mode", nikon3IfdId, makerTags, printValue), - TagInfo(0x0004, "Quality", "Image quality setting", nikon3IfdId, makerTags, printValue), - TagInfo(0x0005, "WhiteBalance", "White balance", nikon3IfdId, makerTags, printValue), - TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon3IfdId, makerTags, printValue), - TagInfo(0x0007, "Focus", "Focus mode", nikon3IfdId, makerTags, printValue), - TagInfo(0x0008, "FlashSetting", "Flash setting", nikon3IfdId, makerTags, printValue), - TagInfo(0x0009, "FlashMode", "Flash mode", nikon3IfdId, makerTags, printValue), - TagInfo(0x000b, "WhiteBalanceBias", "White balance bias", nikon3IfdId, makerTags, printValue), - TagInfo(0x000c, "ColorBalance1", "Color balance 1", nikon3IfdId, makerTags, printValue), - TagInfo(0x000e, "ExposureDiff", "Exposure difference", nikon3IfdId, makerTags, printValue), - TagInfo(0x000f, "ISOSelection", "ISO selection", nikon3IfdId, makerTags, printValue), - TagInfo(0x000b, "DataDump", "Data dump", nikon3IfdId, makerTags, printValue), - TagInfo(0x0011, "ThumbOffset", "Thumbnail IFD offset", nikon3IfdId, makerTags, printValue), - TagInfo(0x0012, "FlashComp", "Flash compensation setting", nikon3IfdId, makerTags, print0x0012), - TagInfo(0x0013, "ISOSetting", "ISO speed setting", nikon3IfdId, makerTags, print0x0002), // use 0x0002 print fct - TagInfo(0x0016, "ImageBoundry", "Image boundry", nikon3IfdId, makerTags, printValue), - TagInfo(0x0018, "FlashBracketComp", "Flash bracket compensation applied", nikon3IfdId, makerTags, print0x0012), // use 0x0012 print fct - TagInfo(0x0019, "ExposureBracketComp", "AE bracket compensation applied", nikon3IfdId, makerTags, printValue), - TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon3IfdId, makerTags, printValue), - TagInfo(0x0081, "ToneComp", "Tone compensation setting (contrast)", nikon3IfdId, makerTags, printValue), - TagInfo(0x0082, "AuxiliaryLens", "Auxiliary lens (adapter)", nikon3IfdId, makerTags, printValue), - TagInfo(0x0083, "LensType", "Lens type", nikon3IfdId, makerTags, printValue), - TagInfo(0x0084, "Lens", "Lens", nikon3IfdId, makerTags, print0x0084), - TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon3IfdId, makerTags, printValue), - TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon3IfdId, makerTags, printValue), - TagInfo(0x0087, "FlashType", "Type of flash used", nikon3IfdId, makerTags, print0x0087), - TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon3IfdId, makerTags, print0x0088), - TagInfo(0x0089, "Bracketing", "Bracketing", nikon3IfdId, makerTags, print0x0089), - TagInfo(0x008c, "NEFCurve1", "NEF curve 1", nikon3IfdId, makerTags, printValue), - TagInfo(0x008d, "ColorMode", "Color mode", nikon3IfdId, makerTags, printValue), - TagInfo(0x008f, "SceneMode", "Scene mode", nikon3IfdId, makerTags, printValue), - TagInfo(0x0090, "LightingType", "Lighting type", nikon3IfdId, makerTags, printValue), - TagInfo(0x0092, "HueAdjustment", "Hue adjustment", nikon3IfdId, makerTags, printValue), - TagInfo(0x0094, "Saturation", "Saturation adjustment", nikon3IfdId, makerTags, printValue), - TagInfo(0x0095, "NoiseReduction", "Noise reduction", nikon3IfdId, makerTags, printValue), - TagInfo(0x0096, "NEFCurve2", "NEF curve 2", nikon3IfdId, makerTags, printValue), - TagInfo(0x0097, "ColorBalance2", "Color balance 2", nikon3IfdId, makerTags, printValue), - TagInfo(0x0099, "NEFThumbnailSize", "NEF thumbnail size", nikon3IfdId, makerTags, printValue), - TagInfo(0x00a0, "SerialNumber", "Camera serial number", nikon3IfdId, makerTags, printValue), - TagInfo(0x00a7, "ShutterCount", "Number of shots taken by camera", nikon3IfdId, makerTags, printValue), - TagInfo(0x00a9, "ImageOptimization", "Image optimization", nikon3IfdId, makerTags, printValue), - TagInfo(0x00aa, "Saturation", "Saturation", nikon3IfdId, makerTags, printValue), - TagInfo(0x00ab, "VariProgram", "Vari program", nikon3IfdId, makerTags, printValue), - TagInfo(0x0e00, "PrintIM", "Print image matching", nikon3IfdId, makerTags, printValue), + TagInfo(0x0001, "Version", "Nikon Makernote version", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x0002, "ISOSpeed", "ISO speed used", nikon3IfdId, makerTags, unsignedShort, print0x0002), + TagInfo(0x0003, "ColorMode", "Color mode", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0004, "Quality", "Image quality setting", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0005, "WhiteBalance", "White balance", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0007, "Focus", "Focus mode", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0008, "FlashSetting", "Flash setting", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0009, "FlashMode", "Flash mode", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x000b, "WhiteBalanceBias", "White balance bias", nikon3IfdId, makerTags, signedShort, printValue), +// TagInfo(0x000c, "ColorBalance1", "Color balance 1", nikon3IfdId, makerTags, xxx, printValue), + TagInfo(0x000d, "0x000d", "Unknown", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x000e, "ExposureDiff", "Exposure difference", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x000f, "ISOSelection", "ISO selection", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0010, "DataDump", "Data dump", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x0011, "ThumbOffset", "Thumbnail IFD offset", nikon3IfdId, makerTags, unsignedLong, printValue), + TagInfo(0x0012, "FlashComp", "Flash compensation setting", nikon3IfdId, makerTags, undefined, print0x0012), + TagInfo(0x0013, "ISOSetting", "ISO speed setting", nikon3IfdId, makerTags, unsignedShort, print0x0002), // use 0x0002 print fct + TagInfo(0x0016, "ImageBoundry", "Image boundry", nikon3IfdId, makerTags, unsignedShort, printValue), + TagInfo(0x0017, "0x0017", "Unknown", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x0018, "FlashBracketComp", "Flash bracket compensation applied", nikon3IfdId, makerTags, undefined, print0x0012), // use 0x0012 print fct + TagInfo(0x0019, "ExposureBracketComp", "AE bracket compensation applied", nikon3IfdId, makerTags, signedRational, printValue), + TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0081, "ToneComp", "Tone compensation setting (contrast)", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0082, "AuxiliaryLens", "Auxiliary lens (adapter)", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0083, "LensType", "Lens type", nikon3IfdId, makerTags, unsignedByte, printValue), + TagInfo(0x0084, "Lens", "Lens", nikon3IfdId, makerTags, unsignedRational, print0x0084), + TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon3IfdId, makerTags, unsignedRational, printValue), + TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon3IfdId, makerTags, unsignedRational, printValue), + TagInfo(0x0087, "FlashType", "Type of flash used", nikon3IfdId, makerTags, unsignedByte, print0x0087), + TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon3IfdId, makerTags, undefined, print0x0088), + TagInfo(0x0089, "Bracketing", "Bracketing", nikon3IfdId, makerTags, unsignedShort, print0x0089), + TagInfo(0x008a, "0x008a", "Unknown", nikon3IfdId, makerTags, unsignedShort, printValue), + TagInfo(0x008b, "0x008b", "Unknown", nikon3IfdId, makerTags, undefined, printValue), +// TagInfo(0x008c, "NEFCurve1", "NEF curve 1", nikon3IfdId, makerTags, xxx, printValue), + TagInfo(0x008d, "ColorMode", "Color mode", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x008f, "SceneMode", "Scene mode", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0090, "LightingType", "Lighting type", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x0091, "0x0091", "Unknown", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x0092, "HueAdjustment", "Hue adjustment", nikon3IfdId, makerTags, signedShort, printValue), + TagInfo(0x0094, "Saturation", "Saturation adjustment", nikon3IfdId, makerTags, signedShort, printValue), + TagInfo(0x0095, "NoiseReduction", "Noise reduction", nikon3IfdId, makerTags, asciiString, printValue), +// TagInfo(0x0096, "NEFCurve2", "NEF curve 2", nikon3IfdId, makerTags, xxx, printValue), + TagInfo(0x0097, "ColorBalance2", "Color balance 2", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x0098, "0x0098", "Unknown", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x0099, "NEFThumbnailSize", "NEF thumbnail size", nikon3IfdId, makerTags, unsignedShort, printValue), + TagInfo(0x009a, "0x009a", "Unknown", nikon3IfdId, makerTags, unsignedRational, printValue), + TagInfo(0x009b, "0x009b", "Unknown", nikon3IfdId, makerTags, unsignedShort, printValue), + TagInfo(0x009f, "0x009f", "Unknown", nikon3IfdId, makerTags, signedShort, printValue), + TagInfo(0x00a0, "SerialNumber", "Camera serial number", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x00a2, "0x00a2", "Unknown", nikon3IfdId, makerTags, unsignedLong, printValue), + TagInfo(0x00a3, "0x00a3", "Unknown", nikon3IfdId, makerTags, unsignedByte, printValue), + TagInfo(0x00a5, "0x00a5", "Unknown", nikon3IfdId, makerTags, unsignedLong, printValue), + TagInfo(0x00a6, "0x00a6", "Unknown", nikon3IfdId, makerTags, unsignedLong, printValue), + TagInfo(0x00a7, "ShutterCount", "Number of shots taken by camera", nikon3IfdId, makerTags, unsignedLong, printValue), + TagInfo(0x00a8, "0x00a8", "Unknown", nikon3IfdId, makerTags, undefined, printValue), + TagInfo(0x00a9, "ImageOptimization", "Image optimization", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x00aa, "Saturation", "Saturation", nikon3IfdId, makerTags, asciiString, printValue), + TagInfo(0x00ab, "VariProgram", "Vari program", nikon3IfdId, makerTags, asciiString, printValue), +// TagInfo(0x0e00, "PrintIM", "Print image matching", nikon3IfdId, makerTags, xxx, printValue), // End of list marker - TagInfo(0xffff, "(UnknownNikon3MnTag)", "Unknown Nikon3MakerNote tag", nikon3IfdId, makerTags, printValue) + TagInfo(0xffff, "(UnknownNikon3MnTag)", "Unknown Nikon3MakerNote tag", nikon3IfdId, makerTags, invalidTypeId, printValue) }; Nikon3MakerNote::Nikon3MakerNote(bool alloc) diff --git a/src/sigmamn.cpp b/src/sigmamn.cpp index 0b0264fe..c25d5c63 100644 --- a/src/sigmamn.cpp +++ b/src/sigmamn.cpp @@ -55,31 +55,31 @@ namespace Exiv2 { // Sigma (Foveon) MakerNote Tag Info const TagInfo SigmaMakerNote::tagInfo_[] = { - TagInfo(0x0002, "SerialNumber", "Camera serial number", sigmaIfdId, makerTags, printValue), - TagInfo(0x0003, "DriveMode", "Drive Mode", sigmaIfdId, makerTags, printValue), - TagInfo(0x0004, "ResolutionMode", "Resolution Mode", sigmaIfdId, makerTags, printValue), - TagInfo(0x0005, "AutofocusMode", "Autofocus mode", sigmaIfdId, makerTags, printValue), - TagInfo(0x0006, "FocusSetting", "Focus setting", sigmaIfdId, makerTags, printValue), - TagInfo(0x0007, "WhiteBalance", "White balance", sigmaIfdId, makerTags, printValue), - TagInfo(0x0008, "ExposureMode", "Exposure mode", sigmaIfdId, makerTags, print0x0008), - TagInfo(0x0009, "MeteringMode", "Metering mode", sigmaIfdId, makerTags, print0x0009), - TagInfo(0x000a, "LensRange", "Lens focal length range", sigmaIfdId, makerTags, printValue), - TagInfo(0x000b, "ColorSpace", "Color space", sigmaIfdId, makerTags, printValue), - TagInfo(0x000c, "Exposure", "Exposure", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x000d, "Contrast", "Contrast", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x000e, "Shadow", "Shadow", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x000f, "Highlight", "Highlight", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x0010, "Saturation", "Saturation", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x0011, "Sharpness", "Sharpness", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x0012, "FillLight", "X3 Fill light", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x0014, "ColorAdjustment", "Color adjustment", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x0015, "AdjustmentMode", "Adjustment mode", sigmaIfdId, makerTags, printValue), - TagInfo(0x0016, "Quality", "Quality", sigmaIfdId, makerTags, printStripLabel), - TagInfo(0x0017, "Firmware", "Firmware", sigmaIfdId, makerTags, printValue), - TagInfo(0x0018, "Software", "Software", sigmaIfdId, makerTags, printValue), - TagInfo(0x0019, "AutoBracket", "Auto bracket", sigmaIfdId, makerTags, printValue), + TagInfo(0x0002, "SerialNumber", "Camera serial number", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0003, "DriveMode", "Drive Mode", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0004, "ResolutionMode", "Resolution Mode", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0005, "AutofocusMode", "Autofocus mode", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0006, "FocusSetting", "Focus setting", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0007, "WhiteBalance", "White balance", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0008, "ExposureMode", "Exposure mode", sigmaIfdId, makerTags, asciiString, print0x0008), + TagInfo(0x0009, "MeteringMode", "Metering mode", sigmaIfdId, makerTags, asciiString, print0x0009), + TagInfo(0x000a, "LensRange", "Lens focal length range", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x000b, "ColorSpace", "Color space", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x000c, "Exposure", "Exposure", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x000d, "Contrast", "Contrast", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x000e, "Shadow", "Shadow", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x000f, "Highlight", "Highlight", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x0010, "Saturation", "Saturation", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x0011, "Sharpness", "Sharpness", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x0012, "FillLight", "X3 Fill light", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x0014, "ColorAdjustment", "Color adjustment", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x0015, "AdjustmentMode", "Adjustment mode", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0016, "Quality", "Quality", sigmaIfdId, makerTags, asciiString, printStripLabel), + TagInfo(0x0017, "Firmware", "Firmware", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0018, "Software", "Software", sigmaIfdId, makerTags, asciiString, printValue), + TagInfo(0x0019, "AutoBracket", "Auto bracket", sigmaIfdId, makerTags, asciiString, printValue), // End of list marker - TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "Unknown SigmaMakerNote tag", sigmaIfdId, makerTags, printValue) + TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "Unknown SigmaMakerNote tag", sigmaIfdId, makerTags, invalidTypeId, printValue) }; SigmaMakerNote::SigmaMakerNote(bool alloc) diff --git a/src/tags.cpp b/src/tags.cpp index b9371e78..6126fed9 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -106,164 +106,165 @@ namespace Exiv2 { const char* desc, IfdId ifdId, SectionId sectionId, + TypeId typeId, PrintFct printFct ) : tag_(tag), name_(name), desc_(desc), ifdId_(ifdId), - sectionId_(sectionId), printFct_(printFct) + sectionId_(sectionId), typeId_(typeId), printFct_(printFct) { } // Base IFD Tags (IFD0 and IFD1) static const TagInfo ifdTagInfo[] = { - TagInfo(0x0100, "ImageWidth", "Image width", ifd0Id, imgStruct, printValue), - TagInfo(0x0101, "ImageLength", "Image height", ifd0Id, imgStruct, printValue), - TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0Id, imgStruct, printValue), - TagInfo(0x0103, "Compression", "Compression scheme", ifd0Id, imgStruct, print0x0103), - TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0Id, imgStruct, print0x0106), - TagInfo(0x010e, "ImageDescription", "Image title", ifd0Id, otherTags, printValue), - TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0Id, otherTags, printValue), - TagInfo(0x0110, "Model", "Model of image input equipment", ifd0Id, otherTags, printValue), - TagInfo(0x0111, "StripOffsets", "Image data location", ifd0Id, recOffset, printValue), - TagInfo(0x0112, "Orientation", "Orientation of image", ifd0Id, imgStruct, print0x0112), - TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0Id, imgStruct, printValue), - TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0Id, recOffset, printValue), - TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0Id, recOffset, printValue), - TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0Id, imgStruct, printLong), - TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0Id, imgStruct, printLong), - TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0Id, imgStruct, printValue), - TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0Id, imgStruct, printUnit), - TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0Id, imgCharacter, printValue), - TagInfo(0x0131, "Software", "Software used", ifd0Id, otherTags, printValue), - TagInfo(0x0132, "DateTime", "File change date and time", ifd0Id, otherTags, printValue), - TagInfo(0x013b, "Artist", "Person who created the image", ifd0Id, otherTags, printValue), - TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0Id, imgCharacter, printValue), - TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0Id, imgCharacter, printValue), - TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0Id, recOffset, printValue), - TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0Id, recOffset, printValue), - TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0Id, imgCharacter, printValue), - TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0Id, imgStruct, printValue), - TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0Id, imgStruct, print0x0213), - TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0Id, imgCharacter, printValue), - TagInfo(0x8298, "Copyright", "Copyright holder", ifd0Id, otherTags, print0x8298), - TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0Id, exifFormat, printValue), - TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0Id, exifFormat, printValue), + TagInfo(0x0100, "ImageWidth", "Image width", ifd0Id, imgStruct, unsignedLong, printValue), + TagInfo(0x0101, "ImageLength", "Image height", ifd0Id, imgStruct, unsignedLong, printValue), + TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0Id, imgStruct, unsignedShort, printValue), + TagInfo(0x0103, "Compression", "Compression scheme", ifd0Id, imgStruct, unsignedShort, print0x0103), + TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0Id, imgStruct, unsignedShort, print0x0106), + TagInfo(0x010e, "ImageDescription", "Image title", ifd0Id, otherTags, asciiString, printValue), + TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0Id, otherTags, asciiString, printValue), + TagInfo(0x0110, "Model", "Model of image input equipment", ifd0Id, otherTags, asciiString, printValue), + TagInfo(0x0111, "StripOffsets", "Image data location", ifd0Id, recOffset, unsignedLong, printValue), + TagInfo(0x0112, "Orientation", "Orientation of image", ifd0Id, imgStruct, unsignedShort, print0x0112), + TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0Id, imgStruct, unsignedShort, printValue), + TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0Id, recOffset, unsignedLong, printValue), + TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0Id, recOffset, unsignedLong, printValue), + TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0Id, imgStruct, unsignedRational, printLong), + TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0Id, imgStruct, unsignedRational, printLong), + TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0Id, imgStruct, unsignedShort, printValue), + TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0Id, imgStruct, unsignedShort, printUnit), + TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0Id, imgCharacter, unsignedShort, printValue), + TagInfo(0x0131, "Software", "Software used", ifd0Id, otherTags, asciiString, printValue), + TagInfo(0x0132, "DateTime", "File change date and time", ifd0Id, otherTags, asciiString, printValue), + TagInfo(0x013b, "Artist", "Person who created the image", ifd0Id, otherTags, asciiString, printValue), + TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0Id, imgCharacter, unsignedRational, printValue), + TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0Id, imgCharacter, unsignedRational, printValue), + TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0Id, recOffset, unsignedLong, printValue), + TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0Id, recOffset, unsignedLong, printValue), + TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0Id, imgCharacter, unsignedRational, printValue), + TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0Id, imgStruct, unsignedShort, printValue), + TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0Id, imgStruct, unsignedShort, print0x0213), + TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0Id, imgCharacter, unsignedRational, printValue), + TagInfo(0x8298, "Copyright", "Copyright holder", ifd0Id, otherTags, asciiString, print0x8298), + TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0Id, exifFormat, unsignedLong, printValue), + TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0Id, exifFormat, unsignedLong, printValue), // 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 static const TagInfo exifTagInfo[] = { - TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfdId, captureCond, print0x829a), - TagInfo(0x829d, "FNumber", "F number", exifIfdId, captureCond, print0x829d), - TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfdId, captureCond, print0x8822), - TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfdId, captureCond, printValue), - TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfdId, captureCond, print0x8827), - TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfdId, captureCond, printValue), - TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfdId, exifVersion, printValue), - TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfdId, dateTime, printValue), - TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfdId, dateTime, printValue), - TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfdId, imgConfig, print0x9101), - TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfdId, imgConfig, printFloat), - TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfdId, captureCond, printFloat), - TagInfo(0x9202, "ApertureValue", "Aperture", exifIfdId, captureCond, printFloat), - TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfdId, captureCond, printFloat), - TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfdId, captureCond, print0x9204), - TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfdId, captureCond, printFloat), - TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfdId, captureCond, print0x9206), - TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfdId, captureCond, print0x9207), - TagInfo(0x9208, "LightSource", "Light source", exifIfdId, captureCond, print0x9208), - TagInfo(0x9209, "Flash", "Flash", exifIfdId, captureCond, print0x9209), - TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfdId, captureCond, print0x920a), - TagInfo(0x9214, "SubjectArea", "Subject area", exifIfdId, captureCond, printValue), - TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfdId, userInfo, printValue), - TagInfo(0x9286, "UserComment", "User comments", exifIfdId, userInfo, print0x9286), - TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfdId, dateTime, printValue), - TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfdId, dateTime, printValue), - TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfdId, dateTime, printValue), - TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfdId, exifVersion, printValue), - TagInfo(0xa001, "ColorSpace", "Color space information", exifIfdId, imgCharacter, print0xa001), - TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfdId, imgConfig, printValue), - TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfdId, imgConfig, printValue), - TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfdId, relatedFile, printValue), - TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfdId, exifFormat, printValue), - TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfdId, captureCond, printValue), - TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfdId, captureCond, printValue), - TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfdId, captureCond, printFloat), - TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfdId, captureCond, printFloat), - TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfdId, captureCond, printUnit), - TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfdId, captureCond, printValue), - TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfdId, captureCond, printValue), - TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfdId, captureCond, print0xa217), - TagInfo(0xa300, "FileSource", "File source", exifIfdId, captureCond, print0xa300), - TagInfo(0xa301, "SceneType", "Scene type", exifIfdId, captureCond, print0xa301), - TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfdId, captureCond, printValue), - TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfdId, captureCond, printValue), - TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfdId, captureCond, print0xa402), - TagInfo(0xa403, "WhiteBalance", "White balance", exifIfdId, captureCond, print0xa403), - TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfdId, captureCond, print0xa404), - TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfdId, captureCond, print0xa405), - TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfdId, captureCond, print0xa406), - TagInfo(0xa407, "GainControl", "Gain control", exifIfdId, captureCond, print0xa407), - TagInfo(0xa408, "Contrast", "Contrast", exifIfdId, captureCond, print0xa408), - TagInfo(0xa409, "Saturation", "Saturation", exifIfdId, captureCond, print0xa409), - TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfdId, captureCond, print0xa40a), - TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfdId, captureCond, printValue), - TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfdId, captureCond, print0xa40c), - TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfdId, otherTags, printValue), + TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfdId, captureCond, unsignedRational, print0x829a), + TagInfo(0x829d, "FNumber", "F number", exifIfdId, captureCond, unsignedRational, print0x829d), + TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfdId, captureCond, unsignedShort, print0x8822), + TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfdId, captureCond, asciiString, printValue), + TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfdId, captureCond, unsignedShort, print0x8827), + TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfdId, captureCond, undefined, printValue), + TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfdId, exifVersion, undefined, 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, asciiString, printValue), + TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfdId, imgConfig, undefined, print0x9101), + TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfdId, imgConfig, unsignedRational, printFloat), + TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfdId, captureCond, signedRational, printFloat), + TagInfo(0x9202, "ApertureValue", "Aperture", exifIfdId, captureCond, unsignedRational, printFloat), + TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfdId, captureCond, signedRational, printFloat), + TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfdId, captureCond, signedRational, print0x9204), + TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfdId, captureCond, unsignedRational, printFloat), + TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfdId, captureCond, unsignedRational, print0x9206), + TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfdId, captureCond, unsignedShort, print0x9207), + TagInfo(0x9208, "LightSource", "Light source", exifIfdId, captureCond, unsignedShort, print0x9208), + TagInfo(0x9209, "Flash", "Flash", exifIfdId, captureCond, unsignedShort, print0x9209), + TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfdId, captureCond, unsignedRational, print0x920a), + TagInfo(0x9214, "SubjectArea", "Subject area", exifIfdId, captureCond, unsignedShort, printValue), + TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfdId, userInfo, undefined, printValue), + TagInfo(0x9286, "UserComment", "User comments", exifIfdId, userInfo, comment, print0x9286), + TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfdId, dateTime, asciiString, printValue), + TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfdId, dateTime, asciiString, printValue), + TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfdId, dateTime, asciiString, printValue), + TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfdId, exifVersion, undefined, printValue), + TagInfo(0xa001, "ColorSpace", "Color space information", exifIfdId, imgCharacter, unsignedShort, print0xa001), + TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfdId, imgConfig, unsignedLong, printValue), + TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfdId, imgConfig, unsignedLong, printValue), + TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfdId, relatedFile, asciiString, printValue), + TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfdId, exifFormat, unsignedLong, printValue), + TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfdId, captureCond, unsignedRational, printValue), + TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfdId, captureCond, undefined, printValue), + TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfdId, captureCond, unsignedRational, printFloat), + TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfdId, captureCond, unsignedRational, printFloat), + TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfdId, captureCond, unsignedShort, printUnit), + TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfdId, captureCond, unsignedShort, printValue), + TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfdId, captureCond, unsignedRational, printValue), + TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfdId, captureCond, unsignedShort, print0xa217), + TagInfo(0xa300, "FileSource", "File source", exifIfdId, captureCond, undefined, print0xa300), + TagInfo(0xa301, "SceneType", "Scene type", exifIfdId, captureCond, undefined, print0xa301), + TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfdId, captureCond, undefined, printValue), + TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfdId, captureCond, unsignedShort, printValue), + TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfdId, captureCond, unsignedShort, print0xa402), + TagInfo(0xa403, "WhiteBalance", "White balance", exifIfdId, captureCond, unsignedShort, print0xa403), + TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfdId, captureCond, unsignedRational, print0xa404), + TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfdId, captureCond, unsignedShort, print0xa405), + TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfdId, captureCond, unsignedShort, print0xa406), + TagInfo(0xa407, "GainControl", "Gain control", exifIfdId, captureCond, unsignedRational, print0xa407), + TagInfo(0xa408, "Contrast", "Contrast", exifIfdId, captureCond, unsignedShort, print0xa408), + TagInfo(0xa409, "Saturation", "Saturation", exifIfdId, captureCond, unsignedShort, print0xa409), + TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfdId, captureCond, unsignedShort, print0xa40a), + TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfdId, captureCond, undefined, printValue), + TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfdId, captureCond, unsignedShort, print0xa40c), + TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfdId, otherTags, asciiString, printValue), // 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 static const TagInfo gpsTagInfo[] = { - TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfdId, gpsTags, printValue), - TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfdId, gpsTags, printValue), - TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfdId, gpsTags, printValue), - TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfdId, gpsTags, printValue), - TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfdId, gpsTags, printValue), - TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfdId, gpsTags, printValue), - TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfdId, gpsTags, printValue), - TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfdId, gpsTags, printValue), - TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfdId, gpsTags, printValue), - TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfdId, gpsTags, printValue), - TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfdId, gpsTags, printValue), - TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfdId, gpsTags, printValue), - TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfdId, gpsTags, printValue), - TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfdId, gpsTags, printValue), - TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfdId, gpsTags, printValue), - TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfdId, gpsTags, printValue), - TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfdId, gpsTags, printValue), - TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfdId, gpsTags, printValue), - TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfdId, gpsTags, printValue), - TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfdId, gpsTags, printValue), - TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfdId, gpsTags, printValue), - TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfdId, gpsTags, printValue), - TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfdId, gpsTags, printValue), - TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfdId, gpsTags, printValue), + TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfdId, gpsTags, unsignedByte, printValue), + TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfdId, gpsTags, unsignedByte, printValue), + TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfdId, gpsTags, unsignedRational, printValue), + TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfdId, gpsTags, undefined, printValue), + TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfdId, gpsTags, undefined, printValue), + TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfdId, gpsTags, asciiString, printValue), + TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfdId, gpsTags, unsignedShort, printValue), // 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 static const TagInfo iopTagInfo[] = { - TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfdId, iopTags, printValue), - TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfdId, iopTags, printValue), - TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfdId, iopTags, printValue), - TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfdId, iopTags, printValue), - TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfdId, iopTags, printValue), + TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfdId, iopTags, asciiString, printValue), + TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfdId, iopTags, undefined, printValue), + TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfdId, iopTags, asciiString, printValue), + TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfdId, iopTags, unsignedLong, printValue), + TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfdId, iopTags, unsignedLong, printValue), // 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 - 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; // 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)) { const TagInfo* tagInfo = makerTagInfo(tag, ifdId); - if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].name_; + if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].name_; } return ""; } // ExifTags::sectionName @@ -400,7 +401,7 @@ namespace Exiv2 { } if (isMakerIfd(ifdId)) { const TagInfo* tagInfo = makerTagInfo(tag, ifdId); - if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].desc_; + if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].desc_; } return ""; } // ExifTags::sectionDesc @@ -419,9 +420,6 @@ namespace Exiv2 { } } if (isMakerIfd(ifdId)) { - - - const TagInfo* tagInfo = makerTagInfo(tagName, ifdId); if (tagInfo != 0) tag = tagInfo->tag_; } @@ -468,6 +466,19 @@ namespace Exiv2 { 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, uint16_t tag, IfdId ifdId, @@ -659,6 +670,8 @@ namespace Exiv2 { << std::right << std::hex << ti.tag_ << ", " << ExifTags::ifdName(ti.ifdId_) << ", " << exifKey.key() << ", " + << TypeInfo::typeName( + ExifTags::tagType(ti.tag_, ti.ifdId_)) << ", " << ExifTags::tagDesc(ti.tag_, ti.ifdId_); } diff --git a/src/tags.hpp b/src/tags.hpp index 703d0527..76b2a041 100644 --- a/src/tags.hpp +++ b/src/tags.hpp @@ -97,6 +97,7 @@ namespace Exiv2 { const char* desc, IfdId ifdId, SectionId sectionId, + TypeId typeId, PrintFct printFct ); uint16_t tag_; //!< Tag @@ -104,6 +105,7 @@ namespace Exiv2 { const char* desc_; //!< Short tag description IfdId ifdId_; //!< Link to the (prefered) IFD SectionId sectionId_; //!< Section id + TypeId typeId_; //!< Type id PrintFct printFct_; //!< Pointer to tag print function }; // struct TagInfo @@ -177,6 +179,8 @@ namespace Exiv2 { static const char* sectionDesc(uint16_t tag, IfdId ifdId); //! Return the section id for a section name static SectionId sectionId(const std::string& sectionName); + //! Return the type for tag and IFD id + static TypeId tagType(uint16_t tag, IfdId ifdId); //! Interpret and print the value of an Exif tag static std::ostream& printTag(std::ostream& os, uint16_t tag, @@ -190,7 +194,6 @@ namespace Exiv2 { static void registerBaseTagInfo(IfdId ifdId); //! Register an %IfdId and %TagInfo list for a makernote static void registerMakerTagInfo(IfdId ifdId, const TagInfo* tagInfo); - /*! @brief Return true if \em ifdId is an %Ifd Id which is registered as a makernote %Ifd id. Note: Calling this function with diff --git a/src/write2-test.cpp b/src/write2-test.cpp index e8ccefe6..32fe400c 100644 --- a/src/write2-test.cpp +++ b/src/write2-test.cpp @@ -109,13 +109,13 @@ try { std::cout <<"\n----- One IOP tag\n"; Exiv2::ExifData ed3; - ed3["Exif.Iop.InteroperabilityVersion"] = "Test 3"; + ed3["Exif.Iop.InteroperabilityIndex"] = "Test 3"; write(file, ed3); print(file); std::cout <<"\n----- One GPS tag\n"; Exiv2::ExifData ed4; - ed4["Exif.GPSInfo.GPSVersionID"] = "Test 4"; + ed4["Exif.GPSInfo.GPSVersionID"] = "19 20"; write(file, ed4); print(file); @@ -127,7 +127,7 @@ try { std::cout <<"\n----- One IOP and one IFD1 tag\n"; Exiv2::ExifData ed6; - ed6["Exif.Iop.InteroperabilityVersion"] = "Test 6 Iop tag"; + ed6["Exif.Iop.InteroperabilityIndex"] = "Test 6 Iop tag"; ed6["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; write(file, ed6); print(file); diff --git a/test/data/exifdata-test.out b/test/data/exifdata-test.out index c2897541..0211058d 100644 --- a/test/data/exifdata-test.out +++ b/test/data/exifdata-test.out @@ -285,7 +285,7 @@ Exif.Iop.InteroperabilityVersion 0x0002 Iop Undefined 4 Exif.Iop.RelatedImageWidth 0x1001 Iop Short 1 2272 Exif.Iop.RelatedImageLength 0x1002 Iop Short 1 1704 Exif.Thumbnail.Compression 0x0103 IFD1 Short 1 6 -Exif.Thumbnail.Orientation 0x0112 IFD1 Ascii 10 2 3 4 5 6 +Exif.Thumbnail.Orientation 0x0112 IFD1 Short 5 2 3 4 5 6 Exif.Thumbnail.XResolution 0x011a IFD1 Rational 1 180/1 Exif.Thumbnail.YResolution 0x011b IFD1 Rational 1 180/1 Exif.Thumbnail.ResolutionUnit 0x0128 IFD1 Short 1 2 @@ -621,7 +621,7 @@ Exif.Nikon3.VariProgram 0x00ab Makernote Ascii 16 Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 5 1234 Exif.Iop.InteroperabilityVersion 0x0002 Iop Undefined 4 48 49 48 48 Exif.Thumbnail.Compression 0x0103 IFD1 Short 1 6 -Exif.Thumbnail.Orientation 0x0112 IFD1 Ascii 10 2 3 4 5 6 +Exif.Thumbnail.Orientation 0x0112 IFD1 Short 5 2 3 4 5 6 Exif.Thumbnail.XResolution 0x011a IFD1 Rational 1 300/1 Exif.Thumbnail.YResolution 0x011b IFD1 Rational 1 300/1 Exif.Thumbnail.ResolutionUnit 0x0128 IFD1 Short 1 2 diff --git a/test/data/exiv2-test.out b/test/data/exiv2-test.out index 0836cf3b..1ab1c0dd 100644 --- a/test/data/exiv2-test.out +++ b/test/data/exiv2-test.out @@ -461,7 +461,7 @@ File 3/9: 20000506_020544.jpg 0x0085 Makernote FocusDistance Unknown 0x0086 Makernote DigitalZoom 1.0x 0x0088 Makernote AFFocusPos Left -0x0010 Makernote 0x0010 1 45 0 128 1 76 0 0 0 0 255 1 0 0 0 0 2 74 42 160 0 0 0 0 2 183 0 0 31 8 0 0 21 202 0 0 33 124 0 0 33 124 0 0 31 6 13 132 0 74 0 0 0 0 9 181 9 74 8 109 7 54 208 1 11 122 0 0 0 0 45 33 21 0 0 0 32 0 0 0 0 0 0 0 0 0 68 27 0 0 74 3 23 207 9 30 59 31 0 71 0 0 19 21 18 18 21 24 0 0 100 0 25 76 0 0 0 1 255 240 101 68 0 0 0 2 0 0 0 0 15 3 194 141 1 13 18 34 0 0 81 90 0 246 1 43 48 32 18 7 40 16 78 72 11 122 0 0 117 252 235 98 11 16 6 6 0 100 0 216 18 52 67 33 +0x0010 Makernote DataDump 1 45 0 128 1 76 0 0 0 0 255 1 0 0 0 0 2 74 42 160 0 0 0 0 2 183 0 0 31 8 0 0 21 202 0 0 33 124 0 0 33 124 0 0 31 6 13 132 0 74 0 0 0 0 9 181 9 74 8 109 7 54 208 1 11 122 0 0 0 0 45 33 21 0 0 0 32 0 0 0 0 0 0 0 0 0 68 27 0 0 74 3 23 207 9 30 59 31 0 71 0 0 19 21 18 18 21 24 0 0 100 0 25 76 0 0 0 1 255 240 101 68 0 0 0 2 0 0 0 0 15 3 194 141 1 13 18 34 0 0 81 90 0 246 1 43 48 32 18 7 40 16 78 72 11 122 0 0 117 252 235 98 11 16 6 6 0 100 0 216 18 52 67 33 0x0001 Iop InteroperabilityIndex R98 0x0002 Iop InteroperabilityVersion 48 49 48 48 0x0103 IFD1 Compression JPEG diff --git a/test/data/write2-test.out b/test/data/write2-test.out index e202d06d..cc6d0714 100644 --- a/test/data/write2-test.out +++ b/test/data/write2-test.out @@ -48,11 +48,11 @@ Exif.Nikon3.Quality 0x0004 Makernote Ascii 28 ----- One IOP tag Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44 -Exif.Iop.InteroperabilityVersion 0x0002 Iop Ascii 7 Test 3 +Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 7 Test 3 ----- One GPS tag Exif.Image.GPSTag 0x8825 IFD0 Long 1 26 -Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Ascii 7 Test 4 +Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Byte 2 19 20 ----- One IFD1 tag Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 5 @@ -60,7 +60,7 @@ Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 ----- One IOP and one IFD1 tag Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44 -Exif.Iop.InteroperabilityVersion 0x0002 Iop Ascii 15 Test 6 Iop tag +Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 15 Test 6 Iop tag Exif.Thumbnail.Artist 0x013b IFD1 Ascii 16 Test 6 Ifd1 tag ----- One IFD0 and one IFD1 tag