The debris card's row now reads "Remaining" with the amount and the bare scrap icon after it, and the count summary's indented sub-row states its total the same way; both fall back to naming the item in words when no scrap icon file exists. StatRow gained the value-plus-icon form: a label draws either text or a pixmap, so the two are composed into one via renderCaptionWithIcon, with the color passed in because a pixmap does not follow the palette. That also closes a gap in the building multi-selection, whose "Total cost" was specified to carry the building_block icon and showed the bare number. ItemIconCache::getInlineIcon() packages the sizing rule of the bare inline icon. It sits on the cache rather than in IconCaption so StatRow keeps pulling in nothing but the caption helper: StatRow.cpp is compiled into DotaFactory_balancing, which links neither the ui library nor QtSvg, and that target now compiles IconCaption.cpp along with it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ne3mejABZoLWKLh8fgpM3x
32 lines
1.6 KiB
C
32 lines
1.6 KiB
C
#pragma once
|
|
|
|
#include <QColor>
|
|
#include <QFont>
|
|
#include <QPixmap>
|
|
#include <QSize>
|
|
#include <QString>
|
|
|
|
// Renders `text` followed by `icon` to its right, vertically centered, onto a
|
|
// transparent pixmap sized to fit both (REQ-UI-BLOCKS-ICON, REQ-UI-BUILD-COST,
|
|
// REQ-UI-EXPAND-BUTTON). Used where a caption must show an inline item icon in
|
|
// place of a trailing word — something QPushButton/QLabel cannot do natively.
|
|
//
|
|
// `textColor` and `font` come from the target widget so the caption stays
|
|
// theme-correct; the result is devicePixelRatio-aware so text and icon stay crisp.
|
|
QPixmap renderCaptionWithIcon(const QString& text, const QPixmap& icon,
|
|
const QFont& font, const QColor& textColor);
|
|
|
|
// A pixmap's size in device-independent pixels. The pixmaps composed by
|
|
// renderCaptionWithIcon and its callers are rasterized at the device pixel ratio, so
|
|
// their raw size is not the size to lay them out at.
|
|
QSize getLogicalSize(const QPixmap& pixmap);
|
|
|
|
// The items whose icons stand in for their names beside a number, drawn bare and without
|
|
// their colored square (REQ-UI-ITEM-ICON): building blocks beside a cost or a stock
|
|
// (REQ-UI-BLOCKS-ICON, REQ-UI-BUILD-COST, REQ-UI-EXPAND-BUTTON), and scrap beside the
|
|
// amount left in debris (REQ-UI-DEBRIS-PANEL, REQ-UI-FIELD-MULTI-SELECTION). They live
|
|
// next to the caption helper because every caller of one is a caller of the other;
|
|
// ItemIconCache::getInlineIcon() is what turns an id here into that icon.
|
|
const char* const kBlockItemId = "building_block";
|
|
const char* const kScrapItemId = "scrap";
|