From 87db9987c8ec762c567e6e11856026b77f9981fd Mon Sep 17 00:00:00 2001 From: Martin Lindhe Date: Thu, 21 Dec 2017 13:34:36 +0100 Subject: [PATCH] add an example using a custom mouse cursor example: cargo run --example cursor --features="image gfx" assets/cursor.png --- Cargo.toml | 4 +++ assets/cursor.png | Bin 0 -> 172 bytes examples/cursor.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 assets/cursor.png create mode 100644 examples/cursor.rs diff --git a/Cargo.toml b/Cargo.toml index ae54c457..26c31d9e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,6 +66,10 @@ name = "audio-wav" [[example]] name = "audio-whitenoise" +[[example]] +required-features = ["image", "gfx"] +name = "cursor" + [[example]] name = "demo" diff --git a/assets/cursor.png b/assets/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..2118eb86ea319ded5001c60636e466e8654ccfcf GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I7G?$phQ^Te;|vT8LIFM@t_+L}jxlu%lkPB7 z?bJ)@HBD%fc6}8bX&Dz$oFPh=e&*S%Z?%Kea Vc0* surface, + Err(err) => panic!("failed to load cursor image: {}", err) + }; + let cursor = match Cursor::from_surface(surface, 0, 0) { + Ok(cursor) => cursor, + Err(err) => panic!("failed to load cursor: {}", err) + }; + cursor.set(); + + canvas.clear(); + canvas.present(); + + let mut events = sdl_context.event_pump().unwrap(); + + 'mainloop: loop { + for event in events.poll_iter() { + match event { + Event::Quit{..} | + Event::KeyDown {keycode: Option::Some(Keycode::Escape), ..} => + break 'mainloop, + Event::MouseButtonDown {x, y, ..} => { + let color = Color::RGB(255, 255, 255); + canvas.pixel(x as i16, y as i16, color).unwrap(); + canvas.present(); + } + _ => {} + } + } + } +} + + +fn main() { + + let args: Vec<_> = env::args().collect(); + + if args.len() < 2 { + println!("Usage: cargo run /path/to/image.(png|jpg)") + } else { + run(Path::new(&args[1])); + } +}