comparison 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
comparison
equal deleted inserted replaced
10791:3140cb7a05a1 10792:91342260063e
4229 xlims (0) = x + factor * (xlims (0) - x); 4229 xlims (0) = x + factor * (xlims (0) - x);
4230 xlims (1) = x + factor * (xlims (1) - x); 4230 xlims (1) = x + factor * (xlims (1) - x);
4231 ylims (0) = y + factor * (ylims (0) - y); 4231 ylims (0) = y + factor * (ylims (0) - y);
4232 ylims (1) = y + factor * (ylims (1) - y); 4232 ylims (1) = y + factor * (ylims (1) - y);
4233 4233
4234 // Make sure we stay within the range og the plot
4235 xlims (0) = force_in_range (xlims (0), minx, maxx);
4236 xlims (1) = force_in_range (xlims (1), minx, maxx);
4237 ylims (0) = force_in_range (ylims (0), miny, maxy);
4238 ylims (1) = force_in_range (ylims (1), miny, maxy);
4239
4240 zoom (xlims, ylims, push_to_zoom_stack); 4234 zoom (xlims, ylims, push_to_zoom_stack);
4241 } 4235 }
4242 4236
4243 void 4237 void
4244 axes::properties::zoom (const Matrix& xl, const Matrix& yl, bool push_to_zoom_stack) 4238 axes::properties::zoom (const Matrix& xl, const Matrix& yl, bool push_to_zoom_stack)
4278 double miny = octave_Inf; 4272 double miny = octave_Inf;
4279 double maxy = -octave_Inf; 4273 double maxy = -octave_Inf;
4280 double min_pos_y = octave_Inf; 4274 double min_pos_y = octave_Inf;
4281 get_children_limits (miny, maxy, min_pos_y, kids, 'y'); 4275 get_children_limits (miny, maxy, min_pos_y, kids, 'y');
4282 4276
4283 // Make sure we don't exceed the borders 4277 xlims (0) += delta_x;
4284 if (delta_x > 0) 4278 xlims (1) += delta_x;
4285 delta_x = std::min (xlims (1) + delta_x, maxx) - xlims (1); 4279 ylims (0) += delta_y;
4286 else 4280 ylims (1) += delta_y;
4287 delta_x = std::max (xlims (0) + delta_x, minx) - xlims (0);
4288 xlims (0) = xlims (0) + delta_x;
4289 xlims (1) = xlims (1) + delta_x;
4290
4291 if (delta_y > 0)
4292 delta_y = std::min (ylims (1) + delta_y, maxy) - ylims (1);
4293 else
4294 delta_y = std::max (ylims (0) + delta_y, miny) - ylims (0);
4295 ylims (0) = ylims (0) + delta_y;
4296 ylims (1) = ylims (1) + delta_y;
4297 4281
4298 zoom (xlims, ylims, false); 4282 zoom (xlims, ylims, false);
4283 }
4284
4285 void
4286 axes::properties::rotate_view (double delta_el, double delta_az)
4287 {
4288 Matrix v = get_view ().matrix_value ();
4289
4290 v (1) += delta_el;
4291 v (0) -= delta_az;
4292
4293 set_view(v);
4294 update_transform();
4299 } 4295 }
4300 4296
4301 void 4297 void
4302 axes::properties::unzoom (void) 4298 axes::properties::unzoom (void)
4303 { 4299 {