Loading...
Searching...
No Matches
QGraphicsNoteMatrix.hpp
1#pragma once
2#include <score/graphics/widgets/Constants.hpp>
3
4#include <ossia/network/value/value.hpp>
5
6#include <QGraphicsItem>
7#include <QObject>
8
9#include <score_lib_base_export.h>
10
11#include <array>
12
13#include <verdigris>
14
15namespace score
16{
28class SCORE_LIB_BASE_EXPORT QGraphicsNoteMatrix final
29 : public QObject
30 , public QGraphicsItem
31{
32 W_OBJECT(QGraphicsNoteMatrix)
33 SCORE_GRAPHICS_ITEM_TYPE(310)
34
35public:
36 static constexpr int off = -1;
37 static constexpr int columns = 12;
38 static constexpr int rows = 13;
39
40 explicit QGraphicsNoteMatrix(QGraphicsItem* parent);
42
43 void setValue(const ossia::value& v);
44 ossia::value value() const;
45
46 QString toText() const;
47 bool setText(const QString& text);
48
49 bool moving = false;
50
51 QRectF boundingRect() const override;
52
53public:
54 void sliderMoved() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved)
55 void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
56
57private:
58 QRectF cellRect(int col, int row) const noexcept;
60 std::pair<int, int> cellAt(QPointF p) const noexcept;
61 void set(std::array<int, columns> map);
62
63 void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
64 void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
65 void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
66 bool sceneEvent(QEvent* event) override;
67 void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
68 void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
69 override;
70
71 std::array<int, columns> m_map{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
73 int m_grabbed{-1};
75 bool m_dragged{};
76 bool m_pressedLit{};
77};
78}
Definition QGraphicsNoteMatrix.hpp:31
Base toolkit upon which the software is built.
Definition Application.cpp:83