Skip to main content

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}