summaryrefslogtreecommitdiffhomepage
path: root/src/loader.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/loader.hpp')
-rw-r--r--src/loader.hpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/loader.hpp b/src/loader.hpp
new file mode 100644
index 00000000..49299bb6
--- /dev/null
+++ b/src/loader.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <Corrade/Containers/StringView.h>
+#include <Magnum/Trade/ImageData.h>
+
+#include <string>
+#include <optional>
+#include <memory>
+
+namespace Magnum::Examples {
+
+struct tile_atlas;
+
+struct loader_
+{
+ virtual std::string shader(Containers::StringView filename) = 0;
+ virtual Trade::ImageData2D tile_texture(Containers::StringView filename) = 0;
+ virtual std::shared_ptr<struct tile_atlas> tile_atlas(Containers::StringView filename, Vector2ui size) = 0;
+ static void destroy();
+
+ loader_(const loader_&) = delete;
+ loader_& operator=(const loader_&) = delete;
+
+ virtual ~loader_();
+
+protected:
+ loader_();
+};
+
+extern loader_& loader; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
+
+} // namespace Magnum::Examples