aboutsummaryrefslogtreecommitdiff
path: root/src/ResourceCache.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-04-21 03:46:58 +0200
committerdec05eba <dec05eba@protonmail.com>2018-04-21 03:50:59 +0200
commit09a8ade6becca2a71f45ff0db5f4bf6d64afb212 (patch)
tree3cc733a5af1323c57f7dc4c18747ae0c7de78be6 /src/ResourceCache.cpp
parentde059e317e43fa1b94d77fd981be68b86bf6de6e (diff)
Add support for static image emoji
Emoji are downloaded asynchronously using remote program (curl). Need to add support for converting [inline](url) chat message emoji and gifs.
Diffstat (limited to 'src/ResourceCache.cpp')
-rw-r--r--src/ResourceCache.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/ResourceCache.cpp b/src/ResourceCache.cpp
index 474360c..4bdd75d 100644
--- a/src/ResourceCache.cpp
+++ b/src/ResourceCache.cpp
@@ -1,12 +1,12 @@
#include "../include/ResourceCache.hpp"
#include <unordered_map>
-#include <stdexcept>
using namespace std;
namespace dchat
{
unordered_map<string, sf::Font*> fonts;
+ unordered_map<string, sf::Texture*> textures;
const sf::Font& ResourceCache::getFont(const string &filepath)
{
@@ -20,10 +20,31 @@ namespace dchat
delete font;
string errMsg = "Failed to load font: ";
errMsg += filepath;
- throw runtime_error(errMsg);
+ throw FailedToLoadResourceException(errMsg);
}
fonts[filepath] = font;
return *font;
}
+
+ const sf::Texture* ResourceCache::getTexture(const string &filepath)
+ {
+ auto it = textures.find(filepath);
+ if(it != textures.end())
+ return it->second;
+
+ sf::Texture *texture = new sf::Texture();
+ if(!texture->loadFromFile(filepath))
+ {
+ delete texture;
+ string errMsg = "Failed to load texture: ";
+ errMsg += filepath;
+ throw FailedToLoadResourceException(errMsg);
+ }
+
+ texture->setSmooth(true);
+ texture->generateMipmap();
+ textures[filepath] = texture;
+ return texture;
+ }
}