simplify RangeOverlaps

add ContainedByRange
This commit is contained in:
Glenn Maynard
2004-04-29 00:33:09 +00:00
parent 7b9802b2bf
commit efc61b33d6
2 changed files with 11 additions and 14 deletions
+3 -8
View File
@@ -568,6 +568,8 @@ void NoteField::DrawPrimitives()
}
const bool bIsActive = m_ActiveHoldNotes[hn];
const bool bIsHoldingNote = m_HeldHoldNotes[hn];
const float fLife = GetHoldNoteLife( hn );
if( bIsActive )
SearchForSongBeat()->m_GhostArrowRow.SetHoldIsActive( hn.iTrack );
@@ -576,16 +578,9 @@ void NoteField::DrawPrimitives()
bool bIsInSelectionRange = false;
if( m_fBeginMarker!=-1 && m_fEndMarker!=-1 )
bIsInSelectionRange =
m_fBeginMarker <= hn.GetStartBeat() &&
hn.GetStartBeat() <= m_fEndMarker &&
m_fBeginMarker <= hn.GetEndBeat() &&
hn.GetEndBeat() <= m_fEndMarker;
bIsInSelectionRange = hn.ContainedByRange( BeatToNoteRow( m_fBeginMarker ), BeatToNoteRow( m_fEndMarker ) );
NoteDisplayCols *nd = CurDisplay->second;
const bool bIsHoldingNote = m_HeldHoldNotes[hn];
const float fLife = GetHoldNoteLife( hn );
nd->display[c].DrawHold( hn, bIsHoldingNote, bIsActive, fLife, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail, false, m_fYReverseOffsetPixels );
}
+8 -6
View File
@@ -145,20 +145,22 @@ struct HoldNote
bool RowIsInRange( int row ) const { return iStartRow <= row && row <= iEndRow; }
bool RangeOverlaps( int start, int end ) const
{
return
( iStartRow >= start && end >= iEndRow ) || // other consumes us
( iStartRow <= start && end <= iEndRow ) || // other inside us
( iStartRow <= start && start <= iEndRow ) || // other overlaps us
( iStartRow <= end && end <= iEndRow ); // other overlaps us
/* If the range doesn't overlap us, then start and end are either both before
* us or both after us. */
return !( (start < iStartRow && end < iStartRow) ||
(start > iEndRow && end > iEndRow) );
}
bool RangeOverlaps( const HoldNote &hn ) const { return RangeOverlaps(hn.iStartRow, hn.iEndRow); }
bool RangeInside( int start, int end ) const { return iStartRow <= start && end <= iEndRow; }
bool ContainedByRange( int start, int end ) const { return start <= iStartRow && iEndRow <= end; }
float GetStartBeat() const { return NoteRowToBeat( iStartRow ); }
float GetEndBeat() const { return NoteRowToBeat( iEndRow ); }
int iTrack;
/* Invariant: iStartRow <= iEndRow */
int iStartRow;
int iEndRow;
int iTrack;
};