My turn at fixing this TimeSignature issue.

This commit is contained in:
Jason Felds
2011-03-16 18:11:56 -04:00
parent 59e30c6569
commit a636981383
+12 -6
View File
@@ -118,19 +118,25 @@ void TimingData::SetTimeSignatureAtRow( int iRow, int iNumerator, int iDenominat
break; // We found our segment. break; // We found our segment.
} }
if( i == m_vTimeSignatureSegments.size() ) // there is no TimeSignature Segment at the current beat if ( i == m_vTimeSignatureSegments.size() || m_vTimeSignatureSegments[i].m_iStartRow != iRow )
{ {
AddTimeSignatureSegment( TimeSignatureSegment(iRow, iNumerator, iDenominator) ); // No specific segmeent here: place one if it differs.
if( i == 0 ||
( m_vTimeSignatureSegments[i-1].m_iNumerator != iNumerator
|| m_vTimeSignatureSegments[i-1].m_iDenominator != iDenominator ) )
AddTimeSignatureSegment( TimeSignatureSegment(iRow, iNumerator, iDenominator) );
} }
else // TimeSignatureSegment being modified is m_vTimeSignatureSegments[i] else // TimeSignatureSegment being modified is m_vTimeSignatureSegments[i]
{ {
if( iNumerator > 0 && iDenominator > 0 ) if( i > 0 && m_vTimeSignatureSegments[i-1].m_iNumerator == iNumerator
&& m_vTimeSignatureSegments[i-1].m_iDenominator == iDenominator )
m_vTimeSignatureSegments.erase( m_vTimeSignatureSegments.begin()+i,
m_vTimeSignatureSegments.begin()+i+1 );
else
{ {
m_vTimeSignatureSegments[i].m_iNumerator = iNumerator; m_vTimeSignatureSegments[i].m_iNumerator = iNumerator;
m_vTimeSignatureSegments[i].m_iDenominator = iDenominator; m_vTimeSignatureSegments[i].m_iDenominator = iDenominator;
} }
else
m_vTimeSignatureSegments.erase( m_vTimeSignatureSegments.begin()+i, m_vTimeSignatureSegments.begin()+i+1 );
} }
} }