X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=acre-x.c;h=f0fac370a5d9bb45e414c7834a6e5e9087805624;hb=2ffdf3bae8e5196ac265c5a228f4507f0ba12899;hp=c1f7c414f42ef26b74cdb563d8ace4aba7e9dd67;hpb=1a4594b5739b8448bf711a30b1c8bf23c0cd1912;p=acre diff --git a/acre-x.c b/acre-x.c index c1f7c41..f0fac37 100644 --- a/acre-x.c +++ b/acre-x.c @@ -103,6 +103,7 @@ handle_events(Display *dpy, Window window, Visual *visual, { XEvent xev; KeyCode quit_code = XKeysymToKeycode (dpy, XStringToKeysym("Q")); + KeyCode escape_code = XKeysymToKeycode (dpy, XStringToKeysym("Escape")); KeyCode left_code = XKeysymToKeycode (dpy, XStringToKeysym("Left")); KeyCode right_code = XKeysymToKeycode (dpy, XStringToKeysym("Right")); KeyCode plus_code = XKeysymToKeycode (dpy, XStringToKeysym("plus")); @@ -120,36 +121,39 @@ handle_events(Display *dpy, Window window, Visual *visual, draw (dpy, window, visual, acre, width, height, x_min, x_max); +#define PAN 0.05 +#define ZOOM PAN XNextEvent (dpy, &xev); switch (xev.type) { case KeyPress: keycode = xev.xkey.keycode; - if (keycode == quit_code) + if (keycode == quit_code || + keycode == escape_code) { return; } else if (keycode == left_code) { - shift = 0.25 * (x_max - x_min); + shift = PAN * (x_max - x_min); x_min += shift; x_max += shift; } else if (keycode == right_code) { - shift = 0.25 * (x_max - x_min); + shift = PAN * (x_max - x_min); x_min -= shift; x_max -= shift; } else if (keycode == plus_code || keycode == equal_code) { - shift = 0.25 * (x_max - x_min); + shift = ZOOM * (x_max - x_min); x_min += shift; x_max -= shift; } else if (keycode == minus_code) { - shift = 0.5 * (x_max - x_min); + shift = (1- 2*ZOOM) * (x_max - x_min); x_min -= shift; x_max += shift; }