This commit is contained in:
jpirnay
2026-05-20 00:56:57 +02:00
parent 63e9dfe59a
commit bfe236fe69
2 changed files with 19 additions and 14 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
#include "fontIds.h" #include "fontIds.h"
CardLayout::CardLayout(GfxRenderer& renderer, Rect contentRect, int startY, Config cfg) CardLayout::CardLayout(GfxRenderer& renderer, Rect contentRect, int startY, CardLayoutConfig cfg)
: renderer_(renderer), contentRect_(contentRect), cfg_(cfg), y_(startY) { : renderer_(renderer), contentRect_(contentRect), cfg_(cfg), y_(startY) {
cardLeft_ = contentRect.x + cfg_.outerMarginX; cardLeft_ = contentRect.x + cfg_.outerMarginX;
cardWidth_ = contentRect.width - cfg_.outerMarginX * 2; cardWidth_ = contentRect.width - cfg_.outerMarginX * 2;
+18 -13
View File
@@ -37,19 +37,24 @@ class GfxRenderer;
// - All values use UI_10 font; grid values use UI_12 bold. This is // - All values use UI_10 font; grid values use UI_12 bold. This is
// consistent across stats screens; if a future caller needs another // consistent across stats screens; if a future caller needs another
// font scale we'll add an optional config struct. // font scale we'll add an optional config struct.
// Card visual / spacing configuration. Lives outside CardLayout so it can
// be default-constructed by callers (GCC won't synthesize a default ctor
// for a class-nested aggregate inside its own class's default-arg list).
struct CardLayoutConfig {
int radius = 4;
int innerPadX = 10;
int innerPadY = 6;
int titleGap = 4;
int cardSpacing = 6;
// Horizontal margin between the content rect and the card's outer
// bounds. Defaults to 0; pass theme.verticalSpacing * 2 to line up
// with the rest of the system UI on a given theme.
int outerMarginX = 0;
};
class CardLayout { class CardLayout {
public: public:
struct Config { using Config = CardLayoutConfig; // backwards-compat alias for call sites.
int radius = 4;
int innerPadX = 10;
int innerPadY = 6;
int titleGap = 4;
int cardSpacing = 6;
// Horizontal margin between the content rect and the card's outer
// bounds. Defaults to 0; pass theme.verticalSpacing * 2 to line up
// with the rest of the system UI on a given theme.
int outerMarginX = 0;
};
// Inner-card drawing context handed to card body lambdas. Tracks the // Inner-card drawing context handed to card body lambdas. Tracks the
// running y cursor inside the card and exposes the same content geometry // running y cursor inside the card and exposes the same content geometry
@@ -80,7 +85,7 @@ class CardLayout {
void centeredMessage(const char* msg); void centeredMessage(const char* msg);
}; };
CardLayout(GfxRenderer& renderer, Rect contentRect, int startY, Config cfg = Config()); CardLayout(GfxRenderer& renderer, Rect contentRect, int startY, CardLayoutConfig cfg = {});
// Render a single card. `bodyFn` receives a `Body&` and may call its // Render a single card. `bodyFn` receives a `Body&` and may call its
// helpers in any order; the card auto-sizes to whatever the body draws. // helpers in any order; the card auto-sizes to whatever the body draws.
@@ -95,7 +100,7 @@ class CardLayout {
private: private:
GfxRenderer& renderer_; GfxRenderer& renderer_;
Rect contentRect_; Rect contentRect_;
Config cfg_; CardLayoutConfig cfg_;
int cardLeft_; int cardLeft_;
int cardWidth_; int cardWidth_;