annotate Samples/Qt/QStoneOpenGlWidget.cpp @ 881:a8cd3755db21 am-dev

wip
author Alain Mazy <alain@mazy.be>
date Tue, 09 Jul 2019 11:41:16 +0200
parents 12b591d5d63c
children 30268a0cafca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
849
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
1 #include "../../Framework/OpenGL/OpenGLIncludes.h"
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
2 #include "QStoneOpenGlWidget.h"
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
3
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
4 #include <QMouseEvent>
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
5
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
6 using namespace OrthancStone;
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
7
849
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
8 void QStoneOpenGlWidget::initializeGL()
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
9 {
863
23701fbf228e first rendering of a 2DScene in Qt widget
Alain Mazy <alain@mazy.be>
parents: 849
diff changeset
10 glewInit();
23701fbf228e first rendering of a 2DScene in Qt widget
Alain Mazy <alain@mazy.be>
parents: 849
diff changeset
11 }
23701fbf228e first rendering of a 2DScene in Qt widget
Alain Mazy <alain@mazy.be>
parents: 849
diff changeset
12
23701fbf228e first rendering of a 2DScene in Qt widget
Alain Mazy <alain@mazy.be>
parents: 849
diff changeset
13 void QStoneOpenGlWidget::MakeCurrent()
23701fbf228e first rendering of a 2DScene in Qt widget
Alain Mazy <alain@mazy.be>
parents: 849
diff changeset
14 {
23701fbf228e first rendering of a 2DScene in Qt widget
Alain Mazy <alain@mazy.be>
parents: 849
diff changeset
15 this->makeCurrent();
849
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
16 }
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
17
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
18 void QStoneOpenGlWidget::resizeGL(int w, int h)
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
19 {
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
20
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
21 }
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
22
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
23 void QStoneOpenGlWidget::paintGL()
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
24 {
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
25 if (compositor_)
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
26 {
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
27 compositor_->Refresh();
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
28 }
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
29 doneCurrent();
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
30 }
8a8cf2991538 Qt sample (work in progress)
Alain Mazy <alain@mazy.be>
parents:
diff changeset
31
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
32 void ConvertFromPlatform(
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
33 OrthancStone::GuiAdapterMouseEvent& guiEvent,
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
34 PointerEvent& pointerEvent,
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
35 const QMouseEvent& qtEvent,
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
36 const OrthancStone::OpenGLCompositor& compositor)
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
37 {
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
38 guiEvent.targetX = qtEvent.x();
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
39 guiEvent.targetY = qtEvent.y();
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
40 pointerEvent.AddPosition(compositor.GetPixelCenterCoordinates(guiEvent.targetX, guiEvent.targetY));
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
41
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
42 switch (qtEvent.button())
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
43 {
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
44 case Qt::LeftButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break;
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
45 case Qt::MiddleButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break;
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
46 case Qt::RightButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break;
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
47 default:
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
48 guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT;
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
49 }
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
50
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
51 if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
52 {
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
53 guiEvent.shiftKey = true;
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
54 }
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
55 if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
56 {
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
57 guiEvent.ctrlKey = true;
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
58 }
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
59 if (qtEvent.modifiers().testFlag(Qt::AltModifier))
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
60 {
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
61 guiEvent.altKey = true;
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
62 }
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
63
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
64 }
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
65
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
66 void QStoneOpenGlWidget::mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType)
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
67 {
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
68 OrthancStone::GuiAdapterMouseEvent guiEvent;
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
69 PointerEvent pointerEvent;
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
70 ConvertFromPlatform(guiEvent, pointerEvent, *qtEvent, *compositor_);
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
71 guiEvent.type = guiEventType;
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
72
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
73 if (sceneInteractor_.get() != NULL && compositor_.get() != NULL)
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
74 {
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
75 sceneInteractor_->OnMouseEvent(guiEvent, pointerEvent);
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
76 }
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
77
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
78 // force redraw of the OpenGL widget
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
79 update();
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
80 }
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
81
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
82 void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent)
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
83 {
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
84 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN);
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
85 }
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 863
diff changeset
86
881
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
87 void QStoneOpenGlWidget::mouseMoveEvent(QMouseEvent* qtEvent)
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
88 {
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
89 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN);
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
90 }
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
91
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
92 void QStoneOpenGlWidget::mouseReleaseEvent(QMouseEvent* qtEvent)
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
93 {
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
94 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEUP);
Alain Mazy <alain@mazy.be>
parents: 879
diff changeset
95 }