Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_completer_delegate.h
Go to the documentation of this file.
1
6
7#ifndef CARD_COMPLETER_DELEGATE_H
8#define CARD_COMPLETER_DELEGATE_H
9
10#include <QCache>
11#include <QColor>
12#include <QString>
13#include <QStyledItemDelegate>
14#include <qtmetamacros.h>
15
16class CardInfo;
17class QObject;
18class QPainter;
19class QPoint;
20class QRect;
21template <class T> class QSharedPointer;
22
30class CardCompleterDelegate : public QStyledItemDelegate
31{
32 Q_OBJECT
33public:
34 explicit CardCompleterDelegate(QObject *parent = nullptr);
35
36 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
37 QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
38
39 // Content width of one popup row; the completer popup is sized to fit it.
40 static constexpr int PopupRowWidth = 480;
41
42private:
43 // Set short codes, resolved once per card name and cached
44 mutable QCache<QString, QString> setCodeCache;
45
46 // Resolve the card's color string ("RG", "W", "", ...) → accent QColor
47 static QColor accentForColors(const QString &colors);
48
49 // Draw a single mana symbol pip at centre point
50 void drawManaSymbol(QPainter *p, QPoint centre, const QString &symbol, int radius) const;
51
52 // Draw all mana pips for a cost string like "2RG" or "{2}{R}{G}"; split and
53 // adventure costs ("1W // W") are drawn as separate groups. Returns the left-most x used
54 int
55 drawManaCost(QPainter *p, const QRect &row, const QString &manaCost, int radius, int spacing, int rightPad) const;
56
57 // Resolve the preferred printing's set short code for a card
58 QString setCodeForCard(const QSharedPointer<CardInfo> &card) const;
59
60 static constexpr int CardRowHeight = 40;
61 static constexpr int AccentBarWidth = 5;
62 static constexpr int SymbolRadius = 9;
63 static constexpr int SymbolSpacing = 2;
64 static constexpr int PartGap = 14;
65};
66
67#endif // CARD_COMPLETER_DELEGATE_H
int drawManaCost(QPainter *p, const QRect &row, const QString &manaCost, int radius, int spacing, int rightPad) const
Definition card_completer_delegate.cpp:195
static constexpr int SymbolRadius
Definition card_completer_delegate.h:62
CardCompleterDelegate(QObject *parent=nullptr)
Definition card_completer_delegate.cpp:126
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition card_completer_delegate.cpp:283
static constexpr int PartGap
Definition card_completer_delegate.h:64
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition card_completer_delegate.cpp:135
static constexpr int AccentBarWidth
Definition card_completer_delegate.h:61
static constexpr int SymbolSpacing
Definition card_completer_delegate.h:63
static constexpr int PopupRowWidth
Definition card_completer_delegate.h:40
void drawManaSymbol(QPainter *p, QPoint centre, const QString &symbol, int radius) const
Definition card_completer_delegate.cpp:153
static constexpr int CardRowHeight
Definition card_completer_delegate.h:60
QString setCodeForCard(const QSharedPointer< CardInfo > &card) const
Definition card_completer_delegate.cpp:254
static QColor accentForColors(const QString &colors)
Definition card_completer_delegate.cpp:100
QCache< QString, QString > setCodeCache
Definition card_completer_delegate.h:44
Represents a card and its associated metadata, properties, and relationships.
Definition card_info.h:54
Definition arrow_registry.h:10