rust_minifb/examples/mouse.rs
2017-08-11 12:41:24 +02:00

45 lines
1.4 KiB
Rust

extern crate minifb;
use minifb::{MouseButton, MouseMode, Window, Key, Scale, WindowOptions};
const WIDTH: usize = 640;
const HEIGHT: usize = 360;
fn main() {
let mut buffer: Vec<u32> = vec![0; WIDTH * HEIGHT];
let mut window = match Window::new("Mouse Draw - Press ESC to exit", WIDTH, HEIGHT,
WindowOptions {
scale: Scale::X2,
..WindowOptions::default()
}) {
Ok(win) => win,
Err(err) => {
println!("Unable to create window {}", err);
return;
}
};
while window.is_open() && !window.is_key_down(Key::Escape) {
window.get_mouse_pos(MouseMode::Discard).map(|mouse| {
let screen_pos = ((mouse.1 as usize) * WIDTH) + mouse.0 as usize;
println!("{:?}", window.get_unscaled_mouse_pos(MouseMode::Discard).unwrap());
if window.get_mouse_down(MouseButton::Left) {
buffer[screen_pos] = 0x00ffffff;
}
if window.get_mouse_down(MouseButton::Right) {
buffer[screen_pos] = 0;
}
});
window.get_scroll_wheel().map(|scroll| {
println!("Scrolling {} - {}", scroll.0, scroll.1);
});
// We unwrap here as we want this code to exit if it fails
window.update_with_buffer(&buffer).unwrap();
}
}