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 change
  • zoom < 1: pinch together
  • zoom > 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 change
  • zoom < 1: pinch together
  • zoom > 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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more