public virtual void DoLayout() { Helpers = Staff.StaveGroup.Helpers.Helpers[Bar.Staff.Track.Index][Bar.Staff.Index][Bar.Index]; for (int i = 0; i < Bar.Voices.Count; i++) { var voice = Bar.Voices[i]; var c = new VoiceContainerGlyph(0, 0, voice); c.Renderer = this; _voiceContainers[Bar.Voices[i].Index] = c; } CreatePreBeatGlyphs(); CreateBeatGlyphs(); CreatePostBeatGlyphs(); var postBeatStart = 0f; foreach (var voice in _voiceContainers) { var c = _voiceContainers[voice]; c.X = BeatGlyphsStart; c.DoLayout(); var x = c.X + c.Width; if (postBeatStart < x) { postBeatStart = x; } } _postBeatGlyphs.X = postBeatStart; Width = _postBeatGlyphs.X + _postBeatGlyphs.Width; }