From 3c645c8ea0e9f8b9afacc7918724e93276bf3ac6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 2 Nov 2023 13:33:31 +0400 Subject: [PATCH] Support internal static custom emoji. --- ui/text/custom_emoji_instance.cpp | 29 +++++++++++++++++++++++++++++ ui/text/custom_emoji_instance.h | 17 +++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/ui/text/custom_emoji_instance.cpp b/ui/text/custom_emoji_instance.cpp index 65621cd..aadedce 100644 --- a/ui/text/custom_emoji_instance.cpp +++ b/ui/text/custom_emoji_instance.cpp @@ -858,4 +858,33 @@ void Object::repaint() { _repaint(); } +Internal::Internal(QString entityData, QImage image, bool colored) +: _entityData(std::move(entityData)) +, _image(std::move(image)) +, _colored(colored) { +} + +QString Internal::entityData() { + return _entityData; +} + +void Internal::paint(QPainter &p, const Context &context) { + context.internal.colorized = _colored; + + const auto size = _image.size() / style::DevicePixelRatio(); + const auto rect = QRect(context.position, size); + PaintScaledImage(p, rect, { &_image }, context); +} + +void Internal::unload() { +} + +bool Internal::ready() { + return true; +} + +bool Internal::readyInDefaultState() { + return true; +} + } // namespace Ui::CustomEmoji diff --git a/ui/text/custom_emoji_instance.h b/ui/text/custom_emoji_instance.h index c86010e..6e08bc1 100644 --- a/ui/text/custom_emoji_instance.h +++ b/ui/text/custom_emoji_instance.h @@ -273,4 +273,21 @@ private: }; +class Internal final : public Ui::Text::CustomEmoji { +public: + Internal(QString entityData, QImage image, bool colored); + + QString entityData() override; + void paint(QPainter &p, const Context &context) override; + void unload() override; + bool ready() override; + bool readyInDefaultState() override; + +private: + const QString _entityData; + const QImage _image; + const bool _colored = false; + +}; + } // namespace Ui::CustomEmoji