comparison Deprecated/Samples/Qt/QStoneOpenGlWidget.h @ 1402:65e1e4b08302

moved deprecated samples into Deprecated
author Alain Mazy <alain@mazy.be>
date Wed, 29 Apr 2020 20:50:53 +0200
parents Samples/Deprecated/Qt/QStoneOpenGlWidget.h@eac254fb6791
children 828a9b4ee1b7
comparison
equal deleted inserted replaced
1401:f6a2d46d2b76 1402:65e1e4b08302
1 #pragma once
2 #include "../../Framework/OpenGL/OpenGLIncludes.h"
3 #include <QOpenGLWidget>
4 #include <QOpenGLFunctions>
5 #include <QOpenGLContext>
6
7 #include <boost/shared_ptr.hpp>
8 #include "../../Framework/OpenGL/IOpenGLContext.h"
9 #include "../../Framework/Scene2D/OpenGLCompositor.h"
10 #include "../../Framework/Viewport/ViewportBase.h"
11 #include "../../Applications/Generic/Scene2DInteractor.h"
12
13 namespace OrthancStone
14 {
15 class QStoneOpenGlWidget :
16 public QOpenGLWidget,
17 public OpenGL::IOpenGLContext,
18 public ViewportBase
19 {
20 std::unique_ptr<OrthancStone::OpenGLCompositor> compositor_;
21 boost::shared_ptr<Scene2DInteractor> sceneInteractor_;
22 QOpenGLContext openGlContext_;
23
24 public:
25 QStoneOpenGlWidget(QWidget *parent) :
26 QOpenGLWidget(parent),
27 ViewportBase("QtStoneOpenGlWidget") // TODO: we shall be able to define a name but construction time is too early !
28 {
29 setFocusPolicy(Qt::StrongFocus); // to enable keyPressEvent
30 setMouseTracking(true); // to enable mouseMoveEvent event when no button is pressed
31 }
32
33 void Init()
34 {
35 QSurfaceFormat requestedFormat;
36 requestedFormat.setVersion( 2, 0 );
37 openGlContext_.setFormat( requestedFormat );
38 openGlContext_.create();
39 openGlContext_.makeCurrent(context()->surface());
40
41 compositor_.reset(new OpenGLCompositor(*this, GetScene()));
42 }
43
44 protected:
45
46 //**** QWidget overrides
47 void initializeGL() override;
48 void resizeGL(int w, int h) override;
49 void paintGL() override;
50
51 void mousePressEvent(QMouseEvent* event) override;
52 void mouseMoveEvent(QMouseEvent* event) override;
53 void mouseReleaseEvent(QMouseEvent* event) override;
54 void keyPressEvent(QKeyEvent* event) override;
55 void keyReleaseEvent(QKeyEvent *event) override;
56 void wheelEvent(QWheelEvent* event) override;
57
58 //**** IOpenGLContext overrides
59
60 virtual void MakeCurrent() override;
61 virtual void SwapBuffer() override {}
62
63 virtual unsigned int GetCanvasWidth() const override
64 {
65 return this->width();
66 }
67
68 virtual unsigned int GetCanvasHeight() const override
69 {
70 return this->height();
71 }
72
73 public:
74
75 void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor)
76 {
77 sceneInteractor_ = sceneInteractor;
78 }
79
80 virtual ICompositor& GetCompositor()
81 {
82 return *compositor_;
83 }
84
85 protected:
86 void mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
87 bool keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType);
88
89 };
90 }