mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-21 09:05:10 -07:00
Some checks are pending
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (actions) (push) Waiting to run
Build Desktop / Configure (push) Waiting to run
Build Desktop / Debian 13 (push) Blocked by required conditions
Build Desktop / Debian 12 (push) Blocked by required conditions
Build Desktop / Fedora 44 (push) Blocked by required conditions
Build Desktop / Fedora 43 (push) Blocked by required conditions
Build Desktop / Servatrice_Debian 12 (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 24.04 (push) Blocked by required conditions
Build Desktop / Arch (push) Blocked by required conditions
Build Desktop / macOS 13 Intel (push) Blocked by required conditions
Build Desktop / macOS 14 (push) Blocked by required conditions
Build Desktop / macOS 15 (push) Blocked by required conditions
Build Desktop / macOS 26 Debug (push) Blocked by required conditions
Build Desktop / Windows 10 (push) Blocked by required conditions
Build Docker / Servatrice (arm) (push) Waiting to run
Build Docker / Servatrice (x86) (push) Waiting to run
Build Docker / Publish multi-platform Servatrice image (push) Blocked by required conditions
* [VDS] Cache mana symbol renders and skip redundant resizes - Render each mana symbol once at a bounded master size and derive every requested size from the cached master, avoiding repeated full-size SVG rasterization on the GUI thread - Share scaled results through a process-wide cache keyed by symbol and size, so repeated widget creation and rescales don't redo the work - Skip redundant resize work in ColorIdentityWidget and ManaSymbolWidget when sizes did not change Took 8 minutes Took 50 seconds * Move to pixmap generator Took 8 minutes Took 4 seconds --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
/**
|
|
* @file card_completer_delegate.h
|
|
* @ingroup UtilityWidgets
|
|
*/
|
|
//! \todo Document this file.
|
|
|
|
#ifndef CARD_COMPLETER_DELEGATE_H
|
|
#define CARD_COMPLETER_DELEGATE_H
|
|
|
|
#include <QCache>
|
|
#include <QColor>
|
|
#include <QPixmap>
|
|
#include <QStyledItemDelegate>
|
|
|
|
class CardInfo;
|
|
|
|
/**
|
|
* @brief Paints styled card completer popup rows.
|
|
*
|
|
* Each row shows the card name, type line, set code and mana cost pips,
|
|
* color-coded by the card's color identity. Card data is read directly from
|
|
* the CardSearchModel::CardInfoRole so no extra database lookups are needed.
|
|
*/
|
|
class CardCompleterDelegate : public QStyledItemDelegate
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit CardCompleterDelegate(QObject *parent = nullptr);
|
|
|
|
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
|
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
|
|
|
private:
|
|
// Set short codes, resolved once per card name and cached
|
|
mutable QCache<QString, QString> setCodeCache;
|
|
|
|
// Resolve the card's color string ("RG", "W", "", ...) → accent QColor
|
|
static QColor accentForColors(const QString &colors);
|
|
|
|
// Draw a single mana symbol pip at centre point
|
|
void drawManaSymbol(QPainter *p, QPoint centre, const QString &symbol, int radius) const;
|
|
|
|
// Draw all mana pips for a cost string like "2RG" or "{2}{R}{G}"; split and
|
|
// adventure costs ("1W // W") are drawn as separate groups. Returns the left-most x used
|
|
int drawManaCost(QPainter *p, const QRect &row, const QString &manaCost, int radius) const;
|
|
|
|
// Resolve the preferred printing's set short code for a card
|
|
QString setCodeForCard(const QSharedPointer<CardInfo> &card) const;
|
|
|
|
static constexpr int CardRowHeight = 40;
|
|
static constexpr int AccentBarWidth = 5;
|
|
static constexpr int SymbolRadius = 9;
|
|
static constexpr int SymbolSpacing = 2;
|
|
static constexpr int PartGap = 14;
|
|
};
|
|
|
|
#endif // CARD_COMPLETER_DELEGATE_H
|