diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-04-21 03:46:58 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-04-21 03:50:59 +0200 |
commit | 09a8ade6becca2a71f45ff0db5f4bf6d64afb212 (patch) | |
tree | 3cc733a5af1323c57f7dc4c18747ae0c7de78be6 /src/ResourceCache.cpp | |
parent | de059e317e43fa1b94d77fd981be68b86bf6de6e (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.cpp | 25 |
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; + } } |