feat: avatar corners

This commit is contained in:
AlexeyZavar
2026-03-01 03:14:19 +03:00
parent c26d158bc7
commit 38917114f0
42 changed files with 701 additions and 66 deletions
+9 -4
View File
@@ -37,6 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
// AyuGram includes
#include "ayu/ayu_settings.h"
#include "ayu/ui/ayu_userpic.h"
namespace Dialogs {
@@ -482,8 +483,11 @@ void Row::PaintCornerBadgeFrame(
}
}
if (peer && (peer->forum() || peer->monoforum())) {
const auto radius = context.st->photoSize
* Ui::ForumUserpicRadiusMultiplier();
const auto &settings = AyuSettings::getInstance();
const auto singleRadius = settings.singleCornerRadius();
const auto radius = singleRadius
? AyuUserpic::ComputeRadiusF(context.st->photoSize)
: (context.st->photoSize * Ui::ForumUserpicRadiusMultiplier());
Ui::PaintOutlineSegments(q, outline, radius, segments);
} else {
Ui::PaintOutlineSegments(q, outline, segments);
@@ -549,9 +553,10 @@ void Row::PaintCornerBadgeFrame(
q.setBrush(data->active
? st::dialogsOnlineBadgeFgActive
: st::dialogsOnlineBadgeFg);
const auto badge = AyuUserpic::OnlineBadgePosition(photoSize, size);
q.drawEllipse(QRectF(
photoSize - skip.x() - size,
photoSize - skip.y() - size,
badge.x(),
badge.y(),
size,
size
).marginsRemoved({ shrink, shrink, shrink, shrink }));
@@ -29,6 +29,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/debug_log.h"
// AyuGram includes
#include "ayu/ui/ayu_userpic.h"
namespace Dialogs::Stories {
namespace {
@@ -590,7 +594,7 @@ void List::paint(
p.setPen(QPen(gradient, line));
}
p.setBrush(Qt::NoBrush);
p.drawEllipse(outer);
AyuUserpic::PaintShape(p, outer);
} else {
validateSegments(itemFull, gradient, line, true);
Ui::PaintOutlineSegments(
@@ -635,7 +639,7 @@ void List::paint(
p.setCompositionMode(QPainter::CompositionMode_Source);
p.setPen(Qt::NoPen);
p.setBrush(st::transparent);
p.drawEllipse(rect);
AyuUserpic::PaintShape(p, rect);
p.setCompositionMode(QPainter::CompositionMode_SourceOver);
}
if (hasReadLine) {
@@ -101,7 +101,7 @@ Media::Clip::FrameRequest VideoUserpic::request(int size) const {
.frame = { size, size },
.outer = { size, size },
.factor = style::DevicePixelRatio(),
.radius = ImageRoundRadius::Ellipse,
.radius = ImageRoundRadius::AyuUserpic,
};
}
@@ -24,6 +24,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <QtWidgets/QApplication>
// AyuGram includes
#include "ayu/ui/ayu_userpic.h"
namespace Dialogs {
struct TopPeersStrip::Entry {
@@ -837,9 +841,10 @@ void TopPeersStrip::paintUserpic(
pen.setWidthF(stroke * online);
q.setPen(pen);
q.setBrush(st::dialogsOnlineBadgeFg);
const auto badge = AyuUserpic::OnlineBadgePosition(size, onlineSize);
q.drawEllipse(QRectF(
size - skip.x() - onlineSize,
size - skip.y() - onlineSize,
badge.x(),
badge.y(),
onlineSize,
onlineSize
).marginsRemoved({ shrink, shrink, shrink, shrink }));