X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindowmove.C;h=2c0479bb947953c8f1383ea1035831ce999498f2;hb=c387b8938dc838e5b92d1cd735975d0928ecf61a;hp=dedf96e87671af9b5f7ec099d986cf4a25c58de0;hpb=b32cf83f55420546cdab0ee4b30a7a5638f63f33;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mwindowmove.C b/cinelerra-5.1/cinelerra/mwindowmove.C index dedf96e8..2c0479bb 100644 --- a/cinelerra-5.1/cinelerra/mwindowmove.C +++ b/cinelerra-5.1/cinelerra/mwindowmove.C @@ -353,26 +353,39 @@ void MWindow::zoom_amp(int64_t zoom_amp) gui->flush(); } -void MWindow::zoom_track(int64_t zoom_track) +void MWindow::zoom_atrack(int64_t zoom) { -// scale waveforms - edl->local_session->zoom_y = (int64_t)((float)edl->local_session->zoom_y * - zoom_track / - edl->local_session->zoom_track); - CLAMP(edl->local_session->zoom_y, MIN_AMP_ZOOM, MAX_AMP_ZOOM); - -// scale tracks - double scale = (double)zoom_track / edl->local_session->zoom_track; - edl->local_session->zoom_track = zoom_track; + int64_t old_zoom = edl->local_session->zoom_atrack; + CLAMP(zoom, MIN_TRACK_ZOOM, MAX_TRACK_ZOOM); + edl->local_session->zoom_atrack = zoom; + edl->local_session->zoom_atrack = zoom; + for( Track *track= edl->tracks->first; track; track=track->next ) { + if( track->data_type != TRACK_AUDIO ) continue; + track->data_h = zoom; + } // shift row position - for(int i = 0; i < TOTAL_PANES; i++) - { - edl->local_session->track_start[i] *= scale; + for( int i=0; ilocal_session->track_start[i] = + (edl->local_session->track_start[i] * zoom) / old_zoom; + edl->tracks->update_y_pixels(theme); + gui->draw_trackmovement(); +} + +void MWindow::zoom_vtrack(int64_t zoom) +{ + int64_t old_zoom = edl->local_session->zoom_vtrack; + CLAMP(zoom, MIN_TRACK_ZOOM, MAX_TRACK_ZOOM); + edl->local_session->zoom_vtrack = zoom; + + for( Track *track= edl->tracks->first; track; track=track->next ) { + if( track->data_type != TRACK_VIDEO ) continue; + track->data_h = zoom; } +// shift row position + for( int i=0; ilocal_session->track_start[i] = + (edl->local_session->track_start[i] * zoom) / old_zoom; edl->tracks->update_y_pixels(theme); gui->draw_trackmovement(); -//printf("MWindow::zoom_track %d %d\n", edl->local_session->zoom_y, edl->local_session->zoom_track); } void MWindow::trackmovement(int offset, int pane_number) @@ -405,16 +418,14 @@ void MWindow::trackmovement(int offset, int pane_number) void MWindow::move_up(int64_t distance) { TimelinePane *pane = gui->get_focused_pane(); - if(distance == 0) distance = edl->local_session->zoom_track; - + if(distance == 0) distance = pane->canvas->get_h() / 10; trackmovement(-distance, pane->number); } void MWindow::move_down(int64_t distance) { TimelinePane *pane = gui->get_focused_pane(); - if(distance == 0) distance = edl->local_session->zoom_track; - + if(distance == 0) distance = pane->canvas->get_h() / 10; trackmovement(distance, pane->number); } @@ -423,10 +434,8 @@ int MWindow::goto_end() TimelinePane *pane = gui->get_focused_pane(); int64_t old_view_start = edl->local_session->view_start[pane->number]; - if(edl->tracks->total_length() > (double)pane->canvas->get_w() * - edl->local_session->zoom_sample / - edl->session->sample_rate) - { + if( edl->tracks->total_length() > (double)pane->canvas->get_w() * + edl->local_session->zoom_sample / edl->session->sample_rate ) { edl->local_session->view_start[pane->number] = Units::round(edl->tracks->total_length() * edl->session->sample_rate / @@ -647,7 +656,7 @@ int MWindow::nearest_plugin_keyframe(int shift_down, int dir) double position = dir == PLAY_FORWARD ? end : start; double new_position = dir == PLAY_FORWARD ? start : end; for( Track *track=edl->tracks->first; track; track=track->next ) { - if( !track->record ) continue; + if( !track->is_armed() ) continue; for( int i=0; iplugin_set.size(); ++i ) { PluginSet *plugin_set = track->plugin_set[i]; int64_t pos = track->to_units(position, 0); @@ -685,7 +694,7 @@ int MWindow::nearest_auto_keyframe(int shift_down, int dir) double position = dir == PLAY_FORWARD ? end : start; double new_position = dir == PLAY_FORWARD ? start : end; for( Track *track=edl->tracks->first; track; track=track->next ) { - if( !track->record ) continue; + if( !track->is_armed() ) continue; int64_t pos = track->to_units(position, 0); for( int i=0; iautomation->autos[i]; @@ -785,18 +794,24 @@ int MWindow::zoom_in_y() int MWindow::expand_t() { - int result = edl->local_session->zoom_track * 2; - result = MIN(result, MAX_TRACK_ZOOM); - zoom_track(result); + int zoom = edl->local_session->zoom_atrack * 2; + zoom = MIN(zoom, MAX_TRACK_ZOOM); + zoom_atrack(zoom); + zoom = edl->local_session->zoom_vtrack * 2; + zoom = MIN(zoom, MAX_TRACK_ZOOM); + zoom_vtrack(zoom); gui->zoombar->update(); return 0; } int MWindow::zoom_in_t() { - int result = edl->local_session->zoom_track / 2; - result = MAX(result, MIN_TRACK_ZOOM); - zoom_track(result); + int zoom = edl->local_session->zoom_atrack / 2; + zoom = MAX(zoom, MIN_TRACK_ZOOM); + zoom_atrack(zoom); + zoom = edl->local_session->zoom_vtrack / 2; + zoom = MAX(zoom, MIN_TRACK_ZOOM); + zoom_vtrack(zoom); gui->zoombar->update(); return 0; }