Mercurial > octave-nkf
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 /*