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: ConfigFlagsFlags set by user/application
backend_flags: BackendFlagsFlags set by backend
display_size: [f32; 2]Main display size in pixels
delta_time: f32Time elapsed since last frame, in seconds
ini_saving_rate: f32Minimum time between saving positions/sizes to .ini file, in seconds
mouse_double_click_time: f32Time for a double-click, in seconds
mouse_double_click_max_dist: f32Distance threshold to stay in to validate a double-click, in pixels
mouse_drag_threshold: f32Distance threshold before considering we are dragging
key_repeat_delay: f32When holding a key/button, time before it starts repeating, in seconds
key_repeat_rate: f32When holding a key/button, rate at which it repeats, in seconds
hover_delay_normal: f32Delay on hover before ui.is_item_hovered_with_flags(ItemHoveredFlags::DELAY_NORMAL) returns true
hover_delay_short: f32Delay on hover before ui.is_item_hovered_with_flags(ItemHoveredFlags::DELAY_SHORT) returns true
font_global_scale: f32Global scale for all fonts
font_allow_user_scaling: boolAllow 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: boolRequest imgui-rs to draw a mouse cursor for you
config_mac_os_behaviors: boolmacOS-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: boolEnable 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: boolSet to false to disable blinking cursor
config_input_text_enter_keep_active: boolPressing Enter will keep item active and select contents (single-line only).
config_drag_click_to_input_text: boolEnable 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: boolEnable 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: boolSet 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: f32Compact 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: boolWhen true, imgui-rs will use the mouse inputs, so do not dispatch them to your main game/application
want_capture_keyboard: boolWhen true, imgui-rs will use the keyboard inputs, so do not dispatch them to your main game/application
want_text_input: boolMobile/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: boolMouse 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: boolWhen 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: f32Application framerate estimation, in frames per second.
Rolling average estimation based on io.delta_time over 120 frames.
metrics_render_vertices: i32Vertices output during last rendering
metrics_render_indices: i32Indices output during last rendering (= number of triangles * 3)
metrics_render_windows: i32Number of visible windows
metrics_active_windows: i32Number of active windows
metrics_active_allocations: i32Number 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: f32Mouse wheel (vertical).
1 unit scrolls about 5 lines of text.
mouse_wheel_h: f32Mouse wheel (horizontal).
Most users don’t have a mouse with a horizontal wheel, and may not be filled by all backends.
key_ctrl: boolKeyboard modifier pressed: Control
key_shift: boolKeyboard modifier pressed: Shift
key_alt: boolKeyboard modifier pressed: Alt
key_super: boolKeyboard modifier pressed: Cmd/Super/Windows
want_capture_mouse_unless_popup_close: bool§app_focus_lost: boolClear 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