MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / PaintCornerBadgeFrame

Method PaintCornerBadgeFrame

Telegram/SourceFiles/dialogs/dialogs_row.cpp:396–537  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

394}
395
396void Row::PaintCornerBadgeFrame(
397 not_null<CornerBadgeUserpic*> data,
398 int framePadding,
399 not_null<Entry*> entry,
400 PeerData *peer,
401 Ui::VideoUserpic *videoUserpic,
402 Ui::PeerUserpicView &view,
403 const Ui::PaintContext &context,
404 bool subscribed) {
405 data->frame.fill(Qt::transparent);
406
407 Painter q(&data->frame);
408 q.translate(framePadding, framePadding);
409 auto hq = std::optional<PainterHighQualityEnabler>();
410 const auto photoSize = context.st->photoSize;
411 const auto storiesCount = data->storiesCount;
412 if (storiesCount) {
413 hq.emplace(q);
414 const auto line = st::dialogsStoriesFull.lineTwice / 2.;
415 const auto skip = line * 3 / 2.;
416 const auto scale = 1. - (2 * skip / photoSize);
417 const auto center = photoSize / 2.;
418 q.save();
419 q.translate(center, center);
420 q.scale(scale, scale);
421 q.translate(-center, -center);
422 }
423 q.translate(-context.st->padding.left(), -context.st->padding.top());
424 PaintUserpic(
425 q,
426 entry,
427 peer,
428 videoUserpic,
429 view,
430 context);
431 q.translate(context.st->padding.left(), context.st->padding.top());
432 if (storiesCount) {
433 q.restore();
434
435 const auto outline = QRectF(0, 0, photoSize, photoSize);
436 const auto storiesUnread = st::dialogsStoriesFull.lineTwice / 2.;
437 const auto storiesLine = st::dialogsStoriesFull.lineReadTwice / 2.;
438 auto segments = std::vector<Ui::OutlineSegment>();
439 if (data->storiesHasVideoStream) {
440 const auto storiesVideoStreamBrush = st::attentionButtonFg->b;
441 segments.push_back({ storiesVideoStreamBrush, storiesUnread });
442 } else {
443 const auto storiesUnreadCount = data->storiesUnreadCount;
444 const auto storiesUnreadBrush = [&] {
445 if (context.active || !storiesUnreadCount) {
446 return st::dialogsUnreadBgMutedActive->b;
447 }
448 auto gradient = Ui::UnreadStoryOutlineGradient(outline);
449 return QBrush(gradient);
450 }();
451 const auto storiesBrush = context.active
452 ? st::dialogsUnreadBgMutedActive->b
453 : st::dialogsUnreadBgMuted->b;

Callers

nothing calls this directly

Calls 15

PaintUserpicFunction · 0.85
QBrushClass · 0.85
PaintOutlineSegmentsFunction · 0.85
PaintLiveBadgeFunction · 0.85
CornerBadgeTTLFunction · 0.85
CornerBadgeTTLRectFunction · 0.85
emplaceMethod · 0.80
scaleMethod · 0.80
progressForLayerMethod · 0.80
messagesTTLMethod · 0.80

Tested by

no test coverage detected