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