view Samples/Qt/QStoneOpenGlWidget.h @ 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 source

#pragma once
#include "../../Framework/OpenGL/OpenGLIncludes.h"
#include <QOpenGLWidget>
#include <QOpenGLFunctions>

#include <boost/shared_ptr.hpp>
#include "../../Framework/OpenGL/IOpenGLContext.h"
#include "../../Framework/Scene2D/OpenGLCompositor.h"
#include "Scene2DInteractor.h"

namespace OrthancStone
{
  class QStoneOpenGlWidget : public QOpenGLWidget, public OrthancStone::OpenGL::IOpenGLContext
  {
    boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor_;
    boost::shared_ptr<Scene2DInteractor> sceneInteractor_;

  public:
    QStoneOpenGlWidget(QWidget *parent) :
      QOpenGLWidget(parent)
    {
    }

  protected:

    //**** QWidget overrides
    void initializeGL() override;
    void resizeGL(int w, int h) override;
    void paintGL() override;

    void mousePressEvent(QMouseEvent* event) override;

    //**** IOpenGLContext overrides

    virtual void MakeCurrent() override;
    virtual void SwapBuffer() override {}

    virtual unsigned int GetCanvasWidth() const override
    {
      return this->width();
    }

    virtual unsigned int GetCanvasHeight() const override
    {
      return this->height();
    }

  public:
    void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor)
    {
      sceneInteractor_ = sceneInteractor;
    }

    void SetCompositor(boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor)
    {
      compositor_ = compositor;
    }

  };
}