X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fzoombar.C;h=d8d3ccc35faf001b8869e1965bf6d66db3d8e2ff;hp=60ed04c5bdebd0391352c579f2ca6e1bd02b2f6e;hb=1db0dacec8f9d7f5687e582bd282d9bf83bd58f0;hpb=0df48ad2d876409c5beeae2e21933a728ea76c33 diff --git a/cinelerra-5.1/cinelerra/zoombar.C b/cinelerra-5.1/cinelerra/zoombar.C index 60ed04c5..d8d3ccc3 100644 --- a/cinelerra-5.1/cinelerra/zoombar.C +++ b/cinelerra-5.1/cinelerra/zoombar.C @@ -21,6 +21,8 @@ #include "apatchgui.inc" #include "clip.h" +#include "cwindow.h" +#include "cwindowgui.h" #include "edl.h" #include "edlsession.h" #include "keys.h" @@ -54,7 +56,8 @@ ZoomBar::~ZoomBar() { delete sample_zoom; delete amp_zoom; - delete track_zoom; + delete atrack_zoom; + delete vtrack_zoom; } void ZoomBar::create_objects() @@ -72,10 +75,14 @@ void ZoomBar::create_objects() amp_zoom->create_objects(); amp_zoom->set_tooltip(_("Audio waveform scale")); x += amp_zoom->get_w(); - track_zoom = new TrackZoomPanel(mwindow, this, x, y); - track_zoom->create_objects(); - track_zoom->set_tooltip(_("Height of tracks in the timeline")); - x += track_zoom->get_w() + xs10; + atrack_zoom = new ATrackZoomPanel(mwindow, this, x, y); + atrack_zoom->create_objects(); + atrack_zoom->set_tooltip(_("Height of audio tracks")); + x += atrack_zoom->get_w() + xs10; + vtrack_zoom = new VTrackZoomPanel(mwindow, this, x, y); + vtrack_zoom->create_objects(); + vtrack_zoom->set_tooltip(_("Height of video tracks")); + x += vtrack_zoom->get_w() + xs10; int wid = xS(120); for( int i=AUTOGROUPTYPE_AUDIO_FADE; i<=AUTOGROUPTYPE_Y; ++i ) { @@ -88,12 +95,7 @@ void ZoomBar::create_objects() #define DEFAULT_TEXT "000.00 to 000.00" add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y, 0)); x += auto_zoom->get_w(); - add_subwindow(auto_zoom_text = new ZoomTextBox( - mwindow, - this, - x, - y, - DEFAULT_TEXT)); + add_subwindow(auto_zoom_text = new ZoomTextBox(mwindow, this, x, y, DEFAULT_TEXT)); x += auto_zoom_text->get_w() + xs5; add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y, 1)); update_autozoom(); @@ -188,6 +190,18 @@ void ZoomBar::update_autozoom(int color) auto_zoom_text->update(string); const char *group_name = AutoTypeMenu::to_text(autogroup_type); auto_type->set_text(group_name); + switch( autogroup_type ) { + case AUTOGROUPTYPE_ZOOM: + case AUTOGROUPTYPE_X: + case AUTOGROUPTYPE_Y: + CWindowGUI *cgui = mwindow->cwindow->gui; + unlock_window(); + cgui->lock_window("ZoomBar::update_autozoom"); + cgui->update_tool(); + cgui->unlock_window(); + lock_window("ZoomBar::update_autozoom"); + break; + } } @@ -195,7 +209,8 @@ int ZoomBar::update() { sample_zoom->update(mwindow->edl->local_session->zoom_sample); amp_zoom->update(mwindow->edl->local_session->zoom_y); - track_zoom->update(mwindow->edl->local_session->zoom_track); + atrack_zoom->update(mwindow->edl->local_session->zoom_atrack); + vtrack_zoom->update(mwindow->edl->local_session->zoom_vtrack); update_autozoom(); update_clocks(); return 0; @@ -366,32 +381,49 @@ int SampleZoomPanel::handle_event() AmpZoomPanel::AmpZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_y, - x, y, xS(100), MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG) + x, y, xS(80), MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; } int AmpZoomPanel::handle_event() { + if( zoombar->shift_down() ) + update(DEFAULT_ZOOM_TRACK); mwindow->zoom_amp((int64_t)get_value()); return 1; } -TrackZoomPanel::TrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_track, - x, y, xS(90), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) +ATrackZoomPanel::ATrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) + : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_atrack, + x, y, xS(64), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; } -int TrackZoomPanel::handle_event() +int ATrackZoomPanel::handle_event() { - mwindow->zoom_track((int64_t)get_value()); + if( zoombar->shift_down() ) + update(DEFAULT_ZOOM_TRACK); + mwindow->zoom_atrack((int64_t)get_value()); zoombar->amp_zoom->update(mwindow->edl->local_session->zoom_y); return 1; } - +VTrackZoomPanel::VTrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) + : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_vtrack, + x, y, xS(64), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) +{ + this->mwindow = mwindow; + this->zoombar = zoombar; +} +int VTrackZoomPanel::handle_event() +{ + if( zoombar->shift_down() ) + update(DEFAULT_ZOOM_TRACK); + mwindow->zoom_vtrack((int64_t)get_value()); + return 1; +} AutoZoom::AutoZoom(MWindow *mwindow, ZoomBar *zoombar, int x, int y, int changemax) @@ -580,7 +612,8 @@ int FromTextBox::update_position(double new_position) mwindow->edl->session->time_format, mwindow->edl->session->sample_rate, mwindow->edl->session->frame_rate, - mwindow->edl->session->frames_per_foot); + mwindow->edl->session->frames_per_foot, + mwindow->get_timecode_offset()); //printf("FromTextBox::update_position %f %s\n", new_position, string); update(string); return 0; @@ -649,7 +682,8 @@ int ToTextBox::update_position(double new_position) mwindow->edl->session->time_format, mwindow->edl->session->sample_rate, mwindow->edl->session->frame_rate, - mwindow->edl->session->frames_per_foot); + mwindow->edl->session->frames_per_foot, + mwindow->get_timecode_offset()); update(string); return 0; }