Bläddra i källkod

prep for zoom to center

Johann Woelper 6 år sedan
förälder
incheckning
11999c8287
2 ändrade filer med 27 tillägg och 4 borttagningar
  1. 1 0
      .travis.yml
  2. 26 4
      src/main.rs

+ 1 - 0
.travis.yml

@@ -16,6 +16,7 @@ os:
   - windows
 before_deploy:
   - cd $TRAVIS_BUILD_DIR
+  #- mv target/release/oculante target/release/oculante.$TRAVIS_OS_NAME
   - export TRAVIS_TAG="latest"-$TRAVIS_OS_NAME
 deploy:
   provider: releases

+ 26 - 4
src/main.rs

@@ -45,6 +45,7 @@ fn main() {
             
             window.set_lazy(true);
             let mut offset = (100.0,0.0);
+            let mut cursor = (100.0,0.0);
             let mut scale = 1.0;
             let mut drag = false;
             //let mut events = Events::new(EventSettings::new().lazy(true));
@@ -64,12 +65,27 @@ fn main() {
                     if key == Key::R {reset = true;}
                     println!("Pressed keyboard key '{:?}'", key);
                 };
+                if let Some(Button::Keyboard(key)) = e.press_args() {
+                    if key == Key::NumPadPlus {
+                        scale += 0.1;
+
+                        }
+                };
 
                 e.mouse_scroll(|d| {
                     if d[1] > 0.0 {
-                        scale += 0.2;
+                        scale += 0.1;
+
+                        // offset.0 += cursor.0;
+                        // offset.1 += cursor.1;
+                        let mut delta = (0.0,0.0);
+                        delta.0 = offset.0 - cursor.0;// * (1.0 / scale);
+                        println!("offset {:?} / cursor {:?} / delta {:?}", offset.0, cursor.0, delta.0);
+                        // offset.0 -= delta.0 * (1.0/scale);
+                        offset.0 = offset.0 - offset.0* (1.0 / scale);
+                        // offset.1 = cursor.1 - 100.0*scale;
                     } else {
-                        scale -= 0.2;
+                        scale -= 0.1;
                         if scale < 0.1 {scale = 0.1;}
                     }
                 });
@@ -79,6 +95,13 @@ fn main() {
                         offset.1 += d[1];
                     }
                 });
+
+                e.mouse_cursor(|d| {
+                    cursor.0 = d[0];
+                    cursor.1 = d[1];
+                });
+
+
                 // e.resize(|args| {
                 //     println!("Resized '{}, {}'", args.window_size[0], args.window_size[1])
                 // });
@@ -90,8 +113,7 @@ fn main() {
                         scale = 1.0;
                         reset = false;
                     }
-                    let transform = c.transform.trans(offset.0, offset.1).scale(scale, scale);
-
+                    let transform = c.transform.trans(offset.0, offset.1).zoom(scale);
                     image(&texture, transform, gfx);