use embedded_graphics::prelude::*;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ButtonState {
Pressed,
Released,
Repeated,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Key {
Char(char),
Enter,
Escape,
Tab,
Backspace,
Delete,
Left,
Right,
Up,
Down,
Home,
End,
PageUp,
PageDown,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct KeyEvent {
pub key: Key,
pub state: ButtonState,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct EncoderEvent {
pub delta: i32,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum UiAction {
Activate,
Cancel,
FocusNext,
FocusPrevious,
Increment,
Decrement,
NavigateLeft,
NavigateRight,
NavigateUp,
NavigateDown,
Open,
Close,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct TouchEvent {
pub point: Point,
pub phase: TouchPhase,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum TouchPhase {
Down,
Moved,
Up,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum InputEvent {
Touch(TouchEvent),
Key(KeyEvent),
Encoder(EncoderEvent),
Action(UiAction),
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum TickResult {
Idle,
NeedsRedraw,
NeedsLayout,
}
impl TickResult {
#[must_use]
pub fn wants_draw(self) -> bool {
matches!(self, Self::NeedsRedraw | Self::NeedsLayout)
}
}