Cockatrice 2026-09-01-Development-3.1.0-beta.10
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 <QPixmap>
13#include <QStyledItemDelegate>
14
15class CardInfo;
16
24class CardCompleterDelegate : public QStyledItemDelegate
25{
26 Q_OBJECT
27public:
28 explicit CardCompleterDelegate(QObject *parent = nullptr);
29
30 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
31 QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
32
33private:
34 // Set short codes, resolved once per card name and cached
35 mutable QCache<QString, QString> setCodeCache;
36
37 // Resolve the card's color string ("RG", "W", "", ...) → accent QColor
38 static QColor accentForColors(const QString &colors);
39
40 // Draw a single mana symbol pip at centre point
41 void drawManaSymbol(QPainter *p, QPoint centre, const QString &symbol, int radius) const;
42
43 // Draw all mana pips for a cost string like "2RG" or "{2}{R}{G}"; split and
44 // adventure costs ("1W // W") are drawn as separate groups. Returns the left-most x used
45 int drawManaCost(QPainter *p, const QRect &row, const QString &manaCost, int radius) const;
46
47 // Resolve the preferred printing's set short code for a card
48 QString setCodeForCard(const QSharedPointer<CardInfo> &card) const;
49
50 static constexpr int CardRowHeight = 40;
51 static constexpr int AccentBarWidth = 5;
52 static constexpr int SymbolRadius = 9;
53 static constexpr int SymbolSpacing = 2;
54 static constexpr int PartGap = 14;
55};
56
57#endif // CARD_COMPLETER_DELEGATE_H
static constexpr int SymbolRadius
Definition card_completer_delegate.h:52
CardCompleterDelegate(QObject *parent=nullptr)
Definition card_completer_delegate.cpp:86
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition card_completer_delegate.cpp:240
int drawManaCost(QPainter *p, const QRect &row, const QString &manaCost, int radius) const
Definition card_completer_delegate.cpp:155
static constexpr int PartGap
Definition card_completer_delegate.h:54
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition card_completer_delegate.cpp:95
static constexpr int AccentBarWidth
Definition card_completer_delegate.h:51
static constexpr int SymbolSpacing
Definition card_completer_delegate.h:53
void drawManaSymbol(QPainter *p, QPoint centre, const QString &symbol, int radius) const
Definition card_completer_delegate.cpp:113
static constexpr int CardRowHeight
Definition card_completer_delegate.h:50
QString setCodeForCard(const QSharedPointer< CardInfo > &card) const
Definition card_completer_delegate.cpp:211
static QColor accentForColors(const QString &colors)
Definition card_completer_delegate.cpp:60
QCache< QString, QString > setCodeCache
Definition card_completer_delegate.h:35
Represents a card and its associated metadata, properties, and relationships.
Definition card_info.h:51