diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-08-08 23:17:10 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-08-08 23:17:14 +0200 |
commit | 06f30543730c372226c398c11b3de0213d711d13 (patch) | |
tree | d6229ff224a9e7e5457c856747c2f8726e7a3868 /src/ResourceCache.cpp | |
parent | 26edc563cb0ba1a9fb35507e7f32d2d43a845e68 (diff) |
Add support for discord
Diffstat (limited to 'src/ResourceCache.cpp')
-rw-r--r-- | src/ResourceCache.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/ResourceCache.cpp b/src/ResourceCache.cpp index 4664bf0..f6f8fad 100644 --- a/src/ResourceCache.cpp +++ b/src/ResourceCache.cpp @@ -1,5 +1,6 @@ #include "../include/ResourceCache.hpp" #include <unordered_map> +#include <gd.h> using namespace std; @@ -33,6 +34,29 @@ namespace dchat auto it = textures.find(filepath); if(it != textures.end()) return it->second; + + gdImagePtr imgPtr = gdImageCreateFromFile(filepath.c_str()); + if(!imgPtr) + { + string errMsg = "Failed to load texture with gd: "; + errMsg += filepath; + throw FailedToLoadResourceException(errMsg); + } + + gdImageSetInterpolationMethod(imgPtr, GD_BILINEAR_FIXED); + gdImagePtr newImgPtr = gdImageScale(imgPtr, 100, 100); + if(!newImgPtr) + { + gdImageDestroy(imgPtr); + string errMsg = "Failed to scale image with gd: "; + errMsg += filepath; + throw FailedToLoadResourceException(errMsg); + } + + gdImageFile(newImgPtr, filepath.c_str()); + + gdImageDestroy(imgPtr); + gdImageDestroy(newImgPtr); sf::Texture *texture = new sf::Texture(); if(!texture->loadFromFile(filepath)) |