Pass correct FileOrigin for userpics.

This commit is contained in:
John Preston 2018-10-31 13:55:22 +04:00
parent e6c4c48261
commit 8850d974a2
4 changed files with 16 additions and 13 deletions

View File

@ -523,13 +523,13 @@ void Panel::refreshUserPhoto() {
if (isGoodUserPhoto(photo) && isNewPhoto(photo)) {
_userPhotoId = photo->id;
_userPhotoFull = true;
createUserpicCache(photo->full);
createUserpicCache(photo->full, _user->userpicPhotoOrigin());
} else if (_userPhoto.isNull()) {
createUserpicCache(_user->currentUserpic());
createUserpicCache(_user->currentUserpic(), _user->userpicOrigin());
}
}
void Panel::createUserpicCache(ImagePtr image) {
void Panel::createUserpicCache(ImagePtr image, Data::FileOrigin origin) {
auto size = st::callWidth * cIntRetinaFactor();
auto options = _useTransparency ? (Images::Option::RoundedLarge | Images::Option::RoundedTopLeft | Images::Option::RoundedTopRight | Images::Option::Smooth) : Images::Option::None;
if (image) {
@ -543,7 +543,7 @@ void Panel::createUserpicCache(ImagePtr image) {
width = size;
}
_userPhoto = image->pixNoCache(
_user->userpicPhotoOrigin(),
origin,
width,
height,
options,

View File

@ -92,7 +92,7 @@ private:
void processUserPhoto();
void refreshUserPhoto();
bool isGoodUserPhoto(PhotoData *photo);
void createUserpicCache(ImagePtr image);
void createUserpicCache(ImagePtr image, Data::FileOrigin origin);
QRect signalBarsRect() const;
void paintSignalBarsBg(Painter &p);

View File

@ -187,7 +187,7 @@ void PeerData::setUserpicPhoto(const MTPPhoto &data) {
ImagePtr PeerData::currentUserpic() const {
if (_userpic) {
_userpic->load(userpicPhotoOrigin());
_userpic->load(userpicOrigin());
if (_userpic->loaded()) {
if (!useEmptyUserpic()) {
_userpicEmpty = nullptr;
@ -203,7 +203,7 @@ ImagePtr PeerData::currentUserpic() const {
void PeerData::paintUserpic(Painter &p, int x, int y, int size) const {
if (auto userpic = currentUserpic()) {
p.drawPixmap(x, y, userpic->pixCircled(userpicPhotoOrigin(), size, size));
p.drawPixmap(x, y, userpic->pixCircled(userpicOrigin(), size, size));
} else {
_userpicEmpty->paint(p, x, y, x + size + x, size);
}
@ -211,7 +211,7 @@ void PeerData::paintUserpic(Painter &p, int x, int y, int size) const {
void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const {
if (auto userpic = currentUserpic()) {
p.drawPixmap(x, y, userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small));
p.drawPixmap(x, y, userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small));
} else {
_userpicEmpty->paintRounded(p, x, y, x + size + x, size);
}
@ -219,14 +219,14 @@ void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const {
void PeerData::paintUserpicSquare(Painter &p, int x, int y, int size) const {
if (auto userpic = currentUserpic()) {
p.drawPixmap(x, y, userpic->pix(userpicPhotoOrigin(), size, size));
p.drawPixmap(x, y, userpic->pix(userpicOrigin(), size, size));
} else {
_userpicEmpty->paintSquare(p, x, y, x + size + x, size);
}
}
void PeerData::loadUserpic(bool loadFirst, bool prior) {
_userpic->load(userpicPhotoOrigin(), loadFirst, prior);
_userpic->load(userpicOrigin(), loadFirst, prior);
}
bool PeerData::userpicLoaded() const {
@ -256,7 +256,7 @@ void PeerData::saveUserpicRounded(const QString &path, int size) const {
QPixmap PeerData::genUserpic(int size) const {
if (auto userpic = currentUserpic()) {
return userpic->pixCircled(userpicPhotoOrigin(), size, size);
return userpic->pixCircled(userpicOrigin(), size, size);
}
auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied);
result.setDevicePixelRatio(cRetinaFactor());
@ -270,7 +270,7 @@ QPixmap PeerData::genUserpic(int size) const {
QPixmap PeerData::genUserpicRounded(int size) const {
if (auto userpic = currentUserpic()) {
return userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small);
return userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small);
}
auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied);
result.setDevicePixelRatio(cRetinaFactor());

View File

@ -183,10 +183,13 @@ public:
PhotoId userpicPhotoId() const {
return userpicPhotoUnknown() ? 0 : _userpicPhotoId;
}
Data::FileOrigin userpicOrigin() const {
return Data::FileOrigin(Data::FileOriginPeerPhoto(id));
}
Data::FileOrigin userpicPhotoOrigin() const {
return (isUser() && userpicPhotoId())
? Data::FileOriginUserPhoto(bareId(), userpicPhotoId())
: Data::FileOrigin(Data::FileOriginPeerPhoto(id));
: Data::FileOrigin();
}
int nameVersion = 1;