| 501 | } |
| 502 | |
| 503 | void TrackList::Permute(const std::vector<Track *> &tracks) |
| 504 | { |
| 505 | std::vector<TrackNodePointer> permutation; |
| 506 | for (const auto pTrack : tracks) |
| 507 | for (const auto pChannel : Channels(pTrack)) |
| 508 | permutation.push_back(pChannel->GetNode()); |
| 509 | for (const auto iter : permutation) { |
| 510 | ListOfTracks::value_type track = *iter; |
| 511 | erase(iter); |
| 512 | Track *pTrack = track.get(); |
| 513 | pTrack->SetOwner(shared_from_this(), insert(ListOfTracks::end(), track)); |
| 514 | } |
| 515 | auto n = getBegin(); |
| 516 | RecalcPositions(n); |
| 517 | PermutationEvent(n); |
| 518 | } |
| 519 | |
| 520 | Track *TrackList::FindById( TrackId id ) |
| 521 | { |