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

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:40:06 UTC 2017


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

The following commit has been merged in the master branch:
commit 5fd43e998cc9eb02b891375c3d7143d7e6ec4cbd
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Tue Nov 11 15:06:55 2008 +0000

    Fixed writing of TiffImageEntry previews in the Makernote (Exif.OlympusCs.PreviewImageStart).
---
 src/tiffcomposite.cpp     | 43 +++++++++++++++++++++++++++++++++++++------
 src/tiffcomposite_int.hpp | 17 +++++++++++++++--
 2 files changed, 52 insertions(+), 8 deletions(-)

diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp
index eba97c3..7282429 100644
--- a/src/tiffcomposite.cpp
+++ b/src/tiffcomposite.cpp
@@ -927,23 +927,30 @@ namespace Exiv2 {
 
     uint32_t TiffImageEntry::doWrite(Blob&     blob,
                                      ByteOrder byteOrder,
-                                     int32_t   /*offset*/,
+                                     int32_t   offset,
                                      uint32_t  /*valueIdx*/,
-                                     uint32_t  /*dataIdx*/,
+                                     uint32_t  dataIdx,
                                      uint32_t& imageIdx)
     {
+        uint32_t o2 = imageIdx;
+        // For makernotes, write TIFF image data to the data area
+        if (group() > Group::mn) o2 = offset + dataIdx;
 #ifdef DEBUG
         std::cerr << "TiffImageEntry, Directory " << tiffGroupName(group())
                   << ", entry 0x" << std::setw(4)
                   << std::setfill('0') << std::hex << tag() << std::dec
-                  << ": Writing offset " << imageIdx << "
";
+                  << ": Writing offset " << o2 << "
";
 #endif
         DataBuf buf(static_cast<long>(strips_.size()) * 4);
         uint32_t idx = 0;
         for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) {
-            idx += writeOffset(buf.pData_ + idx, imageIdx, tiffType(), byteOrder);
-            imageIdx += i->second;
-            imageIdx += i->second & 1;      // Align strip data to word boundary
+            idx += writeOffset(buf.pData_ + idx, o2, tiffType(), byteOrder);
+            o2 += i->second;
+            o2 += i->second & 1;                // Align strip data to word boundary
+            if (!(group() > Group::mn)) {
+                imageIdx += i->second;
+                imageIdx += i->second & 1;      // Align strip data to word boundary
+            }
         }
         append(blob, buf.pData_, buf.size_);
         return buf.size_;
@@ -1081,6 +1088,20 @@ namespace Exiv2 {
         return 0;
     } // TiffEntryBase::doWriteData
 
+    uint32_t TiffImageEntry::doWriteData(Blob&     blob,
+                                         ByteOrder byteOrder,
+                                         int32_t   /*offset*/,
+                                         uint32_t  /*dataIdx*/,
+                                         uint32_t& /*imageIdx*/) const
+    {
+        uint32_t len = 0;
+        // For makernotes, write TIFF image data to the data area
+        if (group() > Group::mn) {
+            len = writeImage(blob, byteOrder);
+        }
+        return len;
+    } // TiffImageEntry::doWriteData
+
     uint32_t TiffDataEntry::doWriteData(Blob&     blob,
                                         ByteOrder /*byteOrder*/,
                                         int32_t   /*offset*/,
@@ -1282,6 +1303,16 @@ namespace Exiv2 {
         return 0;
     } // TiffEntryBase::doSizeData
 
+    uint32_t TiffImageEntry::doSizeData() const
+    {
+        uint32_t len = 0;
+        // For makernotes, TIFF image data is written to the data area
+        if (group() > Group::mn) {
+            len = sizeImage();
+        }
+        return len;
+    } // TiffImageEntry::doSizeData
+
     uint32_t TiffDataEntry::doSizeData() const
     {
         if (!pValue()) return 0;
diff --git a/src/tiffcomposite_int.hpp b/src/tiffcomposite_int.hpp
index 33381b9..f5d478e 100644
--- a/src/tiffcomposite_int.hpp
+++ b/src/tiffcomposite_int.hpp
@@ -726,7 +726,19 @@ namespace Exiv2 {
         //@}
         //! @name Write support (Accessors)
         //@{
-        // Using doWriteData from base class
+        /*!
+          @brief Implements writeData(). Write the image data area to the blob.
+                 Return the number of bytes written.
+
+          This function writes the image data to the data area of the current
+          directory. It is used for TIFF image entries in the makernote (large 
+          preview images) so that the image data remains in the makernote IFD.
+         */
+        virtual uint32_t doWriteData(Blob&     blob,
+                                     ByteOrder byteOrder,
+                                     int32_t   offset,
+                                     uint32_t  dataIdx,
+                                     uint32_t& imageIdx) const;
         /*!
           @brief Implements writeImage(). Write the image data area to the blob.
                  Return the number of bytes written.
@@ -735,7 +747,8 @@ namespace Exiv2 {
                                       ByteOrder byteOrder) const;
         //! Implements size(). Return the size of the strip pointers.
         virtual uint32_t doSize() const;
-        // Using doSizeData from base class
+        //! Implements sizeData(). Return the size of the image data area.
+        virtual uint32_t doSizeData() const;
         //! Implements sizeImage(). Return the size of the image data area.
         virtual uint32_t doSizeImage() const;
         //@}

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list