diff Samples/Qt/QStoneOpenGlWidget.cpp @ 879:12b591d5d63c am-dev

some Qt integration (wip)
author Alain Mazy <alain@mazy.be>
date Fri, 05 Jul 2019 14:52:43 +0200
parents 23701fbf228e
children a8cd3755db21
line wrap: on
line diff
--- a/Samples/Qt/QStoneOpenGlWidget.cpp	Wed Jul 03 10:26:51 2019 +0200
+++ b/Samples/Qt/QStoneOpenGlWidget.cpp	Fri Jul 05 14:52:43 2019 +0200
@@ -1,6 +1,10 @@
 #include "../../Framework/OpenGL/OpenGLIncludes.h"
 #include "QStoneOpenGlWidget.h"
 
+#include <QMouseEvent>
+
+using namespace OrthancStone;
+
 void QStoneOpenGlWidget::initializeGL()
 {
   glewInit();
@@ -25,3 +29,53 @@
   doneCurrent();
 }
 
+void ConvertFromPlatform(
+  OrthancStone::GuiAdapterMouseEvent& dest,
+  const QMouseEvent& qtEvent)
+{
+  dest.targetX = qtEvent.x();
+  dest.targetY = qtEvent.y();
+
+  switch (qtEvent.button())
+  {
+    case Qt::LeftButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT; break;
+    case Qt::MiddleButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_MIDDLE; break;
+    case Qt::RightButton: dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_RIGHT; break;
+  default:
+    dest.button = OrthancStone::GUIADAPTER_MOUSEBUTTON_LEFT;
+  }
+
+  if (qtEvent.modifiers().testFlag(Qt::ShiftModifier))
+  {
+    dest.shiftKey = true;
+  }
+  if (qtEvent.modifiers().testFlag(Qt::ControlModifier))
+  {
+    dest.ctrlKey = true;
+  }
+  if (qtEvent.modifiers().testFlag(Qt::AltModifier))
+  {
+    dest.altKey = true;
+  }
+
+}
+
+
+
+void QStoneOpenGlWidget::mousePressEvent(QMouseEvent* qtEvent)
+{
+  OrthancStone::GuiAdapterMouseEvent event;
+  ConvertFromPlatform(event, *qtEvent);
+
+  if (sceneInteractor_.get() != NULL)
+  {
+    sceneInteractor_->OnMouseEvent(event);
+  }
+
+
+  // convert
+//TODO  event->
+
+//  sceneInteractor_->OnMouseEvent(event);
+}
+