Changeset 1777:a70cee06ae9c in lemon-0.x for gui/graph_displayer_canvas-zoom.cc
- Timestamp:
- 11/04/05 20:07:15 (17 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2309
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gui/graph_displayer_canvas-zoom.cc
r1632 r1777 17 17 void GraphDisplayerCanvas::zoomFit() 18 18 { 19 updateScrollRegion(); 20 19 21 // get the height and width of the canvas 20 22 Gtk::Allocation a = get_allocation(); 21 23 int aw = a.get_width(); 22 24 int ah = a.get_height(); 23 // add some space24 aw -= 5; if (aw < 0) aw = 0;25 ah -= 5; if (ah < 0) ah = 0;26 25 27 26 // get the bounding box of the graph 28 double wx1, wy1, wx2, wy2;29 Gnome::Canvas::Item* pCanvasItem = root();30 pCanvasItem->get_bounds(wx1, wy1, wx2, wy2);27 update_now(); 28 double x1, y1, x2, y2; 29 root()->get_bounds(x1, y1, x2, y2); 31 30 32 31 // fit the graph to the window 33 double ppu1 = (double) aw / fabs( wx2 - wx1);34 double ppu2 = (double) ah / fabs( wy2 - wy1);32 double ppu1 = (double) aw / fabs(x2 - x1); 33 double ppu2 = (double) ah / fabs(y2 - y1); 35 34 set_pixels_per_unit((ppu1 < ppu2) ? ppu1 : ppu2); 36 35 } … … 38 37 void GraphDisplayerCanvas::zoom100() 39 38 { 39 updateScrollRegion(); 40 40 set_pixels_per_unit(1.0); 41 41 } … … 43 43 void GraphDisplayerCanvas::updateScrollRegion() 44 44 { 45 double wx1, wy1, wx2, wy2; 46 Gnome::Canvas::Item* pCanvasItem = root(); 47 pCanvasItem->get_bounds(wx1, wy1, wx2, wy2); 48 set_scroll_region(wx1, wy1, wx2, wy2); 45 // get_bounds() yields something sane only when no updates are pending 46 // and it returns a sufficient, not an exact bounding box 47 update_now(); 48 double x1, y1, x2, y2; 49 root()->get_bounds(x1, y1, x2, y2); 50 set_scroll_region(x1, y1, x2, y2); 49 51 }
Note: See TracChangeset
for help on using the changeset viewer.