#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum TrackingModeExitMode {
OnTouchEnd,
OnMouseLeave,
#[default]
OnNextTap,
}
#[derive(Debug, Clone, Copy, Default)]
pub struct TrackingModeOptions {
pub exit_mode: TrackingModeExitMode,
}
#[derive(Debug, Clone, Copy)]
pub struct HandleScrollOptions {
pub mouse_wheel: bool,
pub pressed_mouse_move: bool,
pub horz_touch_drag: bool,
pub vert_touch_drag: bool,
}
impl Default for HandleScrollOptions {
fn default() -> Self {
Self {
mouse_wheel: true,
pressed_mouse_move: true,
horz_touch_drag: true,
vert_touch_drag: true,
}
}
}
#[derive(Debug, Clone, Copy)]
pub struct AxisPressedMouseMoveOptions {
pub time: bool,
pub price: bool,
}
impl Default for AxisPressedMouseMoveOptions {
fn default() -> Self {
Self {
time: true,
price: true,
}
}
}
#[derive(Debug, Clone, Copy)]
pub struct AxisDoubleClickResetOptions {
pub time: bool,
pub price: bool,
}
impl Default for AxisDoubleClickResetOptions {
fn default() -> Self {
Self {
time: true,
price: true,
}
}
}
#[derive(Debug, Clone, Copy)]
pub struct HandleScaleOptions {
pub mouse_wheel: bool,
pub pinch: bool,
pub axis_pressed_mouse_move: AxisPressedMouseMoveOptions,
pub axis_double_click_reset: AxisDoubleClickResetOptions,
}
impl Default for HandleScaleOptions {
fn default() -> Self {
Self {
mouse_wheel: true,
pinch: true,
axis_pressed_mouse_move: AxisPressedMouseMoveOptions::default(),
axis_double_click_reset: AxisDoubleClickResetOptions::default(),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_tracking_mode_exit_mode_default() {
let mode = TrackingModeExitMode::default();
assert_eq!(mode, TrackingModeExitMode::OnNextTap);
}
#[test]
fn test_tracking_mode_options_default() {
let options = TrackingModeOptions::default();
assert_eq!(options.exit_mode, TrackingModeExitMode::OnNextTap);
}
#[test]
fn test_tracking_mode_exit_modes() {
let on_touch_end = TrackingModeExitMode::OnTouchEnd;
let on_mouse_leave = TrackingModeExitMode::OnMouseLeave;
let on_next_tap = TrackingModeExitMode::OnNextTap;
assert_ne!(on_touch_end, on_mouse_leave);
assert_ne!(on_mouse_leave, on_next_tap);
assert_ne!(on_next_tap, on_touch_end);
}
}