[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