This page does not list every member of every class. It provides the most important mental model for the framework.
![]()
Time updates and input events enter PixelUI, while renderer() advances managers and composes the final frame. The bottom of the diagram shows input priority: once a layer consumes an event, it is not passed any further.
PixelUI
PixelUI is the central entry point. It owns or connects:
- the U8g2 display object;
UiDeadlineSchedulerand the discrete timed states registered with it;AnimationManagerandPopupManager;ViewManager,CoroutineScheduler, andFocusManager;- platform refresh, render-wakeup, and input callbacks;
- the internal millisecond clock and fade state.
Time updates
Time enters PixelUI first. process() advances due state and marks the UI dirty, then renderer() composes any required frame. Except for tickFromISR(), every PixelUI API belongs to the same UI task. See Event-driven rendering for the complete rules.
Input priority
- PixelUI’s FocusManager first handles Widget navigation and the active Widget.
- The input route installed by ViewManager then passes the event to the active Popup.
- When no Popup exists, the event reaches the App at the top of the stack.
- Input is rejected while a page transition is being committed.
This order avoids duplicating Popup and Focus preemption logic in every App.
Drawing order
renderer() first draws the current IDrawable, normally the top App, then draws the Popup and finally the Focus cursor. Fade is a PixelUI-level page transition. ViewManager calls the pending App’s onEnter() only after the fade completes.
