1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! IO: inputs, configuration and backend capabilities
//!
//! This module wraps Dear ImGui's `ImGuiIO` and related flag types. Access the
//! per-frame IO object via [`Ui::io`], then read inputs or tweak configuration
//! and backend capability flags.
//!
//! Example: enable docking and multi-viewports, and set renderer flags.
//! ```no_run
//! # use dear_imgui_rs::*;
//! # let mut ctx = Context::create();
//! // Configure IO before starting a frame
//! let io = ctx.io_mut();
//! io.set_config_flags(io.config_flags() | ConfigFlags::DOCKING_ENABLE | ConfigFlags::VIEWPORTS_ENABLE);
//! io.set_backend_flags(io.backend_flags() | BackendFlags::RENDERER_HAS_TEXTURES);
//! # let _ = ctx.frame();
//! ```
//!
#![allow(
clippy::cast_possible_truncation,
clippy::cast_sign_loss,
clippy::as_conversions
)]
mod backend;
mod config;
mod core;
mod display;
mod events;
mod flags;
mod font;
mod input_state;
mod metrics;
mod mouse;
mod settings;
#[cfg(test)]
mod tests;
mod validation;
pub use core::Io;
pub use flags::{BackendFlags, ConfigFlags, ViewportFlags};
pub(crate) use core::BoundContextGuard;
pub(crate) use flags::{validate_backend_flags, validate_config_flags, validate_viewport_flags};
pub(crate) use validation::{
assert_display_framebuffer_scale, assert_display_size, assert_finite_f32, assert_finite_vec2,
assert_memory_compact_timer, assert_non_negative_f32, assert_positive_f32,
metric_count_from_i32,
};