Simplified paint of static custom emoji status in premium settings.
This commit is contained in:
parent
9bc4c0a551
commit
76ee5fcefe
|
@ -479,8 +479,6 @@ public:
|
||||||
void paint(QPainter &p);
|
void paint(QPainter &p);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
[[nodiscard]] QPixmap paintedPixmap(const QSize &size) const;
|
|
||||||
|
|
||||||
void resolveIsColored();
|
void resolveIsColored();
|
||||||
|
|
||||||
QRectF _rect;
|
QRectF _rect;
|
||||||
|
@ -523,6 +521,11 @@ EmojiStatusTopBar::EmojiStatusTopBar(
|
||||||
_media->owner()->location(),
|
_media->owner()->location(),
|
||||||
_media->bytes(),
|
_media->bytes(),
|
||||||
size.toSize());
|
size.toSize());
|
||||||
|
} else if (sticker) {
|
||||||
|
_player = std::make_unique<HistoryView::StaticStickerPlayer>(
|
||||||
|
_media->owner()->location(),
|
||||||
|
_media->bytes(),
|
||||||
|
size.toSize());
|
||||||
}
|
}
|
||||||
if (_player) {
|
if (_player) {
|
||||||
_player->setRepaintCallback([=] { callback(_rect.toRect()); });
|
_player->setRepaintCallback([=] { callback(_rect.toRect()); });
|
||||||
|
@ -542,18 +545,6 @@ void EmojiStatusTopBar::setPaused(bool paused) {
|
||||||
_paused = paused;
|
_paused = paused;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPixmap EmojiStatusTopBar::paintedPixmap(const QSize &size) const {
|
|
||||||
const auto good = _media->goodThumbnail();
|
|
||||||
if (const auto image = _media->getStickerLarge()) {
|
|
||||||
return image->pix(size);
|
|
||||||
} else if (good) {
|
|
||||||
return good->pix(size);
|
|
||||||
} else if (const auto thumbnail = _media->thumbnail()) {
|
|
||||||
return thumbnail->pix(size, { .options = Images::Option::Blur });
|
|
||||||
}
|
|
||||||
return QPixmap();
|
|
||||||
}
|
|
||||||
|
|
||||||
void EmojiStatusTopBar::resolveIsColored() {
|
void EmojiStatusTopBar::resolveIsColored() {
|
||||||
if (_isColoredResolved) {
|
if (_isColoredResolved) {
|
||||||
return;
|
return;
|
||||||
|
@ -570,25 +561,21 @@ void EmojiStatusTopBar::resolveIsColored() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmojiStatusTopBar::paint(QPainter &p) {
|
void EmojiStatusTopBar::paint(QPainter &p) {
|
||||||
if (_player) {
|
if (_player && _player->ready()) {
|
||||||
if (_player->ready()) {
|
resolveIsColored();
|
||||||
resolveIsColored();
|
const auto frame = _player->frame(
|
||||||
const auto frame = _player->frame(
|
_rect.size().toSize(),
|
||||||
_rect.size().toSize(),
|
(_isColored
|
||||||
(_isColored
|
? st::profileVerifiedCheckBg->c
|
||||||
? st::profileVerifiedCheckBg->c
|
: QColor(0, 0, 0, 0)),
|
||||||
: QColor(0, 0, 0, 0)),
|
false,
|
||||||
false,
|
crl::now(),
|
||||||
crl::now(),
|
_paused);
|
||||||
_paused);
|
|
||||||
|
|
||||||
p.drawImage(_rect.toRect(), frame.image);
|
p.drawImage(_rect.toRect(), frame.image);
|
||||||
if (!_paused) {
|
if (!_paused) {
|
||||||
_player->markFrameShown();
|
_player->markFrameShown();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (_media) {
|
|
||||||
p.drawPixmap(_rect.topLeft(), paintedPixmap(_rect.size().toSize()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue