28 std::unique_ptr<score::gfx::BackgroundNode> m_node;
32 ossia::net::parameter_base* size_param{};
33 ossia::net::parameter_base* rendersize_param{};
37 : ossia::net::device_base{std::move(proto)}
38 , m_node{std::make_unique<score::gfx::BackgroundNode>()}
39 , m_root{*
this, *
static_cast<gfx_protocol_base*
>(m_protocol.get()), m_node.get(), name}
41 this->m_capabilities.change_tree =
true;
42 m_node->shared_readback = std::make_shared<QRhiReadbackResult>();
45 auto size_node = std::make_unique<ossia::net::generic_node>(
"size", *
this, m_root);
46 size_param = size_node->create_parameter(ossia::val_type::VEC2F);
47 size_param->push_value(ossia::vec2f{1280.f, 720.f});
48 m_node->setSize(QSize{1280, 720});
49 size_param->add_callback([
this](
const ossia::value& v) {
50 if(
auto val = v.target<ossia::vec2f>())
52 ossia::qt::run_async(&m_qtContext, [node = m_node.get(), v = *val] {
53 node->setSize({(int)v[0], (int)v[1]});
57 m_root.add_child(std::move(size_node));
62 = std::make_unique<ossia::net::generic_node>(
"rendersize", *
this, m_root);
63 ossia::net::set_description(
64 *size_node,
"Set to [0, 0] to use the viewport's size");
65 rendersize_param = size_node->create_parameter(ossia::val_type::VEC2F);
66 rendersize_param->push_value(ossia::vec2f{0.f, 0.f});
67 rendersize_param->add_callback([
this](
const ossia::value& v) {
68 if(
auto val = v.target<ossia::vec2f>())
70 ossia::qt::run_async(&m_qtContext, [node = m_node.get(), v = *val] {
71 node->setRenderSize({(int)v[0], (int)v[1]});
75 m_root.add_child(std::move(size_node));
87 if(
auto* proto =
static_cast<gfx_protocol_base*
>(m_protocol.get());
88 proto && proto->context && proto->context->ui)
89 proto->context->ui->destroyOutput(m_node.get());
92 m_root.clear_children();
100 const gfx_node_base& get_root_node()
const override {
return m_root; }
101 gfx_node_base& get_root_node()
override {
return m_root; }