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

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


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

The following commit has been merged in the master branch:
commit 782a845b868c5e66fa4a155f22228ceaee790541
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sun Mar 27 07:53:00 2005 +0000

    Added the foundations for Olympus Makernote support
---
 src/Makefile                       |   2 +-
 src/ifd.cpp                        |   3 +
 src/olympusmn.cpp                  | 286 +++++++++++++++++++++++++++++++++++++
 src/{sigmamn.hpp => olympusmn.hpp} |  78 +++++-----
 src/tags.cpp                       |   2 +
 src/types.hpp                      |   2 +-
 6 files changed, 334 insertions(+), 39 deletions(-)

diff --git a/src/Makefile b/src/Makefile
index 9ed42d8..17caef9 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -53,7 +53,7 @@ CCHDR = exv_conf.h exv_msvc.h error.hpp rcsid.hpp
 # Add library C++ source files to this list
 CCSRC = basicio.cpp canonmn.cpp datasets.cpp exif.cpp fujimn.cpp ifd.cpp \
         image.cpp iptc.cpp jpgimage.cpp makernote.cpp metadatum.cpp nikonmn.cpp \
-        sigmamn.cpp tags.cpp types.cpp value.cpp 
+        olympusmn.cpp sigmamn.cpp tags.cpp types.cpp value.cpp 
 
 # Add source files of simple applications to this list
 BINSRC = addmoddel.cpp dataarea-test.cpp exifcomment.cpp exifdata-test.cpp \
