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"
|
879
|
9 #include "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 {
|
883
|
22 setFocusPolicy(Qt::StrongFocus);
|
879
|
23 }
|
|
24
|
|
25 protected:
|
849
|
26
|
879
|
27 //**** QWidget overrides
|
|
28 void initializeGL() override;
|
|
29 void resizeGL(int w, int h) override;
|
|
30 void paintGL() override;
|
849
|
31
|
879
|
32 void mousePressEvent(QMouseEvent* event) override;
|
881
|
33 void mouseMoveEvent(QMouseEvent* event) override;
|
|
34 void mouseReleaseEvent(QMouseEvent* event) override;
|
883
|
35 void keyPressEvent(QKeyEvent* event) override;
|
|
36 void keyReleaseEvent(QKeyEvent *event) override;
|
|
37 void wheelEvent(QWheelEvent* event) override;
|
849
|
38
|
879
|
39 //**** IOpenGLContext overrides
|
849
|
40
|
879
|
41 virtual void MakeCurrent() override;
|
|
42 virtual void SwapBuffer() override {}
|
849
|
43
|
879
|
44 virtual unsigned int GetCanvasWidth() const override
|
|
45 {
|
|
46 return this->width();
|
|
47 }
|
|
48
|
|
49 virtual unsigned int GetCanvasHeight() const override
|
|
50 {
|
|
51 return this->height();
|
|
52 }
|
849
|
53
|
879
|
54 public:
|
|
55 void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor)
|
|
56 {
|
|
57 sceneInteractor_ = sceneInteractor;
|
|
58 }
|
849
|
59
|
879
|
60 void SetCompositor(boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor)
|
|
61 {
|
|
62 compositor_ = compositor;
|
|
63 }
|
849
|
64
|
881
|
65 protected:
|
|
66 void mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
|
883
|
67 bool keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
|
881
|
68
|
879
|
69 };
|
|
70 }
|