dear-imgui-rs 0.14.0

High-level Rust bindings to Dear ImGui v1.92.7 with docking, WGPU/GL backends, and extensions (ImPlot/ImPlot3D, ImNodes, ImGuizmo, file browser, reflection-based UI)
Documentation
use crate::{InputScalarFlags, InputTextFlags, InputTextMultilineFlags};

fn assert_no_unsupported_bits(caller: &str, ty: &str, bits: i32, all: i32) {
    let unsupported = bits & !all;
    assert!(
        unsupported == 0,
        "{caller} received unsupported {ty} bits: 0x{unsupported:X}"
    );
}

pub(in crate::widget::input) fn validate_input_text_flags(caller: &str, flags: InputTextFlags) {
    assert_no_unsupported_bits(
        caller,
        "InputTextFlags",
        flags.bits(),
        InputTextFlags::all().bits(),
    );
    assert!(
        !flags.contains(InputTextFlags::CALLBACK_COMPLETION)
            || !flags.contains(InputTextFlags::ALLOW_TAB_INPUT),
        "{caller} cannot combine CALLBACK_COMPLETION with ALLOW_TAB_INPUT"
    );
}

pub(in crate::widget::input) fn validate_input_multiline_flags(
    caller: &str,
    flags: InputTextMultilineFlags,
) {
    assert_no_unsupported_bits(
        caller,
        "InputTextMultilineFlags",
        flags.bits(),
        InputTextMultilineFlags::all().bits(),
    );
}

pub(in crate::widget::input) fn validate_input_scalar_flags(caller: &str, flags: InputScalarFlags) {
    assert_no_unsupported_bits(
        caller,
        "InputScalarFlags",
        flags.bits(),
        InputScalarFlags::all().bits(),
    );
}