Audacity 3.2.0
WaveTrackLocation.cpp
Go to the documentation of this file.
1/**********************************************************************
2
3Audacity: A Digital Audio Editor
4
5@file WaveTrackLocation.cpp
6@brief implements WaveTrackLocations
7
8Paul Licameli -- split from WaveTrack.h
9
10**********************************************************************/
11#include "WaveTrackLocation.h"
12#include "WaveTrack.h"
13#include "WaveClip.h"
14
15#include <cmath>
16
18{
19 WaveTrackLocations locations;
20
21 auto clips = track.SortedIntervalArray();
22
23 // Count number of display locations
24 int num = 0;
25 for (const auto clip : clips)
26 num += clip->NumCutLines();
27
28 if (num == 0)
29 return locations;
30
31 // Alloc necessary number of display locations
32 locations.reserve(num);
33
34 // Add all display locations to cache
35 int curpos = 0;
36
37 for (const auto clip: clips) {
38 for (const auto &cc : clip->GetCutLines()) {
39 auto cutlinePosition =
40 clip->GetSequenceStartTime() + cc->GetSequenceStartTime();
41 if (clip->WithinPlayRegion(cutlinePosition)) {
42 // Add cut line expander point
43 locations.emplace_back(cutlinePosition);
44 }
45 // If cutline is skipped, we still need to count it
46 // so that curpos matches num at the end
47 curpos++;
48 }
49 }
50
51 assert(curpos == num);
52
53 return locations;
54}
55
WaveTrackLocations FindWaveTrackLocations(const WaveTrack &track)
std::vector< WaveTrackLocation > WaveTrackLocations
A Track that contains audio waveform data.
Definition: WaveTrack.h:203
IntervalHolders SortedIntervalArray()
Return all WaveClips sorted by clip play start time.
Definition: WaveTrack.cpp:3297