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

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:41:37 UTC 2017


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

The following commit has been merged in the master branch:
commit 0d3e65fe6bcde8ec1a60d57df40fb527b969db90
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sat May 15 14:14:20 2010 +0000

    Added support for Nikon File Info, Auto Focus 2, Multi Exposure and Flash Info binary arrays. (Jens Mueller)
---
 src/makernote.cpp     |   8 +-
 src/makernote_int.hpp |   6 ++
 src/nikonmn.cpp       | 259 +++++++++++++++++++++++++++++++++++++++++++++++++-
 src/nikonmn.hpp       |  30 ++++++
 src/tags.cpp          |   6 ++
 src/tiffcomposite.cpp |   6 ++
 src/tiffimage.cpp     | 163 +++++++++++++++++++++++++++++++
 src/types.hpp         |   6 ++
 8 files changed, 480 insertions(+), 4 deletions(-)

diff --git a/src/makernote.cpp b/src/makernote.cpp
index 4a09be8..cc39c3b 100644
--- a/src/makernote.cpp
+++ b/src/makernote.cpp
@@ -837,13 +837,19 @@ namespace Exiv2 {
         { 0x0097, "0207",    0, 3, 284 },
         { 0x0097, "0208",    0, 3, 284 },
         { 0x0097, "0209",    0, 5, 284 },
+        { 0x0097, "02",      0, 3, 284 },
         // NikonLd
         { 0x0098, "0100",    0, 0,  NA },
         { 0x0098, "0101",    0, 1,  NA },
         { 0x0098, "0201",    0, 1,   4 },
         { 0x0098, "0202",    0, 1,   4 },
         { 0x0098, "0203",    0, 1,   4 },
-        { 0x0098, "0204",    0, 2,   4 }
+        { 0x0098, "0204",    0, 2,   4 },
+        // NikonFl
+        { 0x00a8, "0100",    0, 0,   4 },
+        { 0x00a8, "0101",    0, 0,   4 },
+        { 0x00a8, "0102",    0, 1,   4 },
+        { 0x00a8, "0103",    0, 2,   4 },
     };
 
     int nikonSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const /*pRoot*/)
diff --git a/src/makernote_int.hpp b/src/makernote_int.hpp
index 6e1e662..9824681 100644
--- a/src/makernote_int.hpp
+++ b/src/makernote_int.hpp
@@ -141,6 +141,12 @@ namespace Exiv2 {
         const uint16_t sonysr2dt19=359; //!< Sony SR2 data-IFD 19 tags
         const uint16_t sonyidc   = 360; //!< Sony IDC tags
         const uint16_t sonyidc2  = 361; //!< Sony IDC 2 tags
+        const uint16_t nikonfi   = 362; //!< Nikon File Info Tags
+        const uint16_t nikonaf2  = 363; //!< Nikon Auto Focus 2 Tags
+        const uint16_t nikonme   = 364; //!< Nikon Multi Exposure Tags
+        const uint16_t nikonfl1  = 365; //!< Nikon Flash Info 1 Tags
+        const uint16_t nikonfl2  = 366; //!< Nikon Flash Info 2 Tags
+        const uint16_t nikonfl3  = 367; //!< Nikon Flash Info 3 Tags
     }
 
 // *****************************************************************************
diff --git a/src/nikonmn.cpp b/src/nikonmn.cpp
index 219f145..6c676f9 100644
--- a/src/nikonmn.cpp
+++ b/src/nikonmn.cpp
@@ -529,11 +529,12 @@ namespace Exiv2 {
         TagInfo(0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), nikon3IfdId, makerTags, undefined, EXV_PRINT_TAG(nikonFlashComp)),
         TagInfo(0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), nikon3IfdId, makerTags, unsignedShort, print0x0002), // use 0x0002 print fct
         TagInfo(0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), nikon3IfdId, makerTags, unsignedShort, printValue),
