Struct egui::InputState[][src]

pub struct InputState {
    pub raw: RawInput,
    pub pointer: PointerState,
    pub scroll_delta: Vec2,
    pub screen_rect: Rect,
    pub pixels_per_point: f32,
    pub time: f64,
    pub unstable_dt: f32,
    pub predicted_dt: f32,
    pub modifiers: Modifiers,
    pub keys_down: HashSet<Key>,
    pub events: Vec<Event>,
    // some fields omitted
}

Input state that egui updates each frame.

Fields

raw: RawInput

The raw input we got this frame from the backend.

pointer: PointerState

State of the mouse or simple touch gestures which can be mapped to mouse operations.

scroll_delta: Vec2

How many pixels the user scrolled.

screen_rect: Rect

Position and size of the egui area.

pixels_per_point: f32

Also known as device pixel ratio, > 1 for high resolution screens.

time: f64

Time in seconds. Relative to whatever. Used for animation.

unstable_dt: f32

Time since last frame, in seconds.

This can be very unstable in reactive mode (when we don’t paint each frame) so it can be smart to use e.g. unstable_dt.min(1.0 / 30.0).

predicted_dt: f32

Used for animations to get instant feedback (avoid frame delay). Should be set to the expected time between frames when painting at vsync speeds.

modifiers: Modifiers

Which modifier keys are down at the start of the frame?

keys_down: HashSet<Key>events: Vec<Event>

In-order events received this frame

Implementations

impl InputState[src]

#[must_use]
pub fn begin_frame(self, new: RawInput) -> InputState
[src]

pub fn screen_rect(&self) -> Rect[src]

pub fn zoom_delta(&self) -> f32[src]

Zoom scale factor this frame (e.g. from ctrl-scroll or pinch gesture).

  • zoom = 1: no change
  • zoom < 1: pinch together
  • zoom > 1: pinch spread

pub fn zoom_delta_2d(&self) -> Vec2[src]

2D non-proportional zoom scale factor this frame (e.g. from ctrl-scroll or pinch gesture).

For multitouch devices the user can do a horizontal or vertical pinch gesture. In these cases a non-proportional zoom factor is a available. In other cases, this reverts to Vec2::splat(self.zoom_delta()).

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

pub fn wants_repaint(&self) -> bool[src]

pub fn key_pressed(&self, desired_key: Key) -> bool[src]

Was the given key pressed this frame?

pub fn num_presses(&self, desired_key: Key) -> usize[src]

How many times were the given key pressed this frame?

pub fn key_down(&self, desired_key: Key) -> bool[src]

Is the given key currently held down?

pub fn key_released(&self, desired_key: Key) -> bool[src]

Was the given key released this frame?

pub fn pixels_per_point(&self) -> f32[src]

Also known as device pixel ratio, > 1 for high resolution screens.

pub fn physical_pixel_size(&self) -> f32[src]

Size of a physical pixel in logical gui coordinates (points).

pub fn aim_radius(&self) -> f32[src]

How imprecise do we expect the mouse/touch input to be? Returns imprecision in points.

pub fn multi_touch(&self) -> Option<MultiTouchInfo>[src]

Returns details about the currently ongoing multi-touch gesture, if any. Note that this method returns None for single-touch gestures (click, drag, …).

let mut zoom = 1.0; // no zoom
let mut rotation = 0.0; // no rotation
if let Some(multi_touch) = ui.input().multi_touch() {
    zoom *= multi_touch.zoom_delta;
    rotation += multi_touch.rotation_delta;
}
let transform = zoom * Rot2::from_angle(rotation);

By far not all touch devices are supported, and the details depend on the egui integration backend you are using. egui_web supports multi touch for most mobile devices, but not for a Trackpad on MacOS, for example. The backend has to be able to capture native touch events, but many browsers seem to pass such events only for touch screens, but not touch pads.

Refer to MultiTouchInfo for details about the touch information available.

Consider using zoom_delta() instead of MultiTouchInfo::zoom_delta as the former delivers a synthetic zoom factor based on ctrl-scroll events, as a fallback.

impl InputState[src]

pub fn ui(&self, ui: &mut Ui)[src]

Trait Implementations

impl Clone for InputState[src]

fn clone(&self) -> InputState[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for InputState[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl Default for InputState[src]

fn default() -> Self[src]

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

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

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.