aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArne Dußin2020-10-28 01:06:25 +0100
committerArne Dußin2020-10-28 01:06:25 +0100
commit02df1a7842da9f964d064966fe06d5dfd45a6575 (patch)
treec649d9d28fd8344f4d63fa2eb10861b02bed1cde /src
parentbb6d0354d81c89ab947e0c565dcab938cb0cc97c (diff)
downloadgraf_karto-02df1a7842da9f964d064966fe06d5dfd45a6575.tar.gz
graf_karto-02df1a7842da9f964d064966fe06d5dfd45a6575.zip
Add simple grid that can be scrolled
Diffstat (limited to 'src')
-rw-r--r--src/main.rs41
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);
+ });
+ }
}