[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:42:56 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=0e0845d
The following commit has been merged in the master branch:
commit 0e0845d7beac40b9cdf2a3017108e4880c6c9ee7
Author: Andreas Huggel <ahuggel at gmx.net>
Date: Wed Mar 21 00:53:32 2012 +0000
#635: Added experimental write-support for CR2.
---
src/cr2image.cpp | 121 +++++++++++++++++++++++++++++++---------------
src/cr2image.hpp | 17 +------
src/cr2image_int.hpp | 5 +-
src/exif.cpp | 6 ++-
src/orfimage.cpp | 3 +-
src/tiffcomposite.cpp | 20 ++++++--
src/tiffcomposite_int.hpp | 7 ++-
src/tifffwd_int.hpp | 1 +
src/tiffimage.cpp | 30 ++++++++++--
src/tiffimage_int.hpp | 59 +++++++++++++++++++++-
10 files changed, 203 insertions(+), 66 deletions(-)
diff --git a/src/cr2image.cpp b/src/cr2image.cpp
index 8ca56b6..e394d56 100644
--- a/src/cr2image.cpp
+++ b/src/cr2image.cpp
@@ -86,18 +86,6 @@ namespace Exiv2 {
return 0;
}
- void Cr2Image::setExifData(const ExifData& /*exifData*/)
- {
- // Todo: implement me!
- throw(Error(32, "Exif metadata", "CR2"));
- }
-
- void Cr2Image::setIptcData(const IptcData& /*iptcData*/)
- {
- // Todo: implement me!
- throw(Error(32, "IPTC metadata", "CR2"));
- }
-
void Cr2Image::setComment(const std::string& /*comment*/)
{
// not supported
@@ -129,8 +117,29 @@ namespace Exiv2 {
void Cr2Image::writeMetadata()
{
- // Todo: implement me!
- throw(Error(31, "CR2"));
+#ifdef DEBUG
+ std::cerr << "Writing CR2 file " << io_->path() << "
";
+#endif
+ ByteOrder bo = byteOrder();
+ byte* pData = 0;
+ long size = 0;
+ IoCloser closer(*io_);
+ if (io_->open() == 0) {
+ // Ensure that this is the correct image type
+ if (isCr2Type(*io_, false)) {
+ pData = io_->mmap(true);
+ size = io_->size();
+ Cr2Header cr2Header;
+ if (0 == cr2Header.read(pData, 16)) {
+ bo = cr2Header.byteOrder();
+ }
+ }
+ }
+ if (bo == invalidByteOrder) {
+ bo = littleEndian;
+ }
+ setByteOrder(bo);
+ Cr2Parser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw
} // Cr2Image::writeMetadata
ByteOrder Cr2Parser::decode(
@@ -153,27 +162,45 @@ namespace Exiv2 {
}
WriteMethod Cr2Parser::encode(
- Blob& blob,
- const byte* /*pData*/,
- uint32_t /*size*/,
- const ExifData& /*exifData*/,
- const IptcData& /*iptcData*/,
- const XmpData& /*xmpData*/
+ BasicIo& io,
+ const byte* pData,
+ uint32_t size,
+ ByteOrder byteOrder,
+ const ExifData& exifData,
+ const IptcData& iptcData,
+ const XmpData& xmpData
)
{
- /* Todo: Implement me!
-
- TiffParserWorker::encode(blob,
- pData,
- size,
- exifData,
- iptcData,
- xmpData,
- TiffCreator::create,
- TiffMapping::findEncoder);
- */
- blob.clear();
- return wmIntrusive;
+ // Copy to be able to modify the Exif data
+ ExifData ed = exifData;
+
+ // Delete IFDs which do not occur in TIFF images
+ static const IfdId filteredIfds[] = {
+ panaRawId
+ };
+ for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) {
+#ifdef DEBUG
+ std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded
";
+#endif
+ ed.erase(std::remove_if(ed.begin(),
+ ed.end(),
+ FindExifdatum(filteredIfds[i])),
+ ed.end());
+ }
+
+ std::auto_ptr<TiffHeaderBase> header(new Cr2Header(byteOrder));
+ OffsetWriter offsetWriter;
+ offsetWriter.setOrigin(OffsetWriter::cr2RawIfdOffset, Cr2Header::offset2addr(), byteOrder);
+ return TiffParserWorker::encode(io,
+ pData,
+ size,
+ ed,
+ iptcData,
+ xmpData,
+ Tag::root,
+ TiffMapping::findEncoder,
+ header.get(),
+ &offsetWriter);
}
// *************************************************************************
@@ -210,8 +237,8 @@ namespace Exiv2 {
const char* Cr2Header::cr2sig_ = "CR
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list