Struct dotrix_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, RandomState>,
    pub events: Vec<Event, Global>,
    // some fields omitted
}
Expand description

Input state that egui updates each frame.

You can check if egui is using the inputs using crate::Context::wants_pointer_input and crate::Context::wants_keyboard_input.

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, RandomState>events: Vec<Event, Global>

In-order events received this frame

Implementations

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

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

Was the given key pressed this frame?

How many times were the given key pressed this frame?

Is the given key currently held down?

Was the given key released this frame?

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

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

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

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.

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

Returns the “default value” for a type. 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

Performs the conversion.

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

Performs the conversion.

Constructs wrapped service

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

The resulting type after obtaining ownership.

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

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

recently added

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.