Mercurial > hg > orthanc-stone
view Samples/Qt/QStoneOpenGlWidget.h @ 897:9c2f6d6b9f4a am-dev
Merge
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Tue, 16 Jul 2019 12:37:29 +0200 |
parents | 56e4e9281076 |
children | a911f5bb48da |
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 "../../Framework/Viewport/IViewport.h" #include "../../Applications/Generic/Scene2DInteractor.h" namespace OrthancStone { class QStoneOpenGlWidget : public QOpenGLWidget, public OrthancStone::OpenGL::IOpenGLContext { boost::shared_ptr<IViewport> viewport_; boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor_; boost::shared_ptr<Scene2DInteractor> sceneInteractor_; public: QStoneOpenGlWidget(QWidget *parent) : QOpenGLWidget(parent) { setFocusPolicy(Qt::StrongFocus); // to enable keyPressEvent setMouseTracking(true); // to enable mouseMoveEvent event when no button is pressed } protected: //**** QWidget overrides void initializeGL() override; void resizeGL(int w, int h) override; void paintGL() override; void mousePressEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override; void mouseReleaseEvent(QMouseEvent* event) override; void keyPressEvent(QKeyEvent* event) override; void keyReleaseEvent(QKeyEvent *event) override; void wheelEvent(QWheelEvent* 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; } protected: void mouseEvent(QMouseEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType); bool keyEvent(QKeyEvent* qtEvent, OrthancStone::GuiAdapterHidEventType guiEventType); }; }