#[repr(C)]pub struct Io {Show 52 fields
pub config_flags: ConfigFlags,
pub backend_flags: BackendFlags,
pub display_size: [f32; 2],
pub delta_time: f32,
pub ini_saving_rate: f32,
pub mouse_double_click_time: f32,
pub mouse_double_click_max_dist: f32,
pub mouse_drag_threshold: f32,
pub key_repeat_delay: f32,
pub key_repeat_rate: f32,
pub hover_delay_normal: f32,
pub hover_delay_short: f32,
pub font_global_scale: f32,
pub font_allow_user_scaling: bool,
pub display_framebuffer_scale: [f32; 2],
pub mouse_draw_cursor: bool,
pub config_mac_os_behaviors: bool,
pub config_input_trickle_event_queue: bool,
pub config_input_text_cursor_blink: bool,
pub config_input_text_enter_keep_active: bool,
pub config_drag_click_to_input_text: bool,
pub config_windows_resize_from_edges: bool,
pub config_windows_move_from_title_bar_only: bool,
pub config_memory_compact_timer: f32,
pub set_platform_ime_data_fn: Option<unsafe extern "C" fn(*mut ImGuiViewport, *mut ImGuiPlatformImeData)>,
pub want_capture_mouse: bool,
pub want_capture_keyboard: bool,
pub want_text_input: bool,
pub want_set_mouse_pos: bool,
pub want_save_ini_settings: bool,
pub nav_active: bool,
pub nav_visible: bool,
pub framerate: f32,
pub metrics_render_vertices: i32,
pub metrics_render_indices: i32,
pub metrics_render_windows: i32,
pub metrics_active_windows: i32,
pub metrics_active_allocations: i32,
pub mouse_delta: [f32; 2],
pub key_map: [u32; 652],
pub keys_down: [bool; 652],
pub nav_inputs: [f32; 16],
pub mouse_pos: [f32; 2],
pub mouse_down: [bool; 5],
pub mouse_wheel: f32,
pub mouse_wheel_h: f32,
pub key_ctrl: bool,
pub key_shift: bool,
pub key_alt: bool,
pub key_super: bool,
pub want_capture_mouse_unless_popup_close: bool,
pub app_focus_lost: bool,
/* private fields */
}
Expand description
Settings and inputs/outputs for imgui-rs
Fields§
§config_flags: ConfigFlags
Flags set by user/application
backend_flags: BackendFlags
Flags set by backend
display_size: [f32; 2]
Main display size in pixels
delta_time: f32
Time elapsed since last frame, in seconds
ini_saving_rate: f32
Minimum time between saving positions/sizes to .ini file, in seconds
mouse_double_click_time: f32
Time for a double-click, in seconds
mouse_double_click_max_dist: f32
Distance threshold to stay in to validate a double-click, in pixels
mouse_drag_threshold: f32
Distance threshold before considering we are dragging
key_repeat_delay: f32
When holding a key/button, time before it starts repeating, in seconds
key_repeat_rate: f32
When holding a key/button, rate at which it repeats, in seconds
hover_delay_normal: f32
Delay on hover before ui.is_item_hovered_with_flags(ItemHoveredFlags::DELAY_NORMAL)
returns true
hover_delay_short: f32
Delay on hover before ui.is_item_hovered_with_flags(ItemHoveredFlags::DELAY_SHORT)
returns true
font_global_scale: f32
Global scale for all fonts
font_allow_user_scaling: bool
Allow user to scale text of individual window with CTRL+wheel
display_framebuffer_scale: [f32; 2]
For retina display or other situations where window coordinates are different from framebuffer coordinates
mouse_draw_cursor: bool
Request imgui-rs to draw a mouse cursor for you
config_mac_os_behaviors: bool
macOS-style input behavior.
Defaults to true on Apple platforms. Changes in behavior:
- Text editing cursor movement using Alt instead of Ctrl
- Shortcuts using Cmd/Super instead of Ctrl
- Line/text start and end using Cmd+Arrows instead of Home/End
- Double-click selects by word instead of selecting the whole text
- Multi-selection in lists uses Cmd/Super instead of Ctrl
config_input_trickle_event_queue: bool
Enable input queue trickling: some types of events submitted during the same frame (e.g. button down + up) will be spread over multiple frames, improving interactions with low framerates.
config_input_text_cursor_blink: bool
Set to false to disable blinking cursor
config_input_text_enter_keep_active: bool
Pressing Enter will keep item active and select contents (single-line only).
config_drag_click_to_input_text: bool
Enable turning DragXXX widgets into text input with a simple mouse click-release (without moving). Not desirable on devices without a keyboard.
config_windows_resize_from_edges: bool
Enable resizing of windows from their edges and from the lower-left corner.
Requires HasMouserCursors
in backend_flags
, because it needs mouse cursor feedback.
config_windows_move_from_title_bar_only: bool
Set to true to only allow moving windows when clicked+dragged from the title bar.
Windows without a title bar are not affected.
config_memory_compact_timer: f32
Compact memory usage when unused.
Set to -1.0 to disable.
set_platform_ime_data_fn: Option<unsafe extern "C" fn(*mut ImGuiViewport, *mut ImGuiPlatformImeData)>
§want_capture_mouse: bool
When true, imgui-rs will use the mouse inputs, so do not dispatch them to your main game/application
want_capture_keyboard: bool
When true, imgui-rs will use the keyboard inputs, so do not dispatch them to your main game/application
want_text_input: bool
Mobile/console: when true, you may display an on-screen keyboard.
This is set by imgui-rs when it wants textual keyboard input to happen.
want_set_mouse_pos: bool
Mouse position has been altered, so the backend should reposition the mouse on the next frame.
Set only when ConfigFlags::NavEnableSetMousePos
is enabled.
want_save_ini_settings: bool
When manual .ini load/save is active (ini_filename
is None
), this will be set to notify
your application that you can call save_ini_settings
and save the settings yourself.
Important: You need to clear this flag yourself
Keyboard/Gamepad navigation is currently allowed
Keyboard/Gamepad navigation is visible and allowed
framerate: f32
Application framerate estimation, in frames per second.
Rolling average estimation based on io.delta_time
over 120 frames.
metrics_render_vertices: i32
Vertices output during last rendering
metrics_render_indices: i32
Indices output during last rendering (= number of triangles * 3)
metrics_render_windows: i32
Number of visible windows
metrics_active_windows: i32
Number of active windows
metrics_active_allocations: i32
Number of active internal imgui-rs allocations
mouse_delta: [f32; 2]
Mouse delta.
Note that this is zero if either current or previous position is invalid ([f32::MAX, f32::MAX]), so a disappearing/reappearing mouse won’t have a huge delta.
key_map: [u32; 652]
Map of indices into the keys_down
entries array, which represent your “native” keyboard
state
keys_down: [bool; 652]
Keyboard keys that are pressed (indexing defined by the user/application)
Gamepad inputs.
Cleared back to zero after each frame. Keyboard keys will be auto-mapped and written
here by frame()
.
mouse_pos: [f32; 2]
Mouse position, in pixels.
Set to [f32::MAX, f32::MAX] if mouse is unavailable (on another screen, etc.).
mouse_down: [bool; 5]
Mouse buttons: 0=left, 1=right, 2=middle + extras
mouse_wheel: f32
Mouse wheel (vertical).
1 unit scrolls about 5 lines of text.
mouse_wheel_h: f32
Mouse wheel (horizontal).
Most users don’t have a mouse with a horizontal wheel, and may not be filled by all backends.
key_ctrl: bool
Keyboard modifier pressed: Control
key_shift: bool
Keyboard modifier pressed: Shift
key_alt: bool
Keyboard modifier pressed: Alt
key_super: bool
Keyboard modifier pressed: Cmd/Super/Windows
want_capture_mouse_unless_popup_close: bool
§app_focus_lost: bool
Clear buttons state when focus is lost (this is useful so e.g. releasing Alt after focus loss on Alt-Tab doesn’t trigger the Alt menu toggle)
Implementations§
Source§impl Io
impl Io
Sourcepub fn add_input_character(&mut self, character: char)
pub fn add_input_character(&mut self, character: char)
Queue new character input
Sourcepub fn clear_input_characters(&mut self)
pub fn clear_input_characters(&mut self)
Clear character input buffer
Sourcepub fn peek_input_characters(&self) -> String
pub fn peek_input_characters(&self) -> String
Peek character input buffer, return a copy of entire buffer
Sourcepub fn input_queue_characters(
&self,
) -> impl DoubleEndedIterator + ExactSizeIterator + Clone
pub fn input_queue_characters( &self, ) -> impl DoubleEndedIterator + ExactSizeIterator + Clone
Returns a view of the data in the input queue (without copying it).
The returned iterator is a simple mapping over a slice more or less what
you need for random access to the data (Rust has no
RandomAccessIterator
, or we’d use that).
pub fn update_delta_time(&mut self, delta: Duration)
pub fn add_mouse_pos_event(&mut self, pos: [f32; 2])
pub fn add_mouse_wheel_event(&mut self, wheel: [f32; 2])
pub fn add_key_event(&mut self, key: Key, down: bool)
pub fn add_key_analog_event(&mut self, key: Key, down: bool, value: f32)
Trait Implementations§
Source§impl Index<MouseButton> for Io
impl Index<MouseButton> for Io
Source§impl IndexMut<MouseButton> for Io
impl IndexMut<MouseButton> for Io
Auto Trait Implementations§
impl Freeze for Io
impl RefUnwindSafe for Io
impl !Send for Io
impl !Sync for Io
impl Unpin for Io
impl UnwindSafe for Io
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> 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 more