add bump floatautos, add time_references for align timecodes, add menuitem create_key...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / tracks.C
index d904d5d6b330df4d660b61d6d05d24990a736f62..101e7cdb8dbd9e274df7336381164901d9b8795b 100644 (file)
@@ -787,3 +787,39 @@ void Tracks::move_tracks(Track *src, Track *dst, int n)
        }
 }
 
+double Tracks::align_timecodes()
+{
+       double offset = -1;
+       for( Track *track=first; track; track=track->next ) {
+               if( !track->is_armed() ) continue;
+               double early_offset = track->edits->early_timecode();
+               if( offset < 0 || offset > early_offset )
+                       offset = early_offset;
+       }
+       if( offset >= 0 ) {
+               for( Track *track=first; track; track=track->next ) {
+                       if( !track->is_armed() ) continue;
+                       track->edits->align_timecodes(offset);
+               }
+       }
+       return offset;
+}
+
+void Tracks::update_idxbl_length(int id, double dt)
+{
+       for( Track *track=first; track; track=track->next ) {
+               if( !track->is_armed() ) continue;
+               int64_t du = track->to_units(dt,0);
+               track->edits->update_idxbl_length(id, du);
+               track->optimize();
+       }
+}
+
+void Tracks::create_keyframes(double position, int mask, int mode)
+{
+       for( Track *track=first; track; track=track->next ) {
+               if( !track->is_armed() ) continue;
+               track->create_keyframes(position, mask, mode);
+       }
+}
+