feat(eink): landscape and portrait builds, 8x13 font in landscape

The L1 e-ink solo build splits in two, one per screen shape, so each
screen can be laid out for a single shape. Settings > Rotation now only
turns the screen upside down, and the joystick turns with it.

Landscape writes in misc-fixed 8x13 at the panel's own resolution
(EINK_LARGE_FONT); portrait keeps the 6x9. All drawing moves into
EinkGfxDisplay, which the panel driver and the simulator share; the
FreeSans fonts and the CRC32 library go.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-02 19:24:36 +02:00
co-authored by Claude Opus 5.5
parent a733b8bcf5
commit b0e24bb076
11 changed files with 2459 additions and 323 deletions
@@ -538,7 +538,7 @@ class SettingsScreen : public UIScreen {
#endif
#if FEAT_DISPLAY_ROTATION_SETTING
} else if (item == ROTATION) {
val("Rotation", rotLabel(p ? p->display_rotation : 0));
val("Rotation", rotLabel(p ? p->display_rotation - DISPLAY_ROTATION : 0));
#endif
#if FEAT_JOYSTICK_ROTATION_SETTING
} else if (item == JOY_ROTATION) {
@@ -1040,7 +1040,7 @@ public:
#endif
#if FEAT_DISPLAY_ROTATION_SETTING
if (_selected == ROTATION && p && (left || right || enter)) {
p->display_rotation = (p->display_rotation + (left ? 3 : 1)) & 3;
p->display_rotation ^= 2; // the build's shape, either way up
_task->applyRotation();
_dirty = true;
return true;