summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <[email protected]>2025-05-02 08:46:53 -0600
committerSimon Glass <[email protected]>2025-05-30 09:49:32 +0100
commitddd1c97653560c6015f2c165de459ebfdc79f5d7 (patch)
tree32cc48083014622a8df665945147d279500d35ac
parent8d7ae52d7735ffecf34fa8b2657ee2fcfaac51b6 (diff)
expo: Provide a way to position things relative to display
It is often necessary to centre objects within the display area. Add a special position value to indicate this. Signed-off-by: Simon Glass <[email protected]>
-rw-r--r--boot/scene.c5
-rw-r--r--include/expo.h6
2 files changed, 11 insertions, 0 deletions
diff --git a/boot/scene.c b/boot/scene.c
index 237f2bccc00..fa8f540bfb0 100644
--- a/boot/scene.c
+++ b/boot/scene.c
@@ -364,6 +364,11 @@ static void handle_alignment(enum scene_obj_align horiz,
{
int width, height;
+ if (bbox->x1 == SCENEOB_DISPLAY_MAX)
+ bbox->x1 = xsize ?: 1280;
+ if (bbox->y1 == SCENEOB_DISPLAY_MAX)
+ bbox->y1 = ysize ?: 1024;
+
width = bbox->x1 - bbox->x0;
height = bbox->y1 - bbox->y0;
diff --git a/include/expo.h b/include/expo.h
index 2addddd5012..4dee479e9a0 100644
--- a/include/expo.h
+++ b/include/expo.h
@@ -242,6 +242,12 @@ struct scene_obj_dims {
int y;
};
+/* special values for dimensions */
+enum {
+ /* width/height of the display */
+ SCENEOB_DISPLAY_MAX = 0x7f000000,
+};
+
/**
* enum scene_obj_halign - Horizontal alignment of objects
*