18 new shapewipe transitions from rafa, rework savefile/confirm for nested edl edits
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / canvas.C
index 93507c3e557a08d897122a27f9994874d028ccfb..963c63d84240d6af1fcea3e2fb793f4c9beb759b 100644 (file)
@@ -114,32 +114,11 @@ 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;
 }
 
-void Canvas::set_fullscreen(int value)
-{
-       is_fullscreen = value;
-}
-
 // Get dimensions given a zoom
 void Canvas::calculate_sizes(float aspect_ratio,
                int output_w, int output_h, float zoom,
@@ -576,29 +555,34 @@ void Canvas::stop_video()
        }
 }
 
-
-int Canvas::use_fullscreen(int on)
+int Canvas::set_fullscreen(int on, int unlock)
 {
+       int ret = 0;
+       BC_WindowBase *window = get_canvas();
+       if( unlock )
+               window->unlock_window();
        if( on && !get_fullscreen() ) {
                start_fullscreen();
-               return 1;
+               ret = 1;
        }
        if( !on && get_fullscreen() ) {
                stop_fullscreen();
-               return 1;
+               ret = 1;
        }
-       return 0;
+       if( unlock )
+               window->lock_window("Canvas::set_fullscreen");
+       return ret;
 }
 
 void Canvas::start_fullscreen()
 {
-       set_fullscreen(1);
+       is_fullscreen = 1;
        create_canvas();
 }
 
 void Canvas::stop_fullscreen()
 {
-       set_fullscreen(0);
+       is_fullscreen = 0;
        create_canvas();
 }
 
@@ -661,7 +645,6 @@ void Canvas::create_canvas()
 }
 
 
-
 int Canvas::cursor_leave_event_base(BC_WindowBase *caller)
 {
        int result = 0;
@@ -694,15 +677,12 @@ int Canvas::keypress_event(BC_WindowBase *caller)
 {
        int key = caller->get_keypress();
        switch( key ) {
-       case 'f':
-               caller->unlock_window();
-               use_fullscreen(get_fullscreen() ? 0 : 1);
-               caller->lock_window("Canvas::keypress_event 1");
-               break;
+       case 'f': {
+               int on = get_fullscreen() ? 0 : 1;
+               set_fullscreen(on, 1);
+               break; }
        case ESC:
-               caller->unlock_window();
-               use_fullscreen(0);
-               caller->lock_window("Canvas::keypress_event 2");
+               set_fullscreen(0, 1);
                break;
        default:
                return 0;
@@ -767,16 +747,22 @@ void Canvas::clear_borders(EDL *edl)
 {
        BC_WindowBase *window = get_canvas();
        if( !window ) return;
-
        int window_w = window->get_w();
        int window_h = window->get_h();
+       int color = get_clear_color();
+       window->set_color(color);
+
+       if( !edl ) {
+               window->draw_box(0, 0, window_w, window_h);
+               window->flash(0);
+               return;
+       }
+
        float output_x1,output_y1, output_x2,output_y2;
        float canvas_x1,canvas_y1, canvas_x2,canvas_y2;
        get_transfers(edl,
                output_x1, output_y1, output_x2, output_y2,
                canvas_x1, canvas_y1, canvas_x2, canvas_y2);
-       int color = get_clear_color();
-       window->set_color(color);
 
        if( canvas_y1 > 0 ) {
                window->draw_box(0, 0, window_w, canvas_y1);
@@ -912,11 +898,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')
 {
@@ -927,9 +908,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->subwindow->unlock_window();
-       canvas->use_fullscreen(0);
-       canvas->subwindow->lock_window("CanvasSubWindowItem::handle_event");
+       canvas->set_fullscreen(0, 1);
        return 1;
 }
 
@@ -976,26 +955,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"))
@@ -1074,7 +1033,6 @@ int CanvasPopupProjectorKeyframe::handle_event()
 }
 
 
-
 CanvasPopupResetTranslation::CanvasPopupResetTranslation(Canvas *canvas)
  : BC_MenuItem(_("Reset translation"))
 {
@@ -1087,33 +1045,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)
-{
-       if(!cwindow_controls)
-               return _("Show controls");
-       else
-               return _("Hide controls");
-}
-
-
-
-
-
-
-
 CanvasFullScreenItem::CanvasFullScreenItem(Canvas *canvas)
  : BC_MenuItem(_("Fullscreen"), "f", 'f')
 {
@@ -1121,20 +1052,11 @@ CanvasFullScreenItem::CanvasFullScreenItem(Canvas *canvas)
 }
 int CanvasFullScreenItem::handle_event()
 {
-       canvas->subwindow->unlock_window();
-       canvas->use_fullscreen(1);
-       canvas->subwindow->lock_window("CanvasFullScreenItem::handle_event");
+       canvas->set_fullscreen(1, 1);
        return 1;
 }
 
 
-
-
-
-
-
-
-
 CanvasPopupRemoveSource::CanvasPopupRemoveSource(Canvas *canvas)
  : BC_MenuItem(_("Close source"))
 {