[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:36:53 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=452e692

The following commit has been merged in the master branch:
commit 452e6924f6d34784e669967cf1ed35054ab18e6a
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Mon Dec 20 16:46:04 2004 +0000

    Updated Nikon3 tags. Tried to make the embedded thumbnail available, but that needs a bit more work (makernote can currently not have more than one IFD id).
---
 doc/tags-nikon3.xml | 194 +++++++++++++++++++++++++++++++++++++++++++++-------
 src/nikonmn.cpp     | 137 +++++++++++++++++++++++++++++++------
 src/nikonmn.hpp     |  36 ++++++----
 3 files changed, 310 insertions(+), 57 deletions(-)

diff --git a/doc/tags-nikon3.xml b/doc/tags-nikon3.xml
index 78ba179..3bcebfa 100644
--- a/doc/tags-nikon3.xml
+++ b/doc/tags-nikon3.xml
@@ -4,7 +4,7 @@
 <HEADER>
 <title>Nikon (format 3) MakerNote Tags defined in Exiv2</title>
 <text>
-<p>Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70.</p>
+<p>Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70. Updated according to <a href="http://www.ozhiker.com/electronics/pjmt/jpeg_info/nikon_mn.html#Nikon_Type_3_Tags">Nikon Type 3 Makernote Tags Definition</a> of the PHP JPEG Metadata Toolkit by Evan Hunter and the Nikon makernote implementation of <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/">ExifTool</a> by Phil Harvey.</p>
 <p>Click on a column header to sort the table.</p>
 </text>
 </HEADER>
@@ -23,7 +23,7 @@
       <taghex>0x0002</taghex>
       <ifd>Makernote</ifd>
       <key>Exif.Nikon3.ISOSpeed</key>
-      <tagdesc>ISO speed setting</tagdesc>
+      <tagdesc>ISO speed used</tagdesc>
    </ROW>
    <ROW num="3">
       <tagname>ColorMode</tagname>
@@ -90,6 +90,14 @@
       <tagdesc>White balance bias</tagdesc>
    </ROW>
    <ROW num="11">
+      <tagname>ColorBalance1</tagname>
+      <tagdec>12</tagdec>
+      <taghex>0x000c</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ColorBalance1</key>
+      <tagdesc>Color balance 1</tagdesc>
+   </ROW>
+   <ROW num="12">
       <tagname>ExposureDiff</tagname>
       <tagdec>14</tagdec>
       <taghex>0x000e</taghex>
@@ -97,7 +105,7 @@
       <key>Exif.Nikon3.ExposureDiff</key>
       <tagdesc>Exposure difference</tagdesc>
    </ROW>
-   <ROW num="12">
+   <ROW num="13">
       <tagname>ISOSelection</tagname>
       <tagdec>15</tagdec>
       <taghex>0x000f</taghex>
@@ -105,7 +113,15 @@
       <key>Exif.Nikon3.ISOSelection</key>
       <tagdesc>ISO selection</tagdesc>
    </ROW>
-   <ROW num="13">
+   <ROW num="14">
+      <tagname>WhiteBalanceBias</tagname>
+      <tagdec>11</tagdec>
+      <taghex>0x000b</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.WhiteBalanceBias</key>
+      <tagdesc>White balance bias</tagdesc>
+   </ROW>
+   <ROW num="15">
       <tagname>ThumbOffset</tagname>
       <tagdec>17</tagdec>
       <taghex>0x0011</taghex>
@@ -113,15 +129,47 @@
       <key>Exif.Nikon3.ThumbOffset</key>
       <tagdesc>Thumbnail IFD offset</tagdesc>
    </ROW>
-   <ROW num="14">
-      <tagname>FlashBias</tagname>
+   <ROW num="16">
+      <tagname>FlashComp</tagname>
       <tagdec>18</tagdec>
       <taghex>0x0012</taghex>
       <ifd>Makernote</ifd>
-      <key>Exif.Nikon3.FlashBias</key>
-      <tagdesc>Flash bias</tagdesc>
+      <key>Exif.Nikon3.FlashComp</key>
+      <tagdesc>Flash compensation setting</tagdesc>
    </ROW>
-   <ROW num="15">
+   <ROW num="17">
+      <tagname>ISOSetting</tagname>
+      <tagdec>19</tagdec>
+      <taghex>0x0013</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ISOSetting</key>
+      <tagdesc>ISO speed setting</tagdesc>
+   </ROW>
+   <ROW num="18">
+      <tagname>ImageBoundry</tagname>
+      <tagdec>22</tagdec>
+      <taghex>0x0016</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ImageBoundry</key>
+      <tagdesc>Image boundry</tagdesc>
+   </ROW>
+   <ROW num="19">
+      <tagname>FlashBracketComp</tagname>
+      <tagdec>24</tagdec>
+      <taghex>0x0018</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.FlashBracketComp</key>
+      <tagdesc>Flash bracket compensation applied</tagdesc>
+   </ROW>
+   <ROW num="20">
+      <tagname>ExposureBracketComp</tagname>
+      <tagdec>25</tagdec>
+      <taghex>0x0019</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ExposureBracketComp</key>
+      <tagdesc>AE bracket compensation applied</tagdesc>
+   </ROW>
+   <ROW num="21">
       <tagname>ImageAdjustment</tagname>
       <tagdec>128</tagdec>
       <taghex>0x0080</taghex>
@@ -129,15 +177,23 @@
       <key>Exif.Nikon3.ImageAdjustment</key>
       <tagdesc>Image adjustment setting</tagdesc>
    </ROW>
-   <ROW num="16">
+   <ROW num="22">
       <tagname>ToneComp</tagname>
       <tagdec>129</tagdec>
       <taghex>0x0081</taghex>
       <ifd>Makernote</ifd>
       <key>Exif.Nikon3.ToneComp</key>
-      <tagdesc>Tone compensation setting</tagdesc>
+      <tagdesc>Tone compensation setting (contrast)</tagdesc>
    </ROW>
-   <ROW num="17">
+   <ROW num="23">
+      <tagname>AuxiliaryLens</tagname>
+      <tagdec>130</tagdec>
+      <taghex>0x0082</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.AuxiliaryLens</key>
+      <tagdesc>Auxiliary lens (adapter)</tagdesc>
+   </ROW>
+   <ROW num="24">
       <tagname>LensType</tagname>
       <tagdec>131</tagdec>
       <taghex>0x0083</taghex>
@@ -145,7 +201,7 @@
       <key>Exif.Nikon3.LensType</key>
       <tagdesc>Lens type</tagdesc>
    </ROW>
-   <ROW num="18">
+   <ROW num="25">
       <tagname>Lens</tagname>
       <tagdec>132</tagdec>
       <taghex>0x0084</taghex>
@@ -153,7 +209,7 @@
       <key>Exif.Nikon3.Lens</key>
       <tagdesc>Lens</tagdesc>
    </ROW>
-   <ROW num="19">
+   <ROW num="26">
       <tagname>FocusDistance</tagname>
       <tagdec>133</tagdec>
       <taghex>0x0085</taghex>
@@ -161,7 +217,7 @@
       <key>Exif.Nikon3.FocusDistance</key>
       <tagdesc>Manual focus distance</tagdesc>
    </ROW>
-   <ROW num="20">
+   <ROW num="27">
       <tagname>DigitalZoom</tagname>
       <tagdec>134</tagdec>
       <taghex>0x0086</taghex>
@@ -169,7 +225,7 @@
       <key>Exif.Nikon3.DigitalZoom</key>
       <tagdesc>Digital zoom setting</tagdesc>
    </ROW>
-   <ROW num="21">
+   <ROW num="28">
       <tagname>FlashType</tagname>
       <tagdec>135</tagdec>
       <taghex>0x0087</taghex>
@@ -177,7 +233,7 @@
       <key>Exif.Nikon3.FlashType</key>
       <tagdesc>Type of flash used</tagdesc>
    </ROW>
-   <ROW num="22">
+   <ROW num="29">
       <tagname>AFFocusPos</tagname>
       <tagdec>136</tagdec>
       <taghex>0x0088</taghex>
@@ -185,7 +241,7 @@
       <key>Exif.Nikon3.AFFocusPos</key>
       <tagdesc>AF focus position</tagdesc>
    </ROW>
-   <ROW num="23">
+   <ROW num="30">
       <tagname>Bracketing</tagname>
       <tagdec>137</tagdec>
       <taghex>0x0089</taghex>
@@ -193,7 +249,15 @@
       <key>Exif.Nikon3.Bracketing</key>
       <tagdesc>Bracketing</tagdesc>
    </ROW>
-   <ROW num="24">
+   <ROW num="31">
+      <tagname>NEFCurve1</tagname>
+      <tagdec>140</tagdec>
+      <taghex>0x008c</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.NEFCurve1</key>
+      <tagdesc>NEF curve 1</tagdesc>
+   </ROW>
+   <ROW num="32">
       <tagname>ColorMode</tagname>
       <tagdec>141</tagdec>
       <taghex>0x008d</taghex>
@@ -201,7 +265,15 @@
       <key>Exif.Nikon3.ColorMode</key>
       <tagdesc>Color mode</tagdesc>
    </ROW>
-   <ROW num="25">
+   <ROW num="33">
+      <tagname>SceneMode</tagname>
+      <tagdec>143</tagdec>
+      <taghex>0x008f</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.SceneMode</key>
+      <tagdesc>Scene mode</tagdesc>
+   </ROW>
+   <ROW num="34">
       <tagname>LightingType</tagname>
       <tagdec>144</tagdec>
       <taghex>0x0090</taghex>
@@ -209,15 +281,15 @@
       <key>Exif.Nikon3.LightingType</key>
       <tagdesc>Lighting type</tagdesc>
    </ROW>
-   <ROW num="26">
-      <tagname>Hue</tagname>
+   <ROW num="35">
+      <tagname>HueAdjustment</tagname>
       <tagdec>146</tagdec>
       <taghex>0x0092</taghex>
       <ifd>Makernote</ifd>
-      <key>Exif.Nikon3.Hue</key>
+      <key>Exif.Nikon3.HueAdjustment</key>
       <tagdesc>Hue adjustment</tagdesc>
    </ROW>
-   <ROW num="27">
+   <ROW num="36">
       <tagname>Saturation</tagname>
       <tagdec>148</tagdec>
       <taghex>0x0094</taghex>
@@ -225,7 +297,7 @@
       <key>Exif.Nikon3.Saturation</key>
       <tagdesc>Saturation adjustment</tagdesc>
    </ROW>
-   <ROW num="28">
+   <ROW num="37">
       <tagname>NoiseReduction</tagname>
       <tagdec>149</tagdec>
       <taghex>0x0095</taghex>
@@ -233,5 +305,77 @@
       <key>Exif.Nikon3.NoiseReduction</key>
       <tagdesc>Noise reduction</tagdesc>
    </ROW>
+   <ROW num="38">
+      <tagname>NEFCurve2</tagname>
+      <tagdec>150</tagdec>
+      <taghex>0x0096</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.NEFCurve2</key>
+      <tagdesc>NEF curve 2</tagdesc>
+   </ROW>
+   <ROW num="39">
+      <tagname>ColorBalance2</tagname>
+      <tagdec>151</tagdec>
+      <taghex>0x0097</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ColorBalance2</key>
+      <tagdesc>Color balance 2</tagdesc>
+   </ROW>
+   <ROW num="40">
+      <tagname>NEFThumbnailSize</tagname>
+      <tagdec>153</tagdec>
+      <taghex>0x0099</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.NEFThumbnailSize</key>
+      <tagdesc>NEF thumbnail size</tagdesc>
+   </ROW>
+   <ROW num="41">
+      <tagname>SerialNumber</tagname>
+      <tagdec>160</tagdec>
+      <taghex>0x00a0</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.SerialNumber</key>
+      <tagdesc>Camera serial number</tagdesc>
+   </ROW>
+   <ROW num="42">
+      <tagname>ShutterCount</tagname>
+      <tagdec>167</tagdec>
+      <taghex>0x00a7</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ShutterCount</key>
+      <tagdesc>Number of shots taken by camera</tagdesc>
+   </ROW>
+   <ROW num="43">
+      <tagname>ImageOptimization</tagname>
+      <tagdec>169</tagdec>
+      <taghex>0x00a9</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.ImageOptimization</key>
+      <tagdesc>Image optimization</tagdesc>
+   </ROW>
+   <ROW num="44">
+      <tagname>Saturation</tagname>
+      <tagdec>170</tagdec>
+      <taghex>0x00aa</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.Saturation</key>
+      <tagdesc>Saturation</tagdesc>
+   </ROW>
+   <ROW num="45">
+      <tagname>VariProgram</tagname>
+      <tagdec>171</tagdec>
+      <taghex>0x00ab</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.VariProgram</key>
+      <tagdesc>Vari program</tagdesc>
+   </ROW>
+   <ROW num="46">
+      <tagname>PrintIM</tagname>
+      <tagdec>3584</tagdec>
+      <taghex>0x0e00</taghex>
+      <ifd>Makernote</ifd>
+      <key>Exif.Nikon3.PrintIM</key>
+      <tagdesc>Print image matching</tagdesc>
+   </ROW>
 </ROWSET>
 </TAGLIST>
diff --git a/src/nikonmn.cpp b/src/nikonmn.cpp
index 59d7e02..abdbd06 100644
--- a/src/nikonmn.cpp
+++ b/src/nikonmn.cpp
@@ -369,7 +369,7 @@ namespace Exiv2 {
     // Nikon3 MakerNote Tag Info
     static const MakerNote::MnTagInfo nikon3MnTagInfo[] = {
         MakerNote::MnTagInfo(0x0001, "Version", "Nikon Makernote version"),
-        MakerNote::MnTagInfo(0x0002, "ISOSpeed", "ISO speed setting"),
+        MakerNote::MnTagInfo(0x0002, "ISOSpeed", "ISO speed used"),
         MakerNote::MnTagInfo(0x0003, "ColorMode", "Color mode"),
         MakerNote::MnTagInfo(0x0004, "Quality", "Image quality setting"),
         MakerNote::MnTagInfo(0x0005, "WhiteBalance", "White balance"),
@@ -378,12 +378,19 @@ namespace Exiv2 {
         MakerNote::MnTagInfo(0x0008, "FlashSetting", "Flash setting"),
         MakerNote::MnTagInfo(0x0009, "FlashMode", "Flash mode"),
         MakerNote::MnTagInfo(0x000b, "WhiteBalanceBias", "White balance bias"),
+        MakerNote::MnTagInfo(0x000c, "ColorBalance1", "Color balance 1"),
         MakerNote::MnTagInfo(0x000e, "ExposureDiff", "Exposure difference"),
         MakerNote::MnTagInfo(0x000f, "ISOSelection", "ISO selection"),
+        MakerNote::MnTagInfo(0x000b, "DataDump", "Data dump"),
         MakerNote::MnTagInfo(0x0011, "ThumbOffset", "Thumbnail IFD offset"),
-        MakerNote::MnTagInfo(0x0012, "FlashBias", "Flash bias"),
+        MakerNote::MnTagInfo(0x0012, "FlashComp", "Flash compensation setting"),
+        MakerNote::MnTagInfo(0x0013, "ISOSetting", "ISO speed setting"),
+        MakerNote::MnTagInfo(0x0016, "ImageBoundry", "Image boundry"),
+        MakerNote::MnTagInfo(0x0018, "FlashBracketComp", "Flash bracket compensation applied"),
+        MakerNote::MnTagInfo(0x0019, "ExposureBracketComp", "AE bracket compensation applied"),
         MakerNote::MnTagInfo(0x0080, "ImageAdjustment", "Image adjustment setting"),
-        MakerNote::MnTagInfo(0x0081, "ToneComp", "Tone compensation setting"),
+        MakerNote::MnTagInfo(0x0081, "ToneComp", "Tone compensation setting (contrast)"),
+        MakerNote::MnTagInfo(0x0082, "AuxiliaryLens", "Auxiliary lens (adapter)"),
         MakerNote::MnTagInfo(0x0083, "LensType", "Lens type"),
         MakerNote::MnTagInfo(0x0084, "Lens", "Lens"),
         MakerNote::MnTagInfo(0x0085, "FocusDistance", "Manual focus distance"),
@@ -391,11 +398,22 @@ namespace Exiv2 {
         MakerNote::MnTagInfo(0x0087, "FlashType", "Type of flash used"),
         MakerNote::MnTagInfo(0x0088, "AFFocusPos", "AF focus position"),
         MakerNote::MnTagInfo(0x0089, "Bracketing", "Bracketing"),
+        MakerNote::MnTagInfo(0x008c, "NEFCurve1", "NEF curve 1"),
         MakerNote::MnTagInfo(0x008d, "ColorMode", "Color mode"),
+        MakerNote::MnTagInfo(0x008f, "SceneMode", "Scene mode"),
         MakerNote::MnTagInfo(0x0090, "LightingType", "Lighting type"),
-        MakerNote::MnTagInfo(0x0092, "Hue", "Hue adjustment"),
+        MakerNote::MnTagInfo(0x0092, "HueAdjustment", "Hue adjustment"),
         MakerNote::MnTagInfo(0x0094, "Saturation", "Saturation adjustment"),
         MakerNote::MnTagInfo(0x0095, "NoiseReduction", "Noise reduction"),
+        MakerNote::MnTagInfo(0x0096, "NEFCurve2", "NEF curve 2"),
+        MakerNote::MnTagInfo(0x0097, "ColorBalance2", "Color balance 2"),
+        MakerNote::MnTagInfo(0x0099, "NEFThumbnailSize", "NEF thumbnail size"),
+        MakerNote::MnTagInfo(0x00a0, "SerialNumber", "Camera serial number"),
+        MakerNote::MnTagInfo(0x00a7, "ShutterCount", "Number of shots taken by camera"),
+        MakerNote::MnTagInfo(0x00a9, "ImageOptimization", "Image optimization"),
+        MakerNote::MnTagInfo(0x00aa, "Saturation", "Saturation"),
+        MakerNote::MnTagInfo(0x00ab, "VariProgram", "Vari program"),
+        MakerNote::MnTagInfo(0x0e00, "PrintIM", "Print image matching"),
         // End of list marker
         MakerNote::MnTagInfo(0xffff, "(UnknownNikon3MnTag)", "Unknown Nikon3MakerNote tag")
     };
@@ -411,6 +429,28 @@ namespace Exiv2 {
         readHeader(buf, 18, byteOrder_);
     }
 
+    int Nikon3MakerNote::read(const byte* buf,
+                              long len, 
+                              ByteOrder byteOrder, 
+                              long offset)
+    {
+        int rc = IfdMakerNote::read(buf, len, byteOrder, offset);
+        if (rc) return rc;
+
+        // Todo: Add the tags and thumbnail from the embedded thumbnail IFD
+        //       Accessing them is easy, but we need support for more than
+        //       one IfdId in makernotes to get it working.
+        Ifd thumbIfd(makerIfdId, 0, false);
+        rc = ifd_.readSubIfd(thumbIfd, buf+10, len-10, byteOrder, 0x0011);
+        if (rc) {
+            std::cerr << "Didn't work :(
";  
+        }
+        else {
+            thumbIfd.print(std::cout);
+        }
+        return 0;
+    }
+
     int Nikon3MakerNote::readHeader(const byte* buf,
                                   long len, 
                                   ByteOrder byteOrder)
@@ -457,9 +497,12 @@ namespace Exiv2 {
     {
         switch (tag) {
         case 0x0002: print0x0002(os, value); break;
-        case 0x0083: print0x0083(os, value); break;
+        case 0x0012: print0x0012(os, value); break;
+        case 0x0013: print0x0002(os, value); break; // use 0x0002 print fct
+        case 0x0018: print0x0012(os, value); break; // use 0x0012 print fct
         case 0x0084: print0x0084(os, value); break;
         case 0x0087: print0x0087(os, value); break;
+        case 0x0088: print0x0088(os, value); break;
         case 0x0089: print0x0089(os, value); break;
         default:
             // All other tags (known or unknown) go here
@@ -481,16 +524,29 @@ namespace Exiv2 {
         return os;
     }
 
-    std::ostream& Nikon3MakerNote::print0x0083(std::ostream& os,
+    std::ostream& Nikon3MakerNote::print0x0012(std::ostream& os, 
                                                const Value& value)
     {
-        long type = value.toLong();
-        switch (type) {
-        case  0: os << "AF"; break;
-        case  1: os << "Manual"; break;
-        case  2: os << "AF-D"; break;
-        case  6: os << "AF-D G"; break;
-        case 10: os << "AF-D VR"; break;
+        // From the PHP JPEG Metadata Toolkit
+        long fec = value.toLong();
+        switch (fec) {
+        case 0x06: os << "+1.0 EV"; break;
+        case 0x04: os << "+0.7 EV"; break;
+        case 0x03: os << "+0.5 EV"; break;
+        case 0x02: os << "+0.3 EV"; break;
+        case 0x00: os << "0.0 EV"; break;
+        case 0xfe: os << "-0.3 EV"; break;
+        case 0xfd: os << "-0.5 EV"; break;
+        case 0xfc: os << "-0.7 EV"; break;
+        case 0xfa: os << "-1.0 EV"; break;
+        case 0xf8: os << "-1.3 EV"; break;
+        case 0xf7: os << "-1.5 EV"; break;
+        case 0xf6: os << "-1.7 EV"; break;
+        case 0xf4: os << "-2.0 EV"; break;
+        case 0xf2: os << "-2.3 EV"; break;
+        case 0xf1: os << "-2.5 EV"; break;
+        case 0xf0: os << "-2.7 EV"; break;
+        case 0xee: os << "-3.0 EV"; break;
         default: os << "(" << value << ")"; break;
         }
         return os;
@@ -523,11 +579,48 @@ namespace Exiv2 {
     std::ostream& Nikon3MakerNote::print0x0087(std::ostream& os,
                                                const Value& value)
     {
+        // From Exiftool
         long flash = value.toLong();
         switch (flash) {
-        case 0: os << "None"; break;
-        case 7: os << "External"; break;
-        case 9: os << "On camera"; break;
+        case 0: os << "Not used"; break;
+        case 8: os << "Fired, commander mode"; break;
+        case 9: os << "Fired, TTL mode"; break;
+        default: os << "(" << value << ")"; break;
+        }
+        return os;
+    }
+
+    std::ostream& Nikon3MakerNote::print0x0088(std::ostream& os,
+                                               const Value& value)
+    {
+        // Mappings taken from Exiftool 
+        long afpos = value.toLong();
+        switch (afpos) {
+        case 0x0000: os << "Center"; break;
+        case 0x0100: os << "Top"; break;
+        case 0x0200: os << "Bottom"; break;
+        case 0x0300: os << "Left"; break;
+        case 0x0400: os << "Right"; break;
+        
+        // D70
+        case 0x00001: os << "Single area, center"; break;
+        case 0x10002: os << "Single area, top"; break;
+        case 0x20004: os << "Single area, bottom"; break;
+        case 0x30008: os << "Single area, left"; break;
+        case 0x40010: os << "Single area, right"; break;
+
+        case 0x1000001: os << "Dynamic area, center"; break;
+        case 0x1010002: os << "Dynamic area, top"; break;
+        case 0x1020004: os << "Dynamic area, bottom"; break;
+        case 0x1030008: os << "Dynamic area, left"; break;
+        case 0x1040010: os << "Dynamic area, right"; break;
+
+        case 0x2000001: os << "Closest subject, center"; break;
+        case 0x2010002: os << "Closest subject, top"; break;
+        case 0x2020004: os << "Closest subject, bottom"; break;
+        case 0x2030008: os << "Closest subject, left"; break;
+        case 0x2040010: os << "Closest subject, right"; break;
+
         default: os << "(" << value << ")"; break;
         }
         return os;
@@ -536,12 +629,16 @@ namespace Exiv2 {
     std::ostream& Nikon3MakerNote::print0x0089(std::ostream& os,
                                                const Value& value)
     {
+        // From Exiftool
         long b = value.toLong();
         switch (b) {
-        case  0: os << "None"; break;
-        case  1: os << "None"; break;
-        case 17: os << "Exposure"; break;
-        case 81: os << "White balance"; break;
+        case 0x00: os << "Single"; break;
+        case 0x01: os << "Continuous"; break;
+        case 0x02: os << "Delay"; break;
+        case 0x03: os << "Remote with delay"; break;
+        case 0x04: os << "Remote"; break;
+        case 0x16: os << "Exposure bracketing"; break;
+        case 0x64: os << "White balance bracketing"; break;
         default: os << "(" << value << ")"; break;
         }
         return os;
diff --git a/src/nikonmn.hpp b/src/nikonmn.hpp
index 0e55c44..0986d23 100644
--- a/src/nikonmn.hpp
+++ b/src/nikonmn.hpp
@@ -20,14 +20,21 @@
  */
 /*!
   @file    nikonmn.hpp
-  @brief   Nikon MakerNote formats implemented according to the following
-           references:<BR>
-           Format 1: <a href="http://www.tawbaware.com/990exif.htm">MakerNote 
-           EXIF Tag of the Nikon 990</a> by Max Lyons.<BR>
-           Format 2: "Appendix 2: Makernote of Nikon" of the document 
-           <a href="http://park2.wakwak.com/%7Etsuruzoh/Computer/Digicams/exif-e.html">
-           Exif file format</a> by TsuruZoh Tachibanaya.<BR>
-           Format 3: "EXIFutils Field Reference Guide".
+  @brief   Nikon MakerNote formats.
+
+  The Nikon MakerNote formats are implemented according to the following references<BR>
+  Format 1: 
+  <ul><li><a href="http://www.tawbaware.com/990exif.htm">MakerNote EXIF Tag of the Nikon 990</a> by Max Lyons</li></ul>
+  Format 2: 
+  <ul><li>"Appendix 2: Makernote of Nikon" of the document 
+  <a href="http://park2.wakwak.com/%7Etsuruzoh/Computer/Digicams/exif-e.html">
+  Exif file format</a> by TsuruZoh Tachibanaya</li></ul>
+  Format 3: 
+  <ul><li>"EXIFutils Field Reference Guide"</li>
+  <li><a href="http://www.ozhiker.com/electronics/pjmt/jpeg_info/nikon_mn.html#Nikon_Type_3_Tags">Nikon Type 3 Makernote Tags Definition</a> 
+  of the PHP JPEG Metadata Toolkit by Evan Hunter</li>
+  <li>Nikon specification of <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/">ExifTool</a> by Phil Harvey</li></ul>
+
   @version $Rev$
   @author  Andreas Huggel (ahu)
            <a href="mailto:ahuggel at gmx.net">ahuggel at gmx.net</a>
@@ -158,7 +165,6 @@ namespace Exiv2 {
                 demand.
          */
         static const RegisterMakerNote register_; 
-
         //! The item name (second part of the key) used for makernote tags
         std::string ifdItem_;
 
@@ -269,7 +275,11 @@ namespace Exiv2 {
         //@}
 
         //! @name Manipulators
-        //@{        
+        //@{
+        int read(const byte* buf,
+                 long len, 
+                 ByteOrder byteOrder, 
+                 long offset);
         int readHeader(const byte* buf, 
                        long len,
                        ByteOrder byteOrder);
@@ -290,12 +300,14 @@ namespace Exiv2 {
         //@{
         //! Print ISO setting
         static std::ostream& print0x0002(std::ostream& os, const Value& value);
-        //! Print lens type
-        static std::ostream& print0x0083(std::ostream& os, const Value& value);
+        //! Print flash compensation
+        static std::ostream& print0x0012(std::ostream& os, const Value& value);
         //! Print lens information
         static std::ostream& print0x0084(std::ostream& os, const Value& value);
         //! Print flash used information
         static std::ostream& print0x0087(std::ostream& os, const Value& value);
+        //! Print AF point
+        static std::ostream& print0x0088(std::ostream& os, const Value& value);
         //! Print bracketing information
         static std::ostream& print0x0089(std::ostream& os, const Value& value);
         //@}

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list