2#ifndef LIBSBX_UI_CANVAS_HPP_
3#define LIBSBX_UI_CANVAS_HPP_
8#include <libsbx/math/vector2.hpp>
10#include <libsbx/sprites/sprites_module.hpp>
12#include <libsbx/ui/element.hpp>
20 bool is_enabled{
true};
30 [[nodiscard]]
auto root() ->
element&;
32 [[nodiscard]]
auto root()
const ->
const element&;
34 template<
typename Type>
35 requires (std::is_base_of_v<ui::element, Type>)
36 auto create(
element& parent) -> Type& {
37 auto child = std::make_unique<Type>();
38 return static_cast<Type&
>(parent.add_child(std::move(child)));
41 template<
typename Type>
42 requires (std::is_base_of_v<ui::element, Type>)
43 auto create() -> Type& {
44 return create<Type>(*_root);
47 template<
typename Type,
typename... Args>
48 requires (std::is_base_of_v<ui::layout, Type>)
49 auto set_layout(Args&&... args) -> Type& {
50 auto layout = std::make_unique<Type>(std::forward<Args>(args)...);
53 _root->_layout = std::move(
layout);
60 auto process_input(
const math::vector2& mouse_position,
bool is_down,
bool was_down) -> void;
62 auto submit() -> void;
66 std::unique_ptr<element> _root;
A vector in two-dimensional space.
Definition: vector2.hpp:28
Definition: canvas.hpp:16
Definition: element.hpp:22
Definition: layout.hpp:39