add ctrl-z for undo, addition 7 ffmpeg plugins activated, add select highlighted...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / tracks.C
index 170f2931af52857e1f2374f15e623eff36761bde..73e7706d3452125bf03a92165eed4174a5373ae3 100644 (file)
@@ -126,6 +126,20 @@ void Tracks::get_selected_edits(ArrayList<Edit*> *drag_edits)
        }
 }
 
+void Tracks::select_edits(double start, double end)
+{
+       for( Track *track=first; track; track=track->next ) {
+               if( !track->is_armed() ) continue;
+               int64_t start_pos = track->to_units(start, 0);
+               int64_t end_pos = track->to_units(end, 0);
+               for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+                       if( start_pos >= edit->startproject+edit->length ) continue;
+                       if( edit->startproject >= end_pos ) continue;
+                       edit->is_selected = 1;
+               }
+       }
+}
+
 void Tracks::get_automation_extents(float *min,
        float *max,
        double start,
@@ -790,14 +804,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 +819,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);
+       }
+}
+