mirror of https://github.com/procxx/kepka.git
Optimize online dot painting.
This commit is contained in:
parent
034bee8fc3
commit
61c66994a2
|
@ -34,9 +34,9 @@ dialogsPhotoSize: 46px;
|
||||||
dialogsPhotoPadding: 12px;
|
dialogsPhotoPadding: 12px;
|
||||||
dialogsPadding: point(10px, 8px);
|
dialogsPadding: point(10px, 8px);
|
||||||
|
|
||||||
dialogsOnlineBadgeSizePadding: 4px;
|
dialogsOnlineBadgeStroke: 2px;
|
||||||
dialogsOnlineBadgeSize: 8px;
|
dialogsOnlineBadgeSize: 10px;
|
||||||
dialogsOnlineBadgeRightSkip: 2px;
|
dialogsOnlineBadgeSkip: point(10px, 12px);
|
||||||
|
|
||||||
dialogsImportantBarHeight: 37px;
|
dialogsImportantBarHeight: 37px;
|
||||||
|
|
||||||
|
|
|
@ -181,21 +181,27 @@ InnerWidget::InnerWidget(
|
||||||
if (peerUpdate.peer->isSelf()) {
|
if (peerUpdate.peer->isSelf()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto circleSize = st::dialogsOnlineBadgeSize
|
const auto history = session().data().historyLoaded(peerUpdate.peer);
|
||||||
+ st::dialogsOnlineBadgeSizePadding;
|
if (!history) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const auto size = st::dialogsOnlineBadgeSize;
|
||||||
|
const auto stroke = st::dialogsOnlineBadgeStroke;
|
||||||
|
const auto skip = st::dialogsOnlineBadgeSkip;
|
||||||
|
const auto edge = st::dialogsPadding.x() + st::dialogsPhotoSize;
|
||||||
const auto updateRect = QRect(
|
const auto updateRect = QRect(
|
||||||
st::dialogsPadding.x()
|
edge - skip.x() - size,
|
||||||
+ st::dialogsPhotoSize
|
edge - skip.y() - size,
|
||||||
- st::dialogsOnlineBadgeRightSkip
|
size,
|
||||||
- circleSize,
|
size
|
||||||
st::dialogsPadding.y()
|
).marginsAdded(
|
||||||
+ st::dialogsPhotoSize
|
{ stroke, stroke, stroke, stroke }
|
||||||
- circleSize,
|
).translated(
|
||||||
circleSize,
|
st::dialogsPadding
|
||||||
circleSize);
|
);
|
||||||
updateDialogRow(
|
updateDialogRow(
|
||||||
RowDescriptor(
|
RowDescriptor(
|
||||||
session().data().history(peerUpdate.peer->id),
|
history,
|
||||||
FullMsgId()),
|
FullMsgId()),
|
||||||
updateRect,
|
updateRect,
|
||||||
UpdateRowSection::Default | UpdateRowSection::Filtered);
|
UpdateRowSection::Default | UpdateRowSection::Filtered);
|
||||||
|
|
|
@ -260,37 +260,31 @@ void paintRow(
|
||||||
frame.setDevicePixelRatio(cRetinaFactor());
|
frame.setDevicePixelRatio(cRetinaFactor());
|
||||||
frame.fill(Qt::transparent);
|
frame.fill(Qt::transparent);
|
||||||
{
|
{
|
||||||
const auto size = st::dialogsOnlineBadgeSize;
|
|
||||||
const auto paddingSize = st::dialogsOnlineBadgeSizePadding;
|
|
||||||
const auto circleSize = size + paddingSize;
|
|
||||||
const auto offset = size + paddingSize / 2;
|
|
||||||
const auto x = st::dialogsPadding.x() + st::dialogsPhotoSize - st::dialogsOnlineBadgeRightSkip - size;
|
|
||||||
const auto y = st::dialogsPadding.y() + st::dialogsPhotoSize - size;
|
|
||||||
|
|
||||||
Painter q(&frame);
|
Painter q(&frame);
|
||||||
PainterHighQualityEnabler hq(q);
|
|
||||||
from->paintUserpicLeft(
|
from->paintUserpicLeft(
|
||||||
q,
|
q,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
fullWidth,
|
fullWidth,
|
||||||
st::dialogsPhotoSize);
|
st::dialogsPhotoSize);
|
||||||
q.setPen(Qt::NoPen);
|
|
||||||
q.setBrush(Qt::transparent);
|
|
||||||
q.setCompositionMode(QPainter::CompositionMode_SourceOut);
|
|
||||||
q.drawEllipse(
|
|
||||||
x - circleSize,
|
|
||||||
y - circleSize,
|
|
||||||
circleSize,
|
|
||||||
circleSize);
|
|
||||||
|
|
||||||
|
PainterHighQualityEnabler hq(q);
|
||||||
|
q.setCompositionMode(QPainter::CompositionMode_Source);
|
||||||
|
|
||||||
|
const auto size = st::dialogsOnlineBadgeSize;
|
||||||
|
const auto stroke = st::dialogsOnlineBadgeStroke;
|
||||||
|
const auto skip = st::dialogsOnlineBadgeSkip;
|
||||||
|
const auto edge = st::dialogsPadding.x() + st::dialogsPhotoSize;
|
||||||
|
|
||||||
|
auto pen = QPen(Qt::transparent);
|
||||||
|
pen.setWidth(stroke);
|
||||||
|
q.setPen(pen);
|
||||||
q.setBrush(active
|
q.setBrush(active
|
||||||
? st::dialogsOnlineBadgeFgActive
|
? st::dialogsOnlineBadgeFgActive
|
||||||
: st::dialogsOnlineBadgeFg);
|
: st::dialogsOnlineBadgeFg);
|
||||||
q.setCompositionMode(QPainter::CompositionMode_Source);
|
|
||||||
q.drawEllipse(
|
q.drawEllipse(
|
||||||
x - offset,
|
edge - skip.x() - size,
|
||||||
y - offset,
|
edge - skip.y() - size,
|
||||||
size,
|
size,
|
||||||
size);
|
size);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue