view Samples/Qt/QStoneOpenGlWidget.cpp @ 880:9953f16c304d am-dev

Merge
author Alain Mazy <alain@mazy.be>
date Fri, 05 Jul 2019 15:33:02 +0200
parents 12b591d5d63c
children a8cd3755db21
line wrap: on
line source

#include "../../Framework/OpenGL/OpenGLIncludes.h"
#include "QStoneOpenGlWidget.h"

#include <QMouseEvent>

using namespace OrthancStone;

void QStoneOpenGlWidget::initializeGL()
{
  glewInit();
}

void QStoneOpenGlWidget::MakeCurrent()
{
  this->makeCurrent();
}

void QStoneOpenGlWidget::resizeGL(int w, int h)
{

}

void QStoneOpenGlWidget::paintGL()
{
  if (compositor_)
  {
    compositor_->Refresh();
  }
  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);
}