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