[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:42 UTC 2017


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

The following commit has been merged in the master branch:
commit d69961b5b813343607c9ef8b0d0878a0a841bafd
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sat Jul 25 16:11:39 2009 +0000

    #641: Use image dimensions of the primary image.
---
 src/actions.cpp   | 30 ++++++++++++++++++------------
 src/tiffimage.cpp | 28 ++++++++++++++++++++++++++--
 src/tiffimage.hpp |  6 ++++++
 3 files changed, 50 insertions(+), 14 deletions(-)

diff --git a/src/actions.cpp b/src/actions.cpp
index a315ec3..90f22e5 100644
--- a/src/actions.cpp
+++ b/src/actions.cpp
@@ -375,19 +375,25 @@ namespace Action {
         printLabel(_("Exif Resolution"));
         long xdim = 0;
         long ydim = 0;
-        md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth"));
-        if (md == exifData.end()) {
-            md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension"));
-        }
-        if (md != exifData.end() && md->count() > 0) {
-            xdim = md->toLong();
+        if (image->mimeType() == "image/tiff") {
+            xdim = image->pixelWidth();
+            ydim = image->pixelHeight();
         }
-        md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageLength"));
-        if (md == exifData.end()) {
-            md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension"));
-        }
-        if (md != exifData.end() && md->count() > 0) {
-            ydim = md->toLong();
+        else {
+            md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth"));
+            if (md == exifData.end()) {
+                md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension"));
+            }
+            if (md != exifData.end() && md->count() > 0) {
+                xdim = md->toLong();
+            }
+            md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageLength"));
+            if (md == exifData.end()) {
+                md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension"));
+            }
+            if (md != exifData.end() && md->count() > 0) {
+                ydim = md->toLong();
+            }
         }
         if (xdim != 0 && ydim != 0) {
             std::cout << xdim << " x " << ydim;
diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp
index 4b4045e..d56b472 100644
--- a/src/tiffimage.cpp
+++ b/src/tiffimage.cpp
@@ -84,9 +84,32 @@ namespace Exiv2 {
     {
     } // TiffImage::TiffImage
 
+    std::string TiffImage::primaryGroup() const
+    {
+        static const char* keys[] = {
+            "Exif.Image.NewSubfileType",
+            "Exif.SubImage1.NewSubfileType",
+            "Exif.SubImage2.NewSubfileType",
+            "Exif.SubImage3.NewSubfileType",
+            "Exif.SubImage4.NewSubfileType"
+        };
+        // Find the group of the primary image, default to "Image"
+        std::string groupName = "Image";
+        for (unsigned int i = 0; i < EXV_COUNTOF(keys); ++i) {
+            ExifData::const_iterator md = exifData_.findKey(ExifKey(keys[i]));
+            // Is it the primary image?
+            if (md != exifData_.end() && md->count() > 0 && md->toLong() == 0) {
+                groupName = md->groupName();
+                break;
+            }
+        }
+        return groupName;
+    }
+
     int TiffImage::pixelWidth() const
     {
-        ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth"));
+        ExifKey key(std::string("Exif.") + primaryGroup() + std::string(".ImageWidth"));
+        ExifData::const_iterator imageWidth = exifData_.findKey(key);
         if (imageWidth != exifData_.end() && imageWidth->count() > 0) {
             return imageWidth->toLong();
         }
@@ -95,7 +118,8 @@ namespace Exiv2 {
 
     int TiffImage::pixelHeight() const
     {
-        ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageLength"));
+        ExifKey key(std::string("Exif.") + primaryGroup() + std::string(".ImageLength"));
+        ExifData::const_iterator imageHeight = exifData_.findKey(key);
         if (imageHeight != exifData_.end() && imageHeight->count() > 0) {
             return imageHeight->toLong();
         }
diff --git a/src/tiffimage.hpp b/src/tiffimage.hpp
index 71c2fa3..b3e665e 100644
--- a/src/tiffimage.hpp
+++ b/src/tiffimage.hpp
@@ -103,6 +103,12 @@ namespace Exiv2 {
         TiffImage& operator=(const TiffImage& rhs);
         //@}
 
+        //! @name Accessors
+        //@{
+        //! Return the group name of the group with the primary image. 
+        std::string primaryGroup() const;
+        //@}
+
     }; // class TiffImage
 
     /*!

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list