diff options
Diffstat (limited to 'src/Text.cpp')
-rw-r--r-- | src/Text.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Text.cpp b/src/Text.cpp index 204c16f..3cafc69 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -347,16 +347,22 @@ namespace dchat { if(imageByUrlResult.isGif) { + auto gifSize = imageByUrlResult.gif->getSize(); + float widthToHeightRatio = (float)gifSize.x / (float)gifSize.y; + imageByUrlResult.gif->setPosition(pos); - imageByUrlResult.gif->setSize(size); + imageByUrlResult.gif->setScale(sf::Vector2f(size.x / (float)gifSize.x * widthToHeightRatio, size.y / (float)gifSize.y)); imageByUrlResult.gif->draw(target); } else { + auto textureSize = imageByUrlResult.texture->getSize(); + float widthToHeightRatio = (float)textureSize.x / (float)textureSize.y; + // TODO: Store this sprite somewhere, might not be efficient to create a new sprite object every frame sf::Sprite sprite(*imageByUrlResult.texture); sprite.setPosition(pos); - sprite.setScale(size.x / (float)imageByUrlResult.texture->getSize().x, size.y / (float)imageByUrlResult.texture->getSize().y); + sprite.setScale(size.x / (float)textureSize.x * widthToHeightRatio, size.y / (float)textureSize.y); target.draw(sprite); } } |