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

Method paintRowThumbnail

Telegram/SourceFiles/boxes/stickers_box.cpp:1505–1559  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1503}
1504
1505void StickersBox::Inner::paintRowThumbnail(
1506 Painter &p,
1507 not_null<Row*> row,
1508 int left) {
1509 const auto origin = Data::FileOriginStickerSet(
1510 row->set->id,
1511 row->set->accessHash);
1512 if (row->set->hasThumbnail()) {
1513 if (!row->thumbnailMedia) {
1514 row->thumbnailMedia = row->set->createThumbnailView();
1515 row->set->loadThumbnail();
1516 }
1517 } else if (row->sticker) {
1518 if (!row->stickerMedia) {
1519 row->stickerMedia = row->sticker->createMediaView();
1520 row->stickerMedia->thumbnailWanted(origin);
1521 }
1522 }
1523 validateAnimation(row);
1524 const auto thumb = row->thumbnailMedia
1525 ? row->thumbnailMedia->image()
1526 : row->stickerMedia
1527 ? row->stickerMedia->thumbnail()
1528 : nullptr;
1529 const auto paused = _show->paused(ChatHelpers::PauseReason::Layer);
1530 const auto x = left + (_st.photoSize - row->pixw) / 2;
1531 const auto y = _st.photoPosition.y() + (_st.photoSize - row->pixh) / 2;
1532 if (row->lottie && row->lottie->ready()) {
1533 const auto frame = row->lottie->frame();
1534 const auto size = frame.size() / style::DevicePixelRatio();
1535 p.drawImage(
1536 QRect(
1537 left + (_st.photoSize - size.width()) / 2,
1538 _st.photoPosition.y() + (_st.photoSize - size.height()) / 2,
1539 size.width(),
1540 size.height()),
1541 frame);
1542 if (!paused) {
1543 row->lottie->markFrameShown();
1544 }
1545 } else if (row->webm && row->webm->started()) {
1546 p.drawImage(
1547 x,
1548 y,
1549 row->webm->current(
1550 { .frame = { row->pixw, row->pixh }, .keepAlpha = true },
1551 paused ? 0 : crl::now()));
1552 } else if (thumb) {
1553 p.drawPixmapLeft(
1554 x,
1555 y,
1556 width(),
1557 thumb->pix(row->pixw, row->pixh));
1558 }
1559}
1560
1561void StickersBox::Inner::validateLottieAnimation(not_null<Row*> row) {
1562 if (row->lottie

Callers

nothing calls this directly

Calls 15

createThumbnailViewMethod · 0.80
thumbnailWantedMethod · 0.80
hasThumbnailMethod · 0.45
loadThumbnailMethod · 0.45
createMediaViewMethod · 0.45
imageMethod · 0.45
thumbnailMethod · 0.45
pausedMethod · 0.45
yMethod · 0.45
readyMethod · 0.45
frameMethod · 0.45

Tested by

no test coverage detected