/************************************************************************** ... **************************************************************************/ void scrollbar_scroll_callback(Widget w, XtPointer client_data, XtPointer position_val) { int position = XTPOINTER_TO_INT(position_val); int scroll_x, scroll_y, xstep, ystep; get_mapview_scroll_pos(&scroll_x, &scroll_y); get_mapview_scroll_step(&xstep, &ystep); if (!can_client_change_view()) { return; } if(w==map_horizontal_scrollbar) { if (position > 0) { scroll_x += xstep; } else { scroll_x -= xstep; } } else { if (position > 0) { scroll_y += ystep; } else { scroll_y -= ystep; } } set_mapview_scroll_pos(scroll_x, scroll_y); update_map_canvas_scrollbars(); }
/************************************************************************** ... **************************************************************************/ void update_map_canvas_scrollbars(void) { int scroll_x, scroll_y; get_mapview_scroll_pos(&scroll_x, &scroll_y); gtk_adjustment_set_value(GTK_ADJUSTMENT(map_hadj), scroll_x); gtk_adjustment_set_value(GTK_ADJUSTMENT(map_vadj), scroll_y); }
/************************************************************************** Refresh map canvas scrollbars **************************************************************************/ void update_map_canvas_scrollbars(void) { int scroll_x, scroll_y; get_mapview_scroll_pos(&scroll_x, &scroll_y); gtk_adjustment_set_value(map_hadj, scroll_x); gtk_adjustment_set_value(map_vadj, scroll_y); if (can_client_change_view()) { gtk_widget_queue_draw(overview_canvas); } }
/************************************************************************** ... **************************************************************************/ void scrollbar_jump_callback(GtkAdjustment *adj, gpointer hscrollbar) { int scroll_x, scroll_y; if (!can_client_change_view()) { return; } get_mapview_scroll_pos(&scroll_x, &scroll_y); if (hscrollbar) { scroll_x = adj->value; } else { scroll_y = adj->value; } set_mapview_scroll_pos(scroll_x, scroll_y); }
/************************************************************************** ... **************************************************************************/ void update_map_canvas_scrollbars(void) { float shown_h, top_h, shown_v, top_v; int xmin, ymin, xmax, ymax, xsize, ysize; int scroll_x, scroll_y; get_mapview_scroll_window(&xmin, &ymin, &xmax, &ymax, &xsize, &ysize); get_mapview_scroll_pos(&scroll_x, &scroll_y); top_h = (float)(scroll_x - xmin) / (float)(xmax - xmin); top_v = (float)(scroll_y - ymin) / (float)(ymax - ymin); shown_h = (float)xsize / (float)(xmax - xmin); shown_v = (float)ysize / (float)(ymax - ymin); XawScrollbarSetThumb(map_horizontal_scrollbar, top_h, shown_h); XawScrollbarSetThumb(map_vertical_scrollbar, top_v, shown_v); }
/************************************************************************** ... **************************************************************************/ void scrollbar_jump_callback(Widget w, XtPointer client_data, XtPointer percent_ptr) { float percent=*(float*)percent_ptr; int xmin, ymin, xmax, ymax, xsize, ysize; int scroll_x, scroll_y; if (!can_client_change_view()) { return; } get_mapview_scroll_window(&xmin, &ymin, &xmax, &ymax, &xsize, &ysize); get_mapview_scroll_pos(&scroll_x, &scroll_y); if(w==map_horizontal_scrollbar) { scroll_x = xmin + (percent * (xmax - xmin)); } else { scroll_y = ymin + (percent * (ymax - ymin)); } set_mapview_scroll_pos(scroll_x, scroll_y); }