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