-        TagInfo(0x0017, "0x0017", "0x0017", N_("Unknown"), nikon3IfdId, makerTags, undefined, printValue),
+        TagInfo(0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), nikon3IfdId, makerTags, undefined, printValue),
         TagInfo(0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), nikon3IfdId, makerTags, undefined, EXV_PRINT_TAG(nikonFlashComp)), // use 0x0012 print fct
         TagInfo(0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), nikon3IfdId, makerTags, signedRational, printValue),
         TagInfo(0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), nikon3IfdId, makerTags, asciiString, printValue),
         TagInfo(0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3IfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3IfdId, makerTags, unsignedShort, printValue),
         TagInfo(0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3IfdId, makerTags, asciiString, printValue),
         TagInfo(0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3IfdId, makerTags, unsignedShort, EXV_PRINT_TAG(nikonColorSpace)),
         TagInfo(0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3IfdId, makerTags, undefined, printValue),
@@ -796,6 +797,216 @@ namespace Exiv2 {
         return tagInfoAf_;
     }
 
+    //! PhaseDetectAF
+    extern const TagDetails nikonPhaseDetectAF[] = {
+        { 0, N_("Off")           },
+        { 1, N_("On (51-point)") },
+        { 2, N_("On (11-point)") }
+    };
+
+    // Nikon3 Auto Focus Tag Info
+    const TagInfo Nikon3MakerNote::tagInfoAf2_[] = {
+        TagInfo(  0, "Version", N_("Version"), N_("Version"), nikonAf2IfdId, makerTags, undefined, printExifVersion),
+        TagInfo(  4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf2IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonOffOn)),
+        TagInfo(  5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf2IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf2IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonPhaseDetectAF)),
+        TagInfo(  7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf2IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf2IfdId, makerTags, unsignedByte, printValue),
+        TagInfo( 16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf2IfdId, makerTags, unsignedShort, printValue),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf2IfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    const TagInfo* Nikon3MakerNote::tagListAf2()
+    {
+        return tagInfoAf2_;
+    }
+
+    // Nikon3 File Info Tag Info
+    const TagInfo Nikon3MakerNote::tagInfoFi_[] = {
+        TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFiIfdId, makerTags, undefined, printExifVersion),
+        TagInfo( 6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), nikonFiIfdId, makerTags, unsignedShort, printValue),
+        TagInfo( 8, "FileNumber", N_("File Number"), N_("File number"), nikonFiIfdId, makerTags, unsignedShort, printValue),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiIfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    const TagInfo* Nikon3MakerNote::tagListFi()
+    {
+        return tagInfoFi_;
+    }
+
+    //! MultiExposureMode
+    extern const TagDetails nikonMultiExposureMode[] = {
+        { 0, N_("Off")               },
+        { 1, N_("Multiple Exposure") },
+        { 2, N_("Image Overlay")     }
+    };
+
+    // Nikon3 Multi Exposure Tag Info
+    const TagInfo Nikon3MakerNote::tagInfoMe_[] = {
+        TagInfo(  0, "Version", N_("Version"), N_("Version"), nikonMeIfdId, makerTags, undefined, printExifVersion),
+        TagInfo(  4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), nikonMeIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(nikonMultiExposureMode)),
+        TagInfo(  8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), nikonMeIfdId, makerTags, unsignedLong, printValue),
+        TagInfo( 12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), nikonMeIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(nikonOffOn)),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeIfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    const TagInfo* Nikon3MakerNote::tagListMe()
+    {
+        return tagInfoMe_;
+    }
+
+    //! FlashSource
+    extern const TagDetails nikonFlashSource[] = {
+        { 0, N_("None")     },
+        { 1, N_("External") },
+        { 2, N_("Internal") }
+    };
+
+    //! FlashGNDistance
+    extern const TagDetails nikonFlashGNDistance[] = {
+        {   0, N_("None")  },
+        {   1, N_("0.1 m") },
+        {   2, N_("0.2 m") },
+        {   3, N_("0.3 m") },
+        {   4, N_("0.4 m") },
+        {   5, N_("0.5 m") },
+        {   6, N_("0.6 m") },
+        {   7, N_("0.7 m") },
+        {   8, N_("0.8 m") },
+        {   9, N_("0.9 m") },
+        {  10, N_("1.0 m") },
+        {  11, N_("1.1 m") },
+        {  12, N_("1.3 m") },
+        {  13, N_("1.4 m") },
+        {  14, N_("1.6 m") },
+        {  15, N_("1.8 m") },
+        {  16, N_("2.0 m") },
+        {  17, N_("2.2 m") },
+        {  18, N_("2.5 m") },
+        {  19, N_("2.8 m") },
+        {  20, N_("3.2 m") },
+        {  21, N_("3.6 m") },
+        {  22, N_("4.0 m") },
+        {  23, N_("4.5 m") },
+        {  24, N_("5.0 m") },
+        {  25, N_("5.6 m") },
+        {  26, N_("6.3 m") },
+        {  27, N_("7.1 m") },
+        {  28, N_("8.0 m") },
+        {  29, N_("9.0 m") },
+        {  30, N_("10.0 m") },
+        {  31, N_("11.0 m") },
+        {  32, N_("13.0 m") },
+        {  33, N_("14.0 m") },
+        {  34, N_("16.0 m") },
+        {  35, N_("18.0 m") },
+        {  36, N_("20.0 m") },
+        { 255, N_("n/a") }
+    };
+
+    //! FlashControlMode
+    extern const TagDetails nikonFlashControlMode[] = {
+        { 0, N_("Off")                    },
+        { 1, N_("iTTL-BL")                },
+        { 2, N_("iTTL")                   },
+        { 3, N_("Auto Aperture")          },
+        { 4, N_("Automatic")              },
+        { 5, N_("GN (distance priority)") },
+        { 6, N_("Manual")                 },
+        { 7, N_("Repeating Flash")        }
+    };
+
+    //! ExternalFlashFlags
+    extern const TagDetails nikonExternalFlashFlags[] = {
+        { 0, N_("Fired")              },
+        { 2, N_("Bounce Flash")       },
+        { 4, N_("Wide Flash Adapter") }
+    };
+
+    //! FlashColorFilter
+    extern const TagDetails nikonFlashColorFilter[] = {
+        {  0, N_("None")   },
+        {  1, N_("FL-GL1") },
+        {  2, N_("FL-GL2") },
+        {  9, N_("TN-A1")  },
+        { 10, N_("TN-A2")  },
+        { 65, N_("Red")    },
+        { 66, N_("Blue")   },
+        { 67, N_("Yellow") },
+        { 68, N_("Amber")  }
+    };
+
+    // Nikon3 Flash Info 1 Tag Info
+    const TagInfo Nikon3MakerNote::tagInfoFl1_[] = {
+        TagInfo(  0, "Version", N_("Version"), N_("Version"), nikonFl1IfdId, makerTags, undefined, printExifVersion),
+        TagInfo(  4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl1IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashSource)),
+        TagInfo(  5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl1IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl1IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl1IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonExternalFlashFlags)),
+        TagInfo( 11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl1IfdId, makerTags, unsignedByte, printFlashFocalLength),
+        TagInfo( 12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl1IfdId, makerTags, unsignedByte, printRepeatingFlashRate),
+        TagInfo( 13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl1IfdId, makerTags, unsignedByte, printRepeatingFlashCount),
+        TagInfo( 14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl1IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashGNDistance)),
+        TagInfo( 15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), nikonFl1IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashControlMode)),
+        TagInfo( 16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), nikonFl1IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashControlMode)),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1IfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    const TagInfo* Nikon3MakerNote::tagListFl1()
+    {
+        return tagInfoFl1_;
+    }
+
+    // Nikon3 Flash Info 2 Tag Info
+    const TagInfo Nikon3MakerNote::tagInfoFl2_[] = {
+        TagInfo(  0, "Version", N_("Version"), N_("Version"), nikonFl2IfdId, makerTags, undefined, printExifVersion),
+        TagInfo(  4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl2IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashSource)),
+        TagInfo(  5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl2IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl2IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl2IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonExternalFlashFlags)),
+        TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl2IfdId, makerTags, unsignedByte, printFlashFocalLength),
+        TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl2IfdId, makerTags, unsignedByte, printRepeatingFlashRate),
+        TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl2IfdId, makerTags, unsignedByte, printRepeatingFlashCount),
+        TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl2IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashGNDistance)),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2IfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    const TagInfo* Nikon3MakerNote::tagListFl2()
+    {
+        return tagInfoFl2_;
+    }
+
+    // Nikon3 Flash Info 3 Tag Info
+    const TagInfo Nikon3MakerNote::tagInfoFl3_[] = {
+        TagInfo(  0, "Version", N_("Version"), N_("Version"), nikonFl3IfdId, makerTags, undefined, printExifVersion),
+        TagInfo(  4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl3IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashSource)),
+        TagInfo(  6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl3IfdId, makerTags, unsignedByte, printValue),
+        TagInfo(  8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl3IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonExternalFlashFlags)),
+        TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl3IfdId, makerTags, unsignedByte, printFlashFocalLength),
+        TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl3IfdId, makerTags, unsignedByte, printRepeatingFlashRate),
+        TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl3IfdId, makerTags, unsignedByte, printRepeatingFlashCount),
+        TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl3IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashGNDistance)),
+        TagInfo( 16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), nikonFl3IfdId, makerTags, unsignedByte, EXV_PRINT_TAG(nikonFlashColorFilter)),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3IfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    const TagInfo* Nikon3MakerNote::tagListFl3()
+    {
+        return tagInfoFl3_;
+    }
+
     // Nikon3 Shot Info D80 Tag Info
     const TagInfo Nikon3MakerNote::tagInfoSi1_[] = {
         TagInfo(   0, "Version", N_("Version"), N_("Version"), nikonSi1IfdId, makerTags, unsignedByte, printExifVersion),
@@ -2063,8 +2274,8 @@ fmountlens[] = {
 #endif // EXV_HAVE_LENSDATA
     }
 
-    std::ostream& Nikon3MakerNote::printFocusDistance(std::ostream& os, 
-                                                      const Value& value, 
+    std::ostream& Nikon3MakerNote::printFocusDistance(std::ostream& os,
+                                                      const Value& value,
                                                       const ExifData*)
     {
         if (value.count() != 1 || value.typeId() != unsignedByte) {
@@ -2138,6 +2349,48 @@ fmountlens[] = {
         return os;
     }
 
+    std::ostream& Nikon3MakerNote::printFlashFocalLength(std::ostream& os, 
+                                                         const Value& value, 
+                                                         const ExifData*)
+    {
+        if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) {
+            return os << "(" << value << ")";
+        }
+        std::ostringstream oss;
+        oss.copyfmt(os);
+        os << std::fixed << std::setprecision(2) << value.toLong() << " mm";
+        os.copyfmt(oss);
+        return os;
+    }
+
+    std::ostream& Nikon3MakerNote::printRepeatingFlashRate(std::ostream& os, 
+                                                           const Value& value, 
+                                                           const ExifData*)
+    {
+        if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) {
+            return os << "(" << value << ")";
+        }
+        std::ostringstream oss;
+        oss.copyfmt(os);
+        os << std::fixed << std::setprecision(2) << value.toLong() << " Hz";
+        os.copyfmt(oss);
+        return os;
+    }
+
+    std::ostream& Nikon3MakerNote::printRepeatingFlashCount(std::ostream& os, 
+                                                            const Value& value, 
+                                                            const ExifData*)
+    {
+         if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) {
+            return os << "(" << value << ")";
+        }
+        std::ostringstream oss;
+        oss.copyfmt(os);
+        os << std::fixed << std::setprecision(2) << value.toLong();
+        os.copyfmt(oss);
+        return os;
+   }
+
     std::ostream& Nikon3MakerNote::print0x009a(std::ostream& os,
                                                const Value& value,
                                                const ExifData*)
diff --git a/src/nikonmn.hpp b/src/nikonmn.hpp
index 5073871..8b1e871 100644
--- a/src/nikonmn.hpp
+++ b/src/nikonmn.hpp
@@ -120,6 +120,18 @@ namespace Exiv2 {
         static const TagInfo* tagListIi();
         //! Return read-only list of built-in Auto Focus tags
         static const TagInfo* tagListAf();
+        //! Return read-only list of built-in Auto Focus 2 tags
+        static const TagInfo* tagListAf2();
+        //! Return read-only list of built-in File Info tags
+        static const TagInfo* tagListFi();
+        //! Return read-only list of built-in Multi Exposure tags
+        static const TagInfo* tagListMe();
+        //! Return read-only list of built-in Flash Info 1 tags
+        static const TagInfo* tagListFl1();
+        //! Return read-only list of built-in Flash Info 2 tags
+        static const TagInfo* tagListFl2();
+        //! Return read-only list of built-in Flash Info 3 tags
+        static const TagInfo* tagListFl3();
         //! Return read-only list of built-in Shot Info D80 tags
         static const TagInfo* tagListSi1();
         //! Return read-only list of built-in Shot Info D40 tags
@@ -192,6 +204,12 @@ namespace Exiv2 {
         static std::ostream& print0x009e(std::ostream& os, const Value& value, const ExifData*);
         //! Print Exif.NikonIi.ISO(2)
         static std::ostream& printIiIso(std::ostream& os, const Value& value, const ExifData*);
+        //! Print flash focal length
+        static std::ostream& printFlashFocalLength(std::ostream& os, const Value& value, const ExifData*);
+        //! Print repeating flash rate
+        static std::ostream& printRepeatingFlashRate(std::ostream& os, const Value& value, const ExifData*);
+        //! Print repeating flash count
+        static std::ostream& printRepeatingFlashCount(std::ostream& os, const Value& value, const ExifData*);
         //@}
 
     private:
@@ -207,6 +225,18 @@ namespace Exiv2 {
         static const TagInfo tagInfoIi_[];
         //! Auto Focus tag information
         static const TagInfo tagInfoAf_[];
+        //! Auto Focus tag 2 information
+        static const TagInfo tagInfoAf2_[];
+        //! File Info tag information
+        static const TagInfo tagInfoFi_[];
+        //! Multi Exposure tag information
+        static const TagInfo tagInfoMe_[];
+        //! Flash Info 1 tag information
+        static const TagInfo tagInfoFl1_[];
+        //! Flash Info 2 tag information
+        static const TagInfo tagInfoFl2_[];
+        //! Flash Info 3 tag information
+        static const TagInfo tagInfoFl3_[];
         //! Shot Info D80 tag information
         static const TagInfo tagInfoSi1_[];
         //! Shot Info D40 tag information
diff --git a/src/tags.cpp b/src/tags.cpp
index 5499653..0f41097 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -143,6 +143,12 @@ namespace Exiv2 {
         { nikonWtIfdId,      "Makernote", "NikonWt",      Nikon3MakerNote::tagListWt     },
         { nikonIiIfdId,      "Makernote", "NikonIi",      Nikon3MakerNote::tagListIi     },
         { nikonAfIfdId,      "Makernote", "NikonAf",      Nikon3MakerNote::tagListAf     },
+        { nikonAf2IfdId,     "Makernote", "NikonAf2",     Nikon3MakerNote::tagListAf2    },
+        { nikonFiIfdId,      "Makernote", "NikonFi",      Nikon3MakerNote::tagListFi     },
+        { nikonMeIfdId,      "Makernote", "NikonMe",      Nikon3MakerNote::tagListMe     },
+        { nikonFl1IfdId,     "Makernote", "NikonFl1",     Nikon3MakerNote::tagListFl1    },
+        { nikonFl2IfdId,     "Makernote", "NikonFl2",     Nikon3MakerNote::tagListFl2    },
+        { nikonFl3IfdId,     "Makernote", "NikonFl3",     Nikon3MakerNote::tagListFl3    },
         { nikonSi1IfdId,     "Makernote", "NikonSiD80",   Nikon3MakerNote::tagListSi1    },
         { nikonSi2IfdId,     "Makernote", "NikonSiD40",   Nikon3MakerNote::tagListSi2    },
         { nikonSi3IfdId,     "Makernote", "NikonSiD300a", Nikon3MakerNote::tagListSi3    },
diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp
index 32e686c..0619526 100644
--- a/src/tiffcomposite.cpp
+++ b/src/tiffcomposite.cpp
@@ -200,6 +200,12 @@ namespace Exiv2 {
         { 359, "SonySR2Data19"},
         { 360, "SonyIDC"      },
         { 361, "SonyIDC2"     },
+        { 362, "NikonFi"      },
+        { 363, "NikonAf2"     },
+        { 364, "NikonMe"      },
+        { 365, "NikonFl1"     },
+        { 366, "NikonFl2"     },
+        { 367, "NikonFl3"     },
     };
 
     bool TiffGroupInfo::operator==(const uint16_t& group) const
diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp
index 16a60b5..784c163 100644
--- a/src/tiffimage.cpp
+++ b/src/tiffimage.cpp
@@ -477,6 +477,145 @@ namespace Exiv2 {
         { 2, ttUnsignedShort, 1 } // The array contains 4 bytes
     };
 
+    //! Nikon Auto Focus 2 binary array - configuration
+    extern const ArrayCfg nikonAf2Cfg = {
+        Group::nikonaf2,   // Group for the elements
+        littleEndian,     // Byte order
+        ttUndefined,      // Type for array entry
+        notEncrypted,     // Not encrypted
+        false,            // No size element
+        true,             // Write all tags
+        true,             // Concatenate gaps
+        { 0, ttUnsignedByte,  1 }
+    };
+    //! Nikon Auto Focus 2 binary array - definition
+    extern const ArrayDef nikonAf2Def[] = {
+        {  0, ttUndefined,     4 }, // Version
+        {  4, ttUnsignedByte,  1 }, // ContrastDetectAF
+        {  5, ttUnsignedByte,  1 }, // AFAreaMode
+        {  6, ttUnsignedByte,  1 }, // PhaseDetectAF
+        {  7, ttUnsignedByte,  1 }, // PrimaryAFPoint
+        {  8, ttUnsignedByte,  7 }, // AFPointsUsed
+        { 16, ttUnsignedShort, 1 }, // AFImageWidth
+        { 18, ttUnsignedShort, 1 }, // AFImageHeight
+        { 20, ttUnsignedShort, 1 }, // AFAreaXPosition
+        { 22, ttUnsignedShort, 1 }, // AFAreaYPosition
+        { 24, ttUnsignedShort, 1 }, // AFAreaWidth
+        { 26, ttUnsignedShort, 1 }, // AFAreaHeight
+        { 28, ttUnsignedShort, 1 }, // ContrastDetectAFInFocus
+    };
+
+    //! Nikon File Info binary array - configuration
+    extern const ArrayCfg nikonFiCfg = {
+        Group::nikonfi,   // Group for the elements
+        littleEndian,     // Byte order
+        ttUndefined,      // Type for array entry
+        notEncrypted,     // Not encrypted
+        false,            // No size element
+        true,             // Write all tags
+        true,             // Concatenate gaps
+        { 0, ttUnsignedByte,  1 }
+    };
+    //! Nikon File Info binary array - definition
+    extern const ArrayDef nikonFiDef[] = {
+        { 0, ttUndefined,     4 }, // Version
+        { 6, ttUnsignedShort, 1 }, // Directory Number
+        { 8, ttUnsignedShort, 1 }  // File Number
+    };
+
+    //! Nikon File Info binary array - configuration
+    extern const ArrayCfg nikonMeCfg = {
+        Group::nikonme,   // Group for the elements
+        littleEndian,     // Byte order
+        ttUndefined,      // Type for array entry
+        notEncrypted,     // Not encrypted
+        false,            // No size element
+        true,             // Write all tags
+        true,             // Concatenate gaps
+        { 0, ttUnsignedByte,  1 }
+    };
+    //! Nikon File Info binary array - definition
+    extern const ArrayDef nikonMeDef[] = {
+        {  0, ttUndefined,     4 }, // Version
+        {  4, ttUnsignedLong,  1 }, // MultiExposureMode
+        {  8, ttUnsignedLong,  1 }, // MultiExposureShots
+        { 12, ttUnsignedLong,  1 }  // MultiExposureAutoGain
+    };
+
+    //! Nikon Flash Info binary array - configuration 1
+    extern const ArrayCfg nikonFl1Cfg = {
+        Group::nikonfl1,  // Group for the elements
+        littleEndian,     // Byte order
+        ttUndefined,      // Type for array entry
+        notEncrypted,     // Not encrypted
+        false,            // No size element
+        true,             // Write all tags
+        true,             // Concatenate gaps
+        { 0, ttUnsignedByte,  1 }
+    };
+    extern const ArrayDef nikonFl1Def[] = {
+        {  0, ttUndefined,     4 }, // Version
+        {  4, ttUnsignedByte,  1 }, // FlashSource
+        {  6, ttUnsignedByte,  2 }, // ExternalFlashFirmware
+        {  8, ttUnsignedByte,  1 }, // ExternalFlashFlags
+        { 11, ttUnsignedByte,  1 }, // FlashFocalLength
+        { 12, ttUnsignedByte,  1 }, // RepeatingFlashRate
+        { 13, ttUnsignedByte,  1 }, // RepeatingFlashCount
+        { 14, ttUnsignedByte,  1 }, // FlashGNDistance
+        { 15, ttUnsignedByte,  1 }, // FlashGroupAControlMode
+        { 16, ttUnsignedByte,  1 } // FlashGroupBControlMode
+    };
+    //! Nikon Flash Info binary array - configuration 2
+    extern const ArrayCfg nikonFl2Cfg = {
+        Group::nikonfl2,  // Group for the elements
+        littleEndian,     // Byte order
+        ttUndefined,      // Type for array entry
+        notEncrypted,     // Not encrypted
+        false,            // No size element
+        true,             // Write all tags
+        true,             // Concatenate gaps
+        { 0, ttUnsignedByte,  1 }
+    };
+    extern const ArrayDef nikonFl2Def[] = {
+        {  0, ttUndefined,     4 }, // Version
+        {  4, ttUnsignedByte,  1 }, // FlashSource
+        {  6, ttUnsignedByte,  2 }, // ExternalFlashFirmware
+        {  8, ttUnsignedByte,  1 }, // ExternalFlashFlags
+        { 12, ttUnsignedByte,  1 }, // FlashFocalLength
+        { 13, ttUnsignedByte,  1 }, // RepeatingFlashRate
+        { 14, ttUnsignedByte,  1 }, // RepeatingFlashCount
+        { 15, ttUnsignedByte,  1 }, // FlashGNDistance
+    };
+    //! Nikon Flash Info binary array - configuration 3
+    extern const ArrayCfg nikonFl3Cfg = {
+        Group::nikonfl3,  // Group for the elements
+        littleEndian,     // Byte order
+        ttUndefined,      // Type for array entry
+        notEncrypted,     // Not encrypted
+        false,            // No size element
+        true,             // Write all tags
+        true,             // Concatenate gaps
+        { 0, ttUnsignedByte,  1 }
+    };
+    //! Nikon Flash Info binary array - definition
+    extern const ArrayDef nikonFl3Def[] = {
+        {  0, ttUndefined,     4 }, // Version
+        {  4, ttUnsignedByte,  1 }, // FlashSource
+        {  6, ttUnsignedByte,  2 }, // ExternalFlashFirmware
+        {  8, ttUnsignedByte,  1 }, // ExternalFlashFlags
+        { 12, ttUnsignedByte,  1 }, // FlashFocalLength
+        { 13, ttUnsignedByte,  1 }, // RepeatingFlashRate
+        { 14, ttUnsignedByte,  1 }, // RepeatingFlashCount
+        { 15, ttUnsignedByte,  1 }, // FlashGNDistance
+        { 16, ttUnsignedByte,  1 }, // FlashColorFilter
+    };
+    //! Nikon Lens Data configurations and definitions
+    extern const ArraySet nikonFlSet[] = {
+        { nikonFl1Cfg, nikonFl1Def, EXV_COUNTOF(nikonFl1Def) },
+        { nikonFl2Cfg, nikonFl2Def, EXV_COUNTOF(nikonFl2Def) },
+        { nikonFl3Cfg, nikonFl3Def, EXV_COUNTOF(nikonFl3Def) }
+    };
+
     //! Nikon Shot Info binary array - configuration 1 (D80)
     extern const ArrayCfg nikonSi1Cfg = {
         Group::nikonsi1,  // Group for the elements
@@ -1038,6 +1177,12 @@ namespace Exiv2 {
         { Tag::root, Group::nikonld1,  Group::nikon3mn,  0x0098    },
         { Tag::root, Group::nikonld2,  Group::nikon3mn,  0x0098    },
         { Tag::root, Group::nikonld3,  Group::nikon3mn,  0x0098    },
+        { Tag::root, Group::nikonme,   Group::nikon3mn,  0x00b0    },
+        { Tag::root, Group::nikonaf2,  Group::nikon3mn,  0x00b7    },
+        { Tag::root, Group::nikonfi,   Group::nikon3mn,  0x00b8    },
+        { Tag::root, Group::nikonfl1,  Group::nikon3mn,  0x00a8    },
+        { Tag::root, Group::nikonfl2,  Group::nikon3mn,  0x00a8    },
+        { Tag::root, Group::nikonfl3,  Group::nikon3mn,  0x00a8    },
         { Tag::root, Group::panamn,    Group::exif,      0x927c    },
         { Tag::root, Group::pentaxmn,  Group::exif,      0x927c    },
         { Tag::root, Group::sigmamn,   Group::exif,      0x927c    },
@@ -1450,6 +1595,10 @@ namespace Exiv2 {
         {    0x0091, Group::nikon3mn,  EXV_COMPLEX_BINARY_ARRAY(nikonSiSet, nikonSelector) },
         {    0x0097, Group::nikon3mn,  EXV_COMPLEX_BINARY_ARRAY(nikonCbSet, nikonSelector) },
         {    0x0098, Group::nikon3mn,  EXV_COMPLEX_BINARY_ARRAY(nikonLdSet, nikonSelector) },
+        {    0x00a8, Group::nikon3mn,  EXV_COMPLEX_BINARY_ARRAY(nikonFlSet, nikonSelector) },
+        {    0x00b0, Group::nikon3mn,  EXV_BINARY_ARRAY(nikonMeCfg, nikonMeDef)  },
+        {    0x00b7, Group::nikon3mn,  EXV_BINARY_ARRAY(nikonAf2Cfg, nikonAf2Def) },
+        {    0x00b8, Group::nikon3mn,  EXV_BINARY_ARRAY(nikonFiCfg, nikonFiDef)  },
         {  Tag::all, Group::nikon3mn,  newTiffEntry                              },
 
         // Nikon3 makernote preview subdir
@@ -1472,6 +1621,20 @@ namespace Exiv2 {
 
         // Nikon3 auto focus
         {  Tag::all, Group::nikonaf,   newTiffBinaryElement                      },
+        
+        // Nikon3 auto focus 2
+        {  Tag::all, Group::nikonaf2,  newTiffBinaryElement                      },
+        
+        // Nikon3 file info
+        {  Tag::all, Group::nikonfi,   newTiffBinaryElement                      },
+
+        // Nikon3 file info
+        {  Tag::all, Group::nikonme,   newTiffBinaryElement                      },
+
+        // Nikon3 flash info
+        {  Tag::all, Group::nikonfl1,  newTiffBinaryElement                      },
+        {  Tag::all, Group::nikonfl2,  newTiffBinaryElement                      },
+        {  Tag::all, Group::nikonfl3,  newTiffBinaryElement                      },
 
         // Nikon3 shot info
         {  Tag::all, Group::nikonsi1,  newTiffBinaryElement                      },
diff --git a/src/types.hpp b/src/types.hpp
index 44f550f..21ba684 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -196,6 +196,12 @@ namespace Exiv2 {
         nikonWtIfdId,
         nikonIiIfdId,
         nikonAfIfdId,
+        nikonAf2IfdId,
+        nikonFiIfdId,
+        nikonMeIfdId,
+        nikonFl1IfdId,
+        nikonFl2IfdId,
+        nikonFl3IfdId,
         nikonSi1IfdId,
         nikonSi2IfdId,
         nikonSi3IfdId,

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list