QGraphicsRangeSlider.hpp
1 #pragma once
2 #include <score/graphics/widgets/Constants.hpp>
3 
4 #include <ossia/network/value/value.hpp>
5 #include <ossia/network/value/vec.hpp>
6 
7 #include <QGraphicsItem>
8 #include <QObject>
9 
10 #include <score_lib_base_export.h>
11 
12 #include <verdigris>
13 
15 
16 namespace score
17 {
18 class SCORE_LIB_BASE_EXPORT QGraphicsRangeSlider final
19  : public QObject
20  , public QGraphicsItem
21 {
22  W_OBJECT(QGraphicsRangeSlider)
23  Q_INTERFACES(QGraphicsItem)
24  QRectF m_rect{defaultRangeSliderSize};
25 
26  double m_start{0.}, m_end{1.};
27  double m_min{0}, m_max{1};
28 
29 public:
30  bool moving = false;
31 
32  explicit QGraphicsRangeSlider(QGraphicsItem* parent);
33 
34  void setStart(double start);
35  void setEnd(double end);
36  void setRange(double min, double max);
37 
38  void setValue(ossia::vec2f value);
39  ossia::vec2f value() const noexcept;
40  ossia::vec2f m_execValue{};
41  void setExecutionValue(ossia::vec2f); // TODO
42  void resetExecution(); // TODO
43 
44  void startChanged(double arg_1) E_SIGNAL(SCORE_LIB_BASE_EXPORT, startChanged, arg_1)
45  void endChanged(double arg_1) E_SIGNAL(SCORE_LIB_BASE_EXPORT, endChanged, arg_1)
46 
47  void sliderMoved() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved)
48  void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
49 private:
50  void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
51  void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
52  void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
53  QRectF boundingRect() const override;
54  void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
55  override;
56  void updateRect();
57  qreal y_factor{0.005};
58  qreal d2s{}, d2c{}, d2e{}, ypos{}, ydiff{};
59  double val1{}, val2{};
60 
61  bool m_hasExec{};
62 
63  enum Handle
64  {
65  START,
66  CENTER,
67  END,
68  NONE
69  };
70  Handle handle{};
71  QRectF m_rangeRect{};
72 };
73 }
Definition: QGraphicsRangeSlider.hpp:21
Base toolkit upon which the software is built.
Definition: Application.cpp:90