2#include <Process/Dataflow/Port.hpp>
4#include <Dataflow/PortItem.hpp>
5#include <Gfx/CommandFactory.hpp>
7#include <score/command/PropertyCommand.hpp>
9#include <ossia/dataflow/texture_port.hpp>
10#include <ossia/gfx/port_index.hpp>
12#include <score_plugin_gfx_export.h>
19UUID_METADATA(,
Process::Port, Gfx::TextureInlet,
"5ac86198-2d03-4830-9e41-a6d529922d29")
21 ,
Process::Port,
Gfx::TextureOutlet, "f1c71046-b754-49a5-8e66-d01374773dfc")
27 W_OBJECT(TextureInlet)
29 SCORE_SERIALIZE_FRIENDS
31 MODEL_METADATA_IMPL_HPP(TextureInlet)
32 TextureInlet() =
delete;
33 ~TextureInlet()
override;
34 TextureInlet(
const TextureInlet&) =
delete;
42 VIRTUAL_CONSTEXPR Process::PortType type() const noexcept
override
44 return Process::PortType::Texture;
47 std::optional<QSize> renderSize() const noexcept;
48 void renderSizeChanged(
std::optional<QSize> sz) W_SIGNAL(renderSizeChanged, sz);
49 void setRenderSize(
std::optional<QSize> sz);
50 void unsetRenderSize();
54 renderSize W_READ renderSize W_WRITE setRenderSize W_NOTIFY renderSizeChanged)
56 INLINE_PROPERTY_VALUE(
57 ossia::texture_format, textureFormat, = ossia::texture_format::RGBA8,
58 textureFormat, setTextureFormat, textureFormatChanged)
59 INLINE_PROPERTY_VALUE(
60 ossia::texture_filter, textureFilter, = ossia::texture_filter::LINEAR,
61 textureFilter, setTextureFilter, textureFilterChanged)
62 INLINE_PROPERTY_VALUE(
63 ossia::texture_address_mode, textureAddressMode,
64 = ossia::texture_address_mode::CLAMP_TO_EDGE, textureAddressMode,
65 setTextureAddressMode, textureAddressModeChanged)
67 void setupExecution(ossia::inlet&, QObject* exec_context) const noexcept override;
70 std::optional<QSize> m_renderSize;
73class SCORE_PLUGIN_GFX_EXPORT TextureOutlet : public
Process::Outlet
75 W_OBJECT(TextureOutlet)
77 SCORE_SERIALIZE_FRIENDS
79 MODEL_METADATA_IMPL_HPP(TextureOutlet)
80 TextureOutlet() =
delete;
81 ~TextureOutlet()
override;
82 TextureOutlet(
const TextureOutlet&) =
delete;
90 VIRTUAL_CONSTEXPR Process::PortType type() const noexcept
override
92 return Process::PortType::Texture;
97 ossia::gfx::port_index graphicsPort() const noexcept;
100struct TextureInletFactory final : public Dataflow::AutomatablePortFactory
102 using Model_T = TextureInlet;
108 Model_T* load(
const VisitorVariant& vis, QObject* parent)
override
110 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
111 return new Model_T{deserializer, parent};
115 void setupInletInspector(
122 using Model_T = TextureOutlet;
128 Model_T* load(
const VisitorVariant& vis, QObject* parent)
override
130 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
131 return new Model_T{deserializer, parent};
135 void setupOutletInspector(
149 ,
Process::Port,
Gfx::GeometryOutlet, "848061c5-e8a0-4a13-9985-e8df30ce6d4f")
157 SCORE_SERIALIZE_FRIENDS
170 VIRTUAL_CONSTEXPR Process::PortType type()
const noexcept override
172 return Process::PortType::Geometry;
180 SCORE_SERIALIZE_FRIENDS
193 VIRTUAL_CONSTEXPR Process::PortType type()
const noexcept override
195 return Process::PortType::Geometry;
207 void setupInletInspector(
213 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
214 return new Model_T{deserializer, parent};
227 void setupOutletInspector(
233 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
234 return new Model_T{deserializer, parent};
240W_REGISTER_ARGTYPE(std::optional<QSize>);
241W_REGISTER_ARGTYPE(ossia::texture_format);
242W_REGISTER_ARGTYPE(ossia::texture_filter);
243W_REGISTER_ARGTYPE(ossia::texture_address_mode);
246 Gfx, ChangeTextureInletRenderSize, TextureInlet::p_renderSize,
247 "Change render target size")
248SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletRenderSize)
251 Gfx, ChangeTextureInletFormat, TextureInlet::p_textureFormat,
252 "Change render target format")
253SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletFormat)
256 Gfx, ChangeTextureInletFilter, TextureInlet::p_textureFilter,
257 "Change render target filter")
258SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletFilter)
261 Gfx, ChangeTextureInletAddressMode, TextureInlet::p_textureAddressMode,
262 "Change render target address mode")
263SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletAddressMode)
Definition DataStreamVisitor.hpp:202
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:37
Definition TexturePort.hpp:154
Definition TexturePort.hpp:177
Definition lib/score/widgets/Layout.hpp:53
Definition JSONVisitor.hpp:423
Definition UuidKey.hpp:345
The id_base_t class.
Definition Identifier.hpp:59
Binds the rendering pipeline to ossia processes.
Definition AssetTable.cpp:7
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Definition TexturePort.hpp:200
Definition TexturePort.hpp:220
The VisitorVariant struct.
Definition VisitorInterface.hpp:26
Definition DocumentContext.hpp:18