00001 #ifndef DRAWTHREAD_H
00002 #define DRAWTHREAD_H
00003
00004 #include <QMutex>
00005 #include <QSize>
00006 #include <QThread>
00007 #include <QWaitCondition>
00008 #include "fractalMap.h"
00009
00010 QT_BEGIN_NAMESPACE
00011 class QImage;
00012 QT_END_NAMESPACE
00013
00014 class CDrawThread : public QThread
00015 {
00016 Q_OBJECT
00017
00018 public:
00019 CDrawThread(QObject *parent = 0);
00020 ~CDrawThread();
00021
00022 void render(CFractalMap fractal, QSize resultSize);
00023
00024 signals:
00025 void renderedImage(const QImage &image, double scaleFactor);
00026
00027 protected:
00028 void run();
00029
00030 private:
00031 uint rgbFromWaveLength(double wave);
00032
00033 QMutex mutex;
00034 QWaitCondition condition;
00035 double centerX;
00036 double centerY;
00037 double scaleFactor;
00038 QSize resultSize;
00039 bool restart;
00040 bool abort;
00041
00042 enum { ColormapSize = 512 };
00043 uint colormap[ColormapSize];
00044 };
00045
00046 #endif // DRAWTHREAD_H