C:/sources/c++/buddhabrot/buddhabrot/Networkimagetiler.cpp

00001 #include "NetworkImageTiler.h"
00002 #include <QtGui/QImage>
00003 #include "ImageCalculator.h"
00004 #include <QtGui/QMessageBox>
00005 
00006 
00007 NetworkImageTiler::NetworkImageTiler(QString url, QVector<QVector<long> >& result, QMutex& mutex, QRectF w, QSize r, fractale *f, bool type, long nbRandom, int start, int step):result(result), mutex(mutex), size(r){
00008         surl = url.append(QString("/generate.php?t=%1&f=%2&w=%3&r=%4&i=%5&ra=%6&o=%7&s=%8")
00009                 .arg(type?"true":"false")
00010                 .arg(f->getName())
00011                 .arg(QString("%1:%2:%3:%4")
00012                         .arg(w.top()).arg(w.left()).arg(w.height()).arg(w.width())
00013                         )
00014                 .arg(r.width()) 
00015                 .arg( f->getMaxIterations() )
00016                 .arg(nbRandom)          
00017                 .arg(start)
00018                 .arg(step)
00019         );      
00020 
00021 
00022 }
00023 
00024 NetworkImageTiler::~NetworkImageTiler(){
00025 }
00026 
00027 void NetworkImageTiler::run(){
00028         QNetworkAccessManager manager;
00029 
00030         connect ( &manager, SIGNAL ( finished(QNetworkReply*)    ),   this , SLOT   ( s_finished(QNetworkReply*) )  );
00031 
00032         reply = manager.get(QNetworkRequest(QUrl(surl)));
00033         
00034         //connect ( reply, SIGNAL ( finished()    ),   this , SLOT   ( s_replyfinished() )  );
00035         //connect ( reply, SIGNAL ( error( QNetworkReply::NetworkError)    ),   this , SLOT   ( s_error(QNetworkReply::NetworkError) )  );
00036 
00037         loop.exec();
00038         QByteArray arr = reply->readAll();
00039         QImage img = QImage::fromData(arr);
00040 
00041         for (int i=0; i<size.width(); i++){
00042                 mutex.lock();
00043                 for (int j=0; j<size.height(); j++){
00044                         result[i][j] += ImageCalculator::RGBAToInt(img.pixel(i,j));
00045                 }
00046                 mutex.unlock();
00047         }
00048 
00049         delete reply;
00050 }
00051 
00052 
00053 void NetworkImageTiler::s_error(QNetworkReply::NetworkError){
00054         loop.exit();
00055 }
00056 
00057 
00058 void NetworkImageTiler::s_finished(QNetworkReply*){
00059         loop.exit();
00060 }

Generated on Thu Feb 25 16:04:07 2010 for BuddhaBrot by  doxygen 1.4.6-NO