mixer align audio, track dump tweak, zwdw refresh edl fix, sketcher tweak
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / canvas.C
index 0997e064dcafd393acce96fadf419b65ad3a2cd9..85316aaa5aefce2ad5b4b8b27c9fd9adca544ad3 100644 (file)
@@ -88,6 +88,7 @@ void Canvas::reset()
        canvas_subwindow = 0;
        canvas_fullscreen = 0;
        is_processing = 0;
+       is_fullscreen = 0;
        cursor_inside = 0;
 }
 
@@ -135,6 +136,16 @@ 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,
@@ -756,8 +767,7 @@ void Canvas::create_canvas()
                int x, y, w, h;
                wdw->get_fullscreen_geometry(x, y, w, h);
 
-               if( canvas_fullscreen )
-               {
+               if( canvas_fullscreen ) {
                        if( x != canvas_fullscreen->get_x() ||
                            y != canvas_fullscreen->get_y() ||
                            w != canvas_fullscreen->get_w() ||
@@ -766,26 +776,21 @@ void Canvas::create_canvas()
                                canvas_fullscreen = 0;
                        }
                }
-               if(!canvas_fullscreen)
-               {
+               if( !canvas_fullscreen )
                        canvas_fullscreen = new CanvasFullScreen(this, w, h);
-               }
-               else
-               {
-                       canvas_fullscreen->reposition_window(x, y);
-                       canvas_fullscreen->show_window();
-               }
+               canvas_fullscreen->show_window();
+               canvas_fullscreen->sync_display();
+               canvas_fullscreen->reposition_window(x, y);
        }
 
-
-       if(!video_on)
-       {
+       if( !video_on ) {
                get_canvas()->lock_window("Canvas::create_canvas 1");
                draw_refresh();
                get_canvas()->unlock_window();
        }
 
-       if(video_on) get_canvas()->start_video();
+       if( video_on )
+               get_canvas()->start_video();
 
        get_canvas()->lock_window("Canvas::create_canvas 2");
        get_canvas()->focus();
@@ -1050,19 +1055,36 @@ CanvasPopup::~CanvasPopup()
 {
 }
 
+CanvasZoomSize::CanvasZoomSize(Canvas *canvas)
+ : BC_MenuItem(_("Zoom..."))
+{
+       this->canvas = canvas;
+}
+
+CanvasSizeSubMenu::CanvasSizeSubMenu(CanvasZoomSize *zoom_size)
+{
+       this->zoom_size = zoom_size;
+}
+
 void CanvasPopup::create_objects()
 {
        add_item(new BC_MenuItem("-"));
        add_item(new CanvasFullScreenItem(canvas));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 25%"), 0.25));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 33%"), 0.33));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 50%"), 0.5));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 75%"), 0.75));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 100%"), 1.0));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 150%"), 1.5));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 200%"), 2.0));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 300%"), 3.0));
-       add_item(new CanvasPopupSize(canvas, _("Zoom 400%"), 4.0));
+
+       CanvasZoomSize *zoom_size = new CanvasZoomSize(canvas);
+       add_item(zoom_size);
+       CanvasSizeSubMenu *submenu = new CanvasSizeSubMenu(zoom_size);
+       zoom_size->add_submenu(submenu);
+
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 25%"), 0.25));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 33%"), 0.33));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 50%"), 0.5));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 75%"), 0.75));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 100%"), 1.0));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 150%"), 1.5));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 200%"), 2.0));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 300%"), 3.0));
+       submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 400%"), 4.0));
 }
 
 void CanvasPopup::use_cwindow()
@@ -1070,6 +1092,8 @@ 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));
 }
 
@@ -1115,7 +1139,7 @@ int CanvasPopupSize::handle_event()
 
 
 CanvasPopupResetCamera::CanvasPopupResetCamera(Canvas *canvas)
- : BC_MenuItem(_("Reset camera"), "F11", KEY_F11)
+ : BC_MenuItem(_("Reset camera"), _("F11"), KEY_F11)
 {
        this->canvas = canvas;
 }
@@ -1125,10 +1149,8 @@ int CanvasPopupResetCamera::handle_event()
        return 1;
 }
 
-
-
 CanvasPopupResetProjector::CanvasPopupResetProjector(Canvas *canvas)
- : BC_MenuItem(_("Reset projector"), "F12", KEY_F12)
+ : BC_MenuItem(_("Reset projector"), _("F12"), KEY_F12)
 {
        this->canvas = canvas;
 }
@@ -1139,6 +1161,31 @@ int CanvasPopupResetProjector::handle_event()
 }
 
 
+CanvasPopupCameraKeyframe::CanvasPopupCameraKeyframe(Canvas *canvas)
+ : BC_MenuItem(_("Camera keyframe"), _("Shift-F11"), KEY_F11)
+{
+       this->canvas = canvas;
+       set_shift(1);
+}
+int CanvasPopupCameraKeyframe::handle_event()
+{
+       canvas->camera_keyframe();
+       return 1;
+}
+
+CanvasPopupProjectorKeyframe::CanvasPopupProjectorKeyframe(Canvas *canvas)
+ : BC_MenuItem(_("Projector keyframe"), _("Shift-F12"), KEY_F12)
+{
+       this->canvas = canvas;
+       set_shift(1);
+}
+int CanvasPopupProjectorKeyframe::handle_event()
+{
+       canvas->projector_keyframe();
+       return 1;
+}
+
+
 
 CanvasPopupResetTranslation::CanvasPopupResetTranslation(Canvas *canvas)
  : BC_MenuItem(_("Reset translation"))