refactor(core/rendering): deduplicar Text::write* i nomenar magic numbers (DUP-03 + HC-01)
Text tenia cinc mètodes (write, writeColored, writeMonoDigits, length, lengthMonoDigits) i dos getters (glyphWidth, getGlyphClip) que repetien el mateix patró de resolució de codepoint: find(cp), fallback a '?' si no hi és. Extret a un helper privat resolveGlyph(cp) que centralitza aquesta lògica; totes les funcions passen a usar-lo. write() ara delega directament a writeColored(...) passant el color per defecte, eliminant ~19 línies del bucle UTF-8 duplicades. Els literals 1 (índex de "tinta" al PNG) i 15 (color per defecte a la paleta) passen a ser Text::INK_COLOR_INDEX i Text::DEFAULT_TEXT_COLOR (HC-01). Build + smoke 5s xvfb OK (exit 124). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
5f46fb22a4
commit
a63deac6a3
3 files changed
+47
-53
No files matched your search
@@ -36,6 +36,13 @@ class Text {
|
||||
static constexpr Uint8 CENTER_FLAG = 4;
|
||||
static constexpr Uint8 STROKE_FLAG = 8;
|
||||
|
||||
// Índex del píxel "tinta" al PNG de la font. Els glifs són monocroms
|
||||
// sobre transparent i tots els píxels opacs usen aquest índex; la Surface
|
||||
// el recolora al vol per a emetre el color destí.
|
||||
static constexpr Uint8 INK_COLOR_INDEX = 1;
|
||||
// Color per defecte a la paleta quan s'usa write() sense especificar-lo.
|
||||
static constexpr Uint8 DEFAULT_TEXT_COLOR = 15;
|
||||
|
||||
Text(const std::shared_ptr<Surface>& surface, const std::string& text_file);
|
||||
Text(const std::shared_ptr<Surface>& surface, const std::shared_ptr<File>& text_file);
|
||||
~Text() = default;
|
||||
@@ -68,6 +75,10 @@ class Text {
|
||||
static auto nextCodepoint(const std::string& s, std::size_t& pos) -> std::uint32_t;
|
||||
|
||||
private:
|
||||
// Busca l'Offset del codepoint; si no hi és, cau al glif '?' com a
|
||||
// substitut. Retorna nullptr si tampoc hi ha '?'.
|
||||
[[nodiscard]] auto resolveGlyph(std::uint32_t cp) const -> const Offset*;
|
||||
|
||||
std::unique_ptr<Sprite> sprite_;
|
||||
int box_width_{0};
|
||||
int box_height_{0};
|
||||
|
||||
Reference in new issue
Block a user