source: projectionDesigner/tag/ProjectionDesigner_1.1.5/projdesigner/include/gui/QGLViewerWidget.h @ 2

Last change on this file since 2 was 2, checked in by Torben Dannhauer, 14 years ago
File size: 3.5 KB
Line 
1#ifndef _QGLVIEWERWIDGET_H_
2#define _QGLVIEWERWIDGET_H_
3
4#include <QtXml>
5#include <QGLWidget>
6#include <QTimer>
7#include <QTime>
8
9#pragma warning(disable: 4003)
10#include "gmtl/gmtl.h"
11
12class QGLViewerWidget : public QGLWidget
13{
14    Q_OBJECT
15
16public:
17
18    QGLViewerWidget(QWidget* pParent=0, const QGLWidget* pShareWidget=0, Qt::WindowFlags f=0);
19
20    void setClearColor(const QColor& color) { m_clearColor = color; }
21    QColor clearColor() const { return m_clearColor; }
22
23    void setView(const gmtl::Vec3f& center, const gmtl::Quatf& rot, float distance);
24
25    void setPerspective(bool bPerspective) { m_bPerspective = bPerspective; }
26    bool isPerspective() const { return m_bPerspective; }
27
28    void setFovy(float fovy) { m_fovy = fovy; }
29    float fovy() const { return m_fovy; }
30
31    void setZNear(float znear) { m_znear = znear; }
32    float znear() const { return m_znear; }
33
34    void setZFar(float zfar) { m_zfar = zfar; }
35    float zfar() const { return m_zfar; }
36
37    void setGridVisible(bool bVisible) { if (bVisible != m_bGridVisible) {  m_bGridVisible = bVisible; emit gridVisibilityChanged(bVisible); } }
38    bool isGridVisible() const { return m_bGridVisible; }
39
40    void setAxisVisible(bool bVisible) { if (bVisible != m_bAxisVisible) {  m_bAxisVisible = bVisible; emit axisVisibilityChanged(bVisible); } }
41    bool isAxisVisible() const { return m_bAxisVisible; }
42
43    void setSceneSize(float sceneSize) { m_sceneSize = sceneSize; }
44    float sceneSize() const { return m_sceneSize; }
45
46    void setGridSize(float gridSize) { m_gridSize = gridSize; }
47    float gridSize() const { return m_gridSize; }
48
49    void setGridSubdivision(int subdiv) { m_gridSubdiv = subdiv; }
50    float gridSubdivision() const { return m_gridSubdiv; }
51
52    void centerView();
53    void viewAll();
54    void stop();
55
56    void setInertia(bool bInertia) { m_bInertia = bInertia; if (!m_bInertia) stop(); }
57    bool isInertia() const { return m_bInertia; }
58
59    bool isAnimating() const { return m_bAnimating; }
60
61    void initFromDOMElement(const QDomElement& element);
62    QDomElement domElement(const QString& name, QDomDocument& doc) const;
63
64protected:
65
66    virtual void init();
67    virtual void draw();
68    virtual void idle();
69
70    virtual void initializeGL();
71    virtual void paintGL();
72    virtual void mousePressEvent(QMouseEvent* pEvent);
73    virtual void mouseMoveEvent(QMouseEvent* pEvent);
74    virtual void mouseReleaseEvent(QMouseEvent* pEvent);
75    virtual void wheelEvent(QWheelEvent* pEvent);
76    virtual void keyReleaseEvent(QKeyEvent* pEvent);
77
78    void drawGrid();
79    void drawAxis();
80
81protected slots:
82
83    void timeout();
84
85signals:
86
87    void cameraChanged(const gmtl::Vec3f& center, const gmtl::Quatf& rot, float distance);
88    void axisVisibilityChanged(bool bVisible);
89    void gridVisibilityChanged(bool bVisible);
90
91protected:
92
93    QColor m_clearColor;
94
95    gmtl::Matrix44f m_matrix;
96    gmtl::Vec3f m_center;
97    gmtl::Quatf m_rot;
98    float m_distance;
99    float m_orthoScale;
100
101    gmtl::Vec3f m_pivotCenter;
102    gmtl::Quatf m_pivotRot;
103    float m_pivotDistance;
104    float m_pivotOrthoScale;
105
106    bool m_bPerspective;
107    float m_fovy;
108    float m_znear;
109    float m_zfar;
110
111    QPoint m_lastMousePos;
112    QTime m_lastTime;
113
114    bool m_bInertia;
115    float m_animX;
116    float m_animY;
117    bool m_bAnimating;
118
119    bool m_bGridVisible;
120    bool m_bAxisVisible;
121
122    float m_sceneSize;
123    float m_gridSize;
124    int m_gridSubdiv;
125
126    QTimer m_timer;
127};
128
129#endif // _QGLVIEWERWIDGET_H_
Note: See TracBrowser for help on using the repository browser.