imgui-glutin-support 0.0.21

glutin support code for the imgui crate
Documentation

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

Using the library

In your initialization code call configure_keys:

# extern crate imgui;
# extern crate imgui_glutin_support;
use imgui::ImGui;

# fn main() {
let mut imgui = ImGui::init();
imgui_glutin_support::configure_keys(&mut imgui);
# }

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

# extern crate glutin;
# extern crate imgui;
# extern crate imgui_glutin_support;
# use glutin::EventsLoop;
# use imgui::ImGui;
# fn main() {
# let mut events_loop = EventsLoop::new();
# let mut imgui = ImGui::init();
events_loop.poll_events(|event| {
    // do application-specific stuff with event

    imgui_glutin_support::handle_event(&mut imgui, &event);
});
# }

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:

# extern crate glutin;
# extern crate imgui;
# extern crate imgui_glutin_support;
# use glutin::{EventsLoop, Event, WindowEvent, MouseScrollDelta, TouchPhase};
# use imgui::ImGui;
# fn main() {
# let mut events_loop = EventsLoop::new();
# let mut imgui = ImGui::init();
events_loop.poll_events(|event| {
    // do application-specific stuff with event

    // default handling for events
    imgui_glutin_support::handle_event(&mut imgui, &event);

    // 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);
            }
            _ => ()
        }
    }
});
# }