Implement UI scaling and more (#501)

**New Features**
 * Runtime font accessors and new symbol fonts for text, launcher, statusbar, and shared icons.
 * Added font height base setting to device.properties
 * Text fonts now have 3 sizes: small, default, large

**Improvements**
 * Renamed `UiScale` to `UiDensity`
 * Statusbar, toolbar and many UI components now compute heights and spacing from fonts/density.
 * SSD1306 initialization sequence refined for more stable startup.
 * Multiple image assets replaced by symbol-font rendering.
 * Many layout improvements related to density, font scaling and icon scaling
 * Updated folder name capitalization for newer style
This commit is contained in:
Ken Van Hoeylandt
2026-02-15 01:41:47 +01:00
committed by GitHub
parent 72c9b2b113
commit 9a11e6f47b
264 changed files with 5923 additions and 494 deletions
@@ -1,6 +1,8 @@
#pragma once
#include <Tactility/hal/sdcard/SdCardDevice.h>
#include <memory>
#include <tactility/hal/Device.h>
#include <vector>
namespace tt::hal {
@@ -11,9 +13,9 @@ typedef std::vector<std::shared_ptr<Device>> DeviceVector;
typedef std::shared_ptr<Device> (*CreateDevice)();
/** Affects LVGL widget style */
enum class UiScale {
enum class UiDensity {
/** Ideal for very small non-touch screen devices (e.g. Waveshare S3 LCD 1.3") */
Smallest,
Compact,
/** Nothing was changed in the LVGL UI/UX */
Default
};
@@ -25,7 +27,7 @@ struct Configuration {
const InitBoot initBoot = nullptr;
/** Modify LVGL widget size */
const UiScale uiScale = UiScale::Default;
const UiDensity uiDensity = UiDensity::Default;
const std::function<DeviceVector()> createDevices = [] { return DeviceVector(); };
};
+2 -2
View File
@@ -7,8 +7,6 @@
namespace tt::lvgl {
constexpr auto STATUSBAR_ICON_LIMIT = 8;
constexpr auto STATUSBAR_ICON_SIZE = 20;
constexpr auto STATUSBAR_HEIGHT = STATUSBAR_ICON_SIZE + 2;
/** Create a statusbar widget. Needs to be called with LVGL lock. */
lv_obj_t* statusbar_create(lv_obj_t* parent);
@@ -28,4 +26,6 @@ void statusbar_icon_set_image(int8_t id, const std::string& image);
/** Update the visibility for an icon on the statusbar. Does not need to be called with LVGL lock. */
void statusbar_icon_set_visibility(int8_t id, bool visible);
int statusbar_get_height();
} // namespace
+1 -1
View File
@@ -1,11 +1,11 @@
#pragma once
#include "../app/AppContext.h"
#include "Tactility/Tactility.h"
#include <lvgl.h>
namespace tt::lvgl {
#define TOOLBAR_ACTION_LIMIT 4
/** Create a toolbar widget that shows the app name as title */