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