00001 #ifndef FRACTALWIDGET_H 00002 #define FRACTALWIDGET_H 00003 00004 #include <QPixmap> 00005 #include <QWidget> 00006 00007 #include "drawThread.h" 00008 #include "calculateThread.h" 00009 #include "calculateConcurrent.h" 00010 #include "fractal.h" 00011 00012 class CFractalWidget : public QWidget 00013 { 00014 Q_OBJECT 00015 00016 public: 00017 CFractalWidget(QWidget *parent = 0); 00018 00019 protected: 00020 void paintEvent(QPaintEvent *event); 00021 void resizeEvent(QResizeEvent *event); 00022 void keyPressEvent(QKeyEvent *event); 00023 void wheelEvent(QWheelEvent *event); 00024 void mousePressEvent(QMouseEvent *event); 00025 void mouseMoveEvent(QMouseEvent *event); 00026 void mouseReleaseEvent(QMouseEvent *event); 00027 00028 private slots: 00029 void updatePixmap(const QImage &image, double scaleFactor); 00030 void updateStatus(double progress); 00031 00032 private: 00033 void zoom(double zoomFactor); 00034 void scroll(int deltaX, int deltaY); 00035 00036 CDrawThread drawThread; 00037 CCalculateThread calcThread; 00038 QPixmap pixmap; 00039 QPoint pixmapOffset; 00040 QPoint lastDragPos; 00041 double centerX; 00042 double centerY; 00043 double pixmapScale; 00044 double curScale; 00045 }; 00046 00047 00048 #endif // FRACTALWIDGET_H