summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/slave/jpeg_slave.cpp3
-rw-r--r--noncore/graphics/opie-eye/slave/slavereciever.cpp11
-rw-r--r--noncore/graphics/opie-eye/slave/thumbnailtool.cpp3
3 files changed, 4 insertions, 13 deletions
diff --git a/noncore/graphics/opie-eye/slave/jpeg_slave.cpp b/noncore/graphics/opie-eye/slave/jpeg_slave.cpp
index 668ad13..0f41359 100644
--- a/noncore/graphics/opie-eye/slave/jpeg_slave.cpp
+++ b/noncore/graphics/opie-eye/slave/jpeg_slave.cpp
@@ -170,30 +170,27 @@ QString JpegSlave::fullImageInfo( const QString& path) {
170 170
171 tag += QObject::tr( "</qt>" ); 171 tag += QObject::tr( "</qt>" );
172 172
173 173
174 174
175 return tag; 175 return tag;
176} 176}
177 177
178QPixmap JpegSlave::pixmap( const QString& path, int wid, int hei) { 178QPixmap JpegSlave::pixmap( const QString& path, int wid, int hei) {
179 ExifData ImageInfo; 179 ExifData ImageInfo;
180 /* 180 /*
181 */ 181 */
182 if ( !ImageInfo.scan( path ) || ImageInfo.isNullThumbnail() ) { 182 if ( !ImageInfo.scan( path ) || ImageInfo.isNullThumbnail() ) {
183 QImage img; 183 QImage img;
184 QImageIO iio( path, 0l ); 184 QImageIO iio( path, 0l );
185 if (wid < ImageInfo.getWidth() || hei<ImageInfo.getHeight()) { 185 if (wid < ImageInfo.getWidth() || hei<ImageInfo.getHeight()) {
186 odebug << "Scaling "<<ImageInfo.getWidth()<<"x"<<ImageInfo.getHeight()
187 << " to "<<wid<<"x"<<hei<< " ("<<path<<")"<<oendl;
188 QString str = QString( "Fast Shrink( 4 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei ); 186 QString str = QString( "Fast Shrink( 4 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei );
189 iio.setParameters( str.latin1() );// will be strdupped anyway 187 iio.setParameters( str.latin1() );// will be strdupped anyway
190 } else { 188 } else {
191 odebug << "Not scaling "<<ImageInfo.getWidth()<<"x"<<ImageInfo.getHeight()<< " ("<<path<<")"<<oendl;
192 } 189 }
193 img = iio.read() ? iio.image() : QImage(); 190 img = iio.read() ? iio.image() : QImage();
194 return ThumbNailTool::scaleImage( img, wid,hei ); 191 return ThumbNailTool::scaleImage( img, wid,hei );
195 }else{ 192 }else{
196 QImage img = ImageInfo.getThumbnail(); 193 QImage img = ImageInfo.getThumbnail();
197 return ThumbNailTool::scaleImage( img, wid,hei ); 194 return ThumbNailTool::scaleImage( img, wid,hei );
198 } 195 }
199} 196}
diff --git a/noncore/graphics/opie-eye/slave/slavereciever.cpp b/noncore/graphics/opie-eye/slave/slavereciever.cpp
index 941a5df..3b11c04 100644
--- a/noncore/graphics/opie-eye/slave/slavereciever.cpp
+++ b/noncore/graphics/opie-eye/slave/slavereciever.cpp
@@ -28,33 +28,32 @@ QDataStream & operator >> (QDataStream & str, bool & b)
28 str >> l; 28 str >> l;
29 b = bool(l); 29 b = bool(l);
30 return str; 30 return str;
31} 31}
32 32
33 33
34 34
35QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) { 35QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) {
36 return s << inf.file << inf.pixmap << inf.width << inf.height; 36 return s << inf.file << inf.pixmap << inf.width << inf.height;
37} 37}
38 38
39/* 39/*
40 * GUI sends no QPIxmap!!! 40 * GUI sends no QPIxmap!!!
41 */ 41 */
42QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) { 42QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) {
43 s >> inf.file >> inf.width >> inf.height; 43 s >> inf.file >> inf.width >> inf.height;
44 owarn << "Recieved " << inf.file.latin1() << " " << inf.width << " " << inf.height << "" << oendl;
45 return s; 44 return s;
46} 45}
47QDataStream &operator<<( QDataStream& s, const ImageInfo& i) { 46QDataStream &operator<<( QDataStream& s, const ImageInfo& i) {
48 return s << i.kind << i.file << i.info; 47 return s << i.kind << i.file << i.info;
49} 48}
50QDataStream &operator>>( QDataStream& s, ImageInfo& i ) { 49QDataStream &operator>>( QDataStream& s, ImageInfo& i ) {
51 s >> i.kind >> i.file >> i.info; 50 s >> i.kind >> i.file >> i.info;
52 return s; 51 return s;
53} 52}
54 53
55 54
56 55
57SlaveObjects* slaveObjects() { 56SlaveObjects* slaveObjects() {
58 if ( !_slaveObj ) 57 if ( !_slaveObj )
59 _slaveObj = new SlaveObjects; 58 _slaveObj = new SlaveObjects;
60 return _slaveObj; 59 return _slaveObj;
@@ -73,70 +72,66 @@ SlaveReciever::SlaveReciever( QObject* par)
73 m_out = new QTimer(this); 72 m_out = new QTimer(this);
74 connect(m_out,SIGNAL(timeout()), 73 connect(m_out,SIGNAL(timeout()),
75 this, SLOT(slotSend())); 74 this, SLOT(slotSend()));
76 75
77 SlaveObjects *obj = slaveObjects(); // won't be changed 76 SlaveObjects *obj = slaveObjects(); // won't be changed
78 SlaveMap::Iterator it; 77 SlaveMap::Iterator it;
79 SlaveMap* map = slaveMap(); // SlaveMap won't be changed during execution!!! 78 SlaveMap* map = slaveMap(); // SlaveMap won't be changed during execution!!!
80 for(it = map->begin(); it != map->end(); ++it ) { 79 for(it = map->begin(); it != map->end(); ++it ) {
81 obj->insert( it.key(), (*it.data())() ); 80 obj->insert( it.key(), (*it.data())() );
82 } 81 }
83} 82}
84 83
85SlaveReciever::~SlaveReciever() { 84SlaveReciever::~SlaveReciever() {
86} 85}
87 86
88void SlaveReciever::recieveAnswer( const QCString& string, const QByteArray& ar) { 87void SlaveReciever::recieveAnswer( const QCString& string, const QByteArray& ar) {
89 owarn << "String is " << string.data() << "" << oendl;
90 QDataStream stream(ar, IO_ReadOnly ); 88 QDataStream stream(ar, IO_ReadOnly );
91 QStringList lst; 89 QStringList lst;
92 static ImageInfo inf; 90 static ImageInfo inf;
93 static PixmapInfo pix; 91 static PixmapInfo pix;
94 92
95 if ( string == "thumbInfo(QString)" ) { 93 if ( string == "thumbInfo(QString)" ) {
96 stream >> inf.file; 94 stream >> inf.file;
97 inf.kind = false; 95 inf.kind = false;
98 m_inList.append(inf); 96 m_inList.append(inf);
99 }else if ( string == "thumbInfos(QStringList)" ) { 97 }else if ( string == "thumbInfos(QStringList)" ) {
100 stream >> lst; 98 stream >> lst;
101 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { 99 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
102 owarn << "Adding thumbinfo for file "+ *it << oendl;
103 inf.file = (*it); 100 inf.file = (*it);
104 inf.kind = false; 101 inf.kind = false;
105 m_inList.append(inf); 102 m_inList.append(inf);
106 } 103 }
107 }else if ( string == "fullInfo(QString)" ) { 104 }else if ( string == "fullInfo(QString)" ) {
108 inf.kind = true; 105 inf.kind = true;
109 stream >> inf.file; 106 stream >> inf.file;
110 m_inList.append(inf); 107 m_inList.append(inf);
111 }else if ( string == "fullInfos(QStringList)" ) { 108 }else if ( string == "fullInfos(QStringList)" ) {
112 stream >> lst; 109 stream >> lst;
113 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { 110 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
114 owarn << "Adding fullInfo for"+ *it << oendl;
115 inf.file = (*it); 111 inf.file = (*it);
116 inf.kind = true; 112 inf.kind = true;
117 m_inList.append(inf); 113 m_inList.append(inf);
118 } 114 }
119 }else if ( string == "pixmapInfo(QString,int,int)" ) { 115 }else if ( string == "pixmapInfo(QString,int,int)" ) {
120 stream >> pix.file >> pix.width >> pix.height; 116 stream >> pix.file >> pix.width >> pix.height;
121 m_inPix.append(pix); 117 m_inPix.append(pix);
122 }else if ( string == "pixmapInfos(PixmapInfos)" ) { 118 }else if ( string == "pixmapInfos(PixmapInfos)" ) {
123 PixmapList list; 119 PixmapList list;
124 stream >> list; 120 stream >> list;
125 for(PixmapList::Iterator it = list.begin(); it != list.end(); ++it ) { 121 for(PixmapList::Iterator it = list.begin(); it != list.end(); ++it ) {
126 owarn << "Got " << (*it).width << " " << (*it).height << " " + (*it).file << oendl;
127 m_inPix.append(*it); 122 m_inPix.append(*it);
128 } 123 }
129 }else if ( string == "refUp()" ) { 124 }else if ( string == "refUp()" ) {
130 m_refs++; 125 m_refs++;
131 }else if ( string == "refDown()" ) { 126 }else if ( string == "refDown()" ) {
132 m_refs--; 127 m_refs--;
133 } 128 }
134 129
135 if (!m_inf->isActive() && !m_inList.isEmpty() ) 130 if (!m_inf->isActive() && !m_inList.isEmpty() )
136 m_inf->start(5); 131 m_inf->start(5);
137 132
138 if (!m_pix->isActive() && !m_inPix.isEmpty() ) 133 if (!m_pix->isActive() && !m_inPix.isEmpty() )
139 m_pix->start(5); 134 m_pix->start(5);
140 135
141 if ( m_refs ) 136 if ( m_refs )
142 QPEApplication::setKeepRunning(); 137 QPEApplication::setKeepRunning();
@@ -174,65 +169,67 @@ void SlaveReciever::slotImageInfo() {
174 if (m_inList.isEmpty() ) 169 if (m_inList.isEmpty() )
175 m_inf->stop(); 170 m_inf->stop();
176 if (!m_out->isActive() && !m_outList.isEmpty() ) 171 if (!m_out->isActive() && !m_outList.isEmpty() )
177 m_out->start( 100 ); 172 m_out->start( 100 );
178} 173}
179 174
180void SlaveReciever::slotThumbNail() { 175void SlaveReciever::slotThumbNail() {
181 PixmapInfo inf = m_inPix.first(); 176 PixmapInfo inf = m_inPix.first();
182 m_inPix.remove( inf ); 177 m_inPix.remove( inf );
183 178
184 static SlaveObjects::Iterator it; 179 static SlaveObjects::Iterator it;
185 static SlaveObjects* map = slaveObjects(); // SlaveMap won't be changed during execution!!! 180 static SlaveObjects* map = slaveObjects(); // SlaveMap won't be changed during execution!!!
186 for(it = map->begin(); it != map->end(); ++it ) { 181 for(it = map->begin(); it != map->end(); ++it ) {
187 SlaveInterface* iface = it.data(); 182 SlaveInterface* iface = it.data();
188 if( iface->supports(inf.file ) ) { 183 if( iface->supports(inf.file ) ) {
189 /* pixmap */ 184 /* pixmap */
190 owarn << "Asking for thumbNail in size " << inf.width << " " << inf.height << " for "+inf.file << oendl;
191 if (inf.width>256||inf.height>256) { 185 if (inf.width>256||inf.height>256) {
192 owarn << "Scaling thumbnail to 64x64 'cause " << inf.width<<"x"<<inf.height<< 186 owarn << "Scaling thumbnail to 64x64 'cause " << inf.width<<"x"<<inf.height<<
193 " may be nonsense"; 187 " may be nonsense";
194 inf.pixmap = iface->pixmap(inf.file, 64, 64); 188 inf.pixmap = iface->pixmap(inf.file, 64, 64);
195 }else { 189 }else {
196 inf.pixmap = iface->pixmap(inf.file, inf.width, inf.height); 190 inf.pixmap = iface->pixmap(inf.file, inf.width, inf.height);
197 } 191 }
198 m_outPix.append( inf ); 192 m_outPix.append( inf );
199 break; 193 break;
200 } 194 }
201 } 195 }
202 196
203 197
204 198
205 if(m_inPix.isEmpty() ) 199 if(m_inPix.isEmpty() )
206 m_pix->stop(); 200 m_pix->stop();
207 if(!m_out->isActive() && !m_outPix.isEmpty() ) 201 if(!m_out->isActive() && !m_outPix.isEmpty() )
208 m_out->start(100); 202 m_out->start(100);
209} 203}
210 204
211void SlaveReciever::slotSend() { 205void SlaveReciever::slotSend() {
212 206
213 m_out->stop(); 207 m_out->stop();
214 208
215 owarn << "Sending " << outPix().count() << " " << outInf().count() << "" << oendl;
216 /* queue it and send */ 209 /* queue it and send */
217 /* if this ever gets a service introduce request queues 210 /* if this ever gets a service introduce request queues
218 * so we can differinatate between different clients 211 * so we can differinatate between different clients
219 */ 212 */
220 if (! m_outPix.isEmpty() ) { 213 if (! m_outPix.isEmpty() ) {
221 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(PixmapList)" ); 214 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(PixmapList)" );
222 answer << outPix(); 215 answer << outPix();
216#if 0
223 for ( PixmapList::Iterator it = m_outPix.begin();it!=m_outPix.end();++it ) { 217 for ( PixmapList::Iterator it = m_outPix.begin();it!=m_outPix.end();++it ) {
224 owarn << "Sending out " << (*it).file.latin1() << " " << (*it).width << " " << (*it).height << "" << oendl; 218 owarn << "Sending out " << (*it).file.latin1() << " " << (*it).width << " " << (*it).height << "" << oendl;
225 } 219 }
220#endif
226 } 221 }
227 if ( !m_outList.isEmpty() ) { 222 if ( !m_outList.isEmpty() ) {
228 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(StringList)" ); 223 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(StringList)" );
229 answer << outInf(); 224 answer << outInf();
225#if 0
230 for ( StringList::Iterator it = m_outList.begin();it!=m_outList.end();++it ) { 226 for ( StringList::Iterator it = m_outList.begin();it!=m_outList.end();++it ) {
231 owarn << "Sending out2 " + (*it).file << oendl; 227 owarn << "Sending out2 " + (*it).file << oendl;
232 } 228 }
229#endif
233 } 230 }
234 231
235 m_outList.clear(); 232 m_outList.clear();
236 m_outPix.clear(); 233 m_outPix.clear();
237} 234}
238 235
diff --git a/noncore/graphics/opie-eye/slave/thumbnailtool.cpp b/noncore/graphics/opie-eye/slave/thumbnailtool.cpp
index d2e169c..62bb1e6 100644
--- a/noncore/graphics/opie-eye/slave/thumbnailtool.cpp
+++ b/noncore/graphics/opie-eye/slave/thumbnailtool.cpp
@@ -18,48 +18,45 @@ static bool makeThumbDir( const QFileInfo& inf, bool make = false) {
18 return dir.mkdir(QString::null); 18 return dir.mkdir(QString::null);
19 else 19 else
20 return false; 20 return false;
21 return true; 21 return true;
22} 22}
23 23
24 24
25/* 25/*
26 * check if the Opie opie-eye dir exists 26 * check if the Opie opie-eye dir exists
27 * check if a thumbnail exists 27 * check if a thumbnail exists
28 * load the thumbnail 28 * load the thumbnail
29 * /foo/bar/imagefoo.gif 29 * /foo/bar/imagefoo.gif
30 * check for a png in /foo/bar/.opie-eye/%dx%d-imagefoo.gif 30 * check for a png in /foo/bar/.opie-eye/%dx%d-imagefoo.gif
31 */ 31 */
32QPixmap ThumbNailTool::getThumb( const QString& path, int width, int height ) { 32QPixmap ThumbNailTool::getThumb( const QString& path, int width, int height ) {
33 QFileInfo inf( path ); 33 QFileInfo inf( path );
34 owarn << "Get Thumb" << oendl;
35 if ( !makeThumbDir( inf ) ) { 34 if ( !makeThumbDir( inf ) ) {
36 QPixmap pix; 35 QPixmap pix;
37 return pix; 36 return pix;
38 } 37 }
39 QString str = QString( "/.opie-eye/%1x%2-%3" ).arg( width ).arg( height ).arg( inf.fileName() ); 38 QString str = QString( "/.opie-eye/%1x%2-%3" ).arg( width ).arg( height ).arg( inf.fileName() );
40 owarn << inf.dirPath()+str << oendl;
41 return QPixmap( inf.dirPath()+str,"PNG" ); 39 return QPixmap( inf.dirPath()+str,"PNG" );
42 40
43} 41}
44 42
45void ThumbNailTool::putThumb( const QString& path, const QPixmap& pix, int width, int height ) { 43void ThumbNailTool::putThumb( const QString& path, const QPixmap& pix, int width, int height ) {
46 QFileInfo inf( path ); 44 QFileInfo inf( path );
47 makeThumbDir( inf, true ); 45 makeThumbDir( inf, true );
48 QString str = QString( "/.opie-eye/%1x%2-%3" ).arg( width ).arg( height ).arg( inf.fileName() ); 46 QString str = QString( "/.opie-eye/%1x%2-%3" ).arg( width ).arg( height ).arg( inf.fileName() );
49 owarn << inf.dirPath()+str << oendl;
50 pix.save( inf.dirPath()+str, "PNG" ); 47 pix.save( inf.dirPath()+str, "PNG" );
51} 48}
52 49
53 50
54QPixmap ThumbNailTool::scaleImage( QImage& img, int w, int h ) { 51QPixmap ThumbNailTool::scaleImage( QImage& img, int w, int h ) {
55 double hs = (double)h / (double)img.height() ; 52 double hs = (double)h / (double)img.height() ;
56 double ws = (double)w / (double)img.width() ; 53 double ws = (double)w / (double)img.width() ;
57 double scaleFactor = (hs > ws) ? ws : hs; 54 double scaleFactor = (hs > ws) ? ws : hs;
58 int smoothW = (int)(scaleFactor * img.width()); 55 int smoothW = (int)(scaleFactor * img.width());
59 int smoothH = (int)(scaleFactor * img.height()); 56 int smoothH = (int)(scaleFactor * img.height());
60 QPixmap pixmap; 57 QPixmap pixmap;
61 if ( img.width() <= w && img.height() <= h ) 58 if ( img.width() <= w && img.height() <= h )
62 pixmap.convertFromImage( img ); 59 pixmap.convertFromImage( img );
63 else 60 else
64 pixmap.convertFromImage( img.smoothScale( smoothW, smoothH) ); 61 pixmap.convertFromImage( img.smoothScale( smoothW, smoothH) );
65 return pixmap; 62 return pixmap;