use blinc_app::prelude::*;
pub const EVT_MOUSE_DOWN_NODE: u32 = 1;
pub const EVT_MOUSE_DOWN_BG: u32 = 2;
pub const EVT_MOUSE_UP: u32 = 3;
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default)]
pub enum CanvasMode {
#[default]
Idle,
NodeDragging,
Panning,
}
impl StateTransitions for CanvasMode {
fn on_event(&self, event: u32) -> Option<Self> {
match (self, event) {
(CanvasMode::Idle, EVT_MOUSE_DOWN_NODE) => Some(CanvasMode::NodeDragging),
(CanvasMode::Idle, EVT_MOUSE_DOWN_BG) => Some(CanvasMode::Panning),
(CanvasMode::NodeDragging, EVT_MOUSE_UP) => Some(CanvasMode::Idle),
(CanvasMode::Panning, EVT_MOUSE_UP) => Some(CanvasMode::Idle),
_ => None,
}
}
}