mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-04-24 12:24:02 +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 {
|
namespace {
|
||||||
|
|
||||||
constexpr auto kVersionTag = int32(0x7FFFFFFF);
|
constexpr auto kVersionTag = int32(0x7FFFFFFF);
|
||||||
constexpr auto kVersion = 1;
|
constexpr auto kVersion = 2;
|
||||||
|
|
||||||
enum StickerSetType {
|
enum StickerSetType {
|
||||||
StickerSetTypeEmpty = 0,
|
StickerSetTypeEmpty = 0,
|
||||||
@ -54,7 +54,10 @@ void Document::writeToStream(QDataStream &stream, DocumentData *document) {
|
|||||||
writeImageLocation(stream, document->thumbnailLocation());
|
writeImageLocation(stream, document->thumbnailLocation());
|
||||||
stream << qint32(document->thumbnailByteSize());
|
stream << qint32(document->thumbnailByteSize());
|
||||||
writeImageLocation(stream, document->videoThumbnailLocation());
|
writeImageLocation(stream, document->videoThumbnailLocation());
|
||||||
stream << qint32(document->videoThumbnailByteSize());
|
stream
|
||||||
|
<< qint32(document->videoThumbnailByteSize())
|
||||||
|
<< qint32(document->inlineThumbnailIsPath() ? 1 : 0)
|
||||||
|
<< document->inlineThumbnailBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentData *Document::readFromStreamHelper(
|
DocumentData *Document::readFromStreamHelper(
|
||||||
@ -124,11 +127,16 @@ DocumentData *Document::readFromStreamHelper(
|
|||||||
}
|
}
|
||||||
std::optional<ImageLocation> videoThumb;
|
std::optional<ImageLocation> videoThumb;
|
||||||
qint32 thumbnailByteSize = 0, videoThumbnailByteSize = 0;
|
qint32 thumbnailByteSize = 0, videoThumbnailByteSize = 0;
|
||||||
|
qint32 inlineThumbnailIsPath = 0;
|
||||||
|
QByteArray inlineThumbnailBytes;
|
||||||
const auto thumb = readImageLocation(streamAppVersion, stream);
|
const auto thumb = readImageLocation(streamAppVersion, stream);
|
||||||
if (version >= 1) {
|
if (version >= 1) {
|
||||||
stream >> thumbnailByteSize;
|
stream >> thumbnailByteSize;
|
||||||
videoThumb = readImageLocation(streamAppVersion, stream);
|
videoThumb = readImageLocation(streamAppVersion, stream);
|
||||||
stream >> videoThumbnailByteSize;
|
stream >> videoThumbnailByteSize;
|
||||||
|
if (version >= 2) {
|
||||||
|
stream >> inlineThumbnailIsPath >> inlineThumbnailBytes;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
videoThumb = ImageLocation();
|
videoThumb = ImageLocation();
|
||||||
}
|
}
|
||||||
@ -164,7 +172,10 @@ DocumentData *Document::readFromStreamHelper(
|
|||||||
date,
|
date,
|
||||||
attributes,
|
attributes,
|
||||||
mime,
|
mime,
|
||||||
InlineImageLocation(),
|
InlineImageLocation{
|
||||||
|
inlineThumbnailBytes,
|
||||||
|
(inlineThumbnailIsPath == 1),
|
||||||
|
},
|
||||||
ImageWithLocation{
|
ImageWithLocation{
|
||||||
.location = *thumb,
|
.location = *thumb,
|
||||||
.bytesCount = thumbnailByteSize
|
.bytesCount = thumbnailByteSize
|
||||||
@ -195,8 +206,10 @@ DocumentData *Document::readFromStream(
|
|||||||
int Document::sizeInStream(DocumentData *document) {
|
int Document::sizeInStream(DocumentData *document) {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
// id + access + date + version
|
// id + access + date
|
||||||
result += sizeof(quint64) + sizeof(quint64) + sizeof(qint32) + sizeof(qint32);
|
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
|
// + namelen + name + mimelen + mime + dc + size
|
||||||
result += stringSize(document->filename()) + stringSize(document->mimeString()) + sizeof(qint32) + sizeof(qint32);
|
result += stringSize(document->filename()) + stringSize(document->mimeString()) + sizeof(qint32) + sizeof(qint32);
|
||||||
// + width + height
|
// + width + height
|
||||||
@ -213,6 +226,11 @@ int Document::sizeInStream(DocumentData *document) {
|
|||||||
}
|
}
|
||||||
// + thumb loc
|
// + thumb loc
|
||||||
result += Serialize::imageLocationSize(document->thumbnailLocation());
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user