- float conformed_w, conformed_h;
- mwindow->edl->calculate_conformed_dimensions(0, conformed_w, conformed_h);
- float zoom_x = canvas->w / conformed_w;
- float zoom_y = canvas->h / conformed_h;
- return zoom_x < zoom_y ? zoom_x : zoom_y;
-}
-
-void CWindowGUI::zoom_canvas(double value, int update_menu)
-{
- float x = 0, y = 0;
- float zoom = !value ? get_auto_zoom() : value;
- EDL *edl = mwindow->edl;
- edl->session->cwindow_scrollbars = !value ? 0 : 1;
- if( value ) {
- float cx = 0.5f * canvas->w; x = cx;
- float cy = 0.5f * canvas->h; y = cy;
- canvas->canvas_to_output(edl, 0, x, y);
- canvas->update_zoom(0, 0, zoom);
- float zoom_x, zoom_y, conformed_w, conformed_h;
- canvas->get_zooms(edl, 0, zoom_x, zoom_y, conformed_w, conformed_h);
- x -= cx / zoom_x;
- y -= cy / zoom_y;
-
- }
- canvas->update_zoom((int)(x+0.5), (int)(y+0.5), zoom);
-
- if( update_menu )
- zoom_panel->update(value);
- if( mwindow->edl->session->cwindow_operation == CWINDOW_ZOOM )
+ float zoom = canvas->get_zoom();
+ zoom_panel->update(zoom);
+ if( mwindow->edl->session->cwindow_operation == CWINDOW_ZOOM ) {
+ if( !zoom ) zoom = canvas->get_auto_zoom(mwindow->edl);