Struct rerun::external::eframe::egui::MultiTouchInfo
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: f64
Point in time when the gesture started.
start_pos: Pos2
Position of the pointer at the time the gesture started.
num_touches: usize
Number of touches (fingers) on the surface. Value is ≥ 2 since for a single touch no
MultiTouchInfo
is created.
zoom_delta: f32
Proportional zoom factor (pinch gesture).
zoom = 1
: no changezoom < 1
: pinch togetherzoom > 1
: pinch spread
zoom_delta_2d: Vec2
2D 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: f32
Rotation 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: Vec2
Relative 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: f32
Current 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§
§impl Clone for MultiTouchInfo
impl Clone for MultiTouchInfo
§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 more§impl Debug for MultiTouchInfo
impl Debug for MultiTouchInfo
§impl PartialEq for MultiTouchInfo
impl PartialEq for MultiTouchInfo
§fn eq(&self, other: &MultiTouchInfo) -> bool
fn eq(&self, other: &MultiTouchInfo) -> bool
self
and other
values to be equal, and is used
by ==
.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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request