[splittiming] SpeedSegments run on Seconds now.

ScreenEdit's code probably needs to be redone.
At least, someone find a way to remove "Beats"
or "Seconds" from the text entry area.
This commit is contained in:
Jason Felds
2011-05-15 23:48:03 -04:00
parent 059f0357ba
commit e2766cf644
11 changed files with 177 additions and 28 deletions
+28 -6
View File
@@ -255,7 +255,7 @@ void TimingData::SetLabelAtRow( int iRow, const RString sLabel )
}
}
void TimingData::SetSpeedAtRow( int iRow, float fPercent, float fWait )
void TimingData::SetSpeedAtRow( int iRow, float fPercent, float fWait, unsigned short usMode )
{
unsigned i;
for( i = 0; i < m_SpeedSegments.size(); i++ )
@@ -268,31 +268,48 @@ void TimingData::SetSpeedAtRow( int iRow, float fPercent, float fWait )
{
if( i == 0 ||
( m_SpeedSegments[i-1].m_fPercent != fPercent
|| m_SpeedSegments[i-1].m_fWait != fWait ) )
AddSpeedSegment( SpeedSegment(iRow, fPercent, fWait) );
|| m_SpeedSegments[i-1].m_fWait != fWait
|| m_SpeedSegments[i-1].m_usMode != usMode ) )
AddSpeedSegment( SpeedSegment(iRow, fPercent, fWait, usMode) );
}
else
{
if( i > 0 && m_SpeedSegments[i-1].m_fPercent == fPercent
&& m_SpeedSegments[i-1].m_fWait == fWait )
&& m_SpeedSegments[i-1].m_fWait == fWait
&& m_SpeedSegments[i-1].m_usMode == usMode )
m_SpeedSegments.erase( m_SpeedSegments.begin()+i,
m_SpeedSegments.begin()+i+1 );
else
{
m_SpeedSegments[i].m_fPercent = fPercent;
m_SpeedSegments[i].m_fWait = fWait;
m_SpeedSegments[i].m_usMode = usMode;
}
}
}
void TimingData::SetSpeedPercentAtRow( int iRow, float fPercent )
{
SetSpeedAtRow( iRow, fPercent, GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_fWait );
SetSpeedAtRow( iRow,
fPercent,
GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_fWait,
GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_usMode);
}
void TimingData::SetSpeedWaitAtRow( int iRow, float fWait )
{
SetSpeedAtRow( iRow, GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_fPercent, fWait );
SetSpeedAtRow( iRow,
GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_fPercent,
fWait,
GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_usMode);
}
void TimingData::SetSpeedModeAtRow( int iRow, unsigned short usMode )
{
SetSpeedAtRow( iRow,
GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_fPercent,
GetSpeedSegmentAtBeat( NoteRowToBeat( iRow ) ).m_fWait,
usMode );
}
@@ -351,6 +368,11 @@ float TimingData::GetSpeedWaitAtRow( int iRow )
return GetSpeedSegmentAtRow( iRow ).m_fWait;
}
unsigned short TimingData::GetSpeedModeAtRow( int iRow )
{
return GetSpeedSegmentAtRow( iRow ).m_usMode;
}
// Multiply the BPM in the range [fStartBeat,fEndBeat) by fFactor.
void TimingData::MultiplyBPMInBeatRange( int iStartIndex, int iEndIndex, float fFactor )
{