diff src/DLD-FUNCTIONS/fltk_backend.cc @ 9668:6291b69cf2d2

imported patch fltk_overlay
author Shai Ayal <shaiay@users.sourceforge.net>
date Mon, 28 Sep 2009 15:24:45 -0400
parents ecdb275bd41b
children 09da0bd91412
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/fltk_backend.cc	Sun Sep 27 12:11:33 2009 +0200
+++ b/src/DLD-FUNCTIONS/fltk_backend.cc	Mon Sep 28 15:24:45 2009 -0400
@@ -185,6 +185,9 @@
   }
 };
 
+// Parameter controlling how fast we zoom when using the scrool wheel
+static double wheel_zoom_speed = 0.05;
+
 class plot_window : public Fl_Window
 {
 public:
@@ -482,23 +485,20 @@
 	  }
 	else if (Fl::event_button () == 3)
 	  {
-	    canvas->zoom (true);
 	    Matrix zoom_box (1,4,0);
 	    zoom_box (0) = px0;
 	    zoom_box (1) = py0;
 	    zoom_box (2) =  Fl::event_x ();
 	    zoom_box (3) =  Fl::event_y ();
 	    canvas->set_zoom_box (zoom_box);
+	    canvas->zoom (true);
+	    canvas->redraw_overlay ();
 	  }
 
 	break;
 
       case FL_MOUSEWHEEL:
         {
-          // Parameter controlling how fast we zoom. FIXME: Should
-          // this be user tweakable?
-          const double zoom_speed = 0.05;
-
 	  graphics_object ax = 
 	    gh_manager::get_object (pixel2axes_or_ca (Fl::event_x (), 
 						      Fl::event_y ()));                                                                      
@@ -509,7 +509,7 @@
               
               // Determine if we're zooming in or out
               const double factor = 
-		(Fl::event_dy () > 0) ? 1.0 + zoom_speed : 1.0 - zoom_speed;
+		(Fl::event_dy () > 0) ? 1.0 + wheel_zoom_speed : 1.0 - wheel_zoom_speed;
               
               // Get the point we're zooming about
               double x1, y1;
@@ -964,6 +964,27 @@
   return retval;
 }
 
+DEFUN_DLD (fltk_mouse_wheel_zoom, args, ,
+"-*- texinfo -*-\n\
+@deftypefn {Built-in Function} {} fltk_mouse_wheel_zoom ([@var{speed}])\n\
+Returns the current mouse wheel zoom factor in the fltk backend. If\n\
+the @var{speed} argument is given, set the mouse zoom factor to this\n\
+value.\n\
+@end deftypefn")
+{
+  octave_value retval = wheel_zoom_speed;
+
+  if (args.length () == 1)
+    {
+      if (args(0).is_real_scalar ())
+      wheel_zoom_speed = args(0).double_value ();
+    else
+      error ("argument must be a real scalar");
+    }
+
+  return retval;
+}
+
 #endif
 
 /*