1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-30 15:39:27 +02:00

Bug 2584 - "GetInfo: Envelopes" returns incorrect track numbers

Also clip count resets to zero on each new track.
Also fixed GetInfo: Clips to count all tracks, not just wave tracks.
This commit is contained in:
James Crook 2020-11-15 20:14:12 +00:00
parent 69e0d7d114
commit d6a6b256fe

View File

@ -510,16 +510,19 @@ bool GetInfoCommand::SendClips(const CommandContext &context)
auto &tracks = TrackList::Get( context.project );
int i=0;
context.StartArray();
for (auto waveTrack : tracks.Leaders<WaveTrack>()) {
WaveClipPointers ptrs( waveTrack->SortedClipArray());
for(WaveClip * pClip : ptrs ) {
context.StartStruct();
context.AddItem( (double)i, "track" );
context.AddItem( pClip->GetStartTime(), "start" );
context.AddItem( pClip->GetEndTime(), "end" );
context.AddItem( pClip->GetColourIndex(), "color" );
context.EndStruct();
}
for (auto t : tracks.Leaders()) {
t->TypeSwitch([&](WaveTrack *waveTrack) {
WaveClipPointers ptrs(waveTrack->SortedClipArray());
for (WaveClip * pClip : ptrs) {
context.StartStruct();
context.AddItem((double)i, "track");
context.AddItem(pClip->GetStartTime(), "start");
context.AddItem(pClip->GetEndTime(), "end");
context.AddItem(pClip->GetColourIndex(), "color");
context.EndStruct();
}
});
// Per track numbering counts all tracks
i++;
}
context.EndArray();
@ -533,30 +536,35 @@ bool GetInfoCommand::SendEnvelopes(const CommandContext &context)
int i=0;
int j=0;
context.StartArray();
for (auto waveTrack : tracks.Leaders<WaveTrack>()) {
WaveClipPointers ptrs( waveTrack->SortedClipArray());
for(WaveClip * pClip : ptrs ) {
context.StartStruct();
context.AddItem( (double)i, "track" );
context.AddItem( (double)j, "clip" );
context.AddItem( pClip->GetStartTime(), "start" );
Envelope * pEnv = pClip->GetEnvelope();
context.StartField( "points" );
context.StartArray();
double offset = pEnv->GetOffset();
for( size_t k = 0; k < pEnv->GetNumberOfPoints(); k++)
{
context.StartStruct( );
context.AddItem( (*pEnv)[k].GetT()+offset, "t" );
context.AddItem( (*pEnv)[k].GetVal(), "y" );
for (auto t : tracks.Leaders()) {
t->TypeSwitch([&](WaveTrack *waveTrack) {
WaveClipPointers ptrs(waveTrack->SortedClipArray());
j = 0;
for (WaveClip * pClip : ptrs) {
context.StartStruct();
context.AddItem((double)i, "track");
context.AddItem((double)j, "clip");
context.AddItem(pClip->GetStartTime(), "start");
Envelope * pEnv = pClip->GetEnvelope();
context.StartField("points");
context.StartArray();
double offset = pEnv->GetOffset();
for (size_t k = 0; k < pEnv->GetNumberOfPoints(); k++)
{
context.StartStruct();
context.AddItem((*pEnv)[k].GetT() + offset, "t");
context.AddItem((*pEnv)[k].GetVal(), "y");
context.EndStruct();
}
context.EndArray();
context.EndField();
context.AddItem(pClip->GetEndTime(), "end");
context.EndStruct();
j++;
}
context.EndArray();
context.EndField();
context.AddItem( pClip->GetEndTime(), "end" );
context.EndStruct();
j++;
}
});
// Per track numbering counts all tracks
i++;
}
context.EndArray();
@ -601,8 +609,6 @@ bool GetInfoCommand::SendLabels(const CommandContext &context)
}
context.EndArray();
return true;
}