00001 #ifndef CALCULATECONCURRENT_H
00002 #define CALCULATECONCURRENT_H
00003
00004 #include <QApplication>
00005 #include "fractal.h"
00006 #include "QtConcurrentRun"
00007
00008 #ifndef QT_NO_CONCURRENT
00009
00010 class CCalculateConcurrent : public QObject
00011 {
00012 Q_OBJECT
00013 public:
00014 CCalculateConcurrent();
00015 ~CCalculateConcurrent();
00016 void add(CFractal fractal);
00017 public Q_SLOTS:
00018 void open();
00019 void finished();
00020 private:
00021 struct Subfractal
00022 {
00023 int offsetX;
00024 int offsetY;
00025 CFractal fractal;
00026 };
00027
00028 void calculate(const Subfractal &subfractal);
00029 QList<Subfractal> subfractals;
00030 QFutureWatcher<void> *fractalWatcher;
00031 };
00032
00033 #else
00034
00035
00036 class CCalculateConcurrent : public QObject
00037 {
00038 Q_OBJECT
00039 public Q_SLOTS:
00040 void open() {}
00041 void finished() {}
00042 };
00043
00044 #endif // QT_NO_CONCURRENT
00045
00046 #endif // CALCULATECONCURRENT_H