faststep 0.1.0

UIKit-inspired embedded UI framework built on embedded-graphics
Documentation
use embedded_graphics::{draw_target::DrawTarget, pixelcolor::Rgb565, primitives::Rectangle};

use crate::{FsTheme, I18n, Localized, TouchEvent};

use super::ViewResponse;

/// Compatibility delegate API retained for older `UiApp` consumers.
pub trait ViewDelegate<'a, ViewId> {
    /// Returns the localized title for `view`.
    fn title(&self, view: ViewId) -> Localized<'a>;

    /// Draws one view.
    fn draw_view<D>(
        &self,
        view: ViewId,
        display: &mut D,
        frame: Rectangle,
        theme: &FsTheme,
        i18n: &I18n<'a>,
    ) where
        D: DrawTarget<Color = Rgb565>;

    /// Draws one view layer during animation.
    fn draw_layer<D>(
        &self,
        view: ViewId,
        display: &mut D,
        frame: Rectangle,
        animated: bool,
        theme: &FsTheme,
        i18n: &I18n<'a>,
    ) where
        D: DrawTarget<Color = Rgb565>,
    {
        let _ = animated;
        self.draw_view(view, display, frame, theme, i18n);
    }

    /// Handles a touch event for `view`.
    fn handle_view_touch(
        &mut self,
        view: ViewId,
        touch: TouchEvent,
        frame: Rectangle,
        theme: &FsTheme,
        i18n: &I18n<'a>,
    ) -> ViewResponse<ViewId>;

    /// Advances per-view time-based state.
    fn tick(
        &mut self,
        _view: ViewId,
        _dt_ms: u32,
        _frame: Rectangle,
        _theme: &FsTheme,
        _i18n: &I18n<'a>,
    ) -> ViewResponse<ViewId> {
        ViewResponse::none()
    }

    /// Clears any delegate-owned touch state.
    fn clear_touch_state(&mut self) {}
}