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

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:35:56 UTC 2017


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

The following commit has been merged in the master branch:
commit 9bf351c60bf9944126ccdc8832241f1add06a5bf
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sat Jan 17 02:23:27 2004 +0000

    More code
---
 src/exif.cpp     |  35 ++++-
 src/exif.hpp     |  16 ++-
 src/exiftest.cpp |  10 +-
 src/tags.cpp     | 416 ++++++++++++++++++++++++++-----------------------------
 src/tags.hpp     |  33 +++--
 src/utils.cpp    |  17 +--
 src/utils.hpp    |  25 +---
 7 files changed, 271 insertions(+), 281 deletions(-)

diff --git a/src/exif.cpp b/src/exif.cpp
index ae140c6..4d9993a 100644
--- a/src/exif.cpp
+++ b/src/exif.cpp
@@ -12,7 +12,7 @@
 
   RCS information
    $Name:  $
-   $Revision: 1.1 $
+   $Revision: 1.2 $
  */
 // *****************************************************************************
 // included header files
@@ -215,6 +215,14 @@ namespace Exif {
         return *this;
     } // Metadatum::operator=
 
+    std::string Metadatum::key() const
+    {
+        std::string key = std::string(ifdItem()) 
+                  + "." + std::string(sectionName()) 
+                  + "." + std::string(tagName());
+        return key;
+    }
+
     Ifd::Ifd(IfdId ifdId)
         : ifdId_(ifdId), offset_(0), next_(0), size_(0)
     {
@@ -427,8 +435,8 @@ namespace Exif {
         if (rc) return rc;
 
         // Find and read Interoperability IFD in ExifIFD
-        Ifd exifIopIfd(exifIopIfd);
-        rc = exifIfd.readSubIfd(exifIopIfd, buf, byteOrder, 0xa005);
+        Ifd iopIfd(iopIfd);
+        rc = exifIfd.readSubIfd(iopIfd, buf, byteOrder, 0xa005);
         if (rc) return rc;
 
         // Find and read GPSInfo sub-IFD in IFD0
@@ -443,16 +451,31 @@ namespace Exif {
             if (rc) return rc;
         }
 
-        // Todo: Should we also look for Exif IFD and GPSInfo IFD in IFD1
-        //       and, if found, Interop. IFD in the Exif IFD???
+        // Find and read ExifIFD sub-IFD of IFD1
+        Ifd ifd1ExifIfd(ifd1ExifIfd);
+        rc = ifd1.readSubIfd(ifd1ExifIfd, buf, byteOrder, 0x8769);
+        if (rc) return rc;
+
+        // Find and read Interoperability IFD in ExifIFD of IFD1
+        Ifd ifd1IopIfd(ifd1IopIfd);
+        rc = ifd1ExifIfd.readSubIfd(ifd1IopIfd, buf, byteOrder, 0xa005);
+        if (rc) return rc;
+
+        // Find and read GPSInfo sub-IFD in IFD1
+        Ifd ifd1GpsIfd(ifd1GpsIfd);
+        rc = ifd1.readSubIfd(ifd1GpsIfd, buf, byteOrder, 0x8825);
+        if (rc) return rc;
 
         // Finally, copy all metadata from the IFDs to the internal metadata
         metadata_.clear();
         add(ifd0.entries());
         add(exifIfd.entries());
-        add(exifIopIfd.entries()); 
+        add(iopIfd.entries()); 
         add(gpsIfd.entries());
         add(ifd1.entries());
+        add(ifd1ExifIfd.entries());
+        add(ifd1IopIfd.entries());
+        add(ifd1GpsIfd.entries());
 
         return 0;
     } // ExifData::read
diff --git a/src/exif.hpp b/src/exif.hpp
index 610d152..076f887 100644
--- a/src/exif.hpp
+++ b/src/exif.hpp
@@ -6,14 +6,14 @@
  *
  */
 /*!
-  @file    exif.h
+  @file    exif.hpp
   @brief   Encoding and decoding of %Exif data
-  @version $Name:  $ $Revision: 1.1 $
+  @version $Name:  $ $Revision: 1.2 $
   @author  Andreas Huggel (ahu)
   @date    09-Jan-03, ahu: created
  */
-#ifndef _EXIF_H_
-#define _EXIF_H_
+#ifndef _EXIF_HPP_
+#define _EXIF_HPP_
 
 // *****************************************************************************
 // included header files
@@ -161,9 +161,13 @@ namespace Exif {
         long typeSize() const { return ExifTags::typeSize(type_); }
         //! Returns the name of the IFD
         const char* ifdName() const { return ExifTags::ifdName(ifdId_); }
+        //! Returns the related image item (image or thumbnail)
+        const char* ifdItem() const { return ExifTags::ifdItem(ifdId_); }
         //! Returns the name of the section
         const char* sectionName() const 
             { return ExifTags::sectionName(tag_, ifdId_); }
+        //! Returns a unique key of the tag (ifdItem.sectionName.tagName)
+        std::string key() const;
 
     public:
         uint16 tag_;                   //!< Tag value
@@ -208,7 +212,7 @@ namespace Exif {
     class Ifd {
     public:
         //! Constructor. Allows to set the IFD identifier.
-        Ifd(IfdId ifdId =IfdIdNotSet);
+        explicit Ifd(IfdId ifdId =IfdIdNotSet);
         /*!
           @brief Read a complete IFD and its data from a data buffer
 
@@ -361,4 +365,4 @@ namespace Exif {
 
 }                                       // namespace Exif
 
-#endif                                  // #ifndef _EXIF_H_
+#endif                                  // #ifndef _EXIF_HPP_
diff --git a/src/exiftest.cpp b/src/exiftest.cpp
index 1e87ffd..d1a7015 100644
--- a/src/exiftest.cpp
+++ b/src/exiftest.cpp
@@ -19,15 +19,11 @@ int main(int argc, char* const argv[])
         Exif::ExifData::const_iterator i = beg;
         for (; i != end; ++i) {
 
-            std::cout << std::setw(9) << std::setfill(' ') << std::left
-                      << i->ifdName() << " "
-                      << std::setw(9) << std::setfill(' ') << std::left
-                      << i->sectionName() << " "
-                      << "0x" 
+            std::cout << "0x" 
                       << std::hex << std::setw(4) << std::setfill('0') << std::right
                       << i->tag_ << " " 
-                      << std::setw(27) << std::setfill(' ') << std::left
-                      << i->tagName() << " "
+                      << std::setw(50) << std::setfill(' ') << std::left
+                      << i->key() << " "
                       << std::setw(17) << std::setfill(' ') << std::left
                       << i->typeName() << " "
                       << std::dec << std::setw(3) << std::setfill(' ') << std::right
diff --git a/src/tags.cpp b/src/tags.cpp
index 5d728aa..1ef70a4 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -12,59 +12,59 @@
 
   RCS information
    $Name:  $
-   $Revision: 1.1 $
+   $Revision: 1.2 $
  */
 // *****************************************************************************
 // included header files
 #include "tags.hpp"
 
-// + standard includes
-
-// *****************************************************************************
-// local declarations
-namespace {
-
-}
-
 // *****************************************************************************
 // class member definitions
 namespace Exif {
 
-    IfdInfo::IfdInfo(IfdId ifdId, const char* name)
-        : ifdId_(ifdId), name_(name)
+    IfdInfo::IfdInfo(IfdId ifdId, const char* name, const char* item)
+        : ifdId_(ifdId), name_(name), item_(item)
     {
     }
 
     const IfdInfo ExifTags::ifdInfo_[] = {
-        IfdInfo(IfdIdNotSet, "(Unknown IFD)"),
-
-        IfdInfo(ifd0, "IFD0"),
-        IfdInfo(exifIfd, "Exif"),
-        IfdInfo(gpsIfd, "GPSInfo"),
-        IfdInfo(exifMakerIfd, "MakerNote"),
-        IfdInfo(exifIopIfd, "Exif Iop."),
-        IfdInfo(ifd1, "IFD1"),
-
-        IfdInfo(ifd1ExifIfd, "Exif (at IFD1)"),
-        IfdInfo(ifd1GpsIfd, "GPSInfo (at IFD1)"),
-        IfdInfo(ifd1MakerIfd, "MakerNote (at IFD1)"),
-        IfdInfo(ifd1ExifIopIfd, "Exif Iop. (at IFD1)")
+        IfdInfo(IfdIdNotSet, "(Unknown IFD)", "(Unknown data area)"),
+        IfdInfo(ifd0, "IFD0", "Image"),
+        IfdInfo(exifIfd, "Exif", "Image"),
+        IfdInfo(gpsIfd, "GPSInfo", "Image"),
+        IfdInfo(makerIfd, "MakerNote", "Image"),
+        IfdInfo(iopIfd, "Iop", "Image"),
+        IfdInfo(ifd1, "IFD1", "Thumbnail"),
+        IfdInfo(ifd1ExifIfd, "Exif", "Thumbnail"),
+        IfdInfo(ifd1GpsIfd, "GPSInfo", "Thumbnail"),
+        IfdInfo(ifd1MakerIfd, "MakerNote", "Thumbnail"),
+        IfdInfo(ifd1IopIfd, "Iop", "Thumbnail")
     };
 
-    SectionInfo::SectionInfo(SectionId sectionId, const char* name)
-        : sectionId_(sectionId), name_(name)
+    SectionInfo::SectionInfo(
+        SectionId sectionId,
+        const char* name,
+        const char* desc
+    )
+        : sectionId_(sectionId), name_(name), desc_(desc)
     {
     }
 
     const SectionInfo ExifTags::sectionInfo_[] = {
-        SectionInfo(SectionIdNotSet, "(Unknown Section)"),
-
-        SectionInfo(ifd0Tiff, "IFD0"),
-        SectionInfo(exifIfdSection, "Exif"),
-        SectionInfo(gpsIfdSection, "GPSInfo"),
-        SectionInfo(exifIopIfdSection, "Exif Iop."),
-        SectionInfo(ifd1Section, "IFD1")
-
+        SectionInfo(SectionIdNotSet, "(UnknownSection)", "Unknown section"),
+        SectionInfo(imgStruct, "ImageStructure", "Image data structure"),
+        SectionInfo(recOffset, "RecordingOffset", "Recording offset"),
+        SectionInfo(imgCharacter, "ImageCharacteristics", "Image data characteristics"),
+        SectionInfo(otherTags, "OtherTags", "Other data"),
+        SectionInfo(exifFormat, "ExifFormat", "Exif data structure"),
+        SectionInfo(exifVersion, "ExifVersion", "Exif Version"),
+        SectionInfo(imgConfig, "ImageConfig", "Image configuration"),
+        SectionInfo(userInfo, "UserInfo", "User information"),
+        SectionInfo(relatedFile, "RelatedFile", "Related file"),
+        SectionInfo(dateTime, "DateTime", "Date and time"),
+        SectionInfo(captureCond, "CaptureConditions", "Picture taking conditions"),
+        SectionInfo(gpsTags, "GPS", "GPS information"),
+        SectionInfo(iopTags, "Interoperability", "Interoperability information")
     };
 
     TagFormat::TagFormat(uint16 type, const char* name, long size)
@@ -101,198 +101,184 @@ namespace Exif {
     {
     }
 
-    //! Lookup list with tags, their names and where they belong to
-    const TagInfo ExifTags::tagInfo_[] = {
-        // Exif Interoperability IFD Tags
-        TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", exifIopIfd, exifIopIfdSection),
-        TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", exifIopIfd, exifIopIfdSection),
-        TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", exifIopIfd, exifIopIfdSection),
-        TagInfo(0x1001, "RelatedImageWidth", "Image width", exifIopIfd, exifIopIfdSection),
-        TagInfo(0x1002, "RelatedImageLength", "Image height", exifIopIfd, exifIopIfdSection),
-
-        // GPS Info Tags
-        TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfd, gpsIfdSection),
-        TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfd, gpsIfdSection),
-        TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfd, gpsIfdSection),
-        TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfd, gpsIfdSection),
-        TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfd, gpsIfdSection),
-        TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfd, gpsIfdSection),
-        TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfd, gpsIfdSection),
-        TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfd, gpsIfdSection),
-        TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfd, gpsIfdSection),
-        TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfd, gpsIfdSection),
-        TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfd, gpsIfdSection),
-        TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfd, gpsIfdSection),
-        TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfd, gpsIfdSection),
-        TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfd, gpsIfdSection),
-        TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfd, gpsIfdSection),
-        TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfd, gpsIfdSection),
-        TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfd, gpsIfdSection),
-        TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfd, gpsIfdSection),
-        TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfd, gpsIfdSection),
-        TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfd, gpsIfdSection),
-        TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfd, gpsIfdSection),
-        TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfd, gpsIfdSection),
-        TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfd, gpsIfdSection),
-        TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfd, gpsIfdSection),
-
-        // IFD0 Tags
-        TagInfo(0x0100, "ImageWidth", "Image width", ifd0, ifd0Tiff),
-        TagInfo(0x0101, "ImageLength", "Image height", ifd0, ifd0Tiff),
-        TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0, ifd0Tiff),
-        TagInfo(0x0103, "Compression", "Compression scheme", ifd0, ifd0Tiff),
-        TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0, ifd0Tiff),
-        TagInfo(0x010e, "ImageDescription", "Image title", ifd0, ifd0Tiff),
-        TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0, ifd0Tiff),
-        TagInfo(0x0110, "Model", "Model of image input equipment", ifd0, ifd0Tiff),
-        TagInfo(0x0111, "StripOffsets", "Image data location", ifd0, ifd0Tiff),
-        TagInfo(0x0112, "Orientation", "Orientation of image", ifd0, ifd0Tiff),
-        TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0, ifd0Tiff),
-        TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0, ifd0Tiff),
-        TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0, ifd0Tiff),
-        TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0, ifd0Tiff),
-        TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0, ifd0Tiff),
-        TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0, ifd0Tiff),
-        TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0, ifd0Tiff),
-        TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0, ifd0Tiff),
-        TagInfo(0x0131, "Software", "Software used", ifd0, ifd0Tiff),
-        TagInfo(0x0132, "DateTime", "File change date and time", ifd0, ifd0Tiff),
-        TagInfo(0x013b, "Artist", "Person who created the image", ifd0, ifd0Tiff),
-        TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0, ifd0Tiff),
-        TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0, ifd0Tiff),
-        TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0, ifd0Tiff),
-        TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0, ifd0Tiff),
-        TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0, ifd0Tiff),
-        TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0, ifd0Tiff),
-        TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0, ifd0Tiff),
-        TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0, ifd0Tiff),
-        TagInfo(0x8298, "Copyright", "Copyright holder", ifd0, ifd0Tiff),
-        TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0, ifd0Tiff),
-        TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0, ifd0Tiff),
-
-        // IFD1 Tags
-        TagInfo(0x0100, "ImageWidth", "Image width", ifd1, ifd1Section),
-        TagInfo(0x0101, "ImageLength", "Image height", ifd1, ifd1Section),
-        TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd1, ifd1Section),
-        TagInfo(0x0103, "Compression", "Compression scheme", ifd1, ifd1Section),
-        TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd1, ifd1Section),
-        TagInfo(0x010e, "ImageDescription", "Image title", ifd1, ifd1Section),
-        TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd1, ifd1Section),
-        TagInfo(0x0110, "Model", "Model of image input equipment", ifd1, ifd1Section),
-        TagInfo(0x0111, "StripOffsets", "Image data location", ifd1, ifd1Section),
-        TagInfo(0x0112, "Orientation", "Orientation of image", ifd1, ifd1Section),
-        TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd1, ifd1Section),
-        TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd1, ifd1Section),
-        TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd1, ifd1Section),
-        TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd1, ifd1Section),
-        TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd1, ifd1Section),
-        TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd1, ifd1Section),
-        TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd1, ifd1Section),
-        TagInfo(0x012d, "TransferFunction", "Transfer function", ifd1, ifd1Section),
-        TagInfo(0x0131, "Software", "Software used", ifd1, ifd1Section),
-        TagInfo(0x0132, "DateTime", "File change date and time", ifd1, ifd1Section),
-        TagInfo(0x013b, "Artist", "Person who created the image", ifd1, ifd1Section),
-        TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd1, ifd1Section),
-        TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd1, ifd1Section),
-        TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd1, ifd1Section),
-        TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd1, ifd1Section),
-        TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd1, ifd1Section),
-        TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd1, ifd1Section),
-        TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd1, ifd1Section),
-        TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd1, ifd1Section),
-        TagInfo(0x8298, "Copyright", "Copyright holder", ifd1, ifd1Section),
-        TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd1, ifd1Section),
-        TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd1, ifd1Section),
+    // Base IFD Tags (IFD0 and IFD1)
+    static const TagInfo ifdTagInfo[] = {
+        TagInfo(0x0100, "ImageWidth", "Image width", ifd0, imgStruct),
+        TagInfo(0x0101, "ImageLength", "Image height", ifd0, imgStruct),
+        TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0, imgStruct),
+        TagInfo(0x0103, "Compression", "Compression scheme", ifd0, imgStruct),
+        TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0, imgStruct),
+        TagInfo(0x010e, "ImageDescription", "Image title", ifd0, otherTags),
+        TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0, otherTags),
+        TagInfo(0x0110, "Model", "Model of image input equipment", ifd0, otherTags),
+        TagInfo(0x0111, "StripOffsets", "Image data location", ifd0, recOffset),
+        TagInfo(0x0112, "Orientation", "Orientation of image", ifd0, imgStruct),
+        TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0, imgStruct),
+        TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0, recOffset),
+        TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0, recOffset),
+        TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0, imgStruct),
+        TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0, imgStruct),
+        TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0, imgStruct),
+        TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0, imgStruct),
+        TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0, imgCharacter),
+        TagInfo(0x0131, "Software", "Software used", ifd0, otherTags),
+        TagInfo(0x0132, "DateTime", "File change date and time", ifd0, otherTags),
+        TagInfo(0x013b, "Artist", "Person who created the image", ifd0, otherTags),
+        TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0, imgCharacter),
+        TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0, imgCharacter),
+        TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0, recOffset),
+        TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0, recOffset),
+        TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0, imgCharacter),
+        TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0, imgStruct),
+        TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0, imgStruct),
+        TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0, imgCharacter),
+        TagInfo(0x8298, "Copyright", "Copyright holder", ifd0, otherTags),
+        TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0, exifFormat),
+        TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0, exifFormat),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownIfdTag)", "Unknown IFD tag", IfdIdNotSet, SectionIdNotSet)
+    };
 
