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

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:39:43 UTC 2017


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

The following commit has been merged in the master branch:
commit 5955cfab9481bd1ff65c60bdd25be37d67a98566
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Mon Aug 18 15:27:38 2008 +0000

    Added IFD2 for PEF write support, fixed order in which image data is  written.
---
 src/tags.cpp              |  2 ++
 src/tiffcomposite.cpp     | 34 ++++++++++++++++++++++++----------
 src/tiffcomposite_int.hpp | 15 ++++++++-------
 src/tiffimage.cpp         | 16 +++++++++++++---
 src/types.hpp             |  2 +-
 5 files changed, 48 insertions(+), 21 deletions(-)

diff --git a/src/tags.cpp b/src/tags.cpp
index 21b153b..da30360 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -86,6 +86,7 @@ namespace Exiv2 {
         { gpsIfdId,          "GPSInfo",   "GPSInfo",      ExifTags::gpsTagList           },
         { iopIfdId,          "Iop",       "Iop",          ExifTags::iopTagList           },
         { ifd1Id,            "IFD1",      "Thumbnail",    ExifTags::ifdTagList           },
+        { ifd2Id,            "IFD2",      "Image2",       ExifTags::ifdTagList           },
         { subImage1Id,       "SubImage1", "SubImage1",    ExifTags::ifdTagList           },
         { subImage2Id,       "SubImage2", "SubImage2",    ExifTags::ifdTagList           },
         { subImage3Id,       "SubImage3", "SubImage3",    ExifTags::ifdTagList           },
@@ -1639,6 +1640,7 @@ namespace Exiv2 {
         case gpsIfdId:
         case iopIfdId:
         case ifd1Id:
+        case ifd2Id:
         case subImage1Id:
         case subImage2Id:
         case subImage3Id:
diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp
index be72f1a..e4605ed 100644
--- a/src/tiffcomposite.cpp
+++ b/src/tiffcomposite.cpp
@@ -69,13 +69,14 @@ namespace Exiv2 {
     extern const TiffGroupInfo tiffGroupInfo[] = {
         {   1, "Image"        },
         {   2, "Thumbnail"    },
-        {   3, "Photo"        },
-        {   4, "GPSInfo"      },
-        {   5, "Iop"          },
-        {   6, "SubImage1"    },
-        {   7, "SubImage2"    },
-        {   8, "SubImage3"    },
-        {   9, "SubImage4"    },
+        {   3, "Image2"       },
+        {   4, "Photo"        },
+        {   5, "GPSInfo"      },
+        {   6, "Iop"          },
+        {   7, "SubImage1"    },
+        {   8, "SubImage2"    },
+        {   9, "SubImage3"    },
+        {  10, "SubImage4"    },
         { 257, "Olympus"      },
         { 258, "Fujifilm"     },
         { 259, "Canon"        },
@@ -897,7 +898,8 @@ namespace Exiv2 {
                                      uint32_t& imageIdx)
     {
 #ifdef DEBUG
-        std::cerr << "TiffImageEntry, tag 0x" << std::setw(4) 
+        std::cerr << "TiffImageEntry, Directory " << tiffGroupName(group())
+                  << ", entry 0x" << std::setw(4)
                   << std::setfill('0') << std::hex << tag() << std::dec
                   << ": Writing offset " << imageIdx << "
";
 #endif
@@ -1088,9 +1090,19 @@ namespace Exiv2 {
                                          ByteOrder byteOrder) const
     {
         uint32_t len = 0;
+        TiffComponent* pSubIfd = 0;
         for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) {
+            if ((*i)->tag() == 0x014a) {
+                // Hack: delay writing of sub-IFD image data to get the order correct
+                assert(pSubIfd == 0);
+                pSubIfd = *i;
+                continue;
+            }
             len += (*i)->writeImage(blob, byteOrder);
         }
+        if (pSubIfd) {
+            len += pSubIfd->writeImage(blob, byteOrder);
+        }
         if (pNext_) {
             len += pNext_->writeImage(blob, byteOrder);
         }
@@ -1126,7 +1138,8 @@ namespace Exiv2 {
         uint32_t len = pValue()->sizeDataArea();
         if (len > 0) {
 #ifdef DEBUG
-            std::cerr << "TiffImageEntry, tag 0x" << std::setw(4) 
+            std::cerr << "TiffImageEntry, Directory " << tiffGroupName(group())
+                      << ", entry 0x" << std::setw(4)
                       << std::setfill('0') << std::hex << tag() << std::dec
                       << ": Writing data area, blob-size = " << blob.size();
 #endif
@@ -1138,7 +1151,8 @@ namespace Exiv2 {
         }
         else {
 #ifdef DEBUG
-            std::cerr << "TiffImageEntry, tag 0x" << std::setw(4) 
+            std::cerr << "TiffImageEntry, Directory " << tiffGroupName(group())
+                      << ", entry 0x" << std::setw(4)
                       << std::setfill('0') << std::hex << tag() << std::dec
                       << ": Writing data area, blob-size = " << blob.size();
 #endif
diff --git a/src/tiffcomposite_int.hpp b/src/tiffcomposite_int.hpp
index ca9935b..f50bbee 100644
--- a/src/tiffcomposite_int.hpp
+++ b/src/tiffcomposite_int.hpp
@@ -81,13 +81,14 @@ namespace Exiv2 {
         const uint16_t none    =   0; //!< Dummy group
         const uint16_t ifd0    =   1; //!< Exif IFD0
         const uint16_t ifd1    =   2; //!< Thumbnail IFD
-        const uint16_t exif    =   3; //!< Exif IFD
-        const uint16_t gps     =   4; //!< GPS IFD
-        const uint16_t iop     =   5; //!< Interoperability IFD
-        const uint16_t subimg1 =   6; //!< 1st TIFF SubIFD in IFD0
-        const uint16_t subimg2 =   7; //!< 2nd TIFF SubIFD in IFD0
-        const uint16_t subimg3 =   8; //!< 3rd TIFF SubIFD in IFD0
-        const uint16_t subimg4 =   9; //!< 4th TIFF SubIFD in IFD0
+        const uint16_t ifd2    =   3; //!< IFD2
+        const uint16_t exif    =   4; //!< Exif IFD
+        const uint16_t gps     =   5; //!< GPS IFD
+        const uint16_t iop     =   6; //!< Interoperability IFD
+        const uint16_t subimg1 =   7; //!< 1st TIFF SubIFD in IFD0
+        const uint16_t subimg2 =   8; //!< 2nd TIFF SubIFD in IFD0
+        const uint16_t subimg3 =   9; //!< 3rd TIFF SubIFD in IFD0
+        const uint16_t subimg4 =  10; //!< 4th TIFF SubIFD in IFD0
         const uint16_t mn      = 256; //!< Makernote
         const uint16_t ignr    = 511; //!< Read but do not decode
     }
diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp
index 0ebb3e1..4abd861 100644
--- a/src/tiffimage.cpp
+++ b/src/tiffimage.cpp
@@ -290,8 +290,8 @@ namespace Exiv2 {
         {    0x0117, Group::ifd0,      Group::ifd0,      Tag::root, Group::none,      newTiffImageSize<0x0111, Group::ifd0> },
         {    0x0144, Group::ifd0,      Group::ifd0,      Tag::root, Group::none,      newTiffImageData<0x0145, Group::ifd0> },
         {    0x0145, Group::ifd0,      Group::ifd0,      Tag::root, Group::none,      newTiffImageSize<0x0144, Group::ifd0> },
-        {    0x0201, Group::ifd0,      Group::ifd0,      Tag::root, Group::ifd0,      newTiffImageData<0x0202, Group::ifd0> },
-        {    0x0202, Group::ifd0,      Group::ifd0,      Tag::root, Group::ifd0,      newTiffImageSize<0x0201, Group::ifd0> },
+        {    0x0201, Group::ifd0,      Group::ifd0,      Tag::root, Group::none,      newTiffImageData<0x0202, Group::ifd0> },
+        {    0x0202, Group::ifd0,      Group::ifd0,      Tag::root, Group::none,      newTiffImageSize<0x0201, Group::ifd0> },
         {    0x014a, Group::ifd0,      Group::subimg1,   Tag::root, Group::none,      newTiffSubIfd },
         { Tag::next, Group::ifd0,      Group::ifd1,      Tag::root, Group::none,      newTiffDirectory },
         {  Tag::all, Group::ifd0,      Group::ifd0,      Tag::root, Group::none,      newTiffEntry },
@@ -355,9 +355,17 @@ namespace Exiv2 {
         {    0x0117, Group::ifd1,      Group::ifd1,      Tag::next, Group::ifd0,      newTiffThumbSize<0x0111, Group::ifd1> },
         {    0x0201, Group::ifd1,      Group::ifd1,      Tag::next, Group::ifd0,      newTiffThumbData<0x0202, Group::ifd1> },
         {    0x0202, Group::ifd1,      Group::ifd1,      Tag::next, Group::ifd0,      newTiffThumbSize<0x0201, Group::ifd1> },
-        { Tag::next, Group::ifd1,      Group::ignr,      Tag::next, Group::ifd0,      newTiffDirectory },
+        { Tag::next, Group::ifd1,      Group::ifd2,      Tag::next, Group::ifd0,      newTiffDirectory },
         {  Tag::all, Group::ifd1,      Group::ifd1,      Tag::next, Group::ifd0,      newTiffEntry },
 
+        // IFD2 (eg, in Pentax PEF files)
+        {    0x0111, Group::ifd2,      Group::ifd2,      Tag::next, Group::ifd1,      newTiffImageData<0x0117, Group::ifd2> },
+        {    0x0117, Group::ifd2,      Group::ifd2,      Tag::next, Group::ifd1,      newTiffImageSize<0x0111, Group::ifd2> },
+        {    0x0201, Group::ifd2,      Group::ifd2,      Tag::next, Group::ifd1,      newTiffImageData<0x0202, Group::ifd2> },
+        {    0x0202, Group::ifd2,      Group::ifd2,      Tag::next, Group::ifd1,      newTiffImageSize<0x0201, Group::ifd2> },
+        { Tag::next, Group::ifd2,      Group::ignr,      Tag::next, Group::ifd1,      newTiffDirectory },
+        {  Tag::all, Group::ifd2,      Group::ifd2,      Tag::next, Group::ifd1,      newTiffEntry },
+
         // Olympus makernote - some Olympus cameras use Minolta structures
         // Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups
         {    0x0001, Group::olympmn,   Group::minocso,   0x927c,    Group::exif,      newTiffArrayEntry<ttUnsignedLong, false> },
@@ -409,6 +417,8 @@ namespace Exiv2 {
         {  Tag::all, Group::panamn,    Group::panamn,    0x927c,    Group::exif,      newTiffEntry },
 
         // Pentax makernote
+        {    0x0003, Group::pentaxmn,  Group::pentaxmn,  0x927c,    Group::exif,      newTiffThumbSize<0x0004, Group::pentaxmn> },
+        {    0x0004, Group::pentaxmn,  Group::pentaxmn,  0x927c,    Group::exif,      newTiffThumbData<0x0003, Group::pentaxmn> },
         { Tag::next, Group::pentaxmn,  Group::ignr,      0x927c,    Group::exif,      newTiffDirectory },
         {  Tag::all, Group::pentaxmn,  Group::pentaxmn,  0x927c,    Group::exif,      newTiffEntry },
 
diff --git a/src/types.hpp b/src/types.hpp
index 2ffc5ea..676eb3d 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -134,7 +134,7 @@ namespace Exiv2 {
 
     //! Type to specify the IFD to which a metadata belongs
     enum IfdId { ifdIdNotSet,
-                 ifd0Id, exifIfdId, gpsIfdId, iopIfdId, ifd1Id,
+                 ifd0Id, exifIfdId, gpsIfdId, iopIfdId, ifd1Id, ifd2Id,
                  subImage1Id, subImage2Id, subImage3Id, subImage4Id,
                  canonIfdId, canonCsIfdId, canonSiIfdId, canonCfIfdId,
                  canonPiIfdId, canonPaIfdId,

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list