mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-04-23 23:56:13 +00:00
Save sticker path thumbnails to local storage.
This commit is contained in:
parent
4124c2eb57
commit
01b4a24ac7
@ -18,7 +18,7 @@ namespace Serialize {
|
||||
namespace {
|
||||
|
||||
constexpr auto kVersionTag = int32(0x7FFFFFFF);
|
||||
constexpr auto kVersion = 1;
|
||||
constexpr auto kVersion = 2;
|
||||
|
||||
enum StickerSetType {
|
||||
StickerSetTypeEmpty = 0,
|
||||
@ -54,7 +54,10 @@ void Document::writeToStream(QDataStream &stream, DocumentData *document) {
|
||||
writeImageLocation(stream, document->thumbnailLocation());
|
||||
stream << qint32(document->thumbnailByteSize());
|
||||
writeImageLocation(stream, document->videoThumbnailLocation());
|
||||
stream << qint32(document->videoThumbnailByteSize());
|
||||
stream
|
||||
<< qint32(document->videoThumbnailByteSize())
|
||||
<< qint32(document->inlineThumbnailIsPath() ? 1 : 0)
|
||||
<< document->inlineThumbnailBytes();
|
||||
}
|
||||
|
||||
DocumentData *Document::readFromStreamHelper(
|
||||
@ -124,11 +127,16 @@ DocumentData *Document::readFromStreamHelper(
|
||||
}
|
||||
std::optional<ImageLocation> videoThumb;
|
||||
qint32 thumbnailByteSize = 0, videoThumbnailByteSize = 0;
|
||||
qint32 inlineThumbnailIsPath = 0;
|
||||
QByteArray inlineThumbnailBytes;
|
||||
const auto thumb = readImageLocation(streamAppVersion, stream);
|
||||
if (version >= 1) {
|
||||
stream >> thumbnailByteSize;
|
||||
videoThumb = readImageLocation(streamAppVersion, stream);
|
||||
stream >> videoThumbnailByteSize;
|
||||
if (version >= 2) {
|
||||
stream >> inlineThumbnailIsPath >> inlineThumbnailBytes;
|
||||
}
|
||||
} else {
|
||||
videoThumb = ImageLocation();
|
||||
}
|
||||
@ -164,7 +172,10 @@ DocumentData *Document::readFromStreamHelper(
|
||||
date,
|
||||
attributes,
|
||||
mime,
|
||||
InlineImageLocation(),
|
||||
InlineImageLocation{
|
||||
inlineThumbnailBytes,
|
||||
(inlineThumbnailIsPath == 1),
|
||||
},
|
||||
ImageWithLocation{
|
||||
.location = *thumb,
|
||||
.bytesCount = thumbnailByteSize
|
||||
@ -195,8 +206,10 @@ DocumentData *Document::readFromStream(
|
||||
int Document::sizeInStream(DocumentData *document) {
|
||||
int result = 0;
|
||||
|
||||
// id + access + date + version
|
||||
result += sizeof(quint64) + sizeof(quint64) + sizeof(qint32) + sizeof(qint32);
|
||||
// id + access + date
|
||||
result += sizeof(quint64) + sizeof(quint64) + sizeof(qint32);
|
||||
// file_reference + version tag + version
|
||||
result += bytearraySize(document->_fileReference) + sizeof(qint32) * 2;
|
||||
// + namelen + name + mimelen + mime + dc + size
|
||||
result += stringSize(document->filename()) + stringSize(document->mimeString()) + sizeof(qint32) + sizeof(qint32);
|
||||
// + width + height
|
||||
@ -213,6 +226,11 @@ int Document::sizeInStream(DocumentData *document) {
|
||||
}
|
||||
// + thumb loc
|
||||
result += Serialize::imageLocationSize(document->thumbnailLocation());
|
||||
result += sizeof(qint32); // thumbnail_byte_size
|
||||
result += Serialize::imageLocationSize(document->videoThumbnailLocation());
|
||||
result += sizeof(qint32); // video_thumbnail_byte_size
|
||||
|
||||
result += sizeof(qint32) + Serialize::bytearraySize(document->inlineThumbnailBytes());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user