This commit is contained in:
2020-06-18 18:25:03 -06:00
commit e01c09fbcc
17 changed files with 2689 additions and 0 deletions

55
src/magnum_item.h Normal file
View File

@@ -0,0 +1,55 @@
#ifndef MAGNUM_ITEM_H
#define MAGNUM_ITEM_H
#include <Magnum/GL/Framebuffer.h>
#include <Magnum/Platform/GLContext.h>
#include "glclampf.h"
#include <QOpenGLFunctions>
#include <QtQuick/QQuickFramebufferObject>
// Forward declaring the renderer to avoid CMake's AUTOMOC
// to process Magnum's headers (where it fails)
class MagnumRenderer;
class MagnumItem : public QQuickFramebufferObject {
Q_OBJECT
Q_PROPERTY(qreal t READ t WRITE setT NOTIFY tChanged)
Q_PROPERTY(qreal hue READ hue WRITE setHue NOTIFY hueChanged)
Q_PROPERTY(qreal count READ count WRITE setCount NOTIFY countChanged)
public:
MagnumItem();
Renderer *createRenderer() const override;
inline qreal t() const { return m_t; }
void setT(qreal t);
inline qreal hue() const { return m_hue; }
void setHue(qreal hue);
inline qint8 count() const { return m_count; }
void setCount(qint8 count);
signals:
void tChanged();
void hueChanged();
void countChanged();
protected:
void keyPressEvent(QKeyEvent *evt) override;
void mousePressEvent(QMouseEvent *evt) override;
void mouseReleaseEvent(QMouseEvent *evt) override;
void mouseMoveEvent(QMouseEvent *evt) override;
void wheelEvent(QWheelEvent *evt) override;
private:
void releaseResources() override;
qreal m_t;
qreal m_hue;
qint8 m_count;
MagnumRenderer *m_renderer;
};
#endif // MAGNUM_ITEM_H