#pragma once #include "messages/message.hpp" #include #include namespace chatterino { namespace messages { class MessageRef; typedef std::shared_ptr SharedMessageRef; class MessageRef { public: MessageRef(SharedMessage message); Message *getMessage(); int getHeight() const; bool layout(int width, bool enableEmoteMargins = true); const std::vector &getWordParts() const; std::shared_ptr buffer = nullptr; bool updateBuffer = false; const messages::Word *tryGetWordPart(QPoint point); int getSelectionIndex(QPoint position); private: // variables SharedMessage _message; std::vector _wordParts; int _height = 0; int _currentLayoutWidth = -1; int _fontGeneration = -1; /* TODO(pajlada): Re-implement int _emoteGeneration = -1; */ Word::Type _currentWordTypes = Word::None; // methods void alignWordParts(int lineStart, int lineHeight, int width); }; } // namespace messages } // namespace chatterino