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


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

The following commit has been merged in the master branch:
commit 585d0e0da5fe3faacb15e3c7ba86767855597b66
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Tue Jan 6 15:58:24 2009 +0000

    Added read-support for Panasonic RW2 raw images (incl. preview access).
---
 src/Makefile                               |   1 +
 src/image.cpp                              |   2 +
 src/preview.cpp                            |   4 +-
 src/{orfimage.cpp => rw2image.cpp}         | 133 ++++++++++-------------------
 src/{cr2image.hpp => rw2image.hpp}         |  78 +++++++----------
 src/{cr2image_int.hpp => rw2image_int.hpp} |  32 +++----
 6 files changed, 93 insertions(+), 157 deletions(-)

diff --git a/src/Makefile b/src/Makefile
index fe928a8..06a243c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -98,6 +98,7 @@ CCSRC += preview.cpp          \
 	 properties.cpp       \
 	 psdimage.cpp         \
 	 rafimage.cpp         \
+	 rw2image.cpp         \
 	 sigmamn.cpp          \
 	 pentaxmn.cpp         \
 	 sonymn.cpp           \
diff --git a/src/image.cpp b/src/image.cpp
index 67b52f1..e389237 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -59,6 +59,7 @@ EXIV2_RCSID("@(#) $Id$")
 #include "tgaimage.hpp"
 #include "bmpimage.hpp"
 #include "jp2image.hpp"
+#include "rw2image.hpp"
 #include "xmpsidecar.hpp"
 
 // + standard includes
@@ -115,6 +116,7 @@ namespace {
         { ImageType::tga,  newTgaInstance,  isTgaType,  amNone,      amNone,      amNone,      amNone      },
         { ImageType::bmp,  newBmpInstance,  isBmpType,  amNone,      amNone,      amNone,      amNone      },
         { ImageType::jp2,  newJp2Instance,  isJp2Type,  amReadWrite, amReadWrite, amReadWrite, amNone      },
+        { ImageType::rw2,  newRw2Instance,  isRw2Type,  amRead,      amRead,      amRead,      amNone      },
         // End of list marker
         { ImageType::none, 0,               0,          amNone,      amNone,      amNone,      amNone      }
     };
