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 Qt::Alignment labelAlignment{};
95 Qt::Alignment controlAlignment{};
96 bool labelVisible{
true};
100class SCORE_LIB_PROCESS_EXPORT
Port
105 SCORE_SERIALIZE_FRIENDS
108 bool displayHandledExplicitly{};
109 bool noValueChangeOnMove{};
115 const QString& visualName()
const noexcept;
116 const QString& visualDescription()
const noexcept;
118 const QString& name()
const noexcept;
120 const std::vector<Path<Cable>>& cables()
const noexcept;
121 const QString& exposed()
const noexcept;
122 const QString& description()
const noexcept;
124 virtual PortType type()
const noexcept = 0;
130 void setName(
const QString& customData);
132 void setExposed(
const QString& add);
134 void setDescription(
const QString& add);
135 W_SLOT(setDescription);
139 void nameChanged(
const QString& name)
140 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, nameChanged, name)
141 void exposedChanged(
const QString& addr)
142 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, exposedChanged, addr)
143 void descriptionChanged(
const QString& txt)
144 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, descriptionChanged, txt)
145 void cablesChanged() E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, cablesChanged)
147 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, addressChanged, address)
148 void executionReset() E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, executionReset)
152 address W_READ address W_WRITE setAddress W_NOTIFY addressChanged)
153 PROPERTY(QString, name W_READ name W_WRITE setName W_NOTIFY nameChanged)
154 PROPERTY(Process::PortType, type W_READ type W_CONSTANT W_FINAL)
156 virtual QByteArray saveData()
const noexcept;
157 virtual void loadData(
const QByteArray& arr)
noexcept;
171 std::vector<Path<Cable>> m_cables;
174 QString m_description;
183 MODEL_METADATA_IMPL_HPP(
Inlet)
187 virtual void setupExecution(ossia::inlet&, QObject* exec_context)
const noexcept;
188 virtual void forChildInlets(
const smallfun::function<
void(
Inlet&)>&)
const noexcept;
189 virtual void mapExecution(
191 const smallfun::function<
void(
Inlet&, ossia::inlet&)>&)
const noexcept;
208 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
442 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
444 return Process::PortType::Message;
447 QByteArray saveData()
const noexcept override;
448 void loadData(
const QByteArray& arr)
noexcept override;
450 const ossia::value& value()
const {
return m_value; }
454 void valueChanged(
const ossia::value& v)
455 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, valueChanged, v)
456 void executionValueChanged(
const ossia::value& v)
457 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, executionValueChanged, v)
459 E_SIGNAL(SCORE_LIB_PROCESS_EXPORT, domainChanged, d)
462 void setExecutionValue(
const ossia::value& value) { executionValueChanged(value); }
464 void setValue(
const ossia::value& value)
484 PROPERTY(
State::Domain, domain W_READ domain W_WRITE setDomain W_NOTIFY domainChanged)
485 PROPERTY(ossia::value, value W_READ value W_WRITE setValue W_NOTIFY valueChanged)
487 ossia::value m_value;
495 SCORE_SERIALIZE_FRIENDS
508 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
510 return Process::PortType::Message;
518 SCORE_SERIALIZE_FRIENDS
531 VIRTUAL_CONSTEXPR PortType type()
const noexcept override
533 return Process::PortType::Message;
542W_REGISTER_ARGTYPE(
Process::Port)
545W_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