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 }