COIN-OR::LEMON - Graph Library

Ignore:
Timestamp:
02/02/07 11:13:33 (13 years ago)
Author:
Hegyi Péter
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/glemon/trunk@3150
Message:

Zoom is now available with mouse-wheel.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • graph_displayer_canvas-event.cc

    r179 r187  
    9494{
    9595  return actual_tool;
     96}
     97
     98bool GraphDisplayerCanvas::scrollEventHandler(GdkEvent* e)
     99{
     100  bool handled=false;
     101  if(e->type==GDK_SCROLL)
     102    {
     103
     104      //pointer shows this win point before zoom
     105      XY win_coord(((GdkEventScroll*)e)->x, ((GdkEventScroll*)e)->y);
     106
     107      //the original scroll settings
     108      int scroll_offset_x, scroll_offset_y;
     109      get_scroll_offsets(scroll_offset_x, scroll_offset_y);
     110
     111      //pointer shows this canvas point before zoom
     112      XY canvas_coord;
     113      window_to_world(win_coord.x, win_coord.y, canvas_coord.x, canvas_coord.y);
     114
     115      if(((GdkEventScroll*)e)->direction) //IN
     116        {
     117          zoomIn();
     118        }
     119      else
     120        {
     121          zoomOut();
     122        }
     123
     124      //pointer shows this window point after zoom
     125      XY post_win_coord;
     126      world_to_window(canvas_coord.x, canvas_coord.y, post_win_coord.x, post_win_coord.y);
     127
     128      //we have to add the difference between new and old window point to original scroll offset
     129      scroll_to(scroll_offset_x+(int)(post_win_coord.x-win_coord.x),scroll_offset_y+(int)(post_win_coord.y-win_coord.y));
     130     
     131      //no other eventhandler is needed
     132      handled=true;
     133    }
     134  return handled;
    96135}
    97136
Note: See TracChangeset for help on using the changeset viewer.