mirror of
https://github.com/cookiengineer/audacity
synced 2025-11-23 17:30:17 +01:00
LabelTrack exposes MakeInterval, to be reused
This commit is contained in:
committed by
James Crook
parent
9b1901c971
commit
10679276a0
@@ -84,26 +84,41 @@ LabelTrack::LabelTrack(const LabelTrack &orig) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Container >
|
template<typename IntervalType>
|
||||||
static Container MakeIntervals(const LabelArray &labels)
|
static IntervalType DoMakeInterval(const LabelStruct &label, size_t index)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
label.getT0(), label.getT1(),
|
||||||
|
std::make_unique<LabelTrack::IntervalData>( index ) };
|
||||||
|
}
|
||||||
|
|
||||||
|
auto LabelTrack::MakeInterval( size_t index ) const -> ConstInterval
|
||||||
|
{
|
||||||
|
return DoMakeInterval<ConstInterval>(mLabels[index], index);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto LabelTrack::MakeInterval( size_t index ) -> Interval
|
||||||
|
{
|
||||||
|
return DoMakeInterval<Interval>(mLabels[index], index);
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename Container, typename LabelTrack >
|
||||||
|
static Container DoMakeIntervals(LabelTrack &track)
|
||||||
{
|
{
|
||||||
Container result;
|
Container result;
|
||||||
size_t ii = 0;
|
for (size_t ii = 0, nn = track.GetNumLabels(); ii < nn; ++ii)
|
||||||
for (const auto &label : labels)
|
result.emplace_back( track.MakeInterval( ii ) );
|
||||||
result.emplace_back(
|
|
||||||
label.getT0(), label.getT1(),
|
|
||||||
std::make_unique<LabelTrack::IntervalData>( ii++ ) );
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto LabelTrack::GetIntervals() const -> ConstIntervals
|
auto LabelTrack::GetIntervals() const -> ConstIntervals
|
||||||
{
|
{
|
||||||
return MakeIntervals<ConstIntervals>(mLabels);
|
return DoMakeIntervals<ConstIntervals>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto LabelTrack::GetIntervals() -> Intervals
|
auto LabelTrack::GetIntervals() -> Intervals
|
||||||
{
|
{
|
||||||
return MakeIntervals<Intervals>(mLabels);
|
return DoMakeIntervals<Intervals>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LabelTrack::SetLabel( size_t iLabel, const LabelStruct &newLabel )
|
void LabelTrack::SetLabel( size_t iLabel, const LabelStruct &newLabel )
|
||||||
|
|||||||
@@ -159,6 +159,8 @@ public:
|
|||||||
size_t index;
|
size_t index;
|
||||||
explicit IntervalData(size_t index) : index{index} {};
|
explicit IntervalData(size_t index) : index{index} {};
|
||||||
};
|
};
|
||||||
|
ConstInterval MakeInterval ( size_t index ) const;
|
||||||
|
Interval MakeInterval ( size_t index );
|
||||||
ConstIntervals GetIntervals() const override;
|
ConstIntervals GetIntervals() const override;
|
||||||
Intervals GetIntervals() override;
|
Intervals GetIntervals() override;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user