#include "../include/MessagePart.hpp" #include "../include/ResourceCache.hpp" #include "../include/Settings.hpp" using namespace std; namespace dchat { const float MESSAGE_PART_SIZE = 27; float MessagePart::getSizeScaled() { return MESSAGE_PART_SIZE * Settings::getScaling(); } MessagePartText::MessagePartText(const string &_text) : MessagePart(Type::TEXT), text("", ResourceCache::getFont("fonts/Roboto-Regular.ttf"), MessagePartText::getFontSizeScaled()) { text.setString(sf::String::fromUtf8(_text.begin(), _text.end())); } float MessagePartText::getFontSizeScaled() { return MessagePart::getSizeScaled() * 0.8f; } sf::Vector2f MessagePartText::getPosition() const { return text.getPosition(); } sf::Vector2f MessagePartText::getSize() const { return sf::Vector2f(text.getLocalBounds().width, getFontSizeScaled()); } MessagePartEmoji::MessagePartEmoji(const string &_url) : MessagePart(Type::EMOJI), url(_url) { } float MessagePartEmoji::getHeightScaled() { return MessagePart::getSizeScaled() * 1.0f; } sf::Vector2f MessagePartEmoji::getPosition() const { return sprite.getPosition(); } sf::Vector2f MessagePartEmoji::getSize() const { auto spriteScale = sprite.getScale(); auto textureSize = sprite.getTexture()->getSize(); return { (float)textureSize.x * spriteScale.x, (float)textureSize.y * spriteScale.y }; } }