lxgui
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 
7 namespace lxgui::gui {
8 
10  object_registry_(&object_registry) {}
11 
12 std::vector<utils::observer_ptr<const region>>
13 virtual_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