Loading...
Searching...
No Matches
QGraphicsMultiSliderXY.hpp
1#pragma once
2#include <score/graphics/widgets/Constants.hpp>
3
4#include <ossia-qt/value_metatypes.hpp>
5
6#include <QGraphicsItem>
7#include <QObject>
8
9#include <score_lib_base_export.h>
10
11#include <verdigris>
12
13#include <halp/value_types.hpp>
14#include <halp/custom_widgets.hpp>
15
16namespace ossia
17{
18
19struct domain;
20}
21namespace score
22{
23template <typename T>
25struct RightClickImpl;
26class SCORE_LIB_BASE_EXPORT QGraphicsMultiSliderXY final
27 : public QObject
28 , public QGraphicsItem
29{
31 SCORE_GRAPHICS_ITEM_TYPE(110)
32public:
33 template <typename T>
34 friend struct GridWidget;
35
36 std::vector<ossia::vec2f> tab;
37
38 static constexpr double width() { return 400.; }
39 static constexpr double height() { return 400.; }
40
41 halp::xy_type<float> cursorSize{0.04, 0.04};
42
44 QRectF cursorRect(const ossia::vec2f& cursor) const noexcept;
46 QRectF cursorPickRect(const ossia::vec2f& cursor) const noexcept;
50 int cursorAt(QPointF p, bool margin = true) const noexcept;
51
52 int selectedCursor;
53 bool isSelected;
54
55 double min{0.}, max{1.};
56
57 bool m_grab{};
58 std::vector<ossia::value> m_value{};
59 std::vector<ossia::value> m_execValue{};
60 bool m_hasExec{};
61 bool moving = false;
62 RightClickImpl* impl{};
63
64 QGraphicsMultiSliderXY(QGraphicsItem* parent);
65
66 void setPoint(const QPointF& r);
67 void setValue(ossia::value v);
68 ossia::value value() const;
69 //void setExecutionValue(double v);
70 //void resetExecution();
71
72 void setRange(const ossia::value& min, const ossia::value& max);
73 void setRange(const ossia::domain& dom);
74
75public:
76 void sliderMoved() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved)
77 void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
78
79private:
80 void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
81 void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
82 void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
83 bool sceneEvent(QEvent* event) override;
84 QRectF boundingRect() const override;
85 void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
86 override;
87};
88}
Definition QGraphicsMultiSliderXY.hpp:29
Base toolkit upon which the software is built.
Definition Application.cpp:83
Definition QGraphicsMultiSliderXY.hpp:24
Definition DefaultGraphicsSliderImpl.hpp:27