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;
{
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();
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;
close_event();
return 1;
}
- unlock_window();
int result = 1;
switch( key ) {
case 'f':
- if( mwindow->session->zwindow_fullscreen )
- canvas->stop_fullscreen();
- else
- canvas->start_fullscreen();
+ canvas->set_fullscreen(canvas->get_fullscreen() ? 0 : 1);
break;
case ESC:
- if( mwindow->session->zwindow_fullscreen )
- canvas->stop_fullscreen();
+ canvas->set_fullscreen(0);
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;
}
cvs->flash(flush);
}
-int ZWindowCanvas::get_fullscreen()
-{
- return mwindow->session->zwindow_fullscreen;
-}
-
-void ZWindowCanvas::set_fullscreen(int value)
+float ZWindowCanvas::get_auto_zoom()
{
- mwindow->session->zwindow_fullscreen = value;
+ 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;
}