mirror of https://github.com/procxx/kepka.git
Optimize Folder::paintUserpic.
This commit is contained in:
parent
734ecc070b
commit
034bee8fc3
|
@ -220,13 +220,7 @@ void Folder::paintUserpic(
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
int size) const {
|
int size) const {
|
||||||
paintUserpic(
|
paintUserpic(p, x, y, size, nullptr, nullptr);
|
||||||
p,
|
|
||||||
x,
|
|
||||||
y,
|
|
||||||
size,
|
|
||||||
st::historyPeerArchiveUserpicBg,
|
|
||||||
st::historyPeerUserpicFg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Folder::paintUserpic(
|
void Folder::paintUserpic(
|
||||||
|
@ -236,24 +230,47 @@ void Folder::paintUserpic(
|
||||||
int size,
|
int size,
|
||||||
const style::color &bg,
|
const style::color &bg,
|
||||||
const style::color &fg) const {
|
const style::color &fg) const {
|
||||||
|
paintUserpic(p, x, y, size, &bg, &fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Folder::paintUserpic(
|
||||||
|
Painter &p,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int size,
|
||||||
|
const style::color *overrideBg,
|
||||||
|
const style::color *overrideFg) const {
|
||||||
p.setPen(Qt::NoPen);
|
p.setPen(Qt::NoPen);
|
||||||
p.setBrush(bg);
|
p.setBrush(overrideBg ? *overrideBg : st::historyPeerArchiveUserpicBg);
|
||||||
{
|
{
|
||||||
PainterHighQualityEnabler hq(p);
|
PainterHighQualityEnabler hq(p);
|
||||||
p.drawEllipse(x, y, size, size);
|
p.drawEllipse(x, y, size, size);
|
||||||
}
|
}
|
||||||
if (size == st::dialogsPhotoSize) {
|
if (size == st::dialogsPhotoSize) {
|
||||||
st::dialogsArchiveUserpic.paintInCenter(p, { x, y, size, size }, fg->c);
|
const auto rect = QRect{ x, y, size, size };
|
||||||
|
if (overrideFg) {
|
||||||
|
st::dialogsArchiveUserpic.paintInCenter(
|
||||||
|
p,
|
||||||
|
rect,
|
||||||
|
(*overrideFg)->c);
|
||||||
|
} else {
|
||||||
|
st::dialogsArchiveUserpic.paintInCenter(p, rect);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
p.save();
|
p.save();
|
||||||
const auto ratio = size / float64(st::dialogsPhotoSize);
|
const auto ratio = size / float64(st::dialogsPhotoSize);
|
||||||
p.translate(x + size / 2., y + size / 2.);
|
p.translate(x + size / 2., y + size / 2.);
|
||||||
p.scale(ratio, ratio);
|
p.scale(ratio, ratio);
|
||||||
const auto skip = st::dialogsPhotoSize;
|
const auto skip = st::dialogsPhotoSize;
|
||||||
st::dialogsArchiveUserpic.paintInCenter(
|
const auto rect = QRect{ -skip, -skip, 2 * skip, 2 * skip };
|
||||||
p,
|
if (overrideFg) {
|
||||||
{ -skip, -skip, 2 * skip, 2 * skip },
|
st::dialogsArchiveUserpic.paintInCenter(
|
||||||
fg->c);
|
p,
|
||||||
|
rect,
|
||||||
|
(*overrideFg)->c);
|
||||||
|
} else {
|
||||||
|
st::dialogsArchiveUserpic.paintInCenter(p, rect);
|
||||||
|
}
|
||||||
p.restore();
|
p.restore();
|
||||||
}
|
}
|
||||||
//const auto small = (size - st::lineWidth) / 2; // #feed
|
//const auto small = (size - st::lineWidth) / 2; // #feed
|
||||||
|
|
|
@ -80,8 +80,8 @@ public:
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
int size,
|
int size,
|
||||||
const style::color &bg,
|
const style::color &overrideBg,
|
||||||
const style::color &fg) const;
|
const style::color &overrideFg) const;
|
||||||
|
|
||||||
bool chatsListLoaded() const;
|
bool chatsListLoaded() const;
|
||||||
void setChatsListLoaded(bool loaded = true);
|
void setChatsListLoaded(bool loaded = true);
|
||||||
|
@ -99,6 +99,14 @@ private:
|
||||||
void reorderLastHistories();
|
void reorderLastHistories();
|
||||||
void finalizeCloudUnread();
|
void finalizeCloudUnread();
|
||||||
|
|
||||||
|
void paintUserpic(
|
||||||
|
Painter &p,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int size,
|
||||||
|
const style::color *overrideBg,
|
||||||
|
const style::color *overrideFg) const;
|
||||||
|
|
||||||
FolderId _id = 0;
|
FolderId _id = 0;
|
||||||
Dialogs::MainList _chatsList;
|
Dialogs::MainList _chatsList;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue