diff options
| author | Arne Dußin | 2020-10-28 01:06:25 +0100 |
|---|---|---|
| committer | Arne Dußin | 2020-10-28 01:06:25 +0100 |
| commit | 02df1a7842da9f964d064966fe06d5dfd45a6575 (patch) | |
| tree | c649d9d28fd8344f4d63fa2eb10861b02bed1cde | |
| parent | bb6d0354d81c89ab947e0c565dcab938cb0cc97c (diff) | |
| download | graf_karto-02df1a7842da9f964d064966fe06d5dfd45a6575.tar.gz graf_karto-02df1a7842da9f964d064966fe06d5dfd45a6575.zip | |
Add simple grid that can be scrolled
| -rw-r--r-- | src/main.rs | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index e7a11a9..faa5b7d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,42 @@ +use piston_window::grid::Grid; +use piston_window::*; +use sdl2_window::Sdl2Window; + +pub const BLACK: [f32; 4] = [0.0, 0.0, 0.0, 0.8]; + fn main() { - println!("Hello, world!"); + let mut window: PistonWindow<Sdl2Window> = WindowSettings::new("Hello there!", [1000, 1000]) + .build() + .expect("Could not initialise window"); + + let mut pixels_per_m = 64.; + + let grid_line = Line::new(BLACK, 1.5); + let mut events = Events::new(EventSettings::new().lazy(true)); + while let Some(e) = events.next(&mut window) { + e.mouse_scroll(|[_, y]| { + if y < 0. { + pixels_per_m *= 1.2; + } else if y > 0. { + pixels_per_m /= 1.2; + } + }); + + if let Some(Button::Keyboard(Key::Escape)) = e.press_args() { + window.set_should_close(true); + } + + let win_size = window.draw_size(); + let grid = Grid { + cols: (win_size.width / pixels_per_m) as u32 + 1, + rows: (win_size.height / pixels_per_m) as u32 + 1, + units: pixels_per_m, + }; + + window.draw_2d(&e, |c, g, _device| { + clear([1.0; 4], g); + + grid.draw(&grid_line, &c.draw_state, c.transform, g); + }); + } } |
