version update, fix vaapi spelling, zoom fixes
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / zwindowgui.C
index 9657b5731380f31eeb1daeb7503646e7b3946bfb..b6cccd03f82352ce4f285a98ccc267bf754f644e 100644 (file)
@@ -39,7 +39,7 @@
 
 ZWindowGUI::ZWindowGUI(MWindow *mwindow, ZWindow *zwindow, Mixer *mixer)
  : BC_Window(zwindow->title, mixer->x, mixer->y, mixer->w, mixer->h,
-       100, 75, 1, 1, 0)
+       xS(100), yS(75), 1, 1, 0)
 {
        this->mwindow = mwindow;
        this->zwindow = zwindow;
@@ -59,7 +59,8 @@ void ZWindowGUI::create_objects()
 {
        lock_window("ZWindowGUI::create_objects");
 
-       canvas = new ZWindowCanvas(mwindow, this, 10,10, get_w()-20,get_h()-20);
+       canvas = new ZWindowCanvas(mwindow, this,
+                       xS(10),yS(10), get_w()-xS(20),get_h()-yS(20));
        canvas->create_objects(mwindow->edl);
        playback_engine = new PlaybackEngine(mwindow, canvas);
        playback_engine->create_objects();
@@ -71,7 +72,8 @@ void ZWindowGUI::create_objects()
 
 int ZWindowGUI::resize_event(int w, int h)
 {
-       canvas->reposition_window(0, 10,10, w-20,h-20);
+       canvas->reposition_window(0,
+                       xS(10),yS(10), w-xS(20),h-yS(20));
        zwindow->reposition(get_x(), get_y(), w, h);
        BC_WindowBase::resize_event(w, h);
        return 1;
@@ -94,26 +96,23 @@ int ZWindowGUI::keypress_event()
                close_event();
                return 1;
        }
-       unlock_window();
        int result = 1;
        switch( key ) {
-       case 'f':
-               if( canvas->get_fullscreen() )
-                       canvas->stop_fullscreen();
-               else
-                       canvas->start_fullscreen();
-               break;
+       case 'f': {
+               int on = canvas->get_fullscreen() ? 0 : 1;
+               canvas->set_fullscreen(on, 1);
+               break; }
        case ESC:
-               if( canvas->get_fullscreen() )
-                       canvas->stop_fullscreen();
+               canvas->set_fullscreen(0, 1);
                break;
        default:
+               unlock_window();
                mwindow->gui->lock_window("ZWindowGUI::keypress_event");
                result = mwindow->gui->mbuttons->transport->do_keypress(key);
                mwindow->gui->unlock_window();
+               lock_window("ZWindowGUI::keypress_event 1");
        }
 
-       lock_window("ZWindowGUI::keypress_event 1");
        return result;
 }
 
@@ -246,3 +245,17 @@ void ZWindowCanvas::draw_refresh(int flush)
                cvs->flash(flush);
 }
 
+float ZWindowCanvas::get_auto_zoom()
+{
+       EDL *edl = gui->zwindow->edl;
+       if( !edl ) edl = mwindow->edl;
+       float conformed_w, conformed_h;
+       edl->calculate_conformed_dimensions(0, conformed_w, conformed_h);
+       BC_WindowBase *window = get_canvas();
+       int cw = window ? window->get_w() : w;
+       int ch = window ? window->get_h() : h;
+       float zoom_x = cw / conformed_w;
+       float zoom_y = ch / conformed_h;
+       return zoom_x < zoom_y ? zoom_x : zoom_y;
+}
+