Files
magnum-boostrap-qtquick/src/magnum_item.h
2020-06-18 18:25:03 -06:00

56 lines
1.3 KiB
C++

#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