Files
tactility_apps/Apps/M5UnitTest/main/Source/UiScale.h
T
Shadowtrance dbf850c434 Fixes and new apps (#30)
- M5 Unit Modules library + M5 Unit Test app
- Minor fixes for TodoList, TwoEleven, Snake, Brainfuck and Breakout
- Fixed SerialConsole to use the uart controller as it was broken in one of the many updates
- Fixed keyboard input in TwoEleven, Breakout, Magic8Ball and Snake
- Bluetooth Media Keys app, supports pressing physical keys to trigger the corresponding buttonmatrix button
- Epub Reader app
2026-06-07 15:56:32 +02:00

40 lines
1.5 KiB
C

#pragma once
#include <lvgl.h>
#include <tactility/lvgl_fonts.h>
// Device screen widths in default (portrait) orientation:
// tiny < 200 : small OLEDs, custom breadboard devices
// medium 200-399: M5Stack Core2, Cardputer (~240w)
// large 400-539: 800x480 devices (~480w portrait)
// large 540-719: M5PaperS3 (540w), 1024x600 (600w portrait)
// xlarge 720+ : Tab5 (720w portrait, 1280w landscape)
// uiW() reflects the actual rendered orientation (landscape flips w/h).
static constexpr lv_coord_t UI_TINY_THRESHOLD = 200;
static constexpr lv_coord_t UI_MEDIUM_THRESHOLD = 400;
static constexpr lv_coord_t UI_LARGE_THRESHOLD = 540;
inline lv_coord_t uiW() { return lv_display_get_horizontal_resolution(nullptr); }
inline lv_coord_t uiH() { return lv_display_get_vertical_resolution(nullptr); }
inline lv_coord_t uiShortSide() { lv_coord_t w = uiW(), h = uiH(); return w < h ? w : h; }
inline int uiPad() {
lv_coord_t w = uiW();
if (w < UI_TINY_THRESHOLD) return 4;
if (w < UI_MEDIUM_THRESHOLD) return 8;
if (w < UI_LARGE_THRESHOLD) return 12;
return 16;
}
inline int uiRowGap() {
lv_coord_t w = uiW();
if (w < UI_TINY_THRESHOLD) return 3;
if (w < UI_MEDIUM_THRESHOLD) return 6;
if (w < UI_LARGE_THRESHOLD) return 8;
return 12;
}
inline int uiCols() { return uiW() >= UI_TINY_THRESHOLD ? 2 : 1; }
inline enum LvglFontSize uiFont() {
lv_coord_t w = uiW();
return w < UI_TINY_THRESHOLD ? FONT_SIZE_SMALL : (w < UI_LARGE_THRESHOLD ? FONT_SIZE_DEFAULT : FONT_SIZE_LARGE);
}