[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