[PATCH 00/52] expo: Various features and improvements
Simon Glass
sjg at chromium.org
Wed Mar 19 15:54:05 CET 2025
This series collects together some new features for expo to make it more
useful for boot menus:
- measurement and display of multi-line text objects
- internal alignment for objects (e.g. centred text)
- editable strings in text fields
- new 'box' object to draw a rectangle
- highlighting of menu items, rather than just relying on a pointer
Expo's boot menu is restructured so that it is possible to iterate
through various bootdevs and update the menu as new ones are found. This
is more in keeping with how bootstd works.
A new textedit object is added, intended to provide a simple text
editor. Future work will complete this.
With this series the boot menu has a better layout and appearance.
Simon Glass (52):
video: Make white-on-black a video-device property
sandbox: Select white-on-black
video: Add a test for font measurement
video: Begin support for measuring multiple lines of text
video: truetype: Fill in the measured line
video: truetype: Support newlines in the measured string
video: truetype: Support a limit on the width of a line
video: Add a way to write a partial string to the console
console: Support a format string for stderr output
test: video: Export the video-checking functions
video: Allow console output to be silenced
video: Add a function to draw a rectangle
expo: Add CLI context to the expo
expo: Add a function to poll for input
expo: Destroy the cedit expo when done
expo: Create a rendering test for cedit
expo: Move cedit-state fields into expo
expo: Test some cedit actions
expo: Provide access to the current menu item
expo: Adjust how menu items are highlighted
expo: Split bootflow_menu_run() into two pieces
expo: Split bootflow_menu_new() into two pieces
expo: Allow adding a single bootflow to a menu
expo: Rename scene_dim to scene_obj_bbox
expo: Rename x and y in struct scene_obj_bbox
expo: Use an abuf to hold strings
expo: Separate dimensions from the bounding box
expo: Make bounding-box calculation more flexible
expo: Support setting the size and bounds of an object
expo: Line up all menu objects
expo: Create a struct for generic text attributes
expo: Move text-rendering into its own function
expo: Tidy up scene_txt_render()
expo: Allow strings to be editable
expo: Check the screen contents after rendering
expo: Support rendering multiple lines of text
expo: Support white-on-black in the theme
expo: Implement a box
expo: Support object alignment
expo: Begin implementation of a text editor
expo: Use a simpler name for USB media
expo: Drop the gap between groups of menu items
expo: Add forward declarations to scene_internal.h
expo: Support highlighting menu items
expo: Adjust expo_poll() to avoid looping forever
expo: Drop the render from expo_poll()
expo: Provide a way to position things relative to display
expo: Improve the visual appearance of the menu
expo: Update bootflow_menu_poll() to return a sequence ID
expo: Split setting up the menu from adding items
expo: Set up menu fully in bootflow_menu_start()
expo: Drop the special theme code for bootflow_menu
arch/sandbox/dts/test.dts | 1 +
boot/Makefile | 2 +-
boot/bootflow_internal.h | 11 +-
boot/bootflow_menu.c | 371 ++++++++++++-----------
boot/cedit.c | 138 +++++----
boot/expo.c | 70 ++++-
boot/scene.c | 471 +++++++++++++++++++++++-------
boot/scene_internal.h | 71 ++++-
boot/scene_menu.c | 143 ++++++---
boot/scene_textedit.c | 60 ++++
boot/scene_textline.c | 44 +--
cmd/bootflow.c | 40 ++-
cmd/cedit.c | 2 +
common/console.c | 18 ++
doc/develop/expo.rst | 34 +++
drivers/video/console_truetype.c | 88 +++++-
drivers/video/vidconsole-uclass.c | 33 ++-
drivers/video/video-uclass.c | 52 +++-
include/bootflow.h | 77 ++++-
include/cedit.h | 13 +
include/console.h | 15 +
include/expo.h | 293 +++++++++++++++++--
include/test/video.h | 45 +++
include/video.h | 31 +-
include/video_console.h | 83 +++++-
test/boot/bootflow.c | 9 +-
test/boot/cedit.c | 66 ++++-
test/boot/expo.c | 214 +++++++++++---
test/dm/video.c | 352 +++++++++++++++-------
29 files changed, 2200 insertions(+), 647 deletions(-)
create mode 100644 boot/scene_textedit.c
create mode 100644 include/test/video.h
--
2.43.0
base-commit: 189e422e7768427f886294d5a9cb0b2e4948a5a5
branch: schd
More information about the U-Boot
mailing list