2#include <State/Address.hpp>
3#include <State/Domain.hpp>
5#include <Device/Address/AddressSettings.hpp>
7#include <Process/Dataflow/PortForward.hpp>
8#include <Process/Dataflow/PortType.hpp>
10#include <score/model/IdentifiedObject.hpp>
11#include <score/model/path/Path.hpp>
12#include <score/plugins/SerializableInterface.hpp>
13#include <score/selection/Selectable.hpp>
14#include <score/serialization/VisitorInterface.hpp>
16#include <ossia/detail/small_vector.hpp>
17#include <ossia/network/value/value.hpp>
21#include <score_lib_process_export.h>
22#include <smallfun.hpp>
26#if __cpp_constexpr >= 201907
27#define VIRTUAL_CONSTEXPR constexpr
29#define VIRTUAL_CONSTEXPR
53 "8884228a-d197-4b0a-b6ca-d1fb15291559")
56 "34e2c5a7-18c4-4759-b6cc-46feaeee06e2")
59 "769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3")
62 "cff96158-cc72-46d7-99dc-b6038171375b")
65 "c18adc77-e0e0-4ddf-a46c-43cb0719a890")
68 "d8a3ed3d-b9c2-46f2-bdb3-d282a48481c6")
71 "a1574bb0-cbd4-4c7d-9417-0c25cfd1187b")
74 "a1d97535-18ac-444a-8417-0cbc1692d897")
77 "9a13fb32-269a-47bf-99a9-930188c1f19c")
80 "3620ea94-5991-41cf-89b3-11f842cc39d0")
86static constexpr const qreal default_margin = 5.;
87static constexpr const qreal default_padding = 5.;
92 QPointF label{12., 0.};
93 QPointF control{0., 12.};
94 std::optional<Qt::Alignment> labelAlignment{std::nullopt};
95 bool labelVisible{
true};
99class SCORE_LIB_PROCESS_EXPORT
Port
104 SCORE_SERIALIZE_FRIENDS
108 bool noValueChangeOnMove{};
114 const QString& visualName()
const noexcept;
115 const QString& visualDescription()
const noexcept;
117 const QString& name()
const noexcept;
119 const std::vector<Path<Cable>>& cables()
const noexcept;
120 const QString& exposed()
const noexcept;
121 const QString& description()
const noexcept;
123 virtual PortType type()
const noexcept = 0;
129 void setName(
const QString& customData);
131 void setExposed(
const QString& add);
133 void setDescription(
const QString& add);
134 W_SLOT(setDescription);
138 void nameChanged(
const QString& name)
139 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, nameChanged, name)
140 void exposedChanged(
const QString& addr)
141 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, exposedChanged, addr)
142 void descriptionChanged(
const QString& txt)
143 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, descriptionChanged, txt)
144 void cablesChanged() E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, cablesChanged)
146 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, addressChanged, address)
147 void executionReset() E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, executionReset)
151 address W_READ address W_WRITE setAddress W_NOTIFY addressChanged)
152 PROPERTY(QString, name W_READ name W_WRITE setName W_NOTIFY nameChanged)
153 PROPERTY(Process::PortType, type W_READ type W_CONSTANT W_FINAL)
155 virtual QByteArray saveData()
const noexcept;
156 virtual void loadData(
const QByteArray& arr)
noexcept;
170 std::vector<Path<Cable>> m_cables;
173 QString m_description;
182 MODEL_METADATA_IMPL_HPP(
Inlet)
186 virtual void setupExecution(ossia::inlet&, QObject* exec_context)
const noexcept;
187 virtual void forChildInlets(
const smallfun::function<
void(
Inlet&)>&)
const noexcept;
188 virtual void mapExecution(
190 const smallfun::function<
void(
Inlet&, ossia::inlet&)>&)
const noexcept;
207 SCORE_SERIALIZE_FRIENDS
221 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
223 return Process::PortType::Message;
226 const ossia::value& value()
const noexcept {
return m_value; }
227 const ossia::value& init()
const noexcept {
return m_init; }
228 const State::Domain& domain()
const noexcept {
return m_domain; }
230 QByteArray saveData()
const noexcept override;
231 void loadData(
const QByteArray& arr)
noexcept override;
234 void valueChanged(
const ossia::value& v)
235 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, valueChanged, v)
236 void initChanged(
const ossia::value& v)
237 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, initChanged, v)
238 void executionValueChanged(
const ossia::value& v)
239 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, executionValueChanged, v)
241 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, domainChanged, d)
244 void setValue(
const ossia::value& value);
246 void setInit(
const ossia::value& value);
249 inline void setExecutionValue(
const ossia::value& value)
251 executionValueChanged(value);
264 PROPERTY(
State::Domain, domain W_READ domain W_WRITE setDomain W_NOTIFY domainChanged)
265 PROPERTY(ossia::value, value W_READ value W_WRITE setValue W_NOTIFY valueChanged)
266 PROPERTY(ossia::value, init W_READ init W_WRITE setInit W_NOTIFY initChanged)
268 ossia::value m_value;
277 SCORE_SERIALIZE_FRIENDS
280 MODEL_METADATA_IMPL_HPP(
Outlet)
283 virtual void setupExecution(ossia::outlet&, QObject* exec_context)
const noexcept;
284 virtual void forChildInlets(
const smallfun::function<
void(
Inlet&)>&)
const noexcept;
285 virtual void mapExecution(
287 const smallfun::function<
void(
Inlet&, ossia::inlet&)>&)
const noexcept;
304 SCORE_SERIALIZE_FRIENDS
317 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
319 return Process::PortType::Audio;
327 SCORE_SERIALIZE_FRIENDS
340 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
342 return Process::PortType::Audio;
345 void forChildInlets(
const smallfun::function<
void(
Inlet&)>&)
const noexcept override;
348 const smallfun::function<
void(
Inlet&, ossia::inlet&)>&)
const noexcept override;
350 QByteArray saveData()
const noexcept override;
351 void loadData(
const QByteArray& arr)
noexcept override;
353 bool propagate()
const;
354 void setPropagate(
bool propagate);
355 void propagateChanged(
bool propagate)
356 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, propagateChanged, propagate)
359 void setGain(
double g);
360 void gainChanged(
double g) E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, gainChanged, g)
364 void panChanged(
pan_weight g) E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, panChanged, g)
366 std::unique_ptr<Process::ControlInlet> gainInlet;
367 std::unique_ptr<Process::ControlInlet> panInlet;
370 bool, propagate W_READ propagate W_WRITE setPropagate W_NOTIFY propagateChanged)
371 PROPERTY(
double, gain W_READ gain W_WRITE setGain W_NOTIFY gainChanged)
372 PROPERTY(
pan_weight, pan W_READ pan W_WRITE setPan W_NOTIFY panChanged)
376 bool m_propagate{
false};
383 SCORE_SERIALIZE_FRIENDS
396 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
398 return Process::PortType::Midi;
406 SCORE_SERIALIZE_FRIENDS
419 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
421 return Process::PortType::Midi;
429 SCORE_SERIALIZE_FRIENDS
443 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
445 return Process::PortType::Message;
448 QByteArray saveData()
const noexcept override;
449 void loadData(
const QByteArray& arr)
noexcept override;
451 const ossia::value& value()
const {
return m_value; }
455 void valueChanged(
const ossia::value& v)
456 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, valueChanged, v)
457 void executionValueChanged(
const ossia::value& v)
458 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, executionValueChanged, v)
460 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, domainChanged, d)
463 void setExecutionValue(
const ossia::value& value) { executionValueChanged(value); }
465 void setValue(
const ossia::value& value)
485 PROPERTY(
State::Domain, domain W_READ domain W_WRITE setDomain W_NOTIFY domainChanged)
486 PROPERTY(ossia::value, value W_READ value W_WRITE setValue W_NOTIFY valueChanged)
488 ossia::value m_value;
496 SCORE_SERIALIZE_FRIENDS
509 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
511 return Process::PortType::Message;
519 SCORE_SERIALIZE_FRIENDS
532 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
534 return Process::PortType::Message;
538SCORE_LIB_PROCESS_EXPORT
539std::unique_ptr<Inlet> make_value_inlet(
const Id<Process::Port>& c, QObject* parent);
540SCORE_LIB_PROCESS_EXPORT
541std::unique_ptr<Outlet> make_value_outlet(
const Id<Process::Port>& c, QObject* parent);
543SCORE_LIB_PROCESS_EXPORT
544std::unique_ptr<MidiInlet> make_midi_inlet(
const Id<Process::Port>& c, QObject* parent);
545SCORE_LIB_PROCESS_EXPORT
546std::unique_ptr<MidiOutlet>
549SCORE_LIB_PROCESS_EXPORT
550std::unique_ptr<AudioInlet>
552SCORE_LIB_PROCESS_EXPORT
553std::unique_ptr<AudioOutlet>
561W_REGISTER_ARGTYPE(
Process::Port)
564W_REGISTER_ARGTYPE(
Process::pan_weight)
Definition DataStreamVisitor.hpp:202
The IdentifiedObject class.
Definition IdentifiedObject.hpp:19
Definition JSONVisitor.hpp:423
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
The Selectable class.
Definition Selectable.hpp:14
The id_base_t class.
Definition Identifier.hpp:59
Generic serialization method for abstract classes.
Definition SerializableInterface.hpp:21
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Definition AddressSettings.hpp:131
Definition PortForward.hpp:31
Definition Address.hpp:108