Cockatrice 2026-10-19-Development-3.1.2-beta.2
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 <QPalette>
9#include <QRect>
10#include <QRectF>
11#include <QSize>
12#include <QString>
13#include <QtGlobal>
14
15class QPainter;
16class QModelIndex;
17class QStyleOptionViewItem;
18class ServerInfo_User;
19class QPixmap;
20template <class Key, class T> class QMap;
21
23{
24 QString cardName = "";
25 QString cardProviderId = "";
26 double marginPctL = 0.33;
27 double marginPctR = 0.02;
28 double verticalOffset = 0.35;
29 double zoom = 1.0;
30};
31
33{
34public:
41 struct Style
42 {
43 bool dark = true;
44 QColor cardStart;
45 QColor cardEnd;
46 QColor base;
47 QColor textOnline;
50 bool dropShadow = false;
51 };
52
53 static Style resolveStyle(const QPalette &palette, bool dark);
55 static QColor blend(const QColor &a, const QColor &b, qreal t);
56
57 static void paint(QPainter *painter,
58 const QStyleOptionViewItem &option,
59 const QModelIndex &index,
60 const ServerInfo_User &userInfo,
61 const QMap<QString, QPixmap> *avatarCache,
62 const QMap<QString, QPixmap> *cardArtCache,
63 const QMap<QString, CardArtParams> *cardArtParamsMap,
64 bool dark);
65
66 static QSize sizeHint();
67
68 static void drawCardArt(QPainter *painter,
69 const QRect &rect,
70 int cardRight,
71 const QString &userName,
72 const QMap<QString, QPixmap> *cardArtCache,
73 const CardArtParams &params,
74 const QPixmap *overridePixmap);
75
76private:
77 struct Badge
78 {
79 QString text;
80 QColor color;
81 };
82
83 static QColor getAccentColor(const UserLevelFlags &userLevel, bool online);
84 static int getCardRight(const QStyleOptionViewItem &option, const QRect &rect);
85 static void drawBackground(QPainter *painter,
86 const QRectF &cardRect,
87 const QColor &accentColor,
88 bool selected,
89 const Style &style,
90 bool hasRole);
91 static QRect getAvatarRect(const QRect &rect);
92 static void drawAvatar(QPainter *painter,
93 const QRect &avatarRect,
94 const QString &userName,
95 const QColor &accentColor,
96 const UserLevelFlags &userLevel,
97 const ServerInfo_User &userInfo,
98 const QString &privLevel,
99 const QMap<QString, QPixmap> *avatarCache,
100 const Style &style);
101 static void drawStatusRing(QPainter *painter, const QRect &avatarRect, bool online, const Style &style);
102 static void drawUserName(QPainter *painter,
103 const QStyleOptionViewItem &option,
104 const QRect &rect,
105 int cardRight,
106 int textX,
107 const QString &userName,
108 bool online,
109 const Style &style);
110 static void drawCountryFlag(QPainter *painter, const QRect &rect, int textX, const ServerInfo_User &userInfo);
111 static QList<Badge> buildBadges(const UserLevelFlags &userLevel, const QString &privLevel);
112 static void drawBadges(QPainter *painter,
113 const QStyleOptionViewItem &option,
114 const QRect &rect,
115 int cardRight,
116 const QList<Badge> &badges,
117 bool online,
118 const Style &style);
119};
120
121#endif // COCKATRICE_USER_LIST_PAINTER_H
Definition remote_connection_controller.h:20
Definition game.h:18
Definition user_list_painter.h:33
static void drawStatusRing(QPainter *painter, const QRect &avatarRect, bool online, const Style &style)
Definition user_list_painter.cpp:277
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:387
static QColor getAccentColor(const UserLevelFlags &userLevel, bool online)
Definition user_list_painter.cpp:67
static QSize sizeHint()
Definition user_list_painter.cpp:39
static QRect getAvatarRect(const QRect &rect)
Definition user_list_painter.cpp:229
static int getCardRight(const QStyleOptionViewItem &option, const QRect &rect)
Definition user_list_painter.cpp:90
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:286
static QList< Badge > buildBadges(const UserLevelFlags &userLevel, const QString &privLevel)
Definition user_list_painter.cpp:319
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:236
static void drawBackground(QPainter *painter, const QRectF &cardRect, const QColor &accentColor, bool selected, const Style &style, bool hasRole)
Definition user_list_painter.cpp:106
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:342
static void drawCountryFlag(QPainter *painter, const QRect &rect, int textX, const ServerInfo_User &userInfo)
Definition user_list_painter.cpp:311
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:149
static Style resolveStyle(const QPalette &palette, bool dark)
Definition user_list_painter.cpp:44
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:60
Definition user_list_painter.h:23
double marginPctL
Definition user_list_painter.h:26
double zoom
Definition user_list_painter.h:29
double marginPctR
Definition user_list_painter.h:27
double verticalOffset
Definition user_list_painter.h:28
QString cardName
Definition user_list_painter.h:24
QString cardProviderId
Definition user_list_painter.h:25
Definition serverinfo_user.proto:2
Definition user_list_painter.h:78
QString text
Definition user_list_painter.h:79
QColor color
Definition user_list_painter.h:80
Definition user_list_painter.h:42
QColor base
lightest surface, used for blending accent hues
Definition user_list_painter.h:46
QColor ringOffline
Definition user_list_painter.h:49
bool dark
Definition user_list_painter.h:43
bool dropShadow
Definition user_list_painter.h:50
QColor cardStart
row fill, left edge (normal)
Definition user_list_painter.h:44
QColor textOnline
Definition user_list_painter.h:47
QColor cardEnd
row fill, right edge (normal)
Definition user_list_painter.h:45
QColor textOffline
Definition user_list_painter.h:48