diff src/graphics.cc @ 10792:91342260063e

mouse rotation for fltk backend
author Shai Ayal <shaiay@users.sourceforge.net>
date Mon, 19 Jul 2010 06:17:54 +0300
parents f72a761a784c
children 89f4d7e294cc
line wrap: on
line diff
--- a/src/graphics.cc	Sat Jul 17 19:53:01 2010 -0700
+++ b/src/graphics.cc	Mon Jul 19 06:17:54 2010 +0300
@@ -4231,12 +4231,6 @@
   ylims (0) = y + factor * (ylims (0) - y);
   ylims (1) = y + factor * (ylims (1) - y);
               
-  // Make sure we stay within the range og the plot
-  xlims (0) = force_in_range (xlims (0), minx, maxx);
-  xlims (1) = force_in_range (xlims (1), minx, maxx);
-  ylims (0) = force_in_range (ylims (0), miny, maxy);
-  ylims (1) = force_in_range (ylims (1), miny, maxy);
-
   zoom (xlims, ylims, push_to_zoom_stack);
 }
 
@@ -4280,25 +4274,27 @@
   double min_pos_y = octave_Inf;
   get_children_limits (miny, maxy, min_pos_y, kids, 'y');
   
-  // Make sure we don't exceed the borders
-  if (delta_x > 0)
-    delta_x = std::min (xlims (1) + delta_x, maxx) - xlims (1);
-  else
-    delta_x = std::max (xlims (0) + delta_x, minx) - xlims (0);
-  xlims (0) = xlims (0) + delta_x;
-  xlims (1) = xlims (1) + delta_x;
-                
-  if (delta_y > 0)
-    delta_y = std::min (ylims (1) + delta_y, maxy) - ylims (1);
-  else
-    delta_y = std::max (ylims (0) + delta_y, miny) - ylims (0);
-  ylims (0) = ylims (0) + delta_y;
-  ylims (1) = ylims (1) + delta_y;
+  xlims (0) += delta_x;
+  xlims (1) += delta_x;
+  ylims (0) += delta_y;
+  ylims (1) += delta_y;
                 
   zoom (xlims, ylims, false);
 }
 
 void
+axes::properties::rotate_view (double delta_el, double delta_az)
+{
+  Matrix v = get_view ().matrix_value ();
+
+  v (1) += delta_el;
+  v (0) -= delta_az;
+
+  set_view(v);
+  update_transform();
+}
+
+void
 axes::properties::unzoom (void)
 {
   if (zoom_stack.size () >= 4)