19 const QString &nickName,
21 const QColor &color)
const {
23 const int size = std::max(std::max(result.width(), result.height()), 256);
26 QBrush solidBrush = QBrush(color);
27 if (!color.isValid()) {
28 auto mainColor = QColor(qHash(nickName +
"red") % 250,
29 qHash(nickName +
"green") % 250,
30 qHash(nickName +
"blue") % 250);
33 auto secondColor = QColor(qHash(nickName +
"red dark") % 50,
34 qHash(nickName +
"green dark") % 50,
35 qHash(nickName +
"blue dark") % 50);
37 QLinearGradient g(0.0, 0.0, 0.0, size);
38 g.setColorAt(0, mainColor);
39 g.setColorAt(1, secondColor);
41 solidBrush = QBrush(g);
44 QImage image(size, size, QImage::Format_ARGB32);
45 image.fill(Qt::transparent);
47 QPainter painter(&image);
48 painter.setRenderHint(QPainter::Antialiasing);
51 painter.setBrush(solidBrush);
52 painter.setPen(Qt::NoPen);
53 painter.drawEllipse(0, 0, size, size);
55 QString firstLetter = nickName.left(1).toUpper();
56 QFont currentFont = font;
57 currentFont.setPixelSize( size / 2);
58 painter.setPen(QColor(Qt::white));
59 QFontMetrics metrics(currentFont);
60 painter.setFont(currentFont);
62 int textWidth = metrics.horizontalAdvance(firstLetter);
63 int textHeight = metrics.height();
64 int x = (size - textWidth) / 2;
65 int y = (size + textHeight / 2) / 1.9;
66 painter.drawText(x, y, firstLetter);