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
00035
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 }