fix awdw solo vicon crash, fix nested clip for binfolders, open edit edl
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / canvas.C
index e3e1b0f3381d2d826fe1a16f7b3aa7ce0df1ce05..ad5e88111deddac2d2b7deaae86bd2c49186b28e 100644 (file)
@@ -114,22 +114,6 @@ void Canvas::use_auxwindow(BC_WindowBase *aux)
        canvas_auxwindow = aux;
 }
 
-void Canvas::use_cwindow()
-{
-       canvas_menu->use_cwindow();
-       fullscreen_menu->use_cwindow();
-}
-
-void Canvas::use_rwindow()
-{
-       canvas_menu->use_rwindow();
-}
-
-void Canvas::use_vwindow()
-{
-       canvas_menu->use_vwindow();
-}
-
 int Canvas::get_fullscreen()
 {
        return is_fullscreen;
@@ -692,22 +676,21 @@ int Canvas::button_press_event_base(BC_WindowBase *caller)
 int Canvas::keypress_event(BC_WindowBase *caller)
 {
        int key = caller->get_keypress();
-       int on = -1;
        switch( key ) {
-       case 'f':
-               on = get_fullscreen() ? 0 : 1;
-               break;
+       case 'f': {
+               int on = get_fullscreen() ? 0 : 1;
+               set_fullscreen(on, 1);
+               break; }
        case ESC:
-               on = 0;
+               set_fullscreen(0, 1);
                break;
        default:
                return 0;
        }
-       if( on >= 0 )
-               set_fullscreen(on);
        return 1;
 }
 
+// process_scope uses the refresh frame for opengl
 void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
 {
        int best_color_model = output_frame->get_color_model();
@@ -750,6 +733,21 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
        }
        else
                refresh_frame->transfer_from(output_frame, -1);
+       draw_scope(refresh_frame, 1);
+}
+
+void Canvas::process_scope(VideoDevice *video, VFrame *frame)
+{
+       if( !scope_on() ) return;
+       int use_opengl =
+               video->out_config->driver == PLAYBACK_X11_GL &&
+               frame->get_opengl_state() != VFrame::RAM;
+       if( use_opengl ) {
+               update_refresh(video, frame);
+               frame = refresh_frame;
+       }
+       if( frame )
+               draw_scope(frame, 0);
 }
 
 void Canvas::clear(int flash)
@@ -916,11 +914,6 @@ void CanvasFullScreenPopup::create_objects()
        add_item(new CanvasSubWindowItem(canvas));
 }
 
-void CanvasFullScreenPopup::use_cwindow()
-{
-       add_item(new CanvasPopupAuto(canvas));
-}
-
 CanvasSubWindowItem::CanvasSubWindowItem(Canvas *canvas)
  : BC_MenuItem(_("Windowed"), "f", 'f')
 {
@@ -931,7 +924,7 @@ int CanvasSubWindowItem::handle_event()
 {
 // It isn't a problem to delete the canvas from in here because the event
 // dispatcher is the canvas subwindow.
-       canvas->set_fullscreen(0);
+       canvas->set_fullscreen(0, 1);
        return 1;
 }
 
@@ -947,7 +940,7 @@ CanvasPopup::~CanvasPopup()
 }
 
 CanvasZoomSize::CanvasZoomSize(Canvas *canvas)
- : BC_MenuItem(_("Zoom..."))
+ : BC_MenuItem(_("Resize Window..."))
 {
        this->canvas = canvas;
 }
@@ -978,26 +971,6 @@ void CanvasPopup::create_objects()
        submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 400%"), 4.0));
 }
 
-void CanvasPopup::use_cwindow()
-{
-       add_item(new CanvasPopupAuto(canvas));
-       add_item(new CanvasPopupResetCamera(canvas));
-       add_item(new CanvasPopupResetProjector(canvas));
-       add_item(new CanvasPopupCameraKeyframe(canvas));
-       add_item(new CanvasPopupProjectorKeyframe(canvas));
-       add_item(toggle_controls = new CanvasToggleControls(canvas));
-}
-
-void CanvasPopup::use_rwindow()
-{
-       add_item(new CanvasPopupResetTranslation(canvas));
-}
-
-void CanvasPopup::use_vwindow()
-{
-       add_item(new CanvasPopupRemoveSource(canvas));
-}
-
 
 CanvasPopupAuto::CanvasPopupAuto(Canvas *canvas)
  : BC_MenuItem(_("Zoom Auto"))
@@ -1076,7 +1049,6 @@ int CanvasPopupProjectorKeyframe::handle_event()
 }
 
 
-
 CanvasPopupResetTranslation::CanvasPopupResetTranslation(Canvas *canvas)
  : BC_MenuItem(_("Reset translation"))
 {
@@ -1089,25 +1061,6 @@ int CanvasPopupResetTranslation::handle_event()
 }
 
 
-
-CanvasToggleControls::CanvasToggleControls(Canvas *canvas)
- : BC_MenuItem(calculate_text(canvas->get_cwindow_controls()))
-{
-       this->canvas = canvas;
-}
-int CanvasToggleControls::handle_event()
-{
-       canvas->toggle_controls();
-       set_text(calculate_text(canvas->get_cwindow_controls()));
-       return 1;
-}
-
-char* CanvasToggleControls::calculate_text(int cwindow_controls)
-{
-       return !cwindow_controls ? _("Show controls") : _("Hide controls");
-}
-
-
 CanvasFullScreenItem::CanvasFullScreenItem(Canvas *canvas)
  : BC_MenuItem(_("Fullscreen"), "f", 'f')
 {
@@ -1115,7 +1068,7 @@ CanvasFullScreenItem::CanvasFullScreenItem(Canvas *canvas)
 }
 int CanvasFullScreenItem::handle_event()
 {
-       canvas->set_fullscreen(1);
+       canvas->set_fullscreen(1, 1);
        return 1;
 }