File xmakemol-zoom.patch of Package xmakemol

--- A/xmakemol.c	2007-08-25 13:20:18.000000000 +0200
+++ B/xmakemol.c	2013-11-22 22:41:52.834309782 +0100
@@ -114,6 +114,10 @@
      <Btn3Down>:        track(6)  \n\
      <Btn3Motion>:      track(7)  \n\
      <Btn3Up>:          track(8)  \n\
+     <Key>x:            track(27) \n\
+     <Key>y:            track(28) \n\
+     <Key>+:            track(27) \n\
+     <Key>-:            track(28) \n\
      <Key><:            frame_key(prev)  \n\
      <Key>>:            frame_key(next)  \n\
      <Key>^:            frame_key(start)";
--- A/track.c	2007-08-25 13:20:18.000000000 +0200
+++ B/track.c	2013-11-22 22:41:52.834309782 +0100
@@ -83,7 +83,9 @@
   SHIFT_TWO_UP,
   SHIFT_THREE_DOWN,
   SHIFT_THREE_MOTION,
-  SHIFT_THREE_UP
+  SHIFT_THREE_UP,
+  ZOOM_IN,
+  ZOOM_OUT
 } mouse_translation;
 
 void
@@ -166,6 +168,8 @@
 
   void xy_translation (void);   /* Translate in XY plane */
   void z_translation (void);    /* Translate along Z */
+  void z_translation1 (void);    /* Translate along Z */
+  void z_translation2 (void);    /* Translate along Z */
   void select_atom_for_edit (void);
 
   void region_set_start (XButtonEvent *);
@@ -263,6 +267,12 @@
           break;
         case SHIFT_THREE_UP:
           break;
+        case ZOOM_IN:
+          z_translation1 ();
+          break;
+        case ZOOM_OUT:
+          z_translation2 ();
+          break;
         }
     }
 }
@@ -438,6 +448,39 @@
 
 }
 
+void z_translation1 (void)
+{
+
+  double get_canvas_scale(void);
+  void set_canvas_scale (double);
+  void canvas_cb(Widget, XtPointer, XtPointer);
+  void reset_pers_scales(void);
+
+  double scale = get_canvas_scale()*1.1;
+  if (scale > 1023.0) scale = 1023.0;
+  if (scale < 0.1) scale = 0.1;
+  set_canvas_scale (scale);
+  redraw = 1;
+  canvas_cb (canvas, NULL, NULL);
+  reset_pers_scales();
+}
+void z_translation2 (void)
+{
+
+  double get_canvas_scale(void);
+  void set_canvas_scale (double);
+  void canvas_cb(Widget, XtPointer, XtPointer);
+  void reset_pers_scales(void);
+
+  double scale = get_canvas_scale()*0.8888;
+  if (scale > 1023.0) scale = 1023.0;
+  if (scale < 0.1) scale = 0.1;
+  set_canvas_scale (scale);
+  redraw = 1;
+  canvas_cb (canvas, NULL, NULL);
+  reset_pers_scales();
+}
+
 
 void
 select_atom_for_edit (void)
openSUSE Build Service is sponsored by