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