[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/filters/krita
From: Cyrille Berger <cyb () lepi ! org>
Date: 2008-07-20 20:49:27
Message-ID: 1216586967.680682.18414.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 835605 by berger:
move the "headers" coding into the metadata backends
M +3 -27 jpeg/kis_jpeg_converter.cc
M +12 -1 libkisexiv2/kis_exif_io.cpp
M +24 -0 libkisexiv2/kis_iptc_io.cpp
--- trunk/koffice/filters/krita/jpeg/kis_jpeg_converter.cc #835604:835605
@@ -552,19 +552,10 @@
Q_ASSERT(exifIO);
QBuffer buffer;
- exifIO->saveTo( metaData, &buffer);
+ exifIO->saveTo( metaData, &buffer, KisMetaData::IOBackend::JpegHeader);
dbgFile <<"Exif information size is" << buffer.data().size();
- QByteArray header(6,0);
- header[0] = 0x45;
- header[1] = 0x78;
- header[2] = 0x69;
- header[3] = 0x66;
- header[4] = 0x00;
- header[5] = 0x00;
-
QByteArray data = buffer.data();
- data.prepend(header);
if (data.size() < MAX_DATA_BYTES_IN_MARKER)
{
jpeg_write_marker(&cinfo, JPEG_APP0 + 1, (const JOCTET*)data.data(), \
data.size()); @@ -580,25 +571,10 @@
Q_ASSERT(iptcIO);
QBuffer buffer;
- iptcIO->saveTo( metaData, &buffer);
+ iptcIO->saveTo( metaData, &buffer, KisMetaData::IOBackend::JpegHeader);
- QByteArray header;
- header.append( photoshopMarker );
- header.append( QByteArray(1, 0) ); // Null terminated string
- header.append( photoshopBimId_ );
- header.append( photoshopIptc_ );
- header.append( QByteArray(2, 0) );
- qint32 size = buffer.size();
- QByteArray sizeArray(4,0);
- sizeArray[0] = (char)((size & 0xff000000) >> 24);
- sizeArray[1] = (char)((size & 0x00ff0000) >> 16);
- sizeArray[2] = (char)((size & 0x0000ff00) >> 8);
- sizeArray[3] = (char)(size & 0x000000ff);
- header.append( sizeArray);
-
- dbgFile <<"IPTC information size is" << buffer.data().size() <<" and \
header is of size =" << header.size(); + dbgFile <<"IPTC information size \
is" << buffer.data().size(); QByteArray data = buffer.data();
- data.prepend(header);
if (data.size() < MAX_DATA_BYTES_IN_MARKER)
{
jpeg_write_marker(&cinfo, JPEG_APP0 + 13, (const \
JOCTET*)data.data(), data.size());
--- trunk/koffice/filters/krita/libkisexiv2/kis_exif_io.cpp #835604:835605
@@ -272,7 +272,18 @@
{
ioDevice->open(QIODevice::WriteOnly);
Exiv2::ExifData exifData;
-
+ if( headerType == KisMetaData::IOBackend::JpegHeader )
+ {
+ QByteArray header(6,0);
+ header[0] = 0x45;
+ header[1] = 0x78;
+ header[2] = 0x69;
+ header[3] = 0x66;
+ header[4] = 0x00;
+ header[5] = 0x00;
+ ioDevice->write( header );
+ }
+
for(QHash<QString, KisMetaData::Entry>::const_iterator it = store->begin();
it != store->end(); ++it )
{
--- trunk/koffice/filters/krita/libkisexiv2/kis_iptc_io.cpp #835604:835605
@@ -28,6 +28,11 @@
#include <kis_meta_data_value.h>
#include <kis_meta_data_schema.h>
+const char photoshopMarker[] = "Photoshop 3.0\0";
+const char photoshopBimId_[] = "8BIM";
+const uint16_t photoshopIptc = 0x0404;
+const QByteArray photoshopIptc_((char*)&photoshopIptc, 2);
+
struct IPTCToKMD {
QString exivTag;
QString namespaceUri;
@@ -111,6 +116,25 @@
}
}
Exiv2::DataBuf rawData = iptcData.copy();
+
+ if( headerType == KisMetaData::IOBackend::JpegHeader )
+ {
+ QByteArray header;
+ header.append( photoshopMarker );
+ header.append( QByteArray(1, 0) ); // Null terminated string
+ header.append( photoshopBimId_ );
+ header.append( photoshopIptc_ );
+ header.append( QByteArray(2, 0) );
+ qint32 size = rawData.size_;
+ QByteArray sizeArray(4,0);
+ sizeArray[0] = (char)((size & 0xff000000) >> 24);
+ sizeArray[1] = (char)((size & 0x00ff0000) >> 16);
+ sizeArray[2] = (char)((size & 0x0000ff00) >> 8);
+ sizeArray[3] = (char)(size & 0x000000ff);
+ header.append( sizeArray);
+ ioDevice->write( header );
+ }
+
ioDevice->write( (const char*) rawData.pData_, rawData.size_);
ioDevice->close();
return true;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic