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