zest_core/screen.rs
1//! The [`ScreenView`] trait: a screen's name, theme, and view tree.
2
3use crate::widget::Element;
4use embedded_graphics::pixelcolor::PixelColor;
5use zest_theme::Theme;
6
7/// Per-screen contract.
8pub trait ScreenView<C: PixelColor, M: Clone> {
9 /// Human-readable screen name.
10 fn name(&self) -> &'static str;
11
12 /// Build a fresh widget tree from `&self`. Called once per frame;
13 /// the returned tree is owned for that frame and dropped at its end.
14 fn view(&self) -> Element<'_, C, M>;
15
16 /// Theme used to draw this screen.
17 fn theme(&self) -> &Theme<'_, C>;
18}