2#include <Process/Dataflow/Port.hpp>
4#include <Dataflow/PortItem.hpp>
5#include <Gfx/CommandFactory.hpp>
6#include <Gfx/ShaderSamplerSource.hpp>
8#include <score/command/PropertyCommand.hpp>
10#include <ossia/dataflow/texture_port.hpp>
11#include <ossia/gfx/port_index.hpp>
13#include <score_plugin_gfx_export.h>
20UUID_METADATA(,
Process::Port, Gfx::TextureInlet,
"5ac86198-2d03-4830-9e41-a6d529922d29")
22 ,
Process::Port,
Gfx::TextureOutlet, "f1c71046-b754-49a5-8e66-d01374773dfc")
28 W_OBJECT(TextureInlet)
30 SCORE_SERIALIZE_FRIENDS
32 MODEL_METADATA_IMPL_HPP(TextureInlet)
33 TextureInlet() =
delete;
34 ~TextureInlet()
override;
35 TextureInlet(
const TextureInlet&) =
delete;
43 VIRTUAL_CONSTEXPR Process::PortType type() const noexcept
override
45 return Process::PortType::Texture;
48 std::optional<QSize> renderSize() const noexcept;
49 void renderSizeChanged(
std::optional<QSize> sz) W_SIGNAL(renderSizeChanged, sz);
50 void setRenderSize(
std::optional<QSize> sz);
51 void unsetRenderSize();
55 renderSize W_READ renderSize W_WRITE setRenderSize W_NOTIFY renderSizeChanged)
57 INLINE_PROPERTY_VALUE(
58 std::optional<ossia::texture_format>, textureFormat, =
std::nullopt,
59 textureFormat, setTextureFormat, textureFormatChanged)
64 INLINE_PROPERTY_VALUE(
65 std::optional<ossia::texture_filter>, textureFilter, =
std::nullopt,
66 textureFilter, setTextureFilter, textureFilterChanged)
67 INLINE_PROPERTY_VALUE(
68 std::optional<ossia::texture_address_mode>, textureAddressMode, =
std::nullopt,
69 textureAddressMode, setTextureAddressMode, textureAddressModeChanged)
70 INLINE_PROPERTY_VALUE(
71 std::optional<ossia::texture_filter>, textureMipmapMode, =
std::nullopt,
72 textureMipmapMode, setTextureMipmapMode, textureMipmapModeChanged)
77 const isf::sampler_config* shaderSampler() const noexcept;
79 void setupExecution(ossia::inlet&, QObject* exec_context) const noexcept override;
82 std::optional<QSize> m_renderSize;
86class SCORE_PLUGIN_GFX_EXPORT TextureOutlet : public
Process::Outlet
88 W_OBJECT(TextureOutlet)
90 SCORE_SERIALIZE_FRIENDS
92 MODEL_METADATA_IMPL_HPP(TextureOutlet)
93 TextureOutlet() =
delete;
94 ~TextureOutlet()
override;
95 TextureOutlet(
const TextureOutlet&) =
delete;
103 VIRTUAL_CONSTEXPR Process::PortType type() const noexcept
override
105 return Process::PortType::Texture;
110 ossia::gfx::port_index graphicsPort() const noexcept;
113struct SCORE_PLUGIN_GFX_TEST_EXPORT TextureInletFactory final
114 : public Dataflow::AutomatablePortFactory
116 using Model_T = TextureInlet;
122 Model_T* load(
const VisitorVariant& vis, QObject* parent)
override
124 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
125 return new Model_T{deserializer, parent};
129 void setupInletInspector(
136 using Model_T = TextureOutlet;
142 Model_T* load(
const VisitorVariant& vis, QObject* parent)
override
144 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
145 return new Model_T{deserializer, parent};
149 void setupOutletInspector(
163 ,
Process::Port,
Gfx::GeometryOutlet, "848061c5-e8a0-4a13-9985-e8df30ce6d4f")
171 SCORE_SERIALIZE_FRIENDS
184 VIRTUAL_CONSTEXPR Process::PortType type()
const noexcept override
186 return Process::PortType::Geometry;
194 SCORE_SERIALIZE_FRIENDS
207 VIRTUAL_CONSTEXPR Process::PortType type()
const noexcept override
209 return Process::PortType::Geometry;
221 void setupInletInspector(
227 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
228 return new Model_T{deserializer, parent};
241 void setupOutletInspector(
247 return score::deserialize_dyn(vis, [&](
auto&& deserializer) {
248 return new Model_T{deserializer, parent};
254W_REGISTER_ARGTYPE(std::optional<QSize>);
255W_REGISTER_ARGTYPE(ossia::texture_format);
256W_REGISTER_ARGTYPE(std::optional<ossia::texture_format>);
257W_REGISTER_ARGTYPE(ossia::texture_filter);
258W_REGISTER_ARGTYPE(ossia::texture_address_mode);
259W_REGISTER_ARGTYPE(std::optional<ossia::texture_filter>);
260W_REGISTER_ARGTYPE(std::optional<ossia::texture_address_mode>);
263 Gfx, ChangeTextureInletRenderSize, TextureInlet::p_renderSize,
264 "Change render target size")
265SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletRenderSize)
268 Gfx, ChangeTextureInletFormat, TextureInlet::p_textureFormat,
269 "Change render target format")
270SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletFormat)
273 Gfx, ChangeTextureInletFilter, TextureInlet::p_textureFilter,
274 "Change render target filter")
275SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletFilter)
278 Gfx, ChangeTextureInletAddressMode, TextureInlet::p_textureAddressMode,
279 "Change render target address mode")
280SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletAddressMode)
283 Gfx, ChangeTextureInletMipmapMode, TextureInlet::p_textureMipmapMode,
284 "Change render target mipmap mode")
285SCORE_COMMAND_DECL_T(
Gfx::ChangeTextureInletMipmapMode)
Definition DataStreamVisitor.hpp:202
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:37
Definition TexturePort.hpp:168
Definition TexturePort.hpp:191
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:214
Definition TexturePort.hpp:234
The VisitorVariant struct.
Definition VisitorInterface.hpp:26
Definition DocumentContext.hpp:18