diff --git a/src/preview.cpp b/src/preview.cpp
index bb178fb..34d5353 100644
--- a/src/preview.cpp
+++ b/src/preview.cpp
@@ -247,6 +247,7 @@ namespace {
         { 0,                   createLoaderExifDataJpeg, 4 },
         { 0,                   createLoaderExifDataJpeg, 5 },
         { 0,                   createLoaderExifDataJpeg, 6 },
+        { "image/x-raw",       createLoaderExifDataJpeg, 7 },
         { 0,                   createLoaderTiff,         0 },
         { 0,                   createLoaderTiff,         1 },
         { 0,                   createLoaderTiff,         2 },
@@ -281,7 +282,8 @@ namespace {
         { "Exif.Minolta.ThumbnailOffset",            "Exif.Minolta.ThumbnailLength"                  }, // 3
         { "Exif.Olympus.ThumbnailImage",             0                                               }, // 4
         { "Exif.Olympus2.ThumbnailImage",            0                                               }, // 5
-        { "Exif.Minolta.Thumbnail",                  0                                               }  // 6
+        { "Exif.Minolta.Thumbnail",                  0                                               }, // 6
+        { "Exif.Image.0x002e",                       0                                               }  // 7
     };
 
     const LoaderTiff::Param LoaderTiff::param_[] = {
diff --git a/src/orfimage.cpp b/src/rw2image.cpp
similarity index 56%
copy from src/orfimage.cpp
copy to src/rw2image.cpp
index b91ac8c..e3987f3 100644
--- a/src/orfimage.cpp
+++ b/src/rw2image.cpp
@@ -19,11 +19,11 @@
  * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
  */
 /*
-  File:      orfimage.cpp
+  File:      rw2image.cpp
   Version:   $Rev$
   Author(s): Andreas Huggel (ahu) <ahuggel at gmx.net>
-  History:   13-May-06, ahu: created
-  Credits:   See header file
+  History:   06-Jan-09, ahu: created
+
  */
 // *****************************************************************************
 #include "rcsid.hpp"
@@ -37,19 +37,16 @@ EXIV2_RCSID("@(#) $Id$")
 # include "exv_conf.h"
 #endif
 
-#include "orfimage.hpp"
-#include "orfimage_int.hpp"
-#include "tiffimage_int.hpp"
+#include "rw2image.hpp"
+#include "rw2image_int.hpp"
 #include "image.hpp"
-#include "basicio.hpp"
 #include "error.hpp"
 #include "futils.hpp"
 
 // + standard includes
-#include <string>
-#include <cstring>
-#include <iostream>
-#include <cassert>
+#ifdef DEBUG
+# include <iostream>
+#endif
 
 // *****************************************************************************
 // class member definitions
@@ -57,77 +54,77 @@ namespace Exiv2 {
 
     using namespace Internal;
 
-    OrfImage::OrfImage(BasicIo::AutoPtr io, bool /*create*/)
-        : Image(ImageType::orf, mdExif | mdIptc, io)
+    Rw2Image::Rw2Image(BasicIo::AutoPtr io)
+        : Image(ImageType::rw2, mdExif | mdIptc | mdXmp, io)
     {
-    } // OrfImage::OrfImage
+    } // Rw2Image::Rw2Image
 
-    int OrfImage::pixelWidth() const
+    int Rw2Image::pixelWidth() const
     {
-        ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth"));
+        ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.0x0007"));
         if (imageWidth != exifData_.end() && imageWidth->count() > 0) {
             return imageWidth->toLong();
         }
         return 0;
     }
 
-    int OrfImage::pixelHeight() const
+    int Rw2Image::pixelHeight() const
     {
-        ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageLength"));
+        ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.0x0006"));
         if (imageHeight != exifData_.end() && imageHeight->count() > 0) {
             return imageHeight->toLong();
         }
         return 0;
     }
 
-    void OrfImage::setExifData(const ExifData& /*exifData*/)
+    void Rw2Image::setExifData(const ExifData& /*exifData*/)
     {
         // Todo: implement me!
-        throw(Error(32, "Exif metadata", "ORF"));
+        throw(Error(32, "Exif metadata", "RW2"));
     }
 
-    void OrfImage::setIptcData(const IptcData& /*iptcData*/)
+    void Rw2Image::setIptcData(const IptcData& /*iptcData*/)
     {
         // Todo: implement me!
-        throw(Error(32, "IPTC metadata", "ORF"));
+        throw(Error(32, "IPTC metadata", "RW2"));
     }
 
-    void OrfImage::setComment(const std::string& /*comment*/)
+    void Rw2Image::setComment(const std::string& /*comment*/)
     {
         // not supported
-        throw(Error(32, "Image comment", "ORF"));
+        throw(Error(32, "Image comment", "RW2"));
     }
 
-    void OrfImage::readMetadata()
+    void Rw2Image::readMetadata()
     {
 #ifdef DEBUG
-        std::cerr << "Reading ORF file " << io_->path() << "
";
+        std::cerr << "Reading RW2 file " << io_->path() << "
";
 #endif
         if (io_->open() != 0) {
             throw Error(9, io_->path(), strError());
         }
         IoCloser closer(*io_);
         // Ensure that this is the correct image type
-        if (!isOrfType(*io_, false)) {
+        if (!isRw2Type(*io_, false)) {
             if (io_->error() || io_->eof()) throw Error(14);
-            throw Error(3, "ORF");
+            throw Error(3, "RW2");
         }
         clearMetadata();
-        ByteOrder bo = OrfParser::decode(exifData_,
+        ByteOrder bo = Rw2Parser::decode(exifData_,
                                          iptcData_,
                                          xmpData_,
                                          io_->mmap(),
                                          io_->size());
         setByteOrder(bo);
-    } // OrfImage::readMetadata
+    } // Rw2Image::readMetadata
 
-    void OrfImage::writeMetadata()
+    void Rw2Image::writeMetadata()
     {
         // Todo: implement me!
-        throw(Error(31, "ORF"));
-    } // OrfImage::writeMetadata
+        throw(Error(31, "RW2"));
+    } // Rw2Image::writeMetadata
 
-    ByteOrder OrfParser::decode(
+    ByteOrder Rw2Parser::decode(
               ExifData& exifData,
               IptcData& iptcData,
               XmpData&  xmpData,
@@ -135,7 +132,7 @@ namespace Exiv2 {
               uint32_t  size
     )
     {
-        OrfHeader orfHeader;
+        Rw2Header rw2Header;
         return TiffParserWorker::decode(exifData,
                                         iptcData,
                                         xmpData,
@@ -143,54 +140,30 @@ namespace Exiv2 {
                                         size,
                                         TiffCreator::create,
                                         TiffMapping::findDecoder,
-                                        &orfHeader);
-    }
-
-    WriteMethod OrfParser::encode(
-              Blob&     blob,
-        const byte*     pData,
-              uint32_t  size,
-        const ExifData& exifData,
-        const IptcData& iptcData,
-        const XmpData&  xmpData
-    )
-    {
-        /* Todo: Implement me!
-
-        return TiffParserWorker::encode(blob,
-                                 pData,
-                                 size,
-                                 exifData,
-                                 iptcData,
-                                 xmpData,
-                                 TiffCreator::create,
-                                 TiffMapping::findEncoder);
-        */
-        blob.clear();
-        return wmIntrusive;
+                                        &rw2Header);
     }
 
     // *************************************************************************
     // free functions
-    Image::AutoPtr newOrfInstance(BasicIo::AutoPtr io, bool create)
+    Image::AutoPtr newRw2Instance(BasicIo::AutoPtr io, bool /*create*/)
     {
-        Image::AutoPtr image(new OrfImage(io, create));
+        Image::AutoPtr image(new Rw2Image(io));
         if (!image->good()) {
             image.reset();
         }
         return image;
     }
 
-    bool isOrfType(BasicIo& iIo, bool advance)
+    bool isRw2Type(BasicIo& iIo, bool advance)
     {
-        const int32_t len = 8;
+        const int32_t len = 24;
         byte buf[len];
         iIo.read(buf, len);
         if (iIo.error() || iIo.eof()) {
             return false;
         }
-        OrfHeader orfHeader;
-        bool rc = orfHeader.read(buf, len);
+        Rw2Header header;
+        bool rc = header.read(buf, len);
         if (!advance || !rc) {
             iIo.seek(-len, BasicIo::cur);
         }
@@ -202,36 +175,16 @@ namespace Exiv2 {
 namespace Exiv2 {
     namespace Internal {
 
-    OrfHeader::OrfHeader()
-        : TiffHeaderBase('O'<< 8 | 'R', 8, littleEndian, 0x00000008)
+    Rw2Header::Rw2Header()
+        : TiffHeaderBase(0x0055, 24, littleEndian, 0x00000018)
     {
     }
 
-    OrfHeader::~OrfHeader()
+    Rw2Header::~Rw2Header()
     {
     }
 
-    bool OrfHeader::read(const byte* pData, uint32_t size)
-    {
-        if (size < 8) return false;
-
-        if (pData[0] == 0x49 && pData[1] == 0x49) {
-            setByteOrder(littleEndian);
-        }
-        else if (pData[0] == 0x4d && pData[1] == 0x4d) {
-            setByteOrder(bigEndian);
-        }
-        else {
-            return false;
-        }
-        if (tag() != getUShort(pData + 2, byteOrder())) return false;
-        setOffset(getULong(pData + 4, byteOrder()));
-        if (offset() != 0x00000008) return false;
-
-        return true;
-    } // OrfHeader::read
-
-    uint32_t OrfHeader::write(Blob& blob) const
+    uint32_t Rw2Header::write(Blob& blob) const
     {
         // Todo: Implement me!
         return 0;
diff --git a/src/cr2image.hpp b/src/rw2image.hpp
similarity index 64%
copy from src/cr2image.hpp
copy to src/rw2image.hpp
index be47c92..70ea4e8 100644
--- a/src/cr2image.hpp
+++ b/src/rw2image.hpp
@@ -19,15 +19,15 @@
  * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
  */
 /*!
-  @file    cr2image.hpp
-  @brief   Class Cr2Image
+  @file    rw2image.hpp
+  @brief   Class Rw2Image
   @version $Rev$
   @author  Andreas Huggel (ahu)
            <a href="mailto:ahuggel at gmx.net">ahuggel at gmx.net</a>
-  @date    22-Apr-06, ahu: created
+  @date    06-Jan-09, ahu: created
  */
-#ifndef CR2IMAGE_HPP_
-#define CR2IMAGE_HPP_
+#ifndef RW2IMAGE_HPP_
+#define RW2IMAGE_HPP_
 
 // *****************************************************************************
 // included header files
@@ -45,35 +45,33 @@ namespace Exiv2 {
 // *****************************************************************************
 // class definitions
 
-    // Add CR2 to the supported image formats
+    // Add RW2 to the supported image formats
     namespace ImageType {
-        const int cr2 = 7;          //!< CR2 image type (see class Cr2Image)
+        const int rw2 = 16;             //!< RW2 image type (see class Rw2Image)
     }
 
     /*!
-      @brief Class to access raw Canon CR2 images.  Exif metadata
-          is supported directly, IPTC is read from the Exif data, if present.
+      @brief Class to access raw Panasonic RW2 images.  Exif metadata is
+          supported directly, IPTC and XMP are read from the Exif data, if
+          present.
      */
-    class EXIV2API Cr2Image : public Image {
+    class EXIV2API Rw2Image : public Image {
     public:
         //! @name Creators
         //@{
         /*!
-          @brief Constructor that can either open an existing CR2 image or create
-              a new image from scratch. If a new image is to be created, any
-              existing data is overwritten. Since the constructor can not return
-              a result, callers should check the good() method after object
-              construction to determine success or failure.
+          @brief Constructor to open an existing RW2 image. Since the
+              constructor can not return a result, callers should check the
+              good() method after object construction to determine success or
+              failure.
           @param io An auto-pointer that owns a BasicIo instance used for
               reading and writing image metadata.  Important: The constructor
               takes ownership of the passed in BasicIo instance through the
               auto-pointer. Callers should not continue to use the BasicIo
               instance after it is passed to this method.  Use the Image::io()
               method to get a temporary reference.
-          @param create Specifies if an existing image should be read (false)
-              or if a new file should be created (true).
          */
-        Cr2Image(BasicIo::AutoPtr io, bool create);
+        Rw2Image(BasicIo::AutoPtr io);
         //@}
 
         //! @name Manipulators
@@ -95,7 +93,7 @@ namespace Exiv2 {
          */
         void setIptcData(const IptcData& iptcData);
         /*!
-          @brief Not supported. CR2 format does not contain a comment.
+          @brief Not supported. RW2 format does not contain a comment.
               Calling this function will throw an Error(32).
          */
         void setComment(const std::string& comment);
@@ -103,7 +101,7 @@ namespace Exiv2 {
 
         //! @name Accessors
         //@{
-        std::string mimeType() const { return "image/x-canon-cr2"; }
+        std::string mimeType() const { return "image/x-raw"; }
         int pixelWidth() const;
         int pixelHeight() const;
         //@}
@@ -112,23 +110,23 @@ namespace Exiv2 {
         //! @name NOT implemented
         //@{
         //! Copy constructor
-        Cr2Image(const Cr2Image& rhs);
+        Rw2Image(const Rw2Image& rhs);
         //! Assignment operator
-        Cr2Image& operator=(const Cr2Image& rhs);
+        Rw2Image& operator=(const Rw2Image& rhs);
         //@}
 
-    }; // class Cr2Image
+    }; // class Rw2Image
 
     /*!
-      @brief Stateless parser class for data in CR2 format. Images use this
-             class to decode and encode CR2 data.
-             See class TiffParser for details.
+      @brief Stateless parser class for data in RW2 format. Images use this
+             class to decode and encode RW2 data. Only decoding is currently
+             implemented. See class TiffParser for details.
      */
-    class EXIV2API Cr2Parser {
+    class EXIV2API Rw2Parser {
     public:
         /*!
           @brief Decode metadata from a buffer \em pData of length \em size
-                 with data in CR2 format to the provided metadata containers.
+                 with data in RW2 format to the provided metadata containers.
                  See TiffParser::decode().
         */
         static ByteOrder decode(
@@ -138,20 +136,8 @@ namespace Exiv2 {
             const byte*     pData,
                   uint32_t  size
         );
-        /*!
-          @brief Encode metadata from the provided metadata to CR2 format.
-                 See TiffParser::encode().
-        */
-        static WriteMethod encode(
-                  Blob&     blob,
-            const byte*     pData,
-                  uint32_t  size,
-            const ExifData& exifData,
-            const IptcData& iptcData,
-            const XmpData&  xmpData
-        );
 
-    }; // class Cr2Parser
+    }; // class Rw2Parser
 
 // *****************************************************************************
 // template, inline and free functions
@@ -159,15 +145,15 @@ namespace Exiv2 {
     // These could be static private functions on Image subclasses but then
     // ImageFactory needs to be made a friend.
     /*!
-      @brief Create a new Cr2Image instance and return an auto-pointer to it.
+      @brief Create a new Rw2Image instance and return an auto-pointer to it.
              Caller owns the returned object and the auto-pointer ensures that
              it will be deleted.
      */
-    EXIV2API Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create);
+    EXIV2API Image::AutoPtr newRw2Instance(BasicIo::AutoPtr io, bool create);
 
-    //! Check if the file iIo is a CR2 image.
-    EXIV2API bool isCr2Type(BasicIo& iIo, bool advance);
+    //! Check if the file iIo is a RW2 image.
+    EXIV2API bool isRw2Type(BasicIo& iIo, bool advance);
 
 }                                       // namespace Exiv2
 
-#endif                                  // #ifndef CR2IMAGE_HPP_
+#endif                                  // #ifndef RW2IMAGE_HPP_
diff --git a/src/cr2image_int.hpp b/src/rw2image_int.hpp
similarity index 72%
copy from src/cr2image_int.hpp
copy to src/rw2image_int.hpp
index 9dd9ff6..b2d3c2d 100644
--- a/src/cr2image_int.hpp
+++ b/src/rw2image_int.hpp
@@ -19,15 +19,15 @@
  * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
  */
 /*!
-  @file    cr2image_int.hpp
-  @brief   Internal classes to support CR2 image format
+  @file    rw2image_int.hpp
+  @brief   Internal classes to support RW2 image format
   @version $Rev$
   @author  Andreas Huggel (ahu)
            <a href="mailto:ahuggel at gmx.net">ahuggel at gmx.net</a>
-  @date    23-Apr-08, ahu: created
+  @date    06-Jan-09, ahu: created
  */
-#ifndef CR2IMAGE_INT_HPP_
-#define CR2IMAGE_INT_HPP_
+#ifndef RW2IMAGE_INT_HPP_
+#define RW2IMAGE_INT_HPP_
 
 // *****************************************************************************
 // included header files
@@ -46,34 +46,26 @@ namespace Exiv2 {
 // class definitions
 
     /*!
-      @brief Canon CR2 header structure.
+      @brief Panasonic RW2 header structure.
      */
-    class Cr2Header : public TiffHeaderBase {
+    class Rw2Header : public TiffHeaderBase {
     public:
         //! @name Creators
         //@{
         //! Default constructor
-        Cr2Header();
+        Rw2Header();
         //! Destructor.
-        ~Cr2Header();
-        //@}
-
-        //! @name Manipulators
-        //@{
-        bool read(const byte* pData, uint32_t size);
+        ~Rw2Header();
         //@}
 
         //! @name Accessors
         //@{
+        //! Not yet implemented. Does nothing and returns 0.
         uint32_t write(Blob& blob) const;
         //@}
 
-    private:
-        // DATA
-        uint32_t              offset2_;   //!< Bytes 12-15 from the header
-        static const char*    cr2sig_;    //!< Signature for CR2 type TIFF
-    }; // class Cr2Header
+    }; // class Rw2Header
 
 }}                                      // namespace Internal, Exiv2
 
-#endif                                  // #ifndef CR2IMAGE_INT_HPP_
+#endif                                  // #ifndef RW2IMAGE_INT_HPP_

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list