ValueTypes.Qt6.hpp
1 #pragma once
2 #include <JS/Qml/Metatypes.hpp>
3 
4 #include <ossia/dataflow/graph_node.hpp>
5 #include <ossia/dataflow/token_request.hpp>
6 
7 #include <ossia-qt/time.hpp>
8 
9 #include <QMatrix4x4>
10 #include <QObject>
11 #include <QVector2D>
12 #include <QVector3D>
13 #include <QVector4D>
14 #include <QtQml/qqmlregistration.h>
15 
16 #include <verdigris>
17 
18 namespace JS
19 {
20 
22 {
23  QVector2D v;
24  Q_GADGET
25 public:
26  Q_INVOKABLE
27  QString toString() const;
28 
29  qreal x() const;
30  qreal y() const;
31  void setX(qreal);
32  void setY(qreal);
33 
34  Q_INVOKABLE
35  qreal dotProduct(const QVector2D& vec) const;
36 
37  Q_INVOKABLE
38  QVector2D times(const QVector2D& vec) const;
39  Q_INVOKABLE
40  QVector2D times(qreal scalar) const;
41 
42  Q_INVOKABLE
43  QVector2D plus(const QVector2D& vec) const;
44  Q_INVOKABLE
45  QVector2D minus(const QVector2D& vec) const;
46  Q_INVOKABLE
47  QVector2D normalized() const;
48  Q_INVOKABLE
49  qreal length() const;
50 
51  Q_INVOKABLE
52  QVector3D toVector3d() const;
53  Q_INVOKABLE
54  QVector4D toVector4d() const;
55 
56  Q_INVOKABLE
57  bool fuzzyEquals(const QVector2D& vec, qreal epsilon) const;
58  Q_INVOKABLE
59  bool fuzzyEquals(const QVector2D& vec) const;
60 
61  Q_PROPERTY(qreal x READ x WRITE setX FINAL)
62  Q_PROPERTY(qreal y READ y WRITE setY FINAL)
63 };
64 
66 {
67  QVector3D v;
68  Q_GADGET
69 public:
70  Q_INVOKABLE
71  QString toString() const;
72 
73  qreal x() const;
74  qreal y() const;
75  qreal z() const;
76  void setX(qreal);
77  void setY(qreal);
78  void setZ(qreal);
79 
80  Q_INVOKABLE
81  QVector3D crossProduct(const QVector3D& vec) const;
82  Q_INVOKABLE
83  qreal dotProduct(const QVector3D& vec) const;
84 
85  Q_INVOKABLE
86  QVector3D times(const QVector3D& vec) const;
87  Q_INVOKABLE
88  QVector3D times(const QMatrix4x4& m) const;
89  Q_INVOKABLE
90  QVector3D times(qreal scalar) const;
91 
92  Q_INVOKABLE
93  QVector3D plus(const QVector3D& vec) const;
94  Q_INVOKABLE
95  QVector3D minus(const QVector3D& vec) const;
96  Q_INVOKABLE
97  QVector3D normalized() const;
98  Q_INVOKABLE
99  qreal length() const;
100 
101  Q_INVOKABLE
102  QVector2D toVector2d() const;
103  Q_INVOKABLE
104  QVector4D toVector4d() const;
105 
106  Q_INVOKABLE
107  bool fuzzyEquals(const QVector3D& vec, qreal epsilon) const;
108  Q_INVOKABLE
109  bool fuzzyEquals(const QVector3D& vec) const;
110 
111  Q_PROPERTY(qreal x READ x WRITE setX FINAL)
112  Q_PROPERTY(qreal y READ y WRITE setY FINAL)
113  Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
114 };
115 
117 {
118  QVector4D v;
119  Q_GADGET
120 public:
121  Q_INVOKABLE
122  QString toString() const;
123 
124  qreal x() const;
125  qreal y() const;
126  qreal z() const;
127  qreal w() const;
128  void setX(qreal);
129  void setY(qreal);
130  void setZ(qreal);
131  void setW(qreal);
132 
133  Q_INVOKABLE
134  qreal dotProduct(const QVector4D& vec) const;
135 
136  Q_INVOKABLE
137  QVector4D times(const QVector4D& vec) const;
138  Q_INVOKABLE
139  QVector4D times(const QMatrix4x4& m) const;
140  Q_INVOKABLE
141  QVector4D times(qreal scalar) const;
142 
143  Q_INVOKABLE
144  QVector4D plus(const QVector4D& vec) const;
145  Q_INVOKABLE
146  QVector4D minus(const QVector4D& vec) const;
147  Q_INVOKABLE
148  QVector4D normalized() const;
149  Q_INVOKABLE
150  qreal length() const;
151 
152  Q_INVOKABLE
153  QVector2D toVector2d() const;
154  Q_INVOKABLE
155  QVector3D toVector3d() const;
156 
157  Q_INVOKABLE
158  bool fuzzyEquals(const QVector4D& vec, qreal epsilon) const;
159  Q_INVOKABLE
160  bool fuzzyEquals(const QVector4D& vec) const;
161 
162  Q_PROPERTY(qreal x READ x WRITE setX FINAL)
163  Q_PROPERTY(qreal y READ y WRITE setY FINAL)
164  Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
165  Q_PROPERTY(qreal w READ w WRITE setW FINAL)
166 };
167 
169 {
170  Q_GADGET
171 public:
172  ossia::token_request req;
173 
174  double previous_date() const noexcept;
175  double date() const noexcept;
176  double parent_duration() const noexcept;
177  double offset() const noexcept;
178  double speed() const noexcept;
179  double tempo() const noexcept;
180 
181  double musical_start_last_signature() const noexcept;
182  double musical_start_last_bar() const noexcept;
183  double musical_start_position() const noexcept;
184  double musical_end_last_bar() const noexcept;
185  double musical_end_position() const noexcept;
186 
187  double signature_upper() const noexcept;
188  double signature_lower() const noexcept;
189 
190  Q_INVOKABLE
191  double model_read_duration() const noexcept;
192  Q_INVOKABLE
193  double physical_start(double ratio) const noexcept;
194  Q_INVOKABLE
195  double physical_read_duration(double ratio) const noexcept;
196  Q_INVOKABLE
197  double physical_write_duration(double ratio) const noexcept;
198  Q_INVOKABLE
199  bool in_range(double time) const noexcept;
200  Q_INVOKABLE
201  double to_physical_time_in_tick(double time, double ratio) const noexcept;
202  Q_INVOKABLE
203  double from_physical_time_in_tick(double time, double ratio) const noexcept;
204 
205  Q_INVOKABLE
206  double position() const noexcept;
207  Q_INVOKABLE
208  bool forward() const noexcept;
209  Q_INVOKABLE
210  bool backward() const noexcept;
211  Q_INVOKABLE
212  bool paused() const noexcept;
213 
214  Q_INVOKABLE
215  double get_quantification_date(double ratio) const noexcept;
216 
217  Q_INVOKABLE
218  double get_physical_quantification_date(double rate, double ratio) const noexcept;
219 
220  Q_INVOKABLE
221  void set_end_time(double time) noexcept;
222  Q_INVOKABLE
223  void set_start_time(double time) noexcept;
224 
225  Q_INVOKABLE
226  bool unexpected_bar_change() const noexcept;
227 
228  Q_PROPERTY(double previous_date READ previous_date FINAL)
229  Q_PROPERTY(double date READ date FINAL)
230  Q_PROPERTY(double parent_duration READ parent_duration FINAL)
231  Q_PROPERTY(double offset READ offset FINAL)
232  Q_PROPERTY(double speed READ speed FINAL)
233  Q_PROPERTY(double tempo READ tempo FINAL)
234 
235  Q_PROPERTY(double musical_start_last_signature READ musical_start_last_signature FINAL)
236  Q_PROPERTY(double musical_start_last_bar READ musical_start_last_bar FINAL)
237  Q_PROPERTY(double musical_start_position READ musical_start_position FINAL)
238  Q_PROPERTY(double musical_end_last_bar READ musical_end_last_bar FINAL)
239  Q_PROPERTY(double musical_end_position READ musical_end_position FINAL)
240 
241  Q_PROPERTY(double signature_upper READ signature_upper FINAL)
242  Q_PROPERTY(double signature_lower READ signature_lower FINAL)
243 };
244 
246 {
247  Q_GADGET
248  QML_VALUE_TYPE(SampleTimings)
249 public:
250  ossia::exec_state_facade::sample_timings tm{};
251 
252  int start_sample() const noexcept;
253  int length() const noexcept;
254 
255  Q_PROPERTY(int start_sample READ start_sample FINAL)
256  Q_PROPERTY(int length READ length FINAL)
257 };
258 
260 {
261  Q_GADGET
262  QML_VALUE_TYPE(ExecutionStateValueType)
263 
264 public:
265  ossia::exec_state_facade req;
266  int sample_rate() const noexcept;
267  int buffer_size() const noexcept;
268  double model_to_physical() const noexcept;
269  double physical_to_model() const noexcept;
270  double physical_date() const noexcept;
271  double start_date_ns() const noexcept;
272  double current_date_ns() const noexcept;
273 
274  Q_INVOKABLE
275  SampleTimings timings(TokenRequestValueType tk) const noexcept;
276 
277  Q_PROPERTY(int sample_rate READ sample_rate FINAL)
278  Q_PROPERTY(int buffer_size READ buffer_size FINAL)
279  Q_PROPERTY(double model_to_physical READ model_to_physical FINAL)
280  Q_PROPERTY(double physical_to_model READ physical_to_model FINAL)
281  Q_PROPERTY(double physical_date READ physical_date FINAL)
282  Q_PROPERTY(double start_date_ns READ start_date_ns FINAL)
283  Q_PROPERTY(double current_date_ns READ current_date_ns FINAL)
284 };
285 }
286 
287 Q_DECLARE_METATYPE(JS::TokenRequestValueType)
288 Q_DECLARE_METATYPE(JS::SampleTimings)
Definition: ValueTypes.Qt6.hpp:260
Definition: ValueTypes.Qt6.hpp:246
Definition: ValueTypes.Qt6.hpp:169
Definition: ValueTypes.Qt6.hpp:22
Definition: ValueTypes.Qt6.hpp:66
Definition: ValueTypes.Qt6.hpp:117