From b6fafdd8f7615d3ea7b615f1b8164872afefccf8 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 15 Sep 2021 17:48:48 +0300 Subject: [PATCH] Limit emoji size to half of sticker size. --- .../history/view/media/history_view_dice.cpp | 4 +-- .../media/history_view_media_unwrapped.cpp | 3 +- .../view/media/history_view_slot_machine.cpp | 4 +-- .../view/media/history_view_sticker.cpp | 30 +++++++------------ .../history/view/media/history_view_sticker.h | 7 ++--- Telegram/SourceFiles/ui/chat/chat.style | 3 +- 6 files changed, 18 insertions(+), 33 deletions(-) diff --git a/Telegram/SourceFiles/history/view/media/history_view_dice.cpp b/Telegram/SourceFiles/history/view/media/history_view_dice.cpp index 83f67f71ed..08b5d3afb7 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_dice.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_dice.cpp @@ -46,9 +46,7 @@ Dice::Dice(not_null parent, not_null dice) Dice::~Dice() = default; QSize Dice::size() { - return _start - ? _start->size() - : Sticker::GetAnimatedEmojiSize(&_parent->history()->session()); + return _start ? _start->size() : Sticker::EmojiSize(); } ClickHandlerPtr Dice::link() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp index bdd3c5431c..2b7280812b 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_media_unwrapped.h" #include "history/view/media/history_view_media_common.h" +#include "history/view/media/history_view_sticker.h" #include "history/view/history_view_element.h" #include "history/view/history_view_cursor_state.h" #include "history/history_item.h" @@ -42,7 +43,7 @@ QSize UnwrappedMedia::countOptimalSize() { _content->refreshLink(); _contentSize = NonEmptySize(DownscaledSize( _content->size(), - { st::maxStickerSize, st::maxStickerSize })); + Sticker::Size())); auto maxWidth = _contentSize.width(); const auto minimal = st::largeEmojiSize + 2 * st::largeEmojiOutline; auto minHeight = std::max(_contentSize.height(), minimal); diff --git a/Telegram/SourceFiles/history/view/media/history_view_slot_machine.cpp b/Telegram/SourceFiles/history/view/media/history_view_slot_machine.cpp index 2b8d88c461..c6b26a1b73 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_slot_machine.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_slot_machine.cpp @@ -139,9 +139,7 @@ bool SlotMachine::isEndResolved() const { } QSize SlotMachine::size() { - return _pull - ? _pull->size() - : Sticker::GetAnimatedEmojiSize(&_parent->history()->session()); + return _pull ? _pull->size() : Sticker::EmojiSize(); } ClickHandlerPtr SlotMachine::link() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp index 0bdc3dfe87..1241a59d7a 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp @@ -37,11 +37,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace HistoryView { namespace { -[[nodiscard]] double GetEmojiStickerZoom(not_null session) { - return session->account().appConfig().get( - "emojies_animated_zoom", - 0.625); -} +constexpr auto kMaxSizeFixed = 512; +constexpr auto kMaxEmojiSizeFixed = 256; [[nodiscard]] QImage CacheDiceImage( const QString &emoji, @@ -97,16 +94,13 @@ bool Sticker::isEmojiSticker() const { } void Sticker::initSize() { - _size = _data->dimensions; if (isEmojiSticker() || _diceIndex >= 0) { - _size = GetAnimatedEmojiSize(&_data->session(), _size); + _size = Sticker::EmojiSize(); if (_diceIndex > 0) { [[maybe_unused]] bool result = readyToDrawLottie(); } } else { - _size = DownscaledSize( - _size, - { st::maxStickerSize, st::maxStickerSize }); + _size = DownscaledSize(_data->dimensions, Sticker::Size()); } } @@ -135,18 +129,14 @@ bool Sticker::readyToDrawLottie() { return (_lottie && _lottie->ready()); } -QSize Sticker::GetAnimatedEmojiSize(not_null session) { - return GetAnimatedEmojiSize(session, { 512, 512 }); +QSize Sticker::Size() { + const auto side = std::min(st::maxStickerSize, kMaxSizeFixed); + return { side, side }; } -QSize Sticker::GetAnimatedEmojiSize( - not_null session, - QSize documentSize) { - const auto zoom = GetEmojiStickerZoom(session); - const auto convert = [&](int size) { - return int(size * st::maxStickerSize * zoom / kStickerSideSize); - }; - return { convert(documentSize.width()), convert(documentSize.height()) }; +QSize Sticker::EmojiSize() { + const auto side = std::min(st::maxAnimatedEmojiSize, kMaxEmojiSizeFixed); + return { side, side }; } void Sticker::draw( diff --git a/Telegram/SourceFiles/history/view/media/history_view_sticker.h b/Telegram/SourceFiles/history/view/media/history_view_sticker.h index 8b496e83bc..0e28d26248 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_sticker.h +++ b/Telegram/SourceFiles/history/view/media/history_view_sticker.h @@ -78,11 +78,8 @@ public: } [[nodiscard]] bool readyToDrawLottie(); - [[nodiscard]] static QSize GetAnimatedEmojiSize( - not_null session); - [[nodiscard]] static QSize GetAnimatedEmojiSize( - not_null session, - QSize documentSize); + [[nodiscard]] static QSize Size(); + [[nodiscard]] static QSize EmojiSize(); private: [[nodiscard]] bool isEmojiSticker() const; diff --git a/Telegram/SourceFiles/ui/chat/chat.style b/Telegram/SourceFiles/ui/chat/chat.style index 5d6d2ed175..c7bdbc5262 100644 --- a/Telegram/SourceFiles/ui/chat/chat.style +++ b/Telegram/SourceFiles/ui/chat/chat.style @@ -37,7 +37,8 @@ defaultMessageBar: MessageBar { minPhotoSize: 100px; minVideoSize: 160px; maxMediaSize: 430px; -maxStickerSize: 228px; +maxStickerSize: 224px; +maxAnimatedEmojiSize: 112px; maxGifSize: 320px; maxVideoMessageSize: 240px; maxSignatureSize: 144px;