Loading...
Searching...
No Matches
score-lib-process/Process/ProcessMetadata.hpp
1#pragma once
2#include <Process/Dataflow/PortType.hpp>
3#include <Process/ProcessFlags.hpp>
4
5#include <score/plugins/SerializableInterface.hpp>
7#include <score/tools/Metadata.hpp>
8#include <score/tools/std/Optional.hpp>
9
10#include <QStringList>
11#include <QUrl>
12
13#include <cinttypes>
14
15namespace Process
16{
17SCORE_LIB_PROCESS_EXPORT
18const QIcon& getCategoryIcon(const QString& category) noexcept;
19enum ProcessCategory : uint64_t
20{
21 Other,
23 Generator, // lfo, etc
24 MediaSource, // sound, video, image, etc
25 Analyzer,
26 AudioEffect, // audio in and audio out
27 MidiEffect, // midi in and midi out
28 Synth, // midi in and audio out
29 Mapping, // value in and value out
30 Script, // JS, PD, etc
31 Structure, // scenario, loop, etc
32 Visual, // gfx processes
33};
34
36{
37 QString prettyName;
38 ProcessCategory category{};
39 QString categoryText;
40 QString description;
41 QString author{"ossia score"};
42 QStringList tags;
43 std::optional<std::vector<Process::PortType>> inlets;
44 std::optional<std::vector<Process::PortType>> outlets;
45 QUrl documentationLink;
46};
47class Descriptor_k;
48}
49#define PROCESS_FLAGS_METADATA(Export, Model, Flags) \
50 TYPED_METADATA(Export, Model, Process::ProcessFlags_k, Process::ProcessFlags, Flags)
51
52#define PROCESS_METADATA( \
53 Export, Model, Uuid, ObjectKey, PrettyName, CategoryEnum, Category, Desc, Author, \
54 Tags, InputSpec, OutputSpec, DocumentationLink, Flags) \
55 MODEL_METADATA(Export, Process::ProcessModel, Model, Uuid, ObjectKey, PrettyName) \
56 CATEGORY_METADATA(Export, Model, Category) \
57 TAGS_METADATA(Export, Model, Tags) \
58 PROCESS_FLAGS_METADATA(Export, Model, (Process::ProcessFlags)(Flags)) \
59 template <> \
60 struct Export Metadata<::Process::Descriptor_k, Model> \
61 { \
62 static ::Process::Descriptor get() \
63 { \
64 static const ::Process::Descriptor k{PrettyName, CategoryEnum, Category, \
65 Desc, Author, Tags, \
66 InputSpec, OutputSpec, DocumentationLink};\
67 return k; \
68 } \
69 };
70
71#define PROCESS_METADATA_IMPL(Model) \
72 MODEL_METADATA_IMPL(Model) \
73 QString prettyShortName() const noexcept override \
74 { \
75 return Metadata<PrettyName_k, Model>::get(); \
76 } \
77 QString category() const noexcept override \
78 { \
79 return Metadata<Category_k, Model>::get(); \
80 } \
81 QStringList tags() const noexcept override \
82 { \
83 return Metadata<Tags_k, Model>::get(); \
84 } \
85 Process::ProcessFlags flags() const noexcept override \
86 { \
87 return Metadata<Process::ProcessFlags_k, Model>::get(); \
88 }
89
90#define PROCESS_METADATA_IMPL_NOFLAGS(Model) \
91 MODEL_METADATA_IMPL(Model) \
92 QString prettyShortName() const noexcept override \
93 { \
94 return Metadata<PrettyName_k, Model>::get(); \
95 } \
96 QString category() const noexcept override \
97 { \
98 return Metadata<Category_k, Model>::get(); \
99 } \
100 QStringList tags() const noexcept override \
101 { \
102 return Metadata<Tags_k, Model>::get(); \
103 }
Namespace related to the Automation process.
Definition AutomationColors.cpp:8
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Definition score-lib-process/Process/ProcessMetadata.hpp:36