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.");
}
[[nodiscard]] int SizeFromTag(SizeTag tag) {
[[nodiscard]] int EmojiSizeFromTag(SizeTag tag) {
switch (tag) {
case SizeTag::Normal: return Ui::Emoji::GetSizeNormal();
case SizeTag::Large: return Ui::Emoji::GetSizeLarge();
@ -49,6 +49,12 @@ using SizeTag = CustomEmojiManager::SizeTag;
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
class CustomEmojiLoader final
@ -220,9 +226,10 @@ void CustomEmojiLoader::startCacheLookup(
lookup->process = std::make_unique<Process>(Process{
.loaded = std::move(loaded),
});
const auto size = SizeFromTag(_tag);
const auto weak = base::make_weak(&lookup->process->guard);
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 {
lookupDone(lookup, std::move(result));
});
@ -297,7 +304,7 @@ void CustomEmojiLoader::check() {
.generator = std::move(generator),
.put = std::move(put),
.loader = std::move(loader),
.size = SizeFromTag(_tag),
.size = size,
});
base::take(load->process)->loaded(Caching{
std::move(renderer),

View File

@ -79,15 +79,17 @@ void Preview::paintPath(
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)) {
return {};
}
auto header = CacheHeader();
memcpy(&header, serialized.data(), sizeof(header));
const auto size = header.size;
if (size <= 0
|| size > kMaxSize
if (size != requestedSize
|| header.frames <= 0
|| header.frames >= kMaxFrames
|| header.length <= 0

View File

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

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