X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrack.C;h=b13e9e9d1acbc1a0859b4bf188df9ffa4b80f33d;hb=eecf057a9d6b8c8cffc7d0001bff89bc9cac7b05;hp=f3852cf90e5bab5308e9383aeb29324dbb061a15;hpb=9d832a1fff11b11aaa1108c460690ed05e2bdc05;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index f3852cf9..b13e9e9d 100644 --- a/cinelerra-5.1/cinelerra/track.C +++ b/cinelerra-5.1/cinelerra/track.C @@ -66,6 +66,7 @@ Track::Track(EDL *edl, Tracks *tracks) : ListItem() track_w = edl->session->output_w; track_h = edl->session->output_h; id = EDL::next_id(); + mixer_id = -1; } Track::~Track() @@ -87,6 +88,7 @@ int Track::copy_settings(Track *track) this->gang = track->gang; this->record = track->record; this->nudge = track->nudge; + this->mixer_id = track->mixer_id; this->play = track->play; this->track_w = track->track_w; this->track_h = track->track_h; @@ -321,6 +323,7 @@ int Track::load(FileXML *file, int track_offset, uint32_t load_flags) gang = file->tag.get_property("GANG", gang); draw = file->tag.get_property("DRAW", draw); nudge = file->tag.get_property("NUDGE", nudge); + mixer_id = file->tag.get_property("MIXER_ID", mixer_id); expand_view = file->tag.get_property("EXPAND", expand_view); track_w = file->tag.get_property("TRACK_W", track_w); track_h = file->tag.get_property("TRACK_H", track_h); @@ -1068,6 +1071,7 @@ int Track::copy(double start, file->tag.set_title("TRACK"); file->tag.set_property("RECORD", record); file->tag.set_property("NUDGE", nudge); + file->tag.set_property("MIXER_ID", mixer_id); file->tag.set_property("PLAY", play); file->tag.set_property("GANG", gang); file->tag.set_property("DRAW", draw); @@ -1149,6 +1153,15 @@ int Track::copy_assets(double start, return 0; } +int Track::blade(double position) +{ + int64_t start = to_units(position, 0); + Edit *edit = edits->split_edit(start); + if( !edit ) return 1; + edit->hard_left = 1; + if( edit->previous ) edit->previous->hard_right = 1; + return 0; +} int Track::clear(double start, double end, int edit_edits, int edit_labels, int edit_plugins, @@ -1843,6 +1856,13 @@ double Track::from_units(int64_t position) return (double)position; } +int64_t Track::frame_align(int64_t position, int round) +{ + if( data_type != TRACK_VIDEO && edl->session->cursor_on_frames ) + position = to_units(edl->align_to_frame(from_units(position), round), round); + return position; +} + int Track::plugin_exists(Plugin *plugin) { for(int number = 0; number < plugin_set.size(); number++) @@ -1866,3 +1886,14 @@ int Track::plugin_exists(Plugin *plugin) return 0; } +int Track::get_mixer_id() +{ + if( mixer_id < 0 ) { + int v = 0; + for( Track *track=tracks->first; track!=0; track=track->next ) + if( track->mixer_id > v ) v = track->mixer_id; + mixer_id = v + 1; + } + return mixer_id; +} +