QGraphicsXYZSpinbox.hpp
1 #pragma once
2 #include <score/graphics/widgets/Constants.hpp>
3 #include <score/graphics/widgets/QGraphicsSpinbox.hpp>
4 
5 #include <ossia-qt/value_metatypes.hpp>
6 
7 #include <QGraphicsItem>
8 #include <QObject>
9 
10 #include <score_lib_base_export.h>
11 
12 #include <verdigris>
13 
14 namespace score
15 {
16 class SCORE_LIB_BASE_EXPORT QGraphicsXYZSpinboxChooser final
17  : public QObject
18  , public QGraphicsItem
19 {
21  Q_INTERFACES(QGraphicsItem)
22  QRectF m_rect{0., 0., 150., 24.};
23  QGraphicsSpinbox m_x, m_y, m_z;
24 
25 private:
26  bool m_grab{};
27 
28 public:
29  explicit QGraphicsXYZSpinboxChooser(QGraphicsItem* parent);
31 
32  void setPoint(const QPointF& r);
33  void setValue(ossia::vec3f v);
34  void setRange(ossia::vec3f min = {0.f, 0.f, 0.f}, ossia::vec3f max = {1.f, 1.f, 1.f});
35  ossia::vec3f value() const noexcept;
36  ossia::vec3f getMin() const noexcept;
37  ossia::vec3f getMax() const noexcept;
38 
39  bool moving = false;
40 
41 public:
42  void sliderMoved() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved)
43  void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
44 
45 private:
46  ossia::vec3f scaledValue(float x, float y, float z) const noexcept;
47  QRectF boundingRect() const override;
48  void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
49  override;
50 };
51 }
Definition: QGraphicsSpinbox.hpp:16
Definition: QGraphicsXYZSpinbox.hpp:19
Base toolkit upon which the software is built.
Definition: Application.cpp:90