Loading...
Searching...
No Matches
WidgetInlets.hpp
1#pragma once
2#include <Process/Dataflow/Port.hpp>
3
5
6#include <ossia/network/domain/domain.hpp>
7
8class QFileSystemWatcher;
9
10namespace Process
11{
12struct FloatSlider;
13struct FloatKnob;
14struct LogFloatSlider;
15struct IntSlider;
16struct IntRangeSlider;
17struct FloatRangeSlider;
18struct IntRangeSpinBox;
19struct FloatRangeSpinBox;
20struct IntSpinBox;
21struct FloatSpinBox;
22struct TimeChooser;
23struct Toggle;
24struct ChooserToggle;
25struct ComboBox;
26struct LineEdit;
27struct ProgramEdit;
28struct FileChooser;
29struct FolderChooser;
30struct AudioFileChooser;
31struct VideoFileChooser;
32struct Enum;
33struct Button;
34struct ImpulseButton;
35struct HSVSlider;
36struct XYSlider;
37struct XYZSlider;
38struct XYSpinboxes;
39struct XYZSpinboxes;
40struct MultiSlider;
41struct MultiSliderXY;
42struct PathGeneratorXY;
43struct Bargraph;
44} // namespace Process
45
46
47
48UUID_METADATA(
49 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FloatSlider,
50 "af2b4fc3-aecb-4c15-a5aa-1c573a239925")
51UUID_METADATA(
52 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FloatKnob,
53 "82427d27-084a-4ab6-9c4e-db83929a1200")
54UUID_METADATA(
55 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::LogFloatSlider,
56 "5554eb67-bcc8-45ab-8ec2-37a3f191aa64")
57
58UUID_METADATA(
59 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::IntSlider,
60 "348b80a4-45dc-4f70-8f5f-6546c85089a2")
61
62UUID_METADATA(
63 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::IntRangeSlider,
64 "0c1902bc-e282-11ec-8fea-0242ac120002")
65UUID_METADATA(
66 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FloatRangeSlider,
67 "73ae3e85-0c91-497e-b612-b1391f87ac72")
68
69UUID_METADATA(
70 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::IntRangeSpinBox,
71 "54dc640b-4385-4a5a-b9da-e44fe63701d9")
72UUID_METADATA(
73 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FloatRangeSpinBox,
74 "25be1f08-a3fb-4ce3-a34e-4d8f54f15874")
75
76UUID_METADATA(
77 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::IntSpinBox,
78 "238399a0-7e81-47e3-896f-08e8856e2973")
79UUID_METADATA(
80 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FloatSpinBox,
81 "10d62b0d-5bc9-4ac9-9540-9e8ac0c24947")
82
83UUID_METADATA(
84 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::Toggle,
85 "fb27e4cb-ea7f-41e2-ad92-2354498c1b6b")
86
87UUID_METADATA(
88 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::ChooserToggle,
89 "27d488b6-784b-4bfc-8e7f-e28ef030c248")
90UUID_METADATA(
91 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::TimeChooser,
92 "b631d9b7-cbe3-4d9c-b470-f139e348aecb")
93
94UUID_METADATA(
95 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::LineEdit,
96 "9ae797ea-d94c-4792-acec-9ec1932bae5d")
97UUID_METADATA(
98 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FileChooser,
99 "40833147-4c42-4b8b-bb80-0b1d15dae129")
100UUID_METADATA(
101 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::FolderChooser,
102 "a866e07f-f380-4f69-8bce-e52682db2025")
103UUID_METADATA(
104 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::AudioFileChooser,
105 "c347b510-927a-4924-9da1-c76871623567")
106UUID_METADATA(
107 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::VideoFileChooser,
108 "7d5a68ae-501f-4038-bb24-4a7ffc049923")
109UUID_METADATA(
110 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::ProgramEdit,
111 "de15c0da-429b-49d3-bb07-7c41f5f205c8")
112
113UUID_METADATA(
114 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::Enum,
115 "8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a")
116
117UUID_METADATA(
118 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::ComboBox,
119 "485680cc-b8b9-4a01-acc7-3e8334bdc016")
120
121UUID_METADATA(
122 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::Button,
123 "feb87e84-e0d2-428f-96ff-a123ac964f59")
124
125UUID_METADATA(
126 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::ImpulseButton,
127 "7cd210d3-ebd1-4f71-9de6-cccfb639cbc3")
128
129UUID_METADATA(
130 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::HSVSlider,
131 "8f38638e-9f9f-48b0-ae36-1cba86ef5703")
132UUID_METADATA(
133 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::XYSlider,
134 "8093743c-584f-4bb9-97d4-6c7602f87116")
135UUID_METADATA(
136 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::XYZSlider,
137 "bae00244-cd93-4893-a4ad-71489adb3fa1")
138UUID_METADATA(
139 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::XYSpinboxes,
140 "0adbbdda-fda4-451e-91cc-1da731bde9d5")
141UUID_METADATA(
142 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::XYZSpinboxes,
143 "377e8205-b442-4d54-8832-3761def522b2")
144UUID_METADATA(
145 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::MultiSlider,
146 "25de6d71-1554-4fe1-bf3f-9cbf12bdadeb")
147UUID_METADATA(
148 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::MultiSliderXY,
149 "ce12611f-f3b0-4f99-b3c0-3f0b25a38aa1")
150UUID_METADATA(
151 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::PathGeneratorXY,
152 "b60d0059-733b-4b57-a1c1-65fa140d3b8a")
153UUID_METADATA(
154 SCORE_LIB_PROCESS_EXPORT, Process::Port, Process::Bargraph,
155 "f6d740ce-acc0-44c0-932a-0a03345af84f")
156
157namespace Process
158{
159struct SCORE_LIB_PROCESS_EXPORT FloatSlider : public Process::ControlInlet
160{
161 MODEL_METADATA_IMPL(FloatSlider)
163 float min, float max, float init, const QString& name, Id<Process::Port> id,
164 QObject* parent);
165 ~FloatSlider();
166
167 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
168 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
169 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
170 using Process::ControlInlet::ControlInlet;
171};
172
173struct SCORE_LIB_PROCESS_EXPORT FloatKnob : public Process::ControlInlet
174{
175 MODEL_METADATA_IMPL(FloatKnob)
176 FloatKnob(
177 float min, float max, float init, const QString& name, Id<Process::Port> id,
178 QObject* parent);
179 ~FloatKnob();
180
181 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
182 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
183 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
184
185 using Process::ControlInlet::ControlInlet;
186};
187
188struct SCORE_LIB_PROCESS_EXPORT LogFloatSlider : public Process::ControlInlet
189{
190 MODEL_METADATA_IMPL(LogFloatSlider)
192 float min, float max, float init, const QString& name, Id<Process::Port> id,
193 QObject* parent);
195
196 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
197 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
198 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
199
200 using Process::ControlInlet::ControlInlet;
201};
202
203struct SCORE_LIB_PROCESS_EXPORT IntSlider : public Process::ControlInlet
204{
205 MODEL_METADATA_IMPL(IntSlider)
206 IntSlider(
207 int min, int max, int init, const QString& name, Id<Process::Port> id,
208 QObject* parent);
209 ~IntSlider();
210
211 auto getMin() const noexcept { return domain().get().convert_min<int>(); }
212 auto getMax() const noexcept { return domain().get().convert_max<int>(); }
213 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
214
215 using Process::ControlInlet::ControlInlet;
216};
217
218struct SCORE_LIB_PROCESS_EXPORT IntRangeSlider : public Process::ControlInlet
219{
220 MODEL_METADATA_IMPL(IntRangeSlider)
222 int min, int max, ossia::vec2f init, const QString& name, Id<Process::Port> id,
223 QObject* parent);
225
226 auto getMin() const noexcept { return domain().get().convert_min<int>(); }
227 auto getMax() const noexcept { return domain().get().convert_max<int>(); }
228 auto getInit() const noexcept { return ossia::convert<ossia::vec2f>(this->init()); }
229 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
230
231 using Process::ControlInlet::ControlInlet;
232};
233
234struct SCORE_LIB_PROCESS_EXPORT FloatRangeSlider : public Process::ControlInlet
235{
236 MODEL_METADATA_IMPL(FloatRangeSlider)
238 float min, float max, ossia::vec2f init, const QString& name, Id<Process::Port> id,
239 QObject* parent);
241
242 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
243 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
244 auto getInit() const noexcept { return ossia::convert<ossia::vec2f>(this->init()); }
245 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
246
247 using Process::ControlInlet::ControlInlet;
248};
249
250struct SCORE_LIB_PROCESS_EXPORT IntRangeSpinBox : public Process::ControlInlet
251{
252 MODEL_METADATA_IMPL(IntRangeSpinBox)
254 int min, int max, ossia::vec2f init, const QString& name, Id<Process::Port> id,
255 QObject* parent);
257
258 auto getMin() const noexcept { return domain().get().convert_min<int>(); }
259 auto getMax() const noexcept { return domain().get().convert_max<int>(); }
260 auto getInit() const noexcept { return ossia::convert<ossia::vec2f>(this->init()); }
261 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
262
263 using Process::ControlInlet::ControlInlet;
264};
265
266struct SCORE_LIB_PROCESS_EXPORT FloatRangeSpinBox : public Process::ControlInlet
267{
268 MODEL_METADATA_IMPL(FloatRangeSpinBox)
270 float min, float max, ossia::vec2f init, const QString& name, Id<Process::Port> id,
271 QObject* parent);
273
274 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
275 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
276 auto getInit() const noexcept { return ossia::convert<ossia::vec2f>(this->init()); }
277 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
278
279 using Process::ControlInlet::ControlInlet;
280};
281
282struct SCORE_LIB_PROCESS_EXPORT IntSpinBox : public Process::ControlInlet
283{
284 MODEL_METADATA_IMPL(IntSpinBox)
286 int min, int max, int init, const QString& name, Id<Process::Port> id,
287 QObject* parent);
288 ~IntSpinBox();
289
290 auto getMin() const noexcept { return domain().get().convert_min<int>(); }
291 auto getMax() const noexcept { return domain().get().convert_max<int>(); }
292 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
293
294 using Process::ControlInlet::ControlInlet;
295};
296
297struct SCORE_LIB_PROCESS_EXPORT FloatSpinBox : public Process::ControlInlet
298{
299 MODEL_METADATA_IMPL(FloatSpinBox)
301 float min, float max, float init, const QString& name, Id<Process::Port> id,
302 QObject* parent);
304
305 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
306 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
307 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
308
309 using Process::ControlInlet::ControlInlet;
310};
311struct SCORE_LIB_PROCESS_EXPORT TimeChooser : public Process::ControlInlet
312{
313 MODEL_METADATA_IMPL(TimeChooser)
315 float min, float max, float init, const QString& name, Id<Process::Port> id,
316 QObject* parent);
317 ~TimeChooser();
318
319 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
320 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
321 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
322 using Process::ControlInlet::ControlInlet;
323};
324
325struct SCORE_LIB_PROCESS_EXPORT Toggle : public Process::ControlInlet
326{
327 MODEL_METADATA_IMPL(Toggle)
328 Toggle(bool init, const QString& name, Id<Process::Port> id, QObject* parent);
329 ~Toggle();
330
331 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
332
333 using Process::ControlInlet::ControlInlet;
334};
335
336struct SCORE_LIB_PROCESS_EXPORT ChooserToggle : public Process::ControlInlet
337{
338 MODEL_METADATA_IMPL(ChooserToggle)
340 QStringList alternatives, bool init, const QString& name, Id<Process::Port> id,
341 QObject* parent);
343
344 QStringList alternatives() const noexcept;
345 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
346
347 using Process::ControlInlet::ControlInlet;
348};
349
350struct SCORE_LIB_PROCESS_EXPORT LineEdit : public Process::ControlInlet
351{
352 MODEL_METADATA_IMPL(LineEdit)
353 LineEdit(QString init, const QString& name, Id<Process::Port> id, QObject* parent);
354 ~LineEdit();
355
356 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
357
358 using Process::ControlInlet::ControlInlet;
359};
360
361struct SCORE_LIB_PROCESS_EXPORT FileChooserBase : public Process::ControlInlet
362{
363 W_OBJECT(FileChooserBase)
364public:
366 QString init, QString filters, const QString& name, Id<Process::Port> id,
367 QObject* parent);
369 using Process::ControlInlet::ControlInlet;
370
371 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
372 const QString& filters() const noexcept { return m_filters; };
373 void setFilters(QString nf) { m_filters = std::move(nf); }
374
375 void enableFileWatch();
376 void destroying() W_SIGNAL(destroying);
377
378private:
379 QString m_filters;
380};
381
382struct SCORE_LIB_PROCESS_EXPORT FileChooser : public FileChooserBase
383{
384 MODEL_METADATA_IMPL(FileChooser)
385 W_OBJECT(FileChooser)
386public:
388 QString init, QString filters, const QString& name, Id<Process::Port> id,
389 QObject* parent);
390 ~FileChooser();
391 using Process::FileChooserBase::FileChooserBase;
392
393 // Without these the inherited ControlInlet deserializing constructor runs
394 // instead, and `*this` is a ControlInlet& in its body -- so the
395 // FileChooser overload of writeTo is never reached and the "Filters" the
396 // serializer DOES write is never read back. Same pattern as Process::Enum.
397 FileChooser(DataStream::Deserializer& vis, QObject* parent);
398 FileChooser(JSONObject::Deserializer& vis, QObject* parent);
399 FileChooser(DataStream::Deserializer&& vis, QObject* parent);
400 FileChooser(JSONObject::Deserializer&& vis, QObject* parent);
401};
402
403struct SCORE_LIB_PROCESS_EXPORT FolderChooser : public Process::ControlInlet
404{
405 MODEL_METADATA_IMPL(FolderChooser)
406 W_OBJECT(FolderChooser)
407public:
409 QString init, const QString& name, Id<Process::Port> id,
410 QObject* parent);
412 using Process::ControlInlet::ControlInlet;
413
414 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
415};
416
417struct SCORE_LIB_PROCESS_EXPORT AudioFileChooser : public FileChooserBase
418{
419 MODEL_METADATA_IMPL(AudioFileChooser)
420 W_OBJECT(AudioFileChooser)
421public:
423 QString init, QString filters, const QString& name, Id<Process::Port> id,
424 QObject* parent);
426 using Process::FileChooserBase::FileChooserBase;
427
428 // See the note on FileChooser.
429 AudioFileChooser(DataStream::Deserializer& vis, QObject* parent);
430 AudioFileChooser(JSONObject::Deserializer& vis, QObject* parent);
431 AudioFileChooser(DataStream::Deserializer&& vis, QObject* parent);
432 AudioFileChooser(JSONObject::Deserializer&& vis, QObject* parent);
433};
434
435struct SCORE_LIB_PROCESS_EXPORT VideoFileChooser : public FileChooserBase
436{
437 MODEL_METADATA_IMPL(VideoFileChooser)
438 W_OBJECT(VideoFileChooser)
439public:
441 QString init, QString filters, const QString& name, Id<Process::Port> id,
442 QObject* parent);
444 using Process::FileChooserBase::FileChooserBase;
445
446 // See the note on FileChooser.
447 VideoFileChooser(DataStream::Deserializer& vis, QObject* parent);
448 VideoFileChooser(JSONObject::Deserializer& vis, QObject* parent);
449 VideoFileChooser(DataStream::Deserializer&& vis, QObject* parent);
450 VideoFileChooser(JSONObject::Deserializer&& vis, QObject* parent);
451};
452
453struct SCORE_LIB_PROCESS_EXPORT ProgramEdit : public Process::ControlInlet
454{
455 MODEL_METADATA_IMPL(ProgramEdit)
456 ProgramEdit(QString init, const QString& name, Id<Process::Port> id, QObject* parent);
457 ~ProgramEdit();
458
459 std::string language;
460
461 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
462
463 using Process::ControlInlet::ControlInlet;
464};
465
466struct SCORE_LIB_PROCESS_EXPORT ComboBox : public Process::ControlInlet
467{
468 W_OBJECT(ComboBox)
469public:
470 MODEL_METADATA_IMPL(ComboBox)
471 std::vector<std::pair<QString, ossia::value>> alternatives;
472 ComboBox(
473 std::vector<std::pair<QString, ossia::value>> values, ossia::value init,
474 const QString& name, Id<Process::Port> id, QObject* parent);
475 ~ComboBox();
476
477 void setAlternatives(std::vector<std::pair<QString, ossia::value>> values);
478 // E_SIGNAL, not W_SIGNAL: the widgets and the avnd executor connect to this
479 // from other plug-ins, and a non-exported signal silently never fires across
480 // a shared-library boundary.
481 void alternativesChanged()
482 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, alternativesChanged)
483
484 // Folder-backed combobox (halp::folder_combobox): items are the files of the
485 // sibling port named folderPortName, filtered by fileExtensions ("*.wav"…).
486 // Empty folderPortName = plain combobox. Populated at edit/load time, and
487 // refreshed by a filesystem watcher while the document is open so that files
488 // written by other processes (an upstream analysis, a recorder…) show up
489 // without reloading.
490 QString folderPortName;
491 QStringList fileExtensions;
492 void repopulateFromFolder(const QString& folderPath);
493
494private:
495 QFileSystemWatcher* m_folderWatcher{};
496 QString m_watchedFolder;
497
498public:
499
500 const auto& getValues() const noexcept { return alternatives; }
501 auto count() const noexcept { return alternatives.size(); }
502
503 ComboBox(DataStream::Deserializer& vis, QObject* parent);
504 ComboBox(JSONObject::Deserializer& vis, QObject* parent);
505 ComboBox(DataStream::Deserializer&& vis, QObject* parent);
506 ComboBox(JSONObject::Deserializer&& vis, QObject* parent);
507
508 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
509};
510
511struct SCORE_LIB_PROCESS_EXPORT Enum : public Process::ControlInlet
512{
513 MODEL_METADATA_IMPL(Enum)
514 std::vector<QString> values;
515 std::vector<QString> pixmaps;
516 Enum(
517 const std::vector<std::string>& dom, std::vector<QString> pixmaps,
518 std::string init, const QString& name, Id<Process::Port> id, QObject* parent);
519
520 Enum(
521 const QStringList& values, std::vector<QString> pixmaps, std::string init,
522 const QString& name, Id<Process::Port> id, QObject* parent);
523 ~Enum();
524
525 const std::vector<QString>& getValues() const { return values; }
526
527 Enum(DataStream::Deserializer& vis, QObject* parent);
528 Enum(JSONObject::Deserializer& vis, QObject* parent);
529 Enum(DataStream::Deserializer&& vis, QObject* parent);
530 Enum(JSONObject::Deserializer&& vis, QObject* parent);
531
532 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
533};
534
535struct SCORE_LIB_PROCESS_EXPORT Button : public Process::ControlInlet
536{
537 MODEL_METADATA_IMPL(Button)
538 Button(const QString& name, Id<Process::Port> id, QObject* parent);
539 ~Button();
540
541 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
542
543 using Process::ControlInlet::ControlInlet;
544};
545
546struct SCORE_LIB_PROCESS_EXPORT ImpulseButton : public Process::ControlInlet
547{
548 MODEL_METADATA_IMPL(ImpulseButton)
549 W_OBJECT(ImpulseButton)
550public:
551 ImpulseButton(const QString& name, Id<Process::Port> id, QObject* parent);
553
554 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
555
556 using Process::ControlInlet::ControlInlet;
557};
558
559struct SCORE_LIB_PROCESS_EXPORT HSVSlider : public Process::ControlInlet
560{
561 MODEL_METADATA_IMPL(HSVSlider)
562 HSVSlider(
563 ossia::vec4f init, const QString& name, Id<Process::Port> id, QObject* parent);
564 ~HSVSlider();
565
567 const State::Unit& unit() const noexcept override;
568 auto getMin() const noexcept { return ossia::vec4f{0., 0., 0., 0.}; }
569 auto getMax() const noexcept { return ossia::vec4f{1., 1., 1., 1.}; }
570 using Process::ControlInlet::ControlInlet;
571};
572
573struct SCORE_LIB_PROCESS_EXPORT XYSlider : public Process::ControlInlet
574{
575 MODEL_METADATA_IMPL(XYSlider)
576 XYSlider(
577 ossia::vec2f init, const QString& name, Id<Process::Port> id, QObject* parent);
578 XYSlider(
579 ossia::vec2f min, ossia::vec2f max, ossia::vec2f init, const QString& name,
580 Id<Process::Port> id, QObject* parent);
581 ~XYSlider();
582
583 auto getMin() const noexcept { return domain().get().convert_min<ossia::vec2f>(); }
584 auto getMax() const noexcept { return domain().get().convert_max<ossia::vec2f>(); }
585 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
586
587 using Process::ControlInlet::ControlInlet;
588};
589
590struct SCORE_LIB_PROCESS_EXPORT XYZSlider : public Process::ControlInlet
591{
592 MODEL_METADATA_IMPL(XYZSlider)
593 XYZSlider(
594 ossia::vec3f init, const QString& name, Id<Process::Port> id, QObject* parent);
595 XYZSlider(
596 ossia::vec3f min, ossia::vec3f max, ossia::vec3f init, const QString& name,
597 Id<Process::Port> id, QObject* parent);
598 ~XYZSlider();
599
600 auto getMin() const noexcept { return domain().get().convert_min<ossia::vec3f>(); }
601 auto getMax() const noexcept { return domain().get().convert_max<ossia::vec3f>(); }
602 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
603
604 using Process::ControlInlet::ControlInlet;
605};
606
607struct SCORE_LIB_PROCESS_EXPORT XYSpinboxes : public Process::ControlInlet
608{
609 MODEL_METADATA_IMPL(XYSpinboxes)
611 ossia::vec2f init, const QString& name, Id<Process::Port> id, QObject* parent);
613 ossia::vec2f min, ossia::vec2f max, ossia::vec2f init, bool integral,
614 const QString& name, Id<Process::Port> id, QObject* parent);
615
616 XYSpinboxes(DataStream::Deserializer& vis, QObject* parent);
617 XYSpinboxes(JSONObject::Deserializer& vis, QObject* parent);
618 XYSpinboxes(DataStream::Deserializer&& vis, QObject* parent);
619 XYSpinboxes(JSONObject::Deserializer&& vis, QObject* parent);
620 ~XYSpinboxes();
621
622 auto getMin() const noexcept { return domain().get().convert_min<ossia::vec2f>(); }
623 auto getMax() const noexcept { return domain().get().convert_max<ossia::vec2f>(); }
624 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
625
626 using Process::ControlInlet::ControlInlet;
627
628 bool integral{};
629};
630
631struct SCORE_LIB_PROCESS_EXPORT XYZSpinboxes : public Process::ControlInlet
632{
633 MODEL_METADATA_IMPL(XYZSpinboxes)
635 ossia::vec3f init, const QString& name, Id<Process::Port> id, QObject* parent);
637 ossia::vec3f min, ossia::vec3f max, ossia::vec3f init, bool integral,
638 const QString& name, Id<Process::Port> id, QObject* parent);
640
641 auto getMin() const noexcept { return domain().get().convert_min<ossia::vec3f>(); }
642 auto getMax() const noexcept { return domain().get().convert_max<ossia::vec3f>(); }
643 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
644
645 using Process::ControlInlet::ControlInlet;
646 bool integral{};
647};
648
649struct SCORE_LIB_PROCESS_EXPORT MultiSlider : public Process::ControlInlet
650{
651 MODEL_METADATA_IMPL(MultiSlider)
653 ossia::value init, const QString& name, Id<Process::Port> id, QObject* parent);
654 ~MultiSlider();
655
656 ossia::value getMin() const noexcept;
657 ossia::value getMax() const noexcept;
658 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
659
660 using Process::ControlInlet::ControlInlet;
661};
662
663
664struct SCORE_LIB_PROCESS_EXPORT MultiSliderXY : public Process::ControlInlet
665{
666 MODEL_METADATA_IMPL(MultiSliderXY)
668 ossia::value init, const QString& name, Id<Process::Port> id, QObject* parent);
670
671 ossia::value getMin() const noexcept;
672 ossia::value getMax() const noexcept;
673 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
674
675 using Process::ControlInlet::ControlInlet;
676};
677
678struct SCORE_LIB_PROCESS_EXPORT PathGeneratorXY : public Process::ControlInlet
679{
680 MODEL_METADATA_IMPL(PathGeneratorXY)
682 ossia::value init, const QString& name, Id<Process::Port> id, QObject* parent);
684
685 ossia::value getMin() const noexcept;
686 ossia::value getMax() const noexcept;
687 void setupExecution(ossia::inlet& inl, QObject* exec_context) const noexcept override;
688
689 using Process::ControlInlet::ControlInlet;
690};
691
692// Outlets
693
694struct SCORE_LIB_PROCESS_EXPORT Bargraph : public Process::ControlOutlet
695{
696 MODEL_METADATA_IMPL(Bargraph)
697 Bargraph(
698 float min, float max, float init, const QString& name, Id<Process::Port> id,
699 QObject* parent);
700 ~Bargraph();
701
702 auto getMin() const noexcept { return domain().get().convert_min<float>(); }
703 auto getMax() const noexcept { return domain().get().convert_max<float>(); }
704
705 using Process::ControlOutlet::ControlOutlet;
706};
707
708} // namespace Process
Definition DataStreamVisitor.hpp:202
Definition JSONVisitor.hpp:423
Definition Port.hpp:218
Definition Port.hpp:452
Definition Port.hpp:104
virtual const State::Unit & unit() const noexcept
Definition Port.cpp:170
The id_base_t class.
Definition Identifier.hpp:59
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Definition WidgetInlets.hpp:418
Definition WidgetInlets.hpp:695
Definition WidgetInlets.hpp:536
Definition WidgetInlets.hpp:337
Definition WidgetInlets.hpp:467
Definition WidgetInlets.hpp:512
Definition WidgetInlets.hpp:362
Definition WidgetInlets.hpp:383
Definition WidgetInlets.hpp:174
Definition WidgetInlets.hpp:235
Definition WidgetInlets.hpp:267
Definition WidgetInlets.hpp:160
Definition WidgetInlets.hpp:298
Definition WidgetInlets.hpp:404
Definition WidgetInlets.hpp:560
Definition WidgetInlets.hpp:547
Definition WidgetInlets.hpp:219
Definition WidgetInlets.hpp:251
Definition WidgetInlets.hpp:204
Definition WidgetInlets.hpp:283
Definition WidgetInlets.hpp:351
Definition WidgetInlets.hpp:189
Definition WidgetInlets.hpp:650
Definition WidgetInlets.hpp:665
Definition WidgetInlets.hpp:679
Definition WidgetInlets.hpp:454
Definition WidgetInlets.hpp:312
Definition WidgetInlets.hpp:326
Definition WidgetInlets.hpp:436
Definition WidgetInlets.hpp:574
Definition WidgetInlets.hpp:608
Definition WidgetInlets.hpp:591
Definition WidgetInlets.hpp:632
Definition Unit.hpp:18