refactor(Style): Add font abstraction and CSS-like styling constants
This commit is contained in:
@@ -36,6 +36,12 @@ public:
|
||||
virtual int width() = 0;
|
||||
virtual int height() = 0;
|
||||
|
||||
// ── Fonts ──
|
||||
virtual void setTitleFont() = 0; // Large titles (KLUBHAUS, ALERT)
|
||||
virtual void setBodyFont() = 0; // Normal text (status, body)
|
||||
virtual void setLabelFont() = 0; // Small text (hints, captions)
|
||||
virtual void setDefaultFont() = 0; // Reset to default font
|
||||
|
||||
// ── Touch transform (for rotated panels) ──
|
||||
virtual void transformTouch(int* x, int* y) { /* default: no transform */ }
|
||||
};
|
||||
|
||||
@@ -7,3 +7,4 @@
|
||||
#include "IDisplayDriver.h"
|
||||
#include "NetManager.h"
|
||||
#include "ScreenState.h"
|
||||
#include "Style.h"
|
||||
|
||||
62
libraries/KlubhausCore/src/Style.h
Normal file
62
libraries/KlubhausCore/src/Style.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
struct Layout {
|
||||
uint16_t x, y, w, h;
|
||||
|
||||
Layout()
|
||||
: x(0)
|
||||
, y(0)
|
||||
, w(0)
|
||||
, h(0) { }
|
||||
Layout(uint16_t x_, uint16_t y_, uint16_t w_, uint16_t h_)
|
||||
: x(x_)
|
||||
, y(y_)
|
||||
, w(w_)
|
||||
, h(h_) { }
|
||||
|
||||
static Layout fullScreen(uint16_t w, uint16_t h) { return Layout(0, 0, w, h); }
|
||||
|
||||
static Layout header(uint16_t screenW, uint16_t headerH, uint16_t padding = 10) {
|
||||
return Layout(0, 0, screenW, headerH);
|
||||
}
|
||||
|
||||
static Layout content(
|
||||
uint16_t screenW, uint16_t screenH, uint16_t headerH, uint16_t padding = 10) {
|
||||
return Layout(
|
||||
padding, headerH + padding, screenW - 2 * padding, screenH - headerH - 2 * padding);
|
||||
}
|
||||
|
||||
static Layout tile(uint8_t col, uint8_t row, uint8_t cols, uint8_t rows, uint16_t contentW,
|
||||
uint16_t contentH, uint8_t gap = 8) {
|
||||
uint16_t tileW = (contentW - (cols - 1) * gap) / cols;
|
||||
uint16_t tileH = (contentH - (rows - 1) * gap) / rows;
|
||||
uint16_t x = col * (tileW + gap);
|
||||
uint16_t y = row * (tileH + gap);
|
||||
return Layout(x, y, tileW, tileH);
|
||||
}
|
||||
};
|
||||
|
||||
struct TileMetrics {
|
||||
uint16_t tileW;
|
||||
uint16_t tileH;
|
||||
uint16_t gap;
|
||||
uint8_t cols;
|
||||
uint8_t rows;
|
||||
|
||||
static TileMetrics calculate(
|
||||
uint16_t contentW, uint16_t contentH, uint8_t cols, uint8_t rows, uint8_t gap = 8) {
|
||||
TileMetrics m;
|
||||
m.cols = cols;
|
||||
m.rows = rows;
|
||||
m.gap = gap;
|
||||
m.tileW = (contentW - (cols - 1) * gap) / cols;
|
||||
m.tileH = (contentH - (rows - 1) * gap) / rows;
|
||||
return m;
|
||||
}
|
||||
|
||||
Layout get(uint8_t col, uint8_t row) const {
|
||||
return Layout(col * (tileW + gap), row * (tileH + gap), tileW, tileH);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user