Theme: Creamsicle

This commit is contained in:
Jason P
2026-04-13 12:52:18 -05:00
parent 5d45fe6c34
commit e053258b31
3 changed files with 51 additions and 0 deletions

View File

@@ -215,6 +215,34 @@ static const TFTThemeDef kThemes[] = {
TFTPalette::White, // bodyFg
false, // fullFrameInvert
},
// ── Creamsicle (ThemeID::Creamsicle = 5) — light variant ─────────
{
ThemeID::Creamsicle, // id
"Creamsicle", // name
{
{TFTPalette::CreamOrange, TFTPalette::Black}, // HeaderBackground
{TFTPalette::CreamOrange, TFTPalette::White}, // HeaderTitle
{TFTPalette::CreamOrange, TFTPalette::White}, // HeaderStatus
{TFTPalette::DeepOrange, TFTPalette::Cream}, // SignalBars
{TFTPalette::DeepOrange, TFTPalette::Cream}, // BatteryFill
{TFTPalette::CreamOrange, TFTPalette::Cream}, // ConnectionIcon
{TFTPalette::DeepOrange, TFTPalette::Cream}, // UtilizationFill
{TFTPalette::Black, TFTPalette::CreamOrange}, // FavoriteNode
{TFTPalette::CreamOrange, TFTPalette::Cream}, // ActionMenuBorder
{TFTPalette::Black, TFTPalette::Cream}, // ActionMenuBody
{TFTPalette::CreamOrange, TFTPalette::White}, // ActionMenuTitle
{TFTPalette::Black, TFTPalette::White}, // FrameMono
{TFTPalette::White, TFTPalette::CreamOrange}, // BootSplash
{TFTPalette::Black, TFTPalette::CreamOrange}, // BodyYellow
},
TFTPalette::CreamOrange, // headerBg
TFTPalette::White, // headerText
TFTPalette::White, // headerStatus
TFTPalette::Cream, // bodyBg
TFTPalette::Black, // bodyFg
true, // fullFrameInvert
},
};
static constexpr size_t kInternalThemeCount = sizeof(kThemes) / sizeof(kThemes[0]);
@@ -388,6 +416,11 @@ void setTFTColorRole(TFTColorRole role, uint16_t onColor, uint16_t offColor)
if (offColor == TFTPalette::Black)
offColor = TFTPalette::Navy;
break;
case ThemeID::Creamsicle:
// Orange-on-cream: high-contrast dark on orange.
onColor = TFTPalette::Black;
offColor = TFTPalette::CreamOrange;
break;
default:
break;
}
@@ -429,6 +462,18 @@ void setTFTColorRole(TFTColorRole role, uint16_t onColor, uint16_t offColor)
if (offColor == TFTPalette::Black)
offColor = TFTPalette::Navy;
break;
case ThemeID::Creamsicle:
// Invert body colours for readability on cream frames.
if (offColor == TFTPalette::Black) {
offColor = TFTPalette::Cream;
}
if (onColor == TFTPalette::White) {
onColor = TFTPalette::Black;
}
if (onColor == TFTPalette::Yellow) {
onColor = TFTPalette::DeepOrange;
}
break;
default:
break;
}

View File

@@ -69,6 +69,7 @@ constexpr uint32_t DefaultLight = 1;
constexpr uint32_t Christmas = 2;
constexpr uint32_t Pink = 3;
constexpr uint32_t Blue = 4;
constexpr uint32_t Creamsicle = 5;
} // namespace ThemeID
// Per-role color pair stored in native (little-endian) RGB565 format.

View File

@@ -46,5 +46,10 @@ constexpr uint16_t SkyBlue = rgb565(100, 180, 255);
constexpr uint16_t Navy = rgb565(15, 15, 50);
constexpr uint16_t DeepBlue = rgb565(30, 60, 120);
// Creamsicle theme colors (light variant)
constexpr uint16_t CreamOrange = rgb565(255, 140, 50);
constexpr uint16_t DeepOrange = rgb565(220, 100, 20);
constexpr uint16_t Cream = rgb565(255, 248, 235);
} // namespace TFTPalette
} // namespace graphics