mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Replaced PeerData::generateUserpicImage with static function.
This commit is contained in:
parent
5ac80d2655
commit
2b502b22b9
16 changed files with 57 additions and 31 deletions
|
@ -214,7 +214,10 @@ struct State {
|
||||||
|
|
||||||
[[nodiscard]] QImage GenerateUserpic(Userpic &userpic, int size) {
|
[[nodiscard]] QImage GenerateUserpic(Userpic &userpic, int size) {
|
||||||
size *= style::DevicePixelRatio();
|
size *= style::DevicePixelRatio();
|
||||||
auto result = userpic.peer->generateUserpicImage(userpic.view, size);
|
auto result = PeerData::GenerateUserpicImage(
|
||||||
|
userpic.peer,
|
||||||
|
userpic.view,
|
||||||
|
size);
|
||||||
result.setDevicePixelRatio(style::DevicePixelRatio());
|
result.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,8 @@ void ProcessUserpic(
|
||||||
if (!state->userpicView.cloud) {
|
if (!state->userpicView.cloud) {
|
||||||
GenerateImage(
|
GenerateImage(
|
||||||
state,
|
state,
|
||||||
peer->generateUserpicImage(
|
PeerData::GenerateUserpicImage(
|
||||||
|
peer,
|
||||||
state->userpicView,
|
state->userpicView,
|
||||||
st::shortInfoWidth * style::DevicePixelRatio(),
|
st::shortInfoWidth * style::DevicePixelRatio(),
|
||||||
0),
|
0),
|
||||||
|
|
|
@ -460,7 +460,8 @@ void Viewport::RendererGL::validateUserpicFrame(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto size = tile->trackOrUserpicSize();
|
const auto size = tile->trackOrUserpicSize();
|
||||||
tileData.userpicFrame = tile->row()->peer()->generateUserpicImage(
|
tileData.userpicFrame = PeerData::GenerateUserpicImage(
|
||||||
|
tile->row()->peer(),
|
||||||
tile->row()->ensureUserpicView(),
|
tile->row()->ensureUserpicView(),
|
||||||
size.width(),
|
size.width(),
|
||||||
0);
|
0);
|
||||||
|
|
|
@ -77,7 +77,8 @@ void Viewport::RendererSW::validateUserpicFrame(
|
||||||
}
|
}
|
||||||
const auto size = tile->trackOrUserpicSize();
|
const auto size = tile->trackOrUserpicSize();
|
||||||
data.userpicFrame = Images::BlurLargeImage(
|
data.userpicFrame = Images::BlurLargeImage(
|
||||||
tile->row()->peer()->generateUserpicImage(
|
PeerData::GenerateUserpicImage(
|
||||||
|
tile->row()->peer(),
|
||||||
tile->row()->ensureUserpicView(),
|
tile->row()->ensureUserpicView(),
|
||||||
size.width(),
|
size.width(),
|
||||||
0),
|
0),
|
||||||
|
|
|
@ -437,11 +437,12 @@ InMemoryKey PeerData::userpicUniqueKey(Ui::PeerUserpicView &view) const {
|
||||||
: inMemoryKey(_userpic.location());
|
: inMemoryKey(_userpic.location());
|
||||||
}
|
}
|
||||||
|
|
||||||
QImage PeerData::generateUserpicImage(
|
QImage PeerData::GenerateUserpicImage(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
Ui::PeerUserpicView &view,
|
Ui::PeerUserpicView &view,
|
||||||
int size,
|
int size,
|
||||||
std::optional<int> radius) const {
|
std::optional<int> radius) {
|
||||||
if (const auto userpic = userpicCloudImage(view)) {
|
if (const auto userpic = peer->userpicCloudImage(view)) {
|
||||||
auto image = userpic->scaled(
|
auto image = userpic->scaled(
|
||||||
{ size, size },
|
{ size, size },
|
||||||
Qt::IgnoreAspectRatio,
|
Qt::IgnoreAspectRatio,
|
||||||
|
@ -455,7 +456,7 @@ QImage PeerData::generateUserpicImage(
|
||||||
return image;
|
return image;
|
||||||
} else if (radius) {
|
} else if (radius) {
|
||||||
return round(*radius);
|
return round(*radius);
|
||||||
} else if (isForum()) {
|
} else if (peer->isForum()) {
|
||||||
return round(size * Ui::ForumUserpicRadiusMultiplier());
|
return round(size * Ui::ForumUserpicRadiusMultiplier());
|
||||||
} else {
|
} else {
|
||||||
return Images::Circle(std::move(image));
|
return Images::Circle(std::move(image));
|
||||||
|
@ -468,11 +469,12 @@ QImage PeerData::generateUserpicImage(
|
||||||
|
|
||||||
Painter p(&result);
|
Painter p(&result);
|
||||||
if (radius == 0) {
|
if (radius == 0) {
|
||||||
ensureEmptyUserpic()->paintSquare(p, 0, 0, size, size);
|
peer->ensureEmptyUserpic()->paintSquare(p, 0, 0, size, size);
|
||||||
} else if (radius) {
|
} else if (radius) {
|
||||||
ensureEmptyUserpic()->paintRounded(p, 0, 0, size, size, *radius);
|
const auto r = *radius;
|
||||||
} else if (isForum()) {
|
peer->ensureEmptyUserpic()->paintRounded(p, 0, 0, size, size, r);
|
||||||
ensureEmptyUserpic()->paintRounded(
|
} else if (peer->isForum()) {
|
||||||
|
peer->ensureEmptyUserpic()->paintRounded(
|
||||||
p,
|
p,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -480,7 +482,7 @@ QImage PeerData::generateUserpicImage(
|
||||||
size,
|
size,
|
||||||
size * Ui::ForumUserpicRadiusMultiplier());
|
size * Ui::ForumUserpicRadiusMultiplier());
|
||||||
} else {
|
} else {
|
||||||
ensureEmptyUserpic()->paintCircle(p, 0, 0, size, size);
|
peer->ensureEmptyUserpic()->paintCircle(p, 0, 0, size, size);
|
||||||
}
|
}
|
||||||
p.end();
|
p.end();
|
||||||
|
|
||||||
|
|
|
@ -333,10 +333,11 @@ public:
|
||||||
[[nodiscard]] Ui::PeerUserpicView createUserpicView();
|
[[nodiscard]] Ui::PeerUserpicView createUserpicView();
|
||||||
[[nodiscard]] bool useEmptyUserpic(Ui::PeerUserpicView &view) const;
|
[[nodiscard]] bool useEmptyUserpic(Ui::PeerUserpicView &view) const;
|
||||||
[[nodiscard]] InMemoryKey userpicUniqueKey(Ui::PeerUserpicView &view) const;
|
[[nodiscard]] InMemoryKey userpicUniqueKey(Ui::PeerUserpicView &view) const;
|
||||||
[[nodiscard]] QImage generateUserpicImage(
|
[[nodiscard]] static QImage GenerateUserpicImage(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
Ui::PeerUserpicView &view,
|
Ui::PeerUserpicView &view,
|
||||||
int size,
|
int size,
|
||||||
std::optional<int> radius = {}) const;
|
std::optional<int> radius = {});
|
||||||
[[nodiscard]] ImageLocation userpicLocation() const;
|
[[nodiscard]] ImageLocation userpicLocation() const;
|
||||||
|
|
||||||
static constexpr auto kUnknownPhotoId = PhotoId(0xFFFFFFFFFFFFFFFFULL);
|
static constexpr auto kUnknownPhotoId = PhotoId(0xFFFFFFFFFFFFFFFFULL);
|
||||||
|
|
|
@ -542,10 +542,12 @@ rpl::producer<QImage> PeerUserpicImageValue(
|
||||||
}
|
}
|
||||||
state->key = key;
|
state->key = key;
|
||||||
state->empty = false;
|
state->empty = false;
|
||||||
consumer.put_next(peer->generateUserpicImage(
|
consumer.put_next(
|
||||||
state->view,
|
PeerData::GenerateUserpicImage(
|
||||||
size,
|
peer,
|
||||||
radius));
|
state->view,
|
||||||
|
size,
|
||||||
|
radius));
|
||||||
};
|
};
|
||||||
peer->session().changes().peerFlagsValue(
|
peer->session().changes().peerFlagsValue(
|
||||||
peer,
|
peer,
|
||||||
|
|
|
@ -118,7 +118,7 @@ constexpr auto kBlurRadius = 24;
|
||||||
const auto &partSize = partRect.width();
|
const auto &partSize = partRect.width();
|
||||||
const auto partSkip = fullSize - partSize;
|
const auto partSkip = fullSize - partSize;
|
||||||
auto result = Images::Circle(BlurredDarkenedPart(
|
auto result = Images::Circle(BlurredDarkenedPart(
|
||||||
peer->generateUserpicImage(view, fullSize * ratio, 0),
|
PeerData::GenerateUserpicImage(peer, view, fullSize * ratio, 0),
|
||||||
QRect(
|
QRect(
|
||||||
QPoint(partSkip, partSkip) * ratio,
|
QPoint(partSkip, partSkip) * ratio,
|
||||||
QSize(partSize, partSize) * ratio)));
|
QSize(partSize, partSize) * ratio)));
|
||||||
|
|
|
@ -142,7 +142,8 @@ rpl::producer<Ui::GroupCallBarContent> GroupCallBarContentByCall(
|
||||||
state->someUserpicsNotLoaded = false;
|
state->someUserpicsNotLoaded = false;
|
||||||
for (auto &userpic : state->userpics) {
|
for (auto &userpic : state->userpics) {
|
||||||
userpic.peer->loadUserpic();
|
userpic.peer->loadUserpic();
|
||||||
auto image = userpic.peer->generateUserpicImage(
|
auto image = PeerData::GenerateUserpicImage(
|
||||||
|
userpic.peer,
|
||||||
userpic.view,
|
userpic.view,
|
||||||
userpicSize * style::DevicePixelRatio());
|
userpicSize * style::DevicePixelRatio());
|
||||||
userpic.uniqueKey = userpic.peer->userpicUniqueKey(userpic.view);
|
userpic.uniqueKey = userpic.peer->userpicUniqueKey(userpic.view);
|
||||||
|
|
|
@ -86,7 +86,8 @@ rpl::producer<Ui::RequestsBarContent> RequestsBarContentByPeer(
|
||||||
state->someUserpicsNotLoaded = false;
|
state->someUserpicsNotLoaded = false;
|
||||||
for (auto &userpic : state->userpics) {
|
for (auto &userpic : state->userpics) {
|
||||||
userpic.peer->loadUserpic();
|
userpic.peer->loadUserpic();
|
||||||
auto image = userpic.peer->generateUserpicImage(
|
auto image = PeerData::GenerateUserpicImage(
|
||||||
|
userpic.peer,
|
||||||
userpic.view,
|
userpic.view,
|
||||||
userpicSize * style::DevicePixelRatio());
|
userpicSize * style::DevicePixelRatio());
|
||||||
userpic.uniqueKey = userpic.peer->userpicUniqueKey(userpic.view);
|
userpic.uniqueKey = userpic.peer->userpicUniqueKey(userpic.view);
|
||||||
|
|
|
@ -54,7 +54,8 @@ constexpr auto kLoadViewsPages = 2;
|
||||||
static const auto size = st::storiesWhoViewed.userpics.size;
|
static const auto size = st::storiesWhoViewed.userpics.size;
|
||||||
|
|
||||||
static const auto GenerateUserpic = [](Userpic &userpic) {
|
static const auto GenerateUserpic = [](Userpic &userpic) {
|
||||||
auto result = userpic.peer->generateUserpicImage(
|
auto result = PeerData::GenerateUserpicImage(
|
||||||
|
userpic.peer,
|
||||||
userpic.view,
|
userpic.view,
|
||||||
size * style::DevicePixelRatio());
|
size * style::DevicePixelRatio());
|
||||||
result.setDevicePixelRatio(style::DevicePixelRatio());
|
result.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
|
@ -522,7 +523,8 @@ void RecentViews::addMenuRow(Data::StoryView entry, const QDateTime &now) {
|
||||||
const auto show = _controller->uiShow();
|
const auto show = _controller->uiShow();
|
||||||
const auto prepare = [&](Ui::PeerUserpicView &view) {
|
const auto prepare = [&](Ui::PeerUserpicView &view) {
|
||||||
const auto size = st::storiesWhoViewed.photoSize;
|
const auto size = st::storiesWhoViewed.photoSize;
|
||||||
auto userpic = peer->generateUserpicImage(
|
auto userpic = PeerData::GenerateUserpicImage(
|
||||||
|
peer,
|
||||||
view,
|
view,
|
||||||
size * style::DevicePixelRatio());
|
size * style::DevicePixelRatio());
|
||||||
userpic.setDevicePixelRatio(style::DevicePixelRatio());
|
userpic.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
|
@ -636,7 +638,8 @@ void RecentViews::subscribeToMenuUserpicsLoading(
|
||||||
const auto update = (entry.key != key);
|
const auto update = (entry.key != key);
|
||||||
if (update) {
|
if (update) {
|
||||||
const auto size = st::storiesWhoViewed.photoSize;
|
const auto size = st::storiesWhoViewed.photoSize;
|
||||||
auto userpic = peer->generateUserpicImage(
|
auto userpic = PeerData::GenerateUserpicImage(
|
||||||
|
peer,
|
||||||
view,
|
view,
|
||||||
size * style::DevicePixelRatio());
|
size * style::DevicePixelRatio());
|
||||||
userpic.setDevicePixelRatio(style::DevicePixelRatio());
|
userpic.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
|
|
|
@ -336,7 +336,10 @@ QImage Sibling::userpicImage(const SiblingLayout &layout) {
|
||||||
const auto key = _peer->userpicUniqueKey(_userpicView);
|
const auto key = _peer->userpicUniqueKey(_userpicView);
|
||||||
if (_userpicImage.width() != size || _userpicKey != key) {
|
if (_userpicImage.width() != size || _userpicKey != key) {
|
||||||
_userpicKey = key;
|
_userpicKey = key;
|
||||||
_userpicImage = _peer->generateUserpicImage(_userpicView, size);
|
_userpicImage = PeerData::GenerateUserpicImage(
|
||||||
|
_peer,
|
||||||
|
_userpicView,
|
||||||
|
size);
|
||||||
_userpicImage.setDevicePixelRatio(ratio);
|
_userpicImage.setDevicePixelRatio(ratio);
|
||||||
}
|
}
|
||||||
return _userpicImage;
|
return _userpicImage;
|
||||||
|
|
|
@ -235,7 +235,8 @@ PaintRoundImageCallback Row::generatePaintUserpicCallback(bool forceRound) {
|
||||||
p.drawImage(QRect(x, y, size, size), userpic.cached);
|
p.drawImage(QRect(x, y, size, size), userpic.cached);
|
||||||
} else {
|
} else {
|
||||||
if (_emptyUserpic.isNull()) {
|
if (_emptyUserpic.isNull()) {
|
||||||
_emptyUserpic = peer->generateUserpicImage(
|
_emptyUserpic = PeerData::GenerateUserpicImage(
|
||||||
|
peer,
|
||||||
_userpic,
|
_userpic,
|
||||||
size * ratio,
|
size * ratio,
|
||||||
size * ratio * Ui::ForumUserpicRadiusMultiplier());
|
size * ratio * Ui::ForumUserpicRadiusMultiplier());
|
||||||
|
|
|
@ -1026,10 +1026,12 @@ void UserpicButton::prepareUserpicPixmap() {
|
||||||
true);
|
true);
|
||||||
p.drawImage(QRect(0, 0, size, size), _userpicView.cached);
|
p.drawImage(QRect(0, 0, size, size), _userpicView.cached);
|
||||||
} else {
|
} else {
|
||||||
const auto empty = _peer->generateUserpicImage(
|
const auto empty = PeerData::GenerateUserpicImage(
|
||||||
|
_peer,
|
||||||
_userpicView,
|
_userpicView,
|
||||||
size * ratio,
|
size * ratio,
|
||||||
size * ratio * Ui::ForumUserpicRadiusMultiplier());
|
(size * ratio)
|
||||||
|
* Ui::ForumUserpicRadiusMultiplier());
|
||||||
p.drawImage(QRect(0, 0, size, size), empty);
|
p.drawImage(QRect(0, 0, size, size), empty);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -245,7 +245,11 @@ QImage PeerUserpic::image(int size) {
|
||||||
} else {
|
} else {
|
||||||
const auto full = size * style::DevicePixelRatio();
|
const auto full = size * style::DevicePixelRatio();
|
||||||
const auto r = full / 2.;
|
const auto r = full / 2.;
|
||||||
const auto empty = _peer->generateUserpicImage(view, full, r);
|
const auto empty = PeerData::GenerateUserpicImage(
|
||||||
|
_peer,
|
||||||
|
view,
|
||||||
|
full,
|
||||||
|
r);
|
||||||
p.drawImage(QRect(0, 0, size, size), empty);
|
p.drawImage(QRect(0, 0, size, size), empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ QImage GenerateUserpic(not_null<PeerData*> peer, Ui::PeerUserpicView &view) {
|
||||||
? Ui::EmptyUserpic::GenerateSavedMessages(st::notifyMacPhotoSize)
|
? Ui::EmptyUserpic::GenerateSavedMessages(st::notifyMacPhotoSize)
|
||||||
: peer->isRepliesChat()
|
: peer->isRepliesChat()
|
||||||
? Ui::EmptyUserpic::GenerateRepliesMessages(st::notifyMacPhotoSize)
|
? Ui::EmptyUserpic::GenerateRepliesMessages(st::notifyMacPhotoSize)
|
||||||
: peer->generateUserpicImage(view, st::notifyMacPhotoSize);
|
: PeerData::GenerateUserpicImage(peer, view, st::notifyMacPhotoSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
CachedUserpics::CachedUserpics()
|
CachedUserpics::CachedUserpics()
|
||||||
|
|
Loading…
Add table
Reference in a new issue