Mercurial > hg > orthanc-stone
annotate Samples/Qt/QStoneOpenGlWidget.h @ 885:56e4e9281076 am-dev
sharing code between Qt/SDL BasiceScene sample
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Tue, 09 Jul 2019 16:44:25 +0200 |
parents | 30268a0cafca |
children | 9c2f6d6b9f4a |
rev | line source |
---|---|
849 | 1 #pragma once |
2 #include "../../Framework/OpenGL/OpenGLIncludes.h" | |
3 #include <QOpenGLWidget> | |
4 #include <QOpenGLFunctions> | |
5 | |
6 #include <boost/shared_ptr.hpp> | |
7 #include "../../Framework/OpenGL/IOpenGLContext.h" | |
8 #include "../../Framework/Scene2D/OpenGLCompositor.h" | |
885
56e4e9281076
sharing code between Qt/SDL BasiceScene sample
Alain Mazy <alain@mazy.be>
parents:
883
diff
changeset
|
9 #include "../../Applications/Generic/Scene2DInteractor.h" |
849 | 10 |
879 | 11 namespace OrthancStone |
849 | 12 { |
879 | 13 class QStoneOpenGlWidget : public QOpenGLWidget, public OrthancStone::OpenGL::IOpenGLContext |
14 { | |
15 boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor_; | |
16 boost::shared_ptr<Scene2DInteractor> sceneInteractor_; | |
849 | 17 |
879 | 18 public: |
19 QStoneOpenGlWidget(QWidget *parent) : | |
20 QOpenGLWidget(parent) | |
21 { | |
885
56e4e9281076
sharing code between Qt/SDL BasiceScene sample
Alain Mazy <alain@mazy.be>
parents:
883
diff
changeset
|
22 setFocusPolicy(Qt::StrongFocus); // to enable keyPressEvent |
56e4e9281076
sharing code between Qt/SDL BasiceScene sample
Alain Mazy <alain@mazy.be>
parents:
883
diff
changeset
|
23 setMouseTracking(true); // to enable mouseMoveEvent event when no button is pressed |
879 | 24 } |
25 | |
26 protected: | |
849 | 27 |
879 | 28 //**** QWidget overrides |
29 void initializeGL() override; | |
30 void resizeGL(int w, int h) override; | |
31 void paintGL() override; | |
849 | 32 |
879 | 33 void mousePressEvent(QMouseEvent* event) override; |
881 | 34 void mouseMoveEvent(QMouseEvent* event) override; |
35 void mouseReleaseEvent(QMouseEvent* event) override; | |
883 | 36 void keyPressEvent(QKeyEvent* event) override; |
37 void keyReleaseEvent(QKeyEvent *event) override; | |
38 void wheelEvent(QWheelEvent* event) override; | |
849 | 39 |
879 | 40 //**** IOpenGLContext overrides |
849 | 41 |
879 | 42 virtual void MakeCurrent() override; |
43 virtual void SwapBuffer() override {} | |
849 | 44 |
879 | 45 virtual unsigned int GetCanvasWidth() const override |
46 { | |
47 return this->width(); | |
48 } | |
49 | |
50 virtual unsigned int GetCanvasHeight() const override | |
51 { | |
52 return this->height(); | |
53 } | |
849 | 54 |
879 | 55 public: |
56 void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor) | |
57 { | |
58 sceneInteractor_ = sceneInteractor; | |
59 } | |
849 | 60 |
879 | 61 void SetCompositor(boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor) |
62 { | |
63 compositor_ = compositor; | |
64 } | |
849 | 65 |
881 | 66 protected: |
67 void mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType); | |
883 | 68 bool keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType); |
881 | 69 |
879 | 70 }; |
71 } |