/** * Copyright (c) 2026 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "uitextbox.h" #include "ui/focus/uifocusitem.h" #define UI_TEXTBOX_MAIN_LINES 4 #define UI_TEXTBOX_MAIN_TEXT_MAX 1024 #define UI_TEXTBOX_MAIN_LINES_MAX 64 typedef struct { uitextbox_t box; char_t text[UI_TEXTBOX_MAIN_TEXT_MAX]; uitextboxline_t lines[UI_TEXTBOX_MAIN_LINES_MAX]; } uitextboxmain_t; extern uitextboxmain_t UI_TEXTBOX_MAIN; /** * Initializes UI_TEXTBOX_MAIN. * * @returns Any error that occurs. */ errorret_t uiTextboxMainInit(void); /** * Copies text into UI_TEXTBOX_MAIN and resets page and scroll. * * @param text Null-terminated source string. */ void uiTextboxMainSetText(const char_t *text); /** * Advances the typewriter scroll for UI_TEXTBOX_MAIN. * * @returns Any error that occurs. */ errorret_t uiTextboxMainUpdate(void); /** * Draws UI_TEXTBOX_MAIN full-width at the bottom of the screen. * Position and size are derived from SCREEN each call. * * @returns Any error that occurs. */ errorret_t uiTextboxMainDraw(void); /** * Returns true when the current page is fully scrolled in. * * @returns True if the current page is complete. */ bool_t uiTextboxMainPageIsComplete(void); /** * Returns true when at least one more page follows the current one. * * @returns True if a next page exists. */ bool_t uiTextboxMainHasNextPage(void); /** * Advances UI_TEXTBOX_MAIN to the next page and resets scroll. * Has no effect if already on the last page. */ void uiTextboxMainNextPage(void); /** * Returns true when UI_TEXTBOX_MAIN has focus (is visible and active). * * @returns True if the textbox is currently active. */ bool_t uiTextboxMainIsActive(void); /** * Internal focus callback - skip scroll or advance page or dismiss. * * @param item The active focus item. * @returns True. */ bool_t uiTextboxMainFocusSelected(const uifocusitem_t *item); /** * Internal focus callback - clears the focus item pointer on dismiss. * * @param item The focus item being closed. * @returns True. */ bool_t uiTextboxMainFocusClosed(const uifocusitem_t *item);