qtk/src/mainwidget.h

76 lines
2.0 KiB
C
Raw Normal View History

2021-09-03 16:56:57 +00:00
/*##############################################################################
## Author: Shaun Reed ##
2022-03-06 16:54:05 +00:00
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## About: Main window for Qt6 OpenGL widget application ##
2021-09-03 16:56:57 +00:00
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
##############################################################################*/
#ifndef QTK_MAINWIDGET_H
#define QTK_MAINWIDGET_H
#include <iostream>
#include <QMatrix4x4>
#include <QOpenGLDebugLogger>
#include <QOpenGLFunctions>
#include <QOpenGLWidget>
#include <qtkapi.h>
#include <abstractscene.h>
2021-09-03 16:56:57 +00:00
namespace Qtk {
class QTKAPI MainWidget : public QOpenGLWidget,
protected QOpenGLFunctions {
Q_OBJECT;
2021-09-03 16:56:57 +00:00
public:
// Constructors
MainWidget();
explicit MainWidget(QWidget *parent);
explicit MainWidget(const QSurfaceFormat &format);
~MainWidget() override;
2021-09-03 16:56:57 +00:00
private:
void teardownGL();
2021-09-03 16:56:57 +00:00
public:
// Inherited virtual Members
void paintGL() override;
void initializeGL() override;
void resizeGL(int width, int height) override;
2021-09-03 16:56:57 +00:00
inline Scene * getScene() {return mScene;}
inline void setScene(Scene * scene) {
if (mScene != Q_NULLPTR) delete mScene;
mScene = scene;
}
2021-09-03 16:56:57 +00:00
protected slots:
void update();
#ifdef QTK_DEBUG
void messageLogged(const QOpenGLDebugMessage &msg);
#endif
2021-09-03 16:56:57 +00:00
// Protected Helpers
protected:
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
2021-09-03 16:56:57 +00:00
private:
// Private helpers
void initializeWidget();
void updateCameraInput();
2021-09-03 16:56:57 +00:00
Scene * mScene;
#ifdef QTK_DEBUG
void printContextInformation();
QOpenGLDebugLogger * mDebugLogger;
#endif
};
}
2021-09-03 16:56:57 +00:00
#endif // QTK_MAINWIDGET_H