]> git.sur5r.net Git - fstl/blob - src/canvas.h
64a8dd5cff71c8a2dd96fed7df664a4016e5d486
[fstl] / src / canvas.h
1 #ifndef CANVAS_H
2 #define CANVAS_H
3
4 #include <QWidget>
5 #include <QtOpenGL/QGLWidget>
6 #include <QtOpenGL/QGLFunctions>
7 #include <QtOpenGL/QGLShaderProgram>
8 #include <QMatrix4x4>
9
10 class GLMesh;
11 class Mesh;
12 class Backdrop;
13
14 class Canvas : public QGLWidget, protected QGLFunctions
15 {
16     Q_OBJECT
17
18 public:
19     Canvas(const QGLFormat& format, QWidget* parent=0);
20
21     void initializeGL();
22     void paintEvent(QPaintEvent* event);
23     ~Canvas();
24
25 public slots:
26     void set_status(const QString& s);
27     void clear_status();
28     void load_mesh(Mesh* m);
29
30
31 protected:
32     void mousePressEvent(QMouseEvent* event);
33     void mouseReleaseEvent(QMouseEvent* event);
34     void mouseMoveEvent(QMouseEvent* event);
35
36
37 private:
38     void draw_mesh();
39
40     QMatrix4x4 transform_matrix() const;
41     QMatrix4x4 view_matrix() const;
42
43     QGLShaderProgram mesh_shader;
44     QGLShaderProgram quad_shader;
45
46     GLMesh* mesh;
47     Backdrop* backdrop;
48
49     QVector3D center;
50     float scale;
51     float tilt;
52     float yaw;
53
54     QPoint mouse_pos;
55     QString status;
56 };
57
58 #endif // CANVAS_H