mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fix forum userpic rounding on Retina screens.
This commit is contained in:
parent
3649cb41e2
commit
d5c145b707
4 changed files with 10 additions and 12 deletions
|
@ -353,7 +353,7 @@ QImage PeerData::generateUserpicImage(
|
||||||
const auto round = [&](int radius) {
|
const auto round = [&](int radius) {
|
||||||
return Images::Round(
|
return Images::Round(
|
||||||
std::move(image),
|
std::move(image),
|
||||||
Images::CornersMask(radius));
|
Images::CornersMask(radius / style::DevicePixelRatio()));
|
||||||
};
|
};
|
||||||
if (radius == 0) {
|
if (radius == 0) {
|
||||||
return image;
|
return image;
|
||||||
|
|
|
@ -382,13 +382,12 @@ void Photo::validateUserpicImageCache(QSize size, bool forum) const {
|
||||||
if (blurredValue) {
|
if (blurredValue) {
|
||||||
args = args.blurred();
|
args = args.blurred();
|
||||||
}
|
}
|
||||||
original = Images::Prepare(std::move(original), size, args);
|
original = Images::Prepare(std::move(original), size * ratio, args);
|
||||||
if (forumValue) {
|
if (forumValue) {
|
||||||
original = Images::Round(
|
original = Images::Round(
|
||||||
std::move(original),
|
std::move(original),
|
||||||
Images::CornersMask(std::min(size.width(), size.height())
|
Images::CornersMask(std::min(size.width(), size.height())
|
||||||
* Ui::ForumUserpicRadiusMultiplier()
|
* Ui::ForumUserpicRadiusMultiplier()));
|
||||||
* style::DevicePixelRatio()));
|
|
||||||
} else {
|
} else {
|
||||||
original = Images::Circle(std::move(original));
|
original = Images::Circle(std::move(original));
|
||||||
}
|
}
|
||||||
|
@ -460,9 +459,8 @@ void Photo::paintUserpicFrame(
|
||||||
request.outer = request.resize = size * ratio;
|
request.outer = request.resize = size * ratio;
|
||||||
if (forum) {
|
if (forum) {
|
||||||
const auto radius = int(std::min(size.width(), size.height())
|
const auto radius = int(std::min(size.width(), size.height())
|
||||||
* Ui::ForumUserpicRadiusMultiplier()
|
* Ui::ForumUserpicRadiusMultiplier());
|
||||||
* ratio);
|
if (_streamed->roundingCorners[0].width() != radius * ratio) {
|
||||||
if (_streamed->roundingCorners[0].width() != radius) {
|
|
||||||
_streamed->roundingCorners = Images::CornersMask(radius);
|
_streamed->roundingCorners = Images::CornersMask(radius);
|
||||||
}
|
}
|
||||||
request.rounding = Images::CornersMaskRef(
|
request.rounding = Images::CornersMaskRef(
|
||||||
|
|
|
@ -478,9 +478,8 @@ void UserpicButton::paintUserpicFrame(Painter &p, QPoint photoPosition) {
|
||||||
const auto forum = _peer && _peer->isForum();
|
const auto forum = _peer && _peer->isForum();
|
||||||
if (forum) {
|
if (forum) {
|
||||||
const auto radius = int(_st.photoSize
|
const auto radius = int(_st.photoSize
|
||||||
* Ui::ForumUserpicRadiusMultiplier()
|
* Ui::ForumUserpicRadiusMultiplier());
|
||||||
* ratio);
|
if (_roundingCorners[0].width() != radius * ratio) {
|
||||||
if (_roundingCorners[0].width() != radius) {
|
|
||||||
_roundingCorners = Images::CornersMask(radius);
|
_roundingCorners = Images::CornersMask(radius);
|
||||||
}
|
}
|
||||||
request.rounding = Images::CornersMaskRef(_roundingCorners);
|
request.rounding = Images::CornersMaskRef(_roundingCorners);
|
||||||
|
|
|
@ -51,8 +51,9 @@ void ValidateUserpicCache(
|
||||||
if (forum) {
|
if (forum) {
|
||||||
view.cached = Images::Round(
|
view.cached = Images::Round(
|
||||||
std::move(view.cached),
|
std::move(view.cached),
|
||||||
Images::CornersMask(
|
Images::CornersMask(size
|
||||||
size * Ui::ForumUserpicRadiusMultiplier()));
|
* Ui::ForumUserpicRadiusMultiplier()
|
||||||
|
/ style::DevicePixelRatio()));
|
||||||
} else {
|
} else {
|
||||||
view.cached = Images::Circle(std::move(view.cached));
|
view.cached = Images::Circle(std::move(view.cached));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue