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