Make custom emoji size 12% larger.

This commit is contained in:
John Preston 2022-07-06 12:20:51 +04:00
parent c1cdca36d2
commit e954871cb9
4 changed files with 18 additions and 8 deletions

View file

@ -41,7 +41,7 @@ using SizeTag = CustomEmojiManager::SizeTag;
Unexpected("SizeTag value in CustomEmojiManager-LottieSizeFromTag."); Unexpected("SizeTag value in CustomEmojiManager-LottieSizeFromTag.");
} }
[[nodiscard]] int SizeFromTag(SizeTag tag) { [[nodiscard]] int EmojiSizeFromTag(SizeTag tag) {
switch (tag) { switch (tag) {
case SizeTag::Normal: return Ui::Emoji::GetSizeNormal(); case SizeTag::Normal: return Ui::Emoji::GetSizeNormal();
case SizeTag::Large: return Ui::Emoji::GetSizeLarge(); case SizeTag::Large: return Ui::Emoji::GetSizeLarge();
@ -49,6 +49,12 @@ using SizeTag = CustomEmojiManager::SizeTag;
Unexpected("SizeTag value in CustomEmojiManager-SizeFromTag."); Unexpected("SizeTag value in CustomEmojiManager-SizeFromTag.");
} }
[[nodiscard]] int SizeFromTag(SizeTag tag) {
const auto emoji = EmojiSizeFromTag(tag);
const auto factor = style::DevicePixelRatio();
return Ui::Text::AdjustCustomEmojiSize(emoji / factor) * factor;
}
} // namespace } // namespace
class CustomEmojiLoader final class CustomEmojiLoader final
@ -220,9 +226,10 @@ void CustomEmojiLoader::startCacheLookup(
lookup->process = std::make_unique<Process>(Process{ lookup->process = std::make_unique<Process>(Process{
.loaded = std::move(loaded), .loaded = std::move(loaded),
}); });
const auto size = SizeFromTag(_tag);
const auto weak = base::make_weak(&lookup->process->guard); const auto weak = base::make_weak(&lookup->process->guard);
document->owner().cacheBigFile().get(key, [=](QByteArray value) { document->owner().cacheBigFile().get(key, [=](QByteArray value) {
auto cache = Ui::CustomEmoji::Cache::FromSerialized(value); auto cache = Ui::CustomEmoji::Cache::FromSerialized(value, size);
crl::on_main(weak, [=, result = std::move(cache)]() mutable { crl::on_main(weak, [=, result = std::move(cache)]() mutable {
lookupDone(lookup, std::move(result)); lookupDone(lookup, std::move(result));
}); });
@ -297,7 +304,7 @@ void CustomEmojiLoader::check() {
.generator = std::move(generator), .generator = std::move(generator),
.put = std::move(put), .put = std::move(put),
.loader = std::move(loader), .loader = std::move(loader),
.size = SizeFromTag(_tag), .size = size,
}); });
base::take(load->process)->loaded(Caching{ base::take(load->process)->loaded(Caching{
std::move(renderer), std::move(renderer),

View file

@ -79,15 +79,17 @@ void Preview::paintPath(
Cache::Cache(int size) : _size(size) { Cache::Cache(int size) : _size(size) {
} }
std::optional<Cache> Cache::FromSerialized(const QByteArray &serialized) { std::optional<Cache> Cache::FromSerialized(
const QByteArray &serialized,
int requestedSize) {
Expects(requestedSize > 0 && requestedSize <= kMaxSize);
if (serialized.size() <= sizeof(CacheHeader)) { if (serialized.size() <= sizeof(CacheHeader)) {
return {}; return {};
} }
auto header = CacheHeader(); auto header = CacheHeader();
memcpy(&header, serialized.data(), sizeof(header)); memcpy(&header, serialized.data(), sizeof(header));
const auto size = header.size; const auto size = header.size;
if (size <= 0 if (size != requestedSize
|| size > kMaxSize
|| header.frames <= 0 || header.frames <= 0
|| header.frames >= kMaxFrames || header.frames >= kMaxFrames
|| header.length <= 0 || header.length <= 0

View file

@ -66,7 +66,8 @@ public:
}; };
[[nodiscard]] static std::optional<Cache> FromSerialized( [[nodiscard]] static std::optional<Cache> FromSerialized(
const QByteArray &serialized); const QByteArray &serialized,
int requestedSize);
[[nodiscard]] QByteArray serialize(); [[nodiscard]] QByteArray serialize();
[[nodiscard]] int size() const; [[nodiscard]] int size() const;

@ -1 +1 @@
Subproject commit 2bec77825150094d248528f40341c6aef16e810a Subproject commit d7318d849ef89873a1b4f78f23e471555061921b