-        // Exif IFD Tags
-        TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfd, exifIfdSection),
-        TagInfo(0x829d, "FNumber", "F number", exifIfd, exifIfdSection),
-        TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfd, exifIfdSection),
-        TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfd, exifIfdSection),
-        TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfd, exifIfdSection),
-        TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfd, exifIfdSection),
-        TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfd, exifIfdSection),
-        TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfd, exifIfdSection),
-        TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfd, exifIfdSection),
-        TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfd, exifIfdSection),
-        TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfd, exifIfdSection),
-        TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfd, exifIfdSection),
-        TagInfo(0x9202, "ApertureValue", "Aperture", exifIfd, exifIfdSection),
-        TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfd, exifIfdSection),
-        TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfd, exifIfdSection),
-        TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfd, exifIfdSection),
-        TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfd, exifIfdSection),
-        TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfd, exifIfdSection),
-        TagInfo(0x9208, "LightSource", "Light source", exifIfd, exifIfdSection),
-        TagInfo(0x9209, "Flash", "Flash", exifIfd, exifIfdSection),
-        TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfd, exifIfdSection),
-        TagInfo(0x9214, "SubjectArea", "Subject area", exifIfd, exifIfdSection),
-        TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfd, exifIfdSection),
-        TagInfo(0x9286, "UserComment", "User comments", exifIfd, exifIfdSection),
-        TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfd, exifIfdSection),
-        TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfd, exifIfdSection),
-        TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfd, exifIfdSection),
-        TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfd, exifIfdSection),
-        TagInfo(0xa001, "ColorSpace", "Color space information", exifIfd, exifIfdSection),
-        TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfd, exifIfdSection),
-        TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfd, exifIfdSection),
-        TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfd, exifIfdSection),
-        TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfd, exifIfdSection),
-        TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfd, exifIfdSection),
-        TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfd, exifIfdSection),
-        TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfd, exifIfdSection),
-        TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfd, exifIfdSection),
-        TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfd, exifIfdSection),
-        TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfd, exifIfdSection),
-        TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfd, exifIfdSection),
-        TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfd, exifIfdSection),
-        TagInfo(0xa300, "FileSource", "File source", exifIfd, exifIfdSection),
-        TagInfo(0xa301, "SceneType", "Scene type", exifIfd, exifIfdSection),
-        TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfd, exifIfdSection),
-        TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfd, exifIfdSection),
-        TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfd, exifIfdSection),
-        TagInfo(0xa403, "WhiteBalance", "White balance", exifIfd, exifIfdSection),
-        TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfd, exifIfdSection),
-        TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfd, exifIfdSection),
-        TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfd, exifIfdSection),
-        TagInfo(0xa407, "GainControl", "Gain control", exifIfd, exifIfdSection),
-        TagInfo(0xa408, "Contrast", "Contrast", exifIfd, exifIfdSection),
-        TagInfo(0xa409, "Saturation", "Saturation", exifIfd, exifIfdSection),
-        TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfd, exifIfdSection),
-        TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfd, exifIfdSection),
-        TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfd, exifIfdSection),
-        TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfd, exifIfdSection),
+    // Exif IFD Tags
+    static const TagInfo exifTagInfo[] = {
+        TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfd, captureCond),
+        TagInfo(0x829d, "FNumber", "F number", exifIfd, captureCond),
+        TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfd, captureCond),
+        TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfd, captureCond),
+        TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfd, captureCond),
+        TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfd, captureCond),
+        TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfd, exifVersion),
+        TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfd, dateTime),
+        TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfd, dateTime),
+        TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfd, imgConfig),
+        TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfd, imgConfig),
+        TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfd, captureCond),
+        TagInfo(0x9202, "ApertureValue", "Aperture", exifIfd, captureCond),
+        TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfd, captureCond),
+        TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfd, captureCond),
+        TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfd, captureCond),
+        TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfd, captureCond),
+        TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfd, captureCond),
+        TagInfo(0x9208, "LightSource", "Light source", exifIfd, captureCond),
+        TagInfo(0x9209, "Flash", "Flash", exifIfd, captureCond),
+        TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfd, captureCond),
+        TagInfo(0x9214, "SubjectArea", "Subject area", exifIfd, captureCond),
+        TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfd, userInfo),
+        TagInfo(0x9286, "UserComment", "User comments", exifIfd, userInfo),
+        TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfd, dateTime),
+        TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfd, dateTime),
+        TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfd, dateTime),
+        TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfd, exifVersion),
+        TagInfo(0xa001, "ColorSpace", "Color space information", exifIfd, imgCharacter),
+        TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfd, imgConfig),
+        TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfd, imgConfig),
+        TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfd, relatedFile),
+        TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfd, exifFormat),
+        TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfd, captureCond),
+        TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfd, captureCond),
+        TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfd, captureCond),
+        TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfd, captureCond),
+        TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfd, captureCond),
+        TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfd, captureCond),
+        TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfd, captureCond),
+        TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfd, captureCond),
+        TagInfo(0xa300, "FileSource", "File source", exifIfd, captureCond),
+        TagInfo(0xa301, "SceneType", "Scene type", exifIfd, captureCond),
+        TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfd, captureCond),
+        TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfd, captureCond),
+        TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfd, captureCond),
+        TagInfo(0xa403, "WhiteBalance", "White balance", exifIfd, captureCond),
+        TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfd, captureCond),
+        TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfd, captureCond),
+        TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfd, captureCond),
+        TagInfo(0xa407, "GainControl", "Gain control", exifIfd, captureCond),
+        TagInfo(0xa408, "Contrast", "Contrast", exifIfd, captureCond),
+        TagInfo(0xa409, "Saturation", "Saturation", exifIfd, captureCond),
+        TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfd, captureCond),
+        TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfd, captureCond),
+        TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfd, captureCond),
+        TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfd, otherTags),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownExifTag)", "Unknown Exif tag", IfdIdNotSet, SectionIdNotSet)
+    };
 
