Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
user_list_painter.h
Go to the documentation of this file.
1#ifndef COCKATRICE_USER_LIST_PAINTER_H
2#define COCKATRICE_USER_LIST_PAINTER_H
3
4#include "user_level.h"
5
6#include <QColor>
7#include <QList>
8#include <QMap>
9#include <QPalette>
10#include <QPixmap>
11#include <QRect>
12#include <QSize>
13
14class QPainter;
15class QModelIndex;
16class QStyleOptionViewItem;
17class ServerInfo_User;
18
20{
21 QString cardName = "";
22 QString cardProviderId = "";
23 double marginPctL = 0.33;
24 double marginPctR = 0.02;
25 double verticalOffset = 0.35;
26 double zoom = 1.0;
27};
28
30{
31public:
38 struct Style
39 {
40 bool dark = true;
41 QColor cardStart;
42 QColor cardEnd;
43 QColor base;
44 QColor textOnline;
47 bool dropShadow = false;
48 };
49
50 static Style resolveStyle(const QPalette &palette, bool dark);
52 static QColor blend(const QColor &a, const QColor &b, qreal t);
53
54 static void paint(QPainter *painter,
55 const QStyleOptionViewItem &option,
56 const QModelIndex &index,
57 const ServerInfo_User &userInfo,
58 const QMap<QString, QPixmap> *avatarCache,
59 const QMap<QString, QPixmap> *cardArtCache,
60 const QMap<QString, CardArtParams> *cardArtParamsMap,
61 bool dark);
62
63 static QSize sizeHint();
64
65 static void drawCardArt(QPainter *painter,
66 const QRect &rect,
67 int cardRight,
68 const QString &userName,
69 const QMap<QString, QPixmap> *cardArtCache,
70 const CardArtParams &params,
71 const QPixmap *overridePixmap);
72
73private:
74 struct Badge
75 {
76 QString text;
77 QColor color;
78 };
79
80 static QColor getAccentColor(const UserLevelFlags &userLevel, bool online);
81 static int getCardRight(const QStyleOptionViewItem &option, const QRect &rect);
82 static void drawBackground(QPainter *painter,
83 const QRectF &cardRect,
84 const QColor &accentColor,
85 bool selected,
86 const Style &style,
87 bool hasRole);
88 static QRect getAvatarRect(const QRect &rect);
89 static void drawAvatar(QPainter *painter,
90 const QRect &avatarRect,
91 const QString &userName,
92 const QColor &accentColor,
93 const UserLevelFlags &userLevel,
94 const ServerInfo_User &userInfo,
95 const QString &privLevel,
96 const QMap<QString, QPixmap> *avatarCache,
97 const Style &style);
98 static void drawStatusRing(QPainter *painter, const QRect &avatarRect, bool online, const Style &style);
99 static void drawUserName(QPainter *painter,
100 const QStyleOptionViewItem &option,
101 const QRect &rect,
102 int cardRight,
103 int textX,
104 const QString &userName,
105 bool online,
106 const Style &style);
107 static void drawCountryFlag(QPainter *painter, const QRect &rect, int textX, const ServerInfo_User &userInfo);
108 static QList<Badge> buildBadges(const UserLevelFlags &userLevel, const QString &privLevel);
109 static void drawBadges(QPainter *painter,
110 const QStyleOptionViewItem &option,
111 const QRect &rect,
112 int cardRight,
113 const QList<Badge> &badges,
114 bool online,
115 const Style &style);
116};
117
118#endif // COCKATRICE_USER_LIST_PAINTER_H
Definition user_list_painter.h:30
static void drawStatusRing(QPainter *painter, const QRect &avatarRect, bool online, const Style &style)
Definition user_list_painter.cpp:254
static void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index, const ServerInfo_User &userInfo, const QMap< QString, QPixmap > *avatarCache, const QMap< QString, QPixmap > *cardArtCache, const QMap< QString, CardArtParams > *cardArtParamsMap, bool dark)
Definition user_list_painter.cpp:362
static QColor getAccentColor(const UserLevelFlags &userLevel, bool online)
Definition user_list_painter.cpp:46
static QSize sizeHint()
Definition user_list_painter.cpp:18
static QRect getAvatarRect(const QRect &rect)
Definition user_list_painter.cpp:206
static int getCardRight(const QStyleOptionViewItem &option, const QRect &rect)
Definition user_list_painter.cpp:67
static void drawUserName(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect, int cardRight, int textX, const QString &userName, bool online, const Style &style)
Definition user_list_painter.cpp:263
static QList< Badge > buildBadges(const UserLevelFlags &userLevel, const QString &privLevel)
Definition user_list_painter.cpp:296
static void drawAvatar(QPainter *painter, const QRect &avatarRect, const QString &userName, const QColor &accentColor, const UserLevelFlags &userLevel, const ServerInfo_User &userInfo, const QString &privLevel, const QMap< QString, QPixmap > *avatarCache, const Style &style)
Definition user_list_painter.cpp:213
static void drawBackground(QPainter *painter, const QRectF &cardRect, const QColor &accentColor, bool selected, const Style &style, bool hasRole)
Definition user_list_painter.cpp:83
static void drawBadges(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect, int cardRight, const QList< Badge > &badges, bool online, const Style &style)
Definition user_list_painter.cpp:317
static void drawCountryFlag(QPainter *painter, const QRect &rect, int textX, const ServerInfo_User &userInfo)
Definition user_list_painter.cpp:288
static void drawCardArt(QPainter *painter, const QRect &rect, int cardRight, const QString &userName, const QMap< QString, QPixmap > *cardArtCache, const CardArtParams &params, const QPixmap *overridePixmap)
Definition user_list_painter.cpp:126
static Style resolveStyle(const QPalette &palette, bool dark)
Definition user_list_painter.cpp:23
static QColor blend(const QColor &a, const QColor &b, qreal t)
Linear interpolation: t = 0 returns a, t = 1 returns b.
Definition user_list_painter.cpp:39
Definition user_list_painter.h:20
double marginPctL
Definition user_list_painter.h:23
double zoom
Definition user_list_painter.h:26
double marginPctR
Definition user_list_painter.h:24
double verticalOffset
Definition user_list_painter.h:25
QString cardName
Definition user_list_painter.h:21
QString cardProviderId
Definition user_list_painter.h:22
Definition serverinfo_user.proto:2
Definition user_list_painter.h:75
QString text
Definition user_list_painter.h:76
QColor color
Definition user_list_painter.h:77
Definition user_list_painter.h:39
QColor base
lightest surface, used for blending accent hues
Definition user_list_painter.h:43
QColor ringOffline
Definition user_list_painter.h:46
bool dark
Definition user_list_painter.h:40
bool dropShadow
Definition user_list_painter.h:47
QColor cardStart
row fill, left edge (normal)
Definition user_list_painter.h:41
QColor textOnline
Definition user_list_painter.h:44
QColor cardEnd
row fill, right edge (normal)
Definition user_list_painter.h:42
QColor textOffline
Definition user_list_painter.h:45