Michael Heilmann's Arcadia Visuals
This is the documentation for Michael Heilmann's Arcadia UI. Arcadia UI provides a user interface (windows, buttons, text fields, etc.) for Michael Heilmann's Arcadia Engine.
UI Basics: A user interface consists of a UI canvas node in which UI widgets are placed. The UI canvas node has a width and height, which may change, depending on the context in which the UI canvas is used. For example, a UI canvas might resize according to the application's window inner size. A UI canvas / its contained UI controls should react reasonably to these size changees.
Documentation
UI Interfaces
Engine.UI uses small runtime interfaces to describe widget capabilities. A concrete UI object implements only the interfaces whose operations it supports. Shared widget state such as geometry, focus flags, ownership, and signals should remain on concrete object types or common base objects; optional behavior belongs in these capability interfaces.
The interface source definitions live in individual .pdl files, one file per interface.
The checked-in .c and .h files next to them are the PDLC-generated runtime
bindings used by Engine.UI.
Interface dispatch remains exact: callers invoke the operation of the requested interface. The runtime adds ancestor interface implementation records for derived interfaces, but ancestor operation slots still need their own implementations. For this reason, operation-bearing UI interfaces are intentionally kept flat in the first UI foundation pass.
| Interface | Purpose | Typical Implementers |
|---|---|---|
Arcadia.Engine.UI.Renderable |
Renders an object into an active visuals enter pass. | Labels, buttons, panels, sliders, scroll panels, dialogs. |
Arcadia.Engine.UI.HitTestable |
Answers whether a UI-space point is inside the object's interactive region. | Interactive controls and containers. |
Arcadia.Engine.UI.Focusable |
Receives or releases keyboard/controller focus and reports focus state. | Buttons, toggles, sliders, dropdowns, text fields, key binding rows. |
Arcadia.Engine.UI.PointerInput |
Consumes mouse pointer and mouse button events. | Buttons, toggles, sliders, dropdowns, scroll panels. |
Arcadia.Engine.UI.KeyboardInput |
Consumes keyboard key events routed to the focused object. | Focusable controls and key binding rows. |
Arcadia.Engine.UI.Activatable |
Exposes a primary action independent of whether it was triggered by pointer, keyboard, or controller. | Buttons, toggles, tab buttons, dropdown entries, segmented choice segments. |
Arcadia.Engine.UI.ValueControl |
Gets and sets a control value using the current object-valued PDL interface contract. | Toggles, sliders, dropdowns, segmented choices, text fields, key binding rows. |
Arcadia.Engine.UI.Container |
Owns an ordered child list and defines composition/z-order. | Canvas, panels, scroll panels, dialogs, composite controls. |
Arcadia.Engine.UI.Scrollable |
Maintains a scroll offset and supports relative or absolute scrolling. | Scroll panels and dropdown popup lists. |
The first required options-screen controls should be built by combining these interfaces: button, toggle, slider, dropdown or segmented choice, tab button, scroll panel, key binding row, and warning label. Confirmation dialogs and preview panels should reuse the same contracts later.