31 std::unique_ptr<score::gfx::BackgroundNode> m_node;
35 ossia::net::parameter_base* size_param{};
36 ossia::net::parameter_base* rendersize_param{};
41 : ossia::net::device_base{std::move(proto)}
42 , m_node{std::make_unique<score::gfx::BackgroundNode>()}
43 , m_root{*
this, *
static_cast<gfx_protocol_base*
>(m_protocol.get()), m_node.get(), name}
45 this->m_capabilities.change_tree =
true;
46 m_node->shared_readback = std::make_shared<QRhiReadbackResult>();
49 auto size_node = std::make_unique<ossia::net::generic_node>(
"size", *
this, m_root);
50 size_param = size_node->create_parameter(ossia::val_type::VEC2F);
51 size_param->push_value(ossia::vec2f{1280.f, 720.f});
52 m_node->setSize(QSize{1280, 720});
53 size_param->add_callback([
this](
const ossia::value& v) {
54 if(
auto val = v.target<ossia::vec2f>())
56 ossia::qt::run_async(&m_qtContext, [node = m_node.get(), v = *val] {
57 node->setSize({(int)v[0], (int)v[1]});
61 m_root.add_child(std::move(size_node));
66 = std::make_unique<ossia::net::generic_node>(
"rendersize", *
this, m_root);
67 ossia::net::set_description(
68 *size_node,
"Set to [0, 0] to use the viewport's size");
69 rendersize_param = size_node->create_parameter(ossia::val_type::VEC2F);
70 rendersize_param->push_value(ossia::vec2f{0.f, 0.f});
71 rendersize_param->add_callback([
this](
const ossia::value& v) {
72 if(
auto val = v.target<ossia::vec2f>())
74 ossia::qt::run_async(&m_qtContext, [node = m_node.get(), v = *val] {
75 node->setRenderSize({(int)v[0], (int)v[1]});
79 m_root.add_child(std::move(size_node));
84 auto node = std::make_unique<ossia::net::generic_node>(
"cursor", *
this, m_root);
86 auto gl_node = std::make_unique<ossia::net::generic_node>(
"gl", *
this, *node);
87 auto gl = gl_node->create_parameter(ossia::val_type::VEC2F);
88 gl->set_domain(ossia::make_domain(0.f, 1.f));
89 gl->push_value(ossia::vec2f{0.f, 0.f});
90 node->add_child(std::move(gl_node));
92 m_pointers.add_clip(*
this, *node);
93 m_root.add_child(std::move(node));
96 *
this, m_root,
static_cast<gfx_protocol_base*
>(m_protocol.get())->context);
107 if(
auto* proto =
static_cast<gfx_protocol_base*
>(m_protocol.get());
108 proto && proto->context && proto->context->ui)
109 proto->context->ui->destroyOutput(m_node.get());
112 m_root.clear_children();
120 const gfx_node_base& get_root_node()
const override {
return m_root; }
121 gfx_node_base& get_root_node()
override {
return m_root; }