+    // GPS Info Tags
+    static const TagInfo gpsTagInfo[] = {
+        TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfd, gpsTags),
+        TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfd, gpsTags),
+        TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfd, gpsTags),
+        TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfd, gpsTags),
+        TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfd, gpsTags),
+        TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfd, gpsTags),
+        TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfd, gpsTags),
+        TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfd, gpsTags),
+        TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfd, gpsTags),
+        TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfd, gpsTags),
+        TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfd, gpsTags),
+        TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfd, gpsTags),
+        TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfd, gpsTags),
+        TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfd, gpsTags),
+        TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfd, gpsTags),
+        TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfd, gpsTags),
+        TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfd, gpsTags),
+        TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfd, gpsTags),
+        TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfd, gpsTags),
+        TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfd, gpsTags),
+        TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfd, gpsTags),
+        TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfd, gpsTags),
+        TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfd, gpsTags),
+        TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfd, gpsTags),
+        TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfd, gpsTags),
+        TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfd, gpsTags),
+        TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfd, gpsTags),
+        TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfd, gpsTags),
+        TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfd, gpsTags),
+        TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfd, gpsTags),
+        TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfd, gpsTags),
+        // End of list marker
+        TagInfo(0xffff, "(UnknownGpsTag)", "Unknown GPSInfo tag", IfdIdNotSet, SectionIdNotSet)
+    };
+    
+    // Exif Interoperability IFD Tags
+    static const TagInfo iopTagInfo[] = {
+        TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfd, iopTags),
+        TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfd, iopTags),
+        TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfd, iopTags),
+        TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfd, iopTags),
+        TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfd, iopTags),
         // End of list marker
