public TrackBarsControl(Track track)
{
SetStyle(ControlStyles.FixedHeight, true);
SetStyle(ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.UserPaint, true);
base.DoubleBuffered = true;
base.BackColor = Color.FromArgb(93, 95, 94);
_usedBars = new bool[track.Score.MasterBars.Count];
for (int s = 0; s < track.Staves.Count; s++)
{
var staff = track.Staves[s];
for (int barI = 0; barI < staff.Bars.Count; barI++)
{
var bar = staff.Bars[barI];
_usedBars[barI] = false;
for (int voiceI = 0; voiceI < bar.Voices.Count && (!_usedBars[barI]); voiceI++)
{
Voice voice = bar.Voices[voiceI];
for (int i = 0; i < voice.Beats.Count; i++)
{
var b = voice.Beats[i];
if (!b.IsRest)
{
_usedBars[barI] = true;
}
}
}
}
}
PerformLayout();
Width = BlockSize.Width * _usedBars.Length;
Height = BlockSize.Height;
MinimumSize = BlockSize;
SetColor(track.Color);
}