lxgui
Loading...
Searching...
No Matches
gui_virtual_registry.cpp
1#include "lxgui/gui_virtual_registry.hpp"
2
3#include "lxgui/gui_out.hpp"
4#include "lxgui/gui_region.hpp"
5#include "lxgui/utils_string.hpp"
6
7namespace lxgui::gui {
8
10 object_registry_(&object_registry) {}
11
12std::vector<utils::observer_ptr<const region>>
13virtual_registry::get_virtual_region_list(std::string_view names) const {
14 std::vector<utils::observer_ptr<const region>> inheritance;
15 for (auto parent : utils::cut(names, ",")) {
16 parent = utils::trim(parent, ' ');
17 if (utils::has_no_content(parent))
18 continue;
19
20 utils::observer_ptr<const region> obj = get_region_by_name(parent);
21
22 if (!obj) {
23 bool exists_non_virtual = object_registry_->get_region_by_name(parent) != nullptr;
24
25 gui::out << gui::warning << "gui::manager: "
26 << "Cannot find inherited object \"" << parent << "\""
27 << std::string(exists_non_virtual ? " (object is not virtual)" : "")
28 << ". Inheritance skipped." << std::endl;
29
30 continue;
31 }
32
33 inheritance.push_back(std::move(obj));
34 }
35
36 return inheritance;
37}
38
39} // namespace lxgui::gui
Keeps track of created UI objects and records their names for lookup.
utils::observer_ptr< const region > get_region_by_name(std::string_view name) const
Returns the region associated with the given name.
virtual_registry(const registry &object_registry)
std::vector< utils::observer_ptr< const region > > get_virtual_region_list(std::string_view names) const
Return a list of virtual regions matching the provided comma-separated list.
std::ostream out
const std::string warning
Definition gui_out.cpp:6