Skip to main content

ferroui_base/input/
pointer_delta_event_args.rs

1use super::{IPointer, KeyModifiers, PointerEventArgs, PointerPointProperties};
2use crate::interactivity::RoutedEvent;
3use crate::{ferro_routed_event_args, FerroObject, Nullable, Point, Vector, Visual};
4use std::rc::Rc;
5
6/// Provides data for the touchpad gesture events (magnify, rotate, swipe).
7#[derive(Clone)]
8pub struct PointerDeltaEventArgs {
9    base: PointerEventArgs,
10    delta: Vector,
11}
12
13ferro_routed_event_args!(PointerDeltaEventArgs: PointerEventArgs);
14
15impl PointerDeltaEventArgs {
16    /// Creates pointer delta event args.
17    #[allow(clippy::too_many_arguments)]
18    pub fn new<T: ?Sized>(
19        routed_event: Option<&RoutedEvent<T>>,
20        source: impl Into<Nullable<FerroObject>>,
21        pointer: Rc<dyn IPointer>,
22        root_visual: &Visual,
23        root_visual_position: Point,
24        timestamp: u64,
25        properties: PointerPointProperties,
26        modifiers: KeyModifiers,
27        delta: Vector,
28    ) -> Self {
29        Self {
30            base: PointerEventArgs::new(
31                routed_event,
32                source,
33                pointer,
34                Some(root_visual),
35                root_visual_position,
36                timestamp,
37                properties,
38                modifiers,
39            ),
40            delta,
41        }
42    }
43
44    /// The amount of the gesture.
45    #[inline]
46    pub fn delta(&self) -> Vector {
47        self.delta
48    }
49}