[][src]Crate imgui_winit_support

This crate provides support functions to simplify integrating imgui-rs with winit.

Using the library

In your initialization code call configure_keys:

use imgui::ImGui;

let mut imgui = ImGui::init();
imgui_winit_support::configure_keys(&mut imgui);

In your main loop you should already be retrieving events from winit and handling them. All you need to do is pass each event to imgui_winit_support as well:

events_loop.poll_events(|event| {
    // do application-specific stuff with event

    imgui_winit_support::handle_event(
        &mut imgui,
        &event,
        window_hidpi_factor,
        app_hidpi_factor
    );
});

Advanced use cases

In more advanced use cases you might want to handle and filter events yourself and call some of the various smaller helper functions exported by the library.

For example, you might want to customize mouse wheel line scrolling amount:

events_loop.poll_events(|event| {
    // do application-specific stuff with event

    // default handling for events
    imgui_winit_support::handle_event(
        &mut imgui,
        &event,
        window_hidpi_factor,
        app_hidpi_factor
    );

    // Scroll 10 times the pixels per line by handling LineDelta events again and
    // overriding the mouse wheel value
    if let Event::WindowEvent { event, .. } = event {
        match event {
            WindowEvent::MouseWheel {
                delta: MouseScrollDelta::LineDelta(_, lines),
                phase: TouchPhase::Moved,
                ..
            } => {
                imgui.set_mouse_wheel(lines * 10.0);
            }
            _ => ()
        }
    }
});

Functions

configure_keys

Configure imgui key map with winit VirtualKeyCode values

get_frame_size

Get the current frame size for imgui frame rendering.

handle_event

Update imgui state from winit event

handle_keyboard_input

Update imgui keyboard state

handle_modifiers

Update imgui keyboard modifier state

handle_mouse_button_state

Update imgui mouse button state

handle_mouse_scroll_delta

Update imgui mouse wheel position

handle_window_event

Update imgui state from winit window event

update_mouse_cursor

Update winit window mouse cursor state