00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VRS_QT4_QTCANVAS_H
00021 #define VRS_QT4_QTCANVAS_H
00022
00023 #include <vrs/qt4/config.h>
00024 #include <vrs/opengl/glcanvas.h>
00025
00026 #include <QtCore/QPointer>
00027 #include <QtGui/QContextMenuEvent>
00028 #include <QtGui/QHideEvent>
00029 #include <QtGui/QMenu>
00030 #include <QtGui/QMouseEvent>
00031 #include <QtGui/QShowEvent>
00032 #include <QtGui/QWheelEvent>
00033 #include <QtGui/QFocusEvent>
00034 #include <QtGui/QKeyEvent>
00035 #include <QtGui/QResizeEvent>
00036 #include <QtCore/QEvent>
00037 #include <QtGui/QPaintEvent>
00038 #include <QtOpenGL/QGLWidget>
00039
00040 namespace VRS {
00041
00042 class VRS_QT4_API Qt4Canvas : public QGLWidget {
00043 public:
00044
00048 Qt4Canvas(
00049 QWidget* parent = NULL, const std::string& name = "",
00050 int properties = GLCanvas::RGBADDS,
00051 TechniqueProcessor* techniqueProcessor = NULL,
00052 Qt4Canvas* sharedCanvas = NULL,
00053 Qt::WFlags qtWFlags = 0
00054 );
00055
00056 virtual ~Qt4Canvas();
00057
00058
00059
00060
00061
00062
00063
00064
00065 GLCanvas* canvas() const { return canvas_; }
00066
00067
00068 static InputEvent::Modifier convertModifier(int qtState);
00069 static InputEvent::Button convertButton(int qtButton);
00070 static unsigned long convertKey(const QKeyEvent* qtKeyEvent);
00071
00072
00073
00074
00075
00076 void setContextMenu(QMenu*qmenu);
00077
00078
00079 protected:
00080
00081 virtual void paintGL();
00082 virtual void resizeGL(int w, int h);
00083 virtual void initializeGL();
00084
00085
00086 virtual void showEvent(QShowEvent*);
00087 virtual void hideEvent(QHideEvent*);
00088 virtual void mousePressEvent(QMouseEvent*);
00089 virtual void mouseReleaseEvent(QMouseEvent*);
00090 virtual void wheelEvent(QWheelEvent*);
00091 virtual void mouseDoubleClickEvent(QMouseEvent*);
00092 virtual void mouseMoveEvent(QMouseEvent*);
00093 virtual void keyPressEvent(QKeyEvent*);
00094 virtual void keyReleaseEvent(QKeyEvent*);
00095 virtual void focusInEvent(QFocusEvent*);
00096 virtual void focusOutEvent(QFocusEvent*);
00097 virtual void enterEvent(QEvent*);
00098 virtual void leaveEvent(QEvent*);
00099 virtual void paintEvent(QPaintEvent*);
00100 virtual void resizeEvent(QResizeEvent*);
00101 virtual void contextMenuEvent(QContextMenuEvent* e);
00102
00103 virtual void glDraw();
00104
00105 public:
00106 static SO<Clock> CreateClock();
00107
00108 private:
00109 SO<GLCanvas> canvas_;
00110 QPointer<QMenu> contextMenu_;
00111 int lastX_;
00112 int lastY_;
00113 };
00114
00115 }
00116
00117 #endif // VRS_QT4_QTCANVAS_H