#include "FontRegistry.hpp" #include namespace frame::font { std::shared_ptr GetFont(std::string_view name) { return Service::get()->Get(name); } bool LoadFont(std::string_view name) { return Service::get()->Load(name); } FontRegistry::FontRegistry() : IService("FontRegistry") { } bool FontRegistry::Load(std::string_view name) { if(fonts.find(std::string{name}) != fonts.end()) { fmt::print("Font {} allready loaded!\n", name); return true; } else { fmt::print("Loading font \"{}\": ", name); auto ptr = Font::LoadFromFile(fmt::format("{}.json", name)); if(ptr == nullptr) { fmt::print("Error not found!\n"); } else { fonts[std::string{name}] = ptr; fmt::print("OK\n"); return true; } } return false; } std::shared_ptr FontRegistry::Get(std::string_view name) { auto it = fonts.find({std::string{name}}); if(it == fonts.end()) { if(!Load(name)) return nullptr; it = fonts.find({std::string{name}}); } return it->second; } } // namespace frame::font