faststep 0.1.0

UIKit-inspired embedded UI framework built on embedded-graphics
Documentation
#[path = "support/mod.rs"]
mod support;

use embedded_graphics::{
    pixelcolor::Rgb565,
    prelude::{Point, RgbColor, Size},
    primitives::Rectangle,
};
use faststep::{Button, ButtonKind, ButtonSpec, Localized, TouchEvent, TouchPhase};

fn main() {
    let mut canvas = support::NullCanvas::new(Size::new(320, 240));
    let theme = support::theme();
    let i18n = support::i18n();

    let mut primary = Button::new(
        Rectangle::new(Point::new(16, 16), Size::new(132, 56)),
        ButtonSpec {
            key: 1_u8,
            icon: Some("+"),
            label: Localized::new("button.add", "Add device"),
            kind: ButtonKind::Primary,
        },
    );
    let secondary = Button::new(
        Rectangle::new(Point::new(16, 84), Size::new(132, 48)),
        ButtonSpec {
            key: 2_u8,
            icon: None,
            label: Localized::new("button.more", "More"),
            kind: ButtonKind::Secondary,
        },
    );
    let destructive = Button::new(
        Rectangle::new(Point::new(16, 144), Size::new(132, 48)),
        ButtonSpec {
            key: 3_u8,
            icon: None,
            label: Localized::new("button.delete", "Delete"),
            kind: ButtonKind::Destructive,
        },
    );

    primary.draw(&mut canvas, &theme, &i18n);
    secondary.draw(&mut canvas, &theme, &i18n);
    destructive.draw(&mut canvas, &theme, &i18n);

    let _ = primary.handle_touch(TouchEvent::new(Point::new(24, 24), TouchPhase::Start, 1));
    let response = primary.handle_touch(TouchEvent::new(Point::new(24, 24), TouchPhase::End, 2));
    let _pressed = response.action == Some(1);

    let _ = Rgb565::BLACK;
}