-        TagInfo(0xffff, "(Unknown)", "Unknown tag", IfdIdNotSet, SectionIdNotSet)
+        TagInfo(0xffff, "(UnknownIopTag)", "Unknown Exif Interoperability tag", IfdIdNotSet, SectionIdNotSet)
+    };
+
+    // Tag lookup lists with tag names, desc and where they (preferrably) belong to;
+    // this is an array with pointers to one list per IFD. The IfdId is used as the
+    // index into the array.
+    const TagInfo* ExifTags::tagInfos_[] = {
+        0, 
+        ifdTagInfo, exifTagInfo, gpsTagInfo, 0, iopTagInfo,
+        ifdTagInfo, exifTagInfo, gpsTagInfo, 0, iopTagInfo
     };
 
     int ExifTags::tagInfoIdx(uint16 tag, IfdId ifdId)
     {
-        // Todo: implement a better algorithm
+        // Todo: implement a better (more efficient) algorithm
+	const TagInfo* tagInfo = tagInfos_[ifdId];
         int idx;
-        for (idx = 0; tagInfo_[idx].tag_ != 0xffff; ++idx) {
-            if (   tagInfo_[idx].tag_   == tag
-                && tagInfo_[idx].ifdId_ == ifdId) break;
+        for (idx = 0; tagInfo[idx].tag_ != 0xffff; ++idx) {
+            if (tagInfo[idx].tag_ == tag) break;
         }
         return idx;
     }
 
     const char* ExifTags::tagName(uint16 tag, IfdId ifdId)
     {
-        return tagInfo_[tagInfoIdx(tag, ifdId)].name_;
+        return tagInfos_[ifdId][tagInfoIdx(tag, ifdId)].name_;
     }
 
     const char* ExifTags::sectionName(uint16 tag, IfdId ifdId)
     {
-        return sectionInfo_[tagInfo_[tagInfoIdx(tag, ifdId)].sectionId_].name_;
+	const TagInfo* tagInfo = tagInfos_[ifdId];
+        return sectionInfo_[tagInfo[tagInfoIdx(tag, ifdId)].sectionId_].name_;
     }
 
     const char* ExifTags::typeName(uint16 type)
@@ -310,18 +296,14 @@ namespace Exif {
         return ifdInfo_[ifdId].name_;
     }
 
+    const char* ExifTags::ifdItem(IfdId ifdId)
+    {
+        return ifdInfo_[ifdId].item_;
+    }
+
     const char* ExifTags::sectionName(SectionId sectionId)
     {
         return sectionInfo_[sectionId].name_;
     }
 
-    // *************************************************************************
-    // free functions
-
 }                                       // namespace Exif
