+void CWindowCanvas::zoom_auto()
+{
+ use_scrollbars = 0;
+ set_zoom(mwindow->edl, 0);
+ gui->update_canvas();
+}
+
+int CWindowCanvas::do_scroll(EDL *edl, float cursor_x, float cursor_y)
+{
+ float zoom = get_zoom();
+ float zoom_x, zoom_y, conformed_w, conformed_h;
+ get_zooms(edl, 0, zoom_x, zoom_y, conformed_w, conformed_h);
+ if( !zoom ) {
+ x = get_x_offset(mwindow->edl, 0, zoom_x, conformed_w, conformed_h);
+ y = get_y_offset(mwindow->edl, 0, zoom_y, conformed_w, conformed_h);
+ zoom = get_auto_zoom(mwindow->edl);
+ }
+ else {
+ x = gui->x_origin - cursor_x / zoom_x;
+ y = gui->y_origin - cursor_y / zoom_y;
+ }
+ update_zoom(x, y, zoom);
+ gui->update_canvas();
+ return 1;
+}
+
+int CWindowCanvas::scope_on()
+{
+ EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+ if( !scope_dialog || !scope_dialog->scope_gui ) return 0;
+ if( scope_dialog->scope_gui->use_refresh ) return 0;
+ if( scope_dialog->scope_gui->use_release ) return 0;
+ return scope_dialog->running();
+}
+
+void CWindowCanvas::draw_scope(VFrame *output, int refresh)
+{
+ if( !output ) return;
+ EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+ if( !scope_dialog || !scope_dialog->scope_gui ) return;
+ if( scope_dialog->scope_gui->use_refresh && !refresh ) return;
+ if( scope_dialog->scope_gui->use_release && refresh >= 0 ) return;
+ scope_dialog->process(output);
+}
+