pub struct MultiTouchInfo {
pub start_time: f64,
pub start_pos: Pos2,
pub num_touches: usize,
pub zoom_delta: f32,
pub zoom_delta_2d: Vec2,
pub rotation_delta: f32,
pub translation_delta: Vec2,
pub force: f32,
}Expand description
All you probably need to know about a multi-touch gesture.
Fields§
§start_time: f64Point in time when the gesture started.
start_pos: Pos2Position of the pointer at the time the gesture started.
num_touches: usizeNumber of touches (fingers) on the surface. Value is ≥ 2 since for a single touch no
MultiTouchInfo is created.
zoom_delta: f32Proportional zoom factor (pinch gesture).
zoom = 1: no changezoom < 1: pinch togetherzoom > 1: pinch spread
zoom_delta_2d: Vec22D non-proportional zoom factor (pinch gesture).
For horizontal pinches, this will return [z, 1],
for vertical pinches this will return [1, z],
and otherwise this will return [z, z],
where z is the zoom factor:
zoom = 1: no changezoom < 1: pinch togetherzoom > 1: pinch spread
rotation_delta: f32Rotation in radians. Moving fingers around each other will change this value. This is a
relative value, comparing the orientation of fingers in the current frame with the previous
frame. If all fingers are resting, this value is 0.0.
translation_delta: Vec2Relative movement (comparing previous frame and current frame) of the average position of
all touch points. Without movement this value is Vec2::ZERO.
Note that this may not necessarily be measured in screen points (although it will be for most mobile devices). In general (depending on the touch device), touch coordinates cannot be directly mapped to the screen. A touch always is considered to start at the position of the pointer, but touch movement is always measured in the units delivered by the device, and may depend on hardware and system settings.
force: f32Current force of the touch (average of the forces of the individual fingers). This is a
value in the interval [0.0 .. =1.0].
Note 1: A value of 0.0 either indicates a very light touch, or it means that the device
is not capable of measuring the touch force at all.
Note 2: Just increasing the physical pressure without actually moving the finger may not necessarily lead to a change of this value.
Trait Implementations§
Source§impl Clone for MultiTouchInfo
impl Clone for MultiTouchInfo
Source§fn clone(&self) -> MultiTouchInfo
fn clone(&self) -> MultiTouchInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MultiTouchInfo
impl Debug for MultiTouchInfo
Source§impl PartialEq for MultiTouchInfo
impl PartialEq for MultiTouchInfo
impl Copy for MultiTouchInfo
impl StructuralPartialEq for MultiTouchInfo
Auto Trait Implementations§
impl Freeze for MultiTouchInfo
impl RefUnwindSafe for MultiTouchInfo
impl Send for MultiTouchInfo
impl Sync for MultiTouchInfo
impl Unpin for MultiTouchInfo
impl UnwindSafe for MultiTouchInfo
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Content for Twhere
T: Copy,
impl<T> Content for Twhere
T: Copy,
Source§unsafe fn read<F, E>(size: usize, f: F) -> Result<T, E>
unsafe fn read<F, E>(size: usize, f: F) -> Result<T, E>
Owned.
User-provided closure F must only write to and not read from &mut Self.Source§fn get_elements_size() -> usize
fn get_elements_size() -> usize
Source§fn to_void_ptr(&self) -> *const ()
fn to_void_ptr(&self) -> *const ()
Source§fn ref_from_ptr<'a>(ptr: *mut (), size: usize) -> Option<*mut T>
fn ref_from_ptr<'a>(ptr: *mut (), size: usize) -> Option<*mut T>
Source§fn is_size_suitable(size: usize) -> bool
fn is_size_suitable(size: usize) -> bool
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.