示例#1
0
void carmen_map_graphics_adjust_scrollbars(GtkMapViewer *map_view, 
					   carmen_world_point_p new_centre) 
{
  double x_value, y_value;
  carmen_point_t screen;  
  GtkAdjustment *x_scroll_adj, *y_scroll_adj;
  
  world_to_screen(new_centre, &screen, map_view);
  x_scroll_adj = map_view->x_scroll_adj;
  y_scroll_adj = map_view->y_scroll_adj;

  screen.x += map_view->x_scroll_adj->value;
  screen.y += map_view->y_scroll_adj->value;

  x_value = screen.x - (x_scroll_adj->page_size/2);
  y_value = screen.y - (y_scroll_adj->page_size/2);

  if (x_value + x_scroll_adj->page_size > x_scroll_adj->upper)
    x_value = x_scroll_adj->upper - x_scroll_adj->page_size;
  if (x_value < 0)
    x_value = 0;

  if (y_value + y_scroll_adj->page_size > y_scroll_adj->upper)
    y_value = y_scroll_adj->upper - y_scroll_adj->page_size;
  if (y_value < 0)
    y_value = 0;

  if (fabs(x_scroll_adj->value - x_value) < 10.0 &&
      fabs(y_scroll_adj->value - y_value) < 10.0)
    return;

  gtk_adjustment_set_value(x_scroll_adj, x_value);
  gtk_adjustment_set_value(y_scroll_adj, y_value);

  map_view->centre = *new_centre;
}
示例#2
0
Imath::Box2i viewport_t::world_to_screen( const Imath::Box2f& b) const
{
	return Imath::Box2i( world_to_screen( Imath::V2f( b.min.x, b.min.y)),
						 world_to_screen( Imath::V2f( b.max.x, b.max.y)));
}