From 66ee29df9c19e35b4c126e12e48bc144fe72eb22 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 6 Oct 2022 07:11:48 +0200 Subject: a --- loader-impl.cpp | 89 --------------------------------------------------------- 1 file changed, 89 deletions(-) delete mode 100644 loader-impl.cpp (limited to 'loader-impl.cpp') diff --git a/loader-impl.cpp b/loader-impl.cpp deleted file mode 100644 index 24d43fdb..00000000 --- a/loader-impl.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include "loader.hpp" -#include "tile-atlas.hpp" -#include "compat/assert.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Magnum::Examples { - -struct loader_impl final : loader_ -{ - std::optional shader_res; - PluginManager::Manager importer_plugins; - Containers::Pointer tga_importer = - importer_plugins.loadAndInstantiate("AnyImageImporter"); - - PluginManager::Manager image_converter_plugins; - Containers::Pointer tga_converter = - image_converter_plugins.loadAndInstantiate("AnyImageConverter"); - - std::unordered_map> atlas_map; - - std::string shader(const Containers::StringView& filename) override; - Trade::ImageData2D tile_texture(const Containers::StringView& filename) override; - std::shared_ptr tile_atlas(const Containers::StringView& filename, Vector2i size) override; - - explicit loader_impl(); - ~loader_impl() override; -}; - -std::string loader_impl::shader(const Containers::StringView& filename) -{ - if (!shader_res) - shader_res = std::make_optional("game/shaders"); - auto ret = shader_res->getString(filename); - if (ret.isEmpty()) - ABORT("can't find shader resource '%s'", filename.cbegin()); - return ret; -} - -std::shared_ptr loader_impl::tile_atlas(const Containers::StringView& name, Vector2i size) -{ - auto it = atlas_map.find(name); - if (it != atlas_map.end()) - return it->second; - auto image = tile_texture(name); - auto atlas = std::make_shared(name, image, size); - atlas_map[name] = atlas; - return atlas; -} - -Trade::ImageData2D loader_impl::tile_texture(const Containers::StringView& filename) -{ - if(!tga_importer || !tga_importer->openFile(filename)) - ABORT("can't open tile image '%s'", filename.cbegin()); - auto img = tga_importer->image2D(0); - if (!img) - ABORT("can't allocate tile image for '%s'", filename.cbegin()); - auto ret = std::move(*img); - return ret; -} - -void loader_::destroy() -{ - loader.~loader_(); - new (&loader) loader_impl(); -} - -loader_impl::loader_impl() = default; -loader_impl::~loader_impl() = default; - -static loader_& make_default_loader() -{ - static loader_impl loader_singleton{}; - return loader_singleton; -} - -// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) -loader_& loader = make_default_loader(); - -} // namespace Magnum::Examples -- cgit v1.2.3