Files
magnum-boostrap-qtquick/src/magnum_item.h
2020-06-23 16:29:36 -06:00

60 lines
1.4 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(qint8 count READ count WRITE setCount NOTIFY countChanged)
Q_PROPERTY(qreal lagging READ lagging WRITE setLagging NOTIFY laggingChanged)
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);
inline qreal lagging() const { return m_lagging; }
void setLagging(qreal lagging);
signals:
void tChanged();
void hueChanged();
void countChanged();
void laggingChanged();
protected:
void mousePressEvent(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;
qreal m_lagging;
MagnumRenderer *m_renderer;
};
#endif // MAGNUM_ITEM_H