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