diff --git a/src/ifd.cpp b/src/ifd.cpp
index 5108e7c..8597ebd 100644
--- a/src/ifd.cpp
+++ b/src/ifd.cpp
@@ -289,6 +289,9 @@ namespace Exiv2 {
 
     int Ifd::read(const byte* buf, long len, ByteOrder byteOrder, long offset)
     {
+        // Todo: This is a hack to work around bug #424 - fix it properly!
+        if (ifdId_ == olympusIfdId) len = 65535;
+
         int rc = 0;
         long o = 0;
         Ifd::PreEntries preEntries;
diff --git a/src/olympusmn.cpp b/src/olympusmn.cpp
new file mode 100644
index 0000000..57f1a50
--- /dev/null
+++ b/src/olympusmn.cpp
@@ -0,0 +1,286 @@
+// ***************************************************************** -*- C++ -*-
+/*
+ * Copyright (C) 2005 Andreas Huggel <ahuggel at gmx.net>
+ * 
+ * This program is part of the Exiv2 distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+/*
+  File:      olympusmn.cpp
+  Version:   $Rev$
+  Author(s): Will Stokes (wuz) <wstokes at gmail.com>
+             Andreas Huggel (ahu) <ahuggel at gmx.net>
+  History:   10-Mar-05, wuz: created
+  Credits:   Olympus MakerNote implemented according to the specification
+             in "???" by ???.
+             <http://???>
+ */
+
+// *****************************************************************************
+#include "rcsid.hpp"
+EXIV2_RCSID("@(#) $Id: olympusmn.cpp 1 2005-03-10 10:04:00 wuz $");
+
+// *****************************************************************************
+// included header files
+#include "types.hpp"
+#include "olympusmn.hpp"
+#include "makernote.hpp"
+#include "value.hpp"
+
+// + standard includes
+#include <string>
+#include <sstream>
+#include <iomanip>
+#include <cassert>
+
+// Define DEBUG_MAKERNOTE to output debug information to std::cerr
+#undef DEBUG_MAKERNOTE
+
+// *****************************************************************************
+// class member definitions
+namespace Exiv2 {
+
+    const OlympusMakerNote::RegisterMakerNote OlympusMakerNote::register_;
+
+    // Olympus Tag Info
+    const TagInfo OlympusMakerNote::tagInfo_[] = {
+        TagInfo(0x0200, "SpecialMode", "Picture taking mode (First Value: 0=normal, 2=fast, 3=panorama Second Value: sequence number Third Value: panorma direction (1=left to right, 2=right to left, 3 = bottom to top, 4=top to bottom)", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x0201, "JpegQual", "JPEG quality 1=SQ 2=HQ 3=SHQ", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0202, "Macro", "Macro mode 0=normal, 1=macro", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0203, "0x0203", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0204, "DigiZoom", "Digital Zoom Ratio 0=normal 2=2x digital zoom", olympusIfdId, makerTags, unsignedRational, printValue),
+        TagInfo(0x0205, "0x0205", "Unknown", olympusIfdId, makerTags, unsignedRational, printValue),
+        TagInfo(0x0206, "0x0206", "Unknown", olympusIfdId, makerTags, signedShort, printValue),
+        TagInfo(0x0207, "SoftwareRelease", "Software firmware version", olympusIfdId, makerTags, asciiString, printValue),
+        TagInfo(0x0208, "PictInfo", "ASCII format data such as [PictureInfo]", olympusIfdId, makerTags, asciiString, printValue),
+        TagInfo(0x0209, "CameraID", "CameraID data", olympusIfdId, makerTags, undefined, printValue),
+        TagInfo(0x0300, "0x0300", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0301, "0x0301", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0302, "0x0302", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0303, "0x0303", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0304, "0x0304", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0f00, "DataDump", "Various camera settings", olympusIfdId, makerTags, undefined, print0x0f00),
+        TagInfo(0x1000, "0x1000", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1001, "0x1001", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1002, "0x1002", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1003, "0x1003", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1004, "0x1004", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1005, "0x1005", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1006, "0x1006", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1007, "0x1007", "Unknown", olympusIfdId, makerTags, signedShort, printValue),
+        TagInfo(0x1008, "0x1008", "Unknown", olympusIfdId, makerTags, signedShort, printValue),
+        TagInfo(0x1009, "0x1009", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x100a, "0x100a", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x100b, "0x100b", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x100c, "0x100c", "Unknown", olympusIfdId, makerTags, unsignedRational, printValue),
+        TagInfo(0x100d, "0x100d", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x100e, "0x100e", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x100f, "0x100f", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1010, "0x1010", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1011, "0x1011", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1012, "0x1012", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1013, "0x1013", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1014, "0x1014", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1015, "0x1015", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1016, "0x1016", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1017, "0x1017", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1018, "0x1018", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1019, "0x1019", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x101a, "0x101a", "Unknown", olympusIfdId, makerTags, asciiString, printValue),
+        TagInfo(0x101b, "0x101b", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x101c, "0x101c", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x101d, "0x101d", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x101e, "0x101e", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x101f, "0x101f", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1020, "0x1020", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1021, "0x1021", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1022, "0x1022", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1023, "0x1023", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1024, "0x1024", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1025, "0x1025", "Unknown", olympusIfdId, makerTags, signedRational, printValue),
+        TagInfo(0x1026, "0x1026", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1027, "0x1027", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1028, "0x1028", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1029, "0x1029", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x102a, "0x102a", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x102b, "0x102b", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x102c, "0x102c", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x102d, "0x102d", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x102e, "0x102e", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x102f, "0x102f", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1030, "0x1030", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1031, "0x1031", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1032, "0x1032", "Unknown", olympusIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x1033, "0x1033", "Unknown", olympusIfdId, makerTags, unsignedLong, printValue),
+        TagInfo(0x1034, "0x1034", "Unknown", olympusIfdId, makerTags, unsignedRational, printValue),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownOlympusMakerNoteTag)", "Unknown OlympusMakerNote tag", olympusIfdId, makerTags, invalidTypeId, printValue)
+    };
+
+    OlympusMakerNote::OlympusMakerNote(bool alloc)
+        : IfdMakerNote(olympusIfdId, alloc)
+    {
+        byte buf[] = {
+            'O', 'L', 'Y', 'M', 'P', 0x00, 0x01, 0x00
+        };
+        readHeader(buf, 8, byteOrder_);
+    }
+
+    OlympusMakerNote::OlympusMakerNote(const OlympusMakerNote& rhs)
+        : IfdMakerNote(rhs)
+    {
+    }
+
+    int OlympusMakerNote::readHeader(const byte* buf,
+                                   long len, 
+                                   ByteOrder byteOrder)
+    {
+        if (len < 8) return 1;
+  
+        // Copy the header
+        header_.alloc(8);
+        memcpy(header_.pData_, buf, header_.size_);
+        // Adjust the offset of the IFD for the prefix
+        adjOffset_ = 8;
+
+        return 0;
+    }
+
+    int OlympusMakerNote::checkHeader() const
+    {
+        int rc = 0;
+        // Check the OLYMPUS prefix
+        if (   header_.size_ < 8
+            || std::string(reinterpret_cast<char*>(header_.pData_), 5) 
+               != std::string("OLYMP", 5)) {
+            rc = 2;
+        }
+        return rc;
+    }
+
+    OlympusMakerNote::AutoPtr OlympusMakerNote::create(bool alloc) const
+    {
+        return AutoPtr(create_(alloc));
+    }
+
+    OlympusMakerNote* OlympusMakerNote::create_(bool alloc) const
+    {
+        AutoPtr makerNote = AutoPtr(new OlympusMakerNote(alloc));
+        assert(makerNote.get() != 0);
+        makerNote->readHeader(header_.pData_, header_.size_, byteOrder_);
+        return makerNote.release();
+    }
+
+    OlympusMakerNote::AutoPtr OlympusMakerNote::clone() const
+    {
+        return AutoPtr(clone());
+    }
+
+    OlympusMakerNote* OlympusMakerNote::clone_() const 
+    {
+        return new OlympusMakerNote(*this); 
+    }
+
+    std::ostream& OlympusMakerNote::print0x0f00(std::ostream& os, 
+                                                const Value& value)
+    {
+        if (value.typeId() != undefined) return os << value;
+
+        long count = value.count();
+        long lA, lB;
+        
+        if (count < 11) return os;
+        lA = value.toLong(11);
+        os << std::setw(23) << "
   Function ";
+        print0x0f00_011(os, lA);
+        
+        if (count < 138) return os;
+        lA = value.toLong(138);
+        os << std::setw(23) << "
   White balance mode ";
+        print0x0f00_138(os, lA);
+
+        if (count < 150) return os;
+        lA = value.toLong(150);
+        lB = value.toLong(151);
+        os << std::setw(23) << "
   Sharpness ";
+        print0x0f00_150_151(os, lA, lB);
+      
+        // Meaning of any further ushorts is unknown - ignore them
+        return os;
+
+    } // OlympusMakerNote::print0x0f00
+    
+    std::ostream& OlympusMakerNote::print0x0f00_011(std::ostream& os, long l)
+    {
+        switch (l) {
+        case  0: os << "Off";             break;
+        case  1: os << "Black and White"; break;
+        case  2: os << "Sepia";           break;
+        case  3: os << "White Board";     break;
+        case  4: os << "Black Board";     break;
+        default: os << "Unknown (" << l << ")";
+        }
+        return os;
+    }
+
+    std::ostream& OlympusMakerNote::print0x0f00_138(std::ostream& os, long l)
+    {
+        switch (l) {
+        case 0:  os << "Auto";        break;
+        case 16: os << "Daylight";    break;
+        case 32: os << "Tungsten";    break;
+        case 48: os << "Fluorescent"; break;
+        case 64: os << "Shade";       break;
+        default: os << "Unknown (" << l << ")";
+        }
+        return os;
+    }
+    
+    std::ostream& OlympusMakerNote::print0x0f00_150_151(std::ostream& os, 
+                                                        long l150, long l151)
+    {
+        if( l150 == 24 && l151 == 6 ) {
+            os << "Soft"; 
+        }
+        else if ((l150 == 32 && l151 == 12) ||
+                 (l150 == 30 && l151 == 11) ||
+                 (l150 == 24 && l151 == 8)) {
+            os << "Normal"; 
+        }
+        else if ((l150 == 40 && l151 == 16) ||
+                 (l150 == 38 && l151 == 15) ||
+                 (l150 == 32 && l151 == 12)) {
+            os << "Hard"; 
+        }
+        else {
+            os << "Unknown"; 
+        }
+        return os;
+    }
+
+// *****************************************************************************
+// free functions
+
+    MakerNote::AutoPtr createOlympusMakerNote(bool alloc,
+                                              const byte* buf, 
+                                              long len, 
+                                              ByteOrder byteOrder, 
+                                              long offset)
+    {
+        return MakerNote::AutoPtr(new OlympusMakerNote(alloc));
+    }
+
+}                                       // namespace Exiv2
diff --git a/src/sigmamn.hpp b/src/olympusmn.hpp
similarity index 69%
copy from src/sigmamn.hpp
copy to src/olympusmn.hpp
index e304f8d..8c8834e 100644
--- a/src/sigmamn.hpp
+++ b/src/olympusmn.hpp
@@ -1,6 +1,6 @@
 // ***************************************************************** -*- C++ -*-
 /*
- * Copyright (C) 2004, 2005 Andreas Huggel <ahuggel at gmx.net>
+ * Copyright (C) 2005 Andreas Huggel <ahuggel at gmx.net>
  * 
  * This program is part of the Exiv2 distribution.
  *
@@ -19,17 +19,19 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 /*!
-  @file    sigmamn.hpp
-  @brief   Sigma and Foveon MakerNote implemented according to the specification
-           <a href="http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html">
-           SIGMA and FOVEON EXIF MakerNote Documentation</a> by Foveon.           
+  @file    olympusmn.hpp
+  @brief   Olympus MakerNote implemented according to the specification
+           <a href="http://?????">
+           Olympus MakerNote Documentation</a> by ???.           
   @version $Rev$
   @author  Andreas Huggel (ahu)
            <a href="mailto:ahuggel at gmx.net">ahuggel at gmx.net</a>
-  @date    02-Apr-04, ahu: created
+  @author  Will Stokes (wuz)
+           <a href="mailto:wstokes at gmail.com">wstokes at gmail.com</a>
+  @date    10-Mar-05, wuz: created
  */
-#ifndef SIGMAMN_HPP_
-#define SIGMAMN_HPP_
+#ifndef OLYMPUSMN_HPP_
+#define OLYMPUSMN_HPP_
 
 // *****************************************************************************
 // included header files
@@ -75,20 +77,20 @@ namespace Exiv2 {
              owns this copy and the auto-pointer ensures that it will be
              deleted.
      */
-    MakerNote::AutoPtr createSigmaMakerNote(bool alloc,
-                                            const byte* buf, 
-                                            long len, 
-                                            ByteOrder byteOrder, 
-                                            long offset);
+    MakerNote::AutoPtr createOlympusMakerNote(bool alloc,
+                                              const byte* buf, 
+                                              long len, 
+                                              ByteOrder byteOrder, 
+                                              long offset);
 
 // *****************************************************************************
 // class definitions
 
-    //! MakerNote for Sigma (Foveon) cameras
-    class SigmaMakerNote : public IfdMakerNote {
+    //! MakerNote for Olympus cameras
+    class OlympusMakerNote : public IfdMakerNote {
     public:
-        //! Shortcut for a %SigmaMakerNote auto pointer.
-        typedef std::auto_ptr<SigmaMakerNote> AutoPtr;
+        //! Shortcut for a %OlympusMakerNote auto pointer.
+        typedef std::auto_ptr<OlympusMakerNote> AutoPtr;
 
         //! @name Creators
         //@{
@@ -96,11 +98,11 @@ namespace Exiv2 {
           @brief Constructor. Allows to choose whether or not memory management
                  is required for the makernote entries.
          */
-        SigmaMakerNote(bool alloc =true);
+        OlympusMakerNote(bool alloc =true);
         //! Copy constructor
-        SigmaMakerNote(const SigmaMakerNote& rhs);
+        OlympusMakerNote(const OlympusMakerNote& rhs);
         //! Virtual destructor
-        virtual ~SigmaMakerNote() {}
+        virtual ~OlympusMakerNote() {}
         //@}
 
         //! @name Manipulators
@@ -117,21 +119,24 @@ namespace Exiv2 {
         AutoPtr clone() const;
         //@}
 
-        //! @name Print functions for Sigma (Foveon) %MakerNote tags 
+        //! @name Print functions for Olympus %MakerNote tags 
         //@{
-        //! Strip the label from the value and print the remainder
-        static std::ostream& printStripLabel(std::ostream& os, const Value& value);
-        //! Print exposure mode
-        static std::ostream& print0x0008(std::ostream& os, const Value& value);
-        //! Print metering mode
-        static std::ostream& print0x0009(std::ostream& os, const Value& value);
+        //! Print various camera settings (uses print0x0f00_XXX functions)
+        static std::ostream& print0x0f00(std::ostream& os, const Value& value);
+
+        //! Function
+        static std::ostream& print0x0f00_011(std::ostream& os, long l);
+        //! White Balance
+        static std::ostream& print0x0f00_138(std::ostream& os, long l);
+        //! Sharpness
+        static std::ostream& print0x0f00_150_151(std::ostream& os, long l1, long l2);
         //@}
 
     private:
         //! Internal virtual create function.
-        SigmaMakerNote* create_(bool alloc =true) const;
+        OlympusMakerNote* create_(bool alloc =true) const;
         //! Internal virtual copy constructor.
-        SigmaMakerNote* clone_() const;
+        OlympusMakerNote* clone_() const;
 
         //! Tag information
         static const TagInfo tagInfo_[];
@@ -142,11 +147,10 @@ namespace Exiv2 {
             RegisterMakerNote() 
             {
                 MakerNoteFactory& mnf = MakerNoteFactory::instance();
-                mnf.registerMakerNote("SIGMA", "*", createSigmaMakerNote); 
-                mnf.registerMakerNote("FOVEON", "*", createSigmaMakerNote); 
-                mnf.registerMakerNote(sigmaIfdId,
-                                      MakerNote::AutoPtr(new SigmaMakerNote));
-                ExifTags::registerMakerTagInfo(sigmaIfdId, tagInfo_);
+                mnf.registerMakerNote("OLYMPUS*", "*", createOlympusMakerNote); 
+                mnf.registerMakerNote(olympusIfdId,
+                                      MakerNote::AutoPtr(new OlympusMakerNote));
+                ExifTags::registerMakerTagInfo(olympusIfdId, tagInfo_);
             }
         };
         // DATA
@@ -162,10 +166,10 @@ namespace Exiv2 {
                 forced to eagerly load all modules, but load them only on
                 demand.
          */
-        static const RegisterMakerNote register_; 
+        static const RegisterMakerNote register_;
 
-    }; // class SigmaMakerNote
+    }; // class OlympusMakerNote
 
 }                                       // namespace Exiv2
 
-#endif                                  // #ifndef SIGMAMN_HPP_
+#endif                                  // #ifndef OLYMPUSMN_HPP_
diff --git a/src/tags.cpp b/src/tags.cpp
index 6126fed..128f8a3 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -54,6 +54,7 @@ namespace Exiv2 {
     {
     }
 
+    // Todo: Allow to register new IfdInfo entries from elsewhere (the makernotes)
     // Important: IFD item must be unique!
     const IfdInfo ExifTags::ifdInfo_[] = {
         IfdInfo(ifdIdNotSet, "(Unknown IFD)", "(Unknown item)"),
@@ -68,6 +69,7 @@ namespace Exiv2 {
         IfdInfo(nikon2IfdId, "Makernote", "Nikon2"),
         IfdInfo(nikon3IfdId, "Makernote", "Nikon3"),
         IfdInfo(nikon3ThumbIfdId, "Makernote", "Nikon3Thumb"),
+        IfdInfo(olympusIfdId, "Makernote", "Olympus"),
         IfdInfo(sigmaIfdId, "Makernote", "Sigma"),
         IfdInfo(lastIfdId, "(Last IFD info)", "(Last IFD item)")
     };
diff --git a/src/types.hpp b/src/types.hpp
index 3ffe118..eedeecf 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -89,7 +89,7 @@ namespace Exiv2 {
     enum IfdId { ifdIdNotSet, 
                  ifd0Id, exifIfdId, gpsIfdId, iopIfdId, ifd1Id, 
                  canonIfdId, fujiIfdId, nikon1IfdId, nikon2IfdId, nikon3IfdId, 
-                 nikon3ThumbIfdId, sigmaIfdId,
+                 nikon3ThumbIfdId, olympusIfdId, sigmaIfdId,
                  lastIfdId };
 
 // *****************************************************************************

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list