add bump floatautos, add time_references for align timecodes, add menuitem create_key...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / tracks.C
index 170f2931af52857e1f2374f15e623eff36761bde..101e7cdb8dbd9e274df7336381164901d9b8795b 100644 (file)
@@ -790,14 +790,14 @@ void Tracks::move_tracks(Track *src, Track *dst, int n)
 double Tracks::align_timecodes()
 {
        double offset = -1;
-       for( Track *track=edl->tracks->first; track; track=track->next ) {
+       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=edl->tracks->first; track; track=track->next ) {
+               for( Track *track=first; track; track=track->next ) {
                        if( !track->is_armed() ) continue;
                        track->edits->align_timecodes(offset);
                }
@@ -805,3 +805,21 @@ double Tracks::align_timecodes()
        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);
+       }
+}
+