pub mod defaultprocessor;
pub mod errors;
pub mod libinput;
pub use crate::events::defaultprocessor::DefaultProcessor;
pub use crate::events::errors::{LibinputError, ProcessorError};
use input::event::GestureEvent;
use strum::{Display, EnumString, EnumVariantNames};
use strum_macros::EnumIter;
#[derive(
Copy, Clone, Display, EnumIter, EnumString, EnumVariantNames, Eq, Hash, PartialEq, Debug,
)]
#[strum(serialize_all = "kebab_case")]
pub enum ActionEvent {
ThreeFingerSwipeLeft,
ThreeFingerSwipeLeftUp,
ThreeFingerSwipeUp,
ThreeFingerSwipeRightUp,
ThreeFingerSwipeRight,
ThreeFingerSwipeRightDown,
ThreeFingerSwipeDown,
ThreeFingerSwipeLeftDown,
FourFingerSwipeLeft,
FourFingerSwipeLeftUp,
FourFingerSwipeUp,
FourFingerSwipeRightUp,
FourFingerSwipeRight,
FourFingerSwipeRightDown,
FourFingerSwipeDown,
FourFingerSwipeLeftDown,
}
pub enum FingerCount {
ThreeFinger = 3,
FourFinger = 4,
}
impl TryFrom<i32> for FingerCount {
type Error = ProcessorError;
fn try_from(value: i32) -> Result<Self, Self::Error> {
match value {
3 => Ok(FingerCount::ThreeFinger),
4 => Ok(FingerCount::FourFinger),
_ => Err(ProcessorError::UnsupportedFingerCount(value)),
}
}
}
pub enum Axis {
X,
Y,
}
pub trait Processor {
fn dispatch(&mut self, dx: &mut f64, dy: &mut f64) -> Result<Vec<ActionEvent>, LibinputError>;
fn process_event(
&mut self,
event: GestureEvent,
dx: &mut f64,
dy: &mut f64,
) -> Result<Option<ActionEvent>, ProcessorError>;
fn _end_event_to_action_event(
&mut self,
dx: f64,
dy: f64,
finger_count: i32,
) -> Result<ActionEvent, ProcessorError>;
}