[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:46:20 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=09c734f
The following commit has been merged in the master branch:
commit 09c734fbcd98b3ae880a90d669569c95242f477e
Author: Robin Mills <robin at clanmills.com>
Date: Thu Mar 17 23:45:58 2016 +0000
#1108. Refactored the IPTC printStructure code from png/jpeg/tiff into iptc.cpp
---
include/exiv2/iptc.hpp | 4 ++++
src/iptc.cpp | 29 +++++++++++++++++++++++++++++
src/jpgimage.cpp | 19 +------------------
src/pngimage.cpp | 17 +----------------
src/tiffimage.cpp | 17 ++---------------
5 files changed, 37 insertions(+), 49 deletions(-)
diff --git a/include/exiv2/iptc.hpp b/include/exiv2/iptc.hpp
index 97b3a53..f5e0b38 100644
--- a/include/exiv2/iptc.hpp
+++ b/include/exiv2/iptc.hpp
@@ -273,6 +273,10 @@ namespace Exiv2 {
@brief Return the metadata charset name or 0
*/
const char *detectCharset() const;
+ /*!
+ @brief dump iptc formatted binary data (used by printStructure kpsRecursive)
+ */
+ static void printStructure(std::ostream& out, const byte* bytes,const size_t size,uint32_t depth);
//@}
private:
diff --git a/src/iptc.cpp b/src/iptc.cpp
index ac6a5ee..facee46 100644
--- a/src/iptc.cpp
+++ b/src/iptc.cpp
@@ -36,6 +36,7 @@ EXIV2_RCSID("@(#) $Id$")
#include "value.hpp"
#include "datasets.hpp"
#include "jpgimage.hpp"
+#include "image_int.hpp"
// + standard includes
#include <iostream>
@@ -352,6 +353,34 @@ namespace Exiv2 {
return iptcMetadata_.erase(pos);
}
+ static std::string indent(int d)
+ {
+ std::string result ;
+ if ( d > 0 )
+ while ( d--)
+ result += " ";
+ return result;
+ }
+
+ void IptcData::printStructure(std::ostream& out, const byte* bytes,const size_t size,uint32_t depth)
+ {
+ uint32_t i = 0 ;
+ while ( i < size-3 && bytes[i] != 0x1c ) i++;
+ depth++;
+ out << indent(depth) << "Record | DataSet | Name | Length | Data" << std::endl;
+ while ( bytes[i] == 0x1c && i < size-3 ) {
+ char buff[100];
+ uint16_t record = bytes[i+1];
+ uint16_t dataset = bytes[i+2];
+ uint16_t len = getUShort(bytes+i+3,bigEndian);
+ sprintf(buff," %6d | %7d | %-24s | %6d | ",record,dataset, Exiv2::IptcDataSets::dataSetName(dataset,record).c_str(), len);
+
+ out << buff << Internal::binaryToString(bytes,(len>40?40:len),i+5) << (len>40?"...":"") << std::endl;
+ i += 5 + len;
+ }
+ depth--;
+ }
+
const char *IptcData::detectCharset() const
{
const_iterator pos = findKey(IptcKey("Iptc.Envelope.CharacterSet"));
diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp
index 1f800a9..90a4564 100644
--- a/src/jpgimage.cpp
+++ b/src/jpgimage.cpp
@@ -719,25 +719,8 @@ namespace Exiv2 {
}
if ( bPS ) {
- uint32_t i = 0 ;
- byte* bytes = exif;
- DataBuf dataBuf(bytes,size);
- while ( i < size-3 && exif[i] != 0x1c ) i++;
- depth++;
- out << " Record | DataSet | Name | Length | Data" << std::endl;
- while ( bytes[i] == 0x1c && i < size-3 ) {
- char buff[100];
- uint16_t record = bytes[i+1];
- uint16_t dataset = bytes[i+2];
- uint16_t len = getUShort(bytes+i+3,bigEndian);
- sprintf(buff," %6d | %7d | %-24s | %6d | ",record,dataset, Exiv2::IptcDataSets::dataSetName(dataset,record).c_str(), len);
-
- out << buff << Internal::binaryToString(dataBuf,len,i+5) << std::endl;
- i += 5 + len;
- }
- depth--;
+ IptcData::printStructure(out,exif,size,depth);
} else {
-
// create a copy on write memio object with the data, then print the structure
BasicIo::AutoPtr p = BasicIo::AutoPtr(new MemIo(exif+start,size-start));
if ( start < max ) TiffImage::printTiffStructure(*p,out,option,depth);
diff --git a/src/pngimage.cpp b/src/pngimage.cpp
index 74caee1..55a8081 100644
--- a/src/pngimage.cpp
+++ b/src/pngimage.cpp
@@ -311,22 +311,7 @@ namespace Exiv2 {
}
if ( bIptc ) {
- const byte* bytes = dataBuf.pData_;
- uint32_t l = (uint32_t) dataBuf.size_ ; // std::strlen(bytes)+2;
- uint32_t i = 0 ;
- depth++;
- out << indent(depth) << "Record | DataSet | Name | Length | Data" << std::endl;
- while ( bytes[i] == 0x1c && i < l-3 ) {
- char buff[100];
- uint16_t record = bytes[i+1];
- uint16_t dataset = bytes[i+2];
- uint16_t len = getUShort(bytes+i+3,bigEndian);
- sprintf(buff,"%6d | %7d | %-24s | %6d | ",record,dataset, Exiv2::IptcDataSets::dataSetName(dataset,record).c_str(), len);
-
- out << indent(depth) << buff << Internal::binaryToString(dataBuf,len,i+5) << std::endl;
- i += 5 + len;
- }
- depth--;
+ IptcData::printStructure(out,dataBuf.pData_,dataBuf.size_,depth);
}
}
delete [] data;
diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp
index 8efcb74..831bce1 100644
--- a/src/tiffimage.cpp
+++ b/src/tiffimage.cpp
@@ -584,21 +584,8 @@ namespace Exiv2 {
byte* bytes=new byte[count] ; // allocate memory
io.read(bytes,count) ; // read
io.seek(restore,BasicIo::beg); // restore
-
- uint32_t i = 0 ;
- while ( i < count-3 && bytes[i] != 0x1c ) i++;
- out << " Record | DataSet | Name | Length | Data" << std::endl;
- while ( bytes[i] == 0x1c && i < size-3 ) {
- char buff[100];
- uint16_t record = bytes[i+1];
- uint16_t dataset = bytes[i+2];
- uint16_t len = getUShort(bytes+i+3,bigEndian);
- sprintf(buff," %6d | %7d | %-24s | %6d | ",record,dataset, Exiv2::IptcDataSets::dataSetName(dataset,record).c_str(), len);
-
- out << buff << Internal::binaryToString(bytes,(len>40?40:len),i+5) << (len>40?"...":"") << std::endl;
- i += 5 + len;
- }
- delete[] bytes;
+ IptcData::printStructure(out,bytes,count,depth);
+ delete[] bytes; // free
}
}
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list