aboutsummaryrefslogtreecommitdiffhomepage
path: root/demos/mandelbrot/mandelbrot.h
blob: 23df7c9dd87dcea5249bee7c0e22c69f77341dd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef MANDELBROT_H
#define MANDELBROT_H

#include <Eigen/Array>
#include <QtGui/QApplication>
#include <QtGui/QWidget>

class MandelbrotWidget : public QWidget
{
    Q_OBJECT

    Eigen::Vector2d center;
    double xradius;
    int size;
    unsigned char *buffer;
    QPoint lastpos;
    int draft;

  protected:
    void resizeEvent(QResizeEvent *);
    void paintEvent(QPaintEvent *);
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    template<typename Real> int render(int max_iter, int resx, int resy);

  public:
    MandelbrotWidget() : QWidget(), center(0,0), xradius(2),
                         size(0), buffer(0), draft(16)
    {
      setAutoFillBackground(false);
    }
    ~MandelbrotWidget() { if(buffer) delete[]buffer; }
};

#endif // MANDELBROT_H