aboutsummaryrefslogtreecommitdiff
path: root/src/ResourceCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ResourceCache.cpp')
-rw-r--r--src/ResourceCache.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/ResourceCache.cpp b/src/ResourceCache.cpp
new file mode 100644
index 0000000..474360c
--- /dev/null
+++ b/src/ResourceCache.cpp
@@ -0,0 +1,29 @@
+#include "../include/ResourceCache.hpp"
+#include <unordered_map>
+#include <stdexcept>
+
+using namespace std;
+
+namespace dchat
+{
+ unordered_map<string, sf::Font*> fonts;
+
+ const sf::Font& ResourceCache::getFont(const string &filepath)
+ {
+ auto it = fonts.find(filepath);
+ if(it != fonts.end())
+ return *it->second;
+
+ sf::Font *font = new sf::Font();
+ if(!font->loadFromFile(filepath))
+ {
+ delete font;
+ string errMsg = "Failed to load font: ";
+ errMsg += filepath;
+ throw runtime_error(errMsg);
+ }
+
+ fonts[filepath] = font;
+ return *font;
+ }
+}