-
-// *****************************************************************************
-// local definitions
-namespace {
-
-}
diff --git a/src/tags.hpp b/src/tags.hpp
index 95d300c..e7360e1 100644
--- a/src/tags.hpp
+++ b/src/tags.hpp
@@ -6,14 +6,14 @@
  *
  */
 /*!
-  @file    tags.h
+  @file    tags.hpp
   @brief   %Exif tag and type information
-  @version $Name:  $ $Revision: 1.1 $
+  @version $Name:  $ $Revision: 1.2 $
   @author  Andreas Huggel (ahu)
   @date    15-Jan-03, ahu: created
  */
-#ifndef _TAGS_H_
-#define _TAGS_H_
+#ifndef _TAGS_HPP_
+#define _TAGS_HPP_
 
 // *****************************************************************************
 // included header files
@@ -38,13 +38,14 @@ namespace Exif {
 
     //! Type to specify the IFD to which a metadata belongs
     enum IfdId { IfdIdNotSet, 
-                 ifd0, exifIfd, gpsIfd, exifMakerIfd, exifIopIfd, 
-                 ifd1, ifd1ExifIfd, ifd1GpsIfd, ifd1MakerIfd, ifd1ExifIopIfd };
+                 ifd0, exifIfd, gpsIfd, makerIfd, iopIfd, 
+                 ifd1, ifd1ExifIfd, ifd1GpsIfd, ifd1MakerIfd, ifd1IopIfd };
 
     //! Section identifiers to logically group tags 
     enum SectionId { SectionIdNotSet, 
-                     ifd0Tiff, exifIfdSection, gpsIfdSection, 
-                     exifIopIfdSection, ifd1Section };
+                     imgStruct, recOffset, imgCharacter, otherTags, exifFormat, 
+                     exifVersion, imgConfig, userInfo, relatedFile, dateTime,
+                     captureCond, gpsTags, iopTags };
 
 // *****************************************************************************
 // class definitions
@@ -52,17 +53,19 @@ namespace Exif {
     //! Contains information pertaining to one IFD
     struct IfdInfo {
         //! Constructor
-        IfdInfo(IfdId ifdId, const char* name);
+        IfdInfo(IfdId ifdId, const char* name, const char* item);
         IfdId ifdId_;                           //!< IFD id
         const char* name_;                      //!< IFD name
+        const char* item_;                      //!< Related image item
     };
 
     //! Contains information pertaining to one section
     struct SectionInfo {
         //! Constructor
-        SectionInfo(SectionId sectionId, const char* name);
+        SectionInfo(SectionId sectionId, const char* name, const char* desc);
         SectionId sectionId_;                   //!< Section id
-        const char* name_;                      //!< Section name
+        const char* name_;                      //!< Section name (one word)
+        const char* desc_;                      //!< Section description
     };
 
     //! Description of the format of a metadatum
@@ -109,6 +112,8 @@ namespace Exif {
         static long typeSize(uint16 type);
         //! Returns the name of the IFD
         static const char* ifdName(IfdId ifdId);
+        //! Returns the related image item (image or thumbnail)
+        static const char* ifdItem(IfdId ifdId);
         //! Returns the name of the section
         static const char* sectionName(SectionId sectionId);
         //! Returns the name of the section
@@ -120,7 +125,9 @@ namespace Exif {
         static const IfdInfo     ifdInfo_[];
         static const SectionInfo sectionInfo_[];
         static const TagFormat   tagFormat_[];
-        static const TagInfo     tagInfo_[];
+
+        static const TagInfo*    tagInfos_[];
+
     };
 
 // *****************************************************************************
@@ -128,4 +135,4 @@ namespace Exif {
 
 }                                       // namespace Exif
 
-#endif                                  // #ifndef _TAGS_H_
+#endif                                  // #ifndef _TAGS_HPP_
diff --git a/src/utils.cpp b/src/utils.cpp
index 0d4e1c3..f1c5068 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -1,20 +1,9 @@
 // ********************************************************** -*- C++ -*-
 /*
- * Copyright (c) 2003, 2004 Andreas Huggel. All rights reserved.
+ * Copyright (c) 2004 Andreas Huggel. All rights reserved.
  * 
- * This file is part of the Exiv distribution.
+ * Todo: Insert license blabla here
  *
- * This file may be distributed and/or modified under the terms of the
- * Common Public License version 1.0 as published by IBM and appearing
- * in the file license-cpl.txt included in the packaging of this file.
- *
- * This file may be distributed and/or modified under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation and appearing in the file license-gpl.txt included in the
- * packaging of this file.
- *
- * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 /*
   Author(s): Andreas Huggel (ahu)
@@ -23,7 +12,7 @@
 
   RCS information
    $Name:  $
-   $Revision: 1.1 $
+   $Revision: 1.2 $
  */
 
 // *********************************************************************
diff --git a/src/utils.hpp b/src/utils.hpp
index f47e7f6..e77a3b9 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -1,30 +1,19 @@
 // ********************************************************* -*- C++ -*-
 /*
- * Copyright (c) 2003, 2004 Andreas Huggel. All rights reserved.
+ * Copyright (c) 2004 Andreas Huggel. All rights reserved.
  * 
- * This file is part of the Exiv distribution.
+ * Todo: insert license blabla here.
  *
- * This file may be distributed and/or modified under the terms of the
- * Common Public License version 1.0 as published by IBM and appearing
- * in the file license-cpl.txt included in the packaging of this file.
- *
- * This file may be distributed and/or modified under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation and appearing in the file license-gpl.txt included in the
- * packaging of this file.
- *
- * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 /*!
-  @file    utils.h
+  @file    utils.hpp
   @brief   A collection of utility functions
-  @version $Name:  $ $Revision: 1.1 $
+  @version $Name:  $ $Revision: 1.2 $
   @author  Andreas Huggel (ahu)
   @date    12-Dec-03, ahu: created
  */
-#ifndef _UTILS_H_
-#define _UTILS_H_
+#ifndef _UTILS_HPP_
+#define _UTILS_HPP_
 
 // *********************************************************************
 // included header files
@@ -166,4 +155,4 @@ private:
 
 }                                       // namespace Util
 
-#endif                                  // #ifndef _UTILS_H_
+#endif                                  // #ifndef _UTILS_HPP_

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list