Mercurial > hg > orthanc-stone
comparison 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 |
comparison
equal
deleted
inserted
replaced
880:9953f16c304d | 881:a8cd3755db21 |
---|---|
28 } | 28 } |
29 doneCurrent(); | 29 doneCurrent(); |
30 } | 30 } |
31 | 31 |
32 void ConvertFromPlatform( | 32 void ConvertFromPlatform( |
33 OrthancStone::GuiAdapterMouseEvent& dest, | 33 OrthancStone::GuiAdapterMouseEvent& guiEvent, |
34 const QMouseEvent& qtEvent) | 34 PointerEvent& pointerEvent, |
35 const QMouseEvent& qtEvent, | |
36 const OrthancStone::OpenGLCompositor& compositor) | |
35 { | 37 { |
36 dest.targetX = qtEvent.x(); | 38 guiEvent.targetX = qtEvent.x(); |
37 dest.targetY = qtEvent.y(); | 39 guiEvent.targetY = qtEvent.y(); |
40 pointerEvent.AddPosition(compositor.GetPixelCenterCoordinates(guiEvent.targetX, guiEvent.targetY)); | |
38 | 41 |
39 switch (qtEvent.button()) | 42 switch (qtEvent.button()) |
40 { | 43 { |
41 case Qt::LeftButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break; | 44 case Qt::LeftButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break; |
42 case Qt::MiddleButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break; | 45 case Qt::MiddleButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break; |
43 case Qt::RightButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break; | 46 case Qt::RightButton: guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break; |
44 default: | 47 default: |
45 dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; | 48 guiEvent.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; |
46 } | 49 } |
47 | 50 |
48 if (qtEvent.modifiers().testFlag(Qt::ShiftModifier)) | 51 if (qtEvent.modifiers().testFlag(Qt::ShiftModifier)) |
49 { | 52 { |
50 dest.shiftKey = true; | 53 guiEvent.shiftKey = true; |
51 } | 54 } |
52 if (qtEvent.modifiers().testFlag(Qt::ControlModifier)) | 55 if (qtEvent.modifiers().testFlag(Qt::ControlModifier)) |
53 { | 56 { |
54 dest.ctrlKey = true; | 57 guiEvent.ctrlKey = true; |
55 } | 58 } |
56 if (qtEvent.modifiers().testFlag(Qt::AltModifier)) | 59 if (qtEvent.modifiers().testFlag(Qt::AltModifier)) |
57 { | 60 { |
58 dest.altKey = true; | 61 guiEvent.altKey = true; |
59 } | 62 } |
60 | 63 |
61 } | 64 } |
62 | 65 |
66 void QStoneOpenGlWidget::mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType) | |
67 { | |
68 OrthancStone::GuiAdapterMouseEvent guiEvent; | |
69 PointerEvent pointerEvent; | |
70 ConvertFromPlatform(guiEvent, pointerEvent, *qtEvent, *compositor_); | |
71 guiEvent.type = guiEventType; | |
63 | 72 |
73 if (sceneInteractor_.get() != NULL && compositor_.get() != NULL) | |
74 { | |
75 sceneInteractor_->OnMouseEvent(guiEvent, pointerEvent); | |
76 } | |
77 | |
78 // force redraw of the OpenGL widget | |
79 update(); | |
80 } | |
64 | 81 |
65 void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent) | 82 void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent) |
66 { | 83 { |
67 OrthancStone::GuiAdapterMouseEvent event; | 84 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN); |
68 ConvertFromPlatform(event, *qtEvent); | |
69 | |
70 if (sceneInteractor_.get() != NULL) | |
71 { | |
72 sceneInteractor_->OnMouseEvent(event); | |
73 } | |
74 | |
75 | |
76 // convert | |
77 //TODO event-> | |
78 | |
79 // sceneInteractor_->OnMouseEvent(event); | |
80 } | 85 } |
81 | 86 |
87 void QStoneOpenGlWidget::mouseMoveEvent(QMouseEvent* qtEvent) | |
88 { | |
89 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEDOWN); | |
90 } | |
91 | |
92 void QStoneOpenGlWidget::mouseReleaseEvent(QMouseEvent* qtEvent) | |
93 { | |
94 mouseEvent(qtEvent, GUIADAPTER_EVENT_MOUSEUP); | |
95 } |