public override void DoLayout() { var x = 0f; if (_showParenthesis) { _preNoteParenthesis.X = x; _preNoteParenthesis.Renderer = Renderer; _preNoteParenthesis.DoLayout(); x += _preNoteParenthesis.Width + ElementPadding * Scale; } if (!_accidentals.IsEmpty) { _accidentals.X = x; _accidentals.Renderer = Renderer; _accidentals.DoLayout(); x += _accidentals.Width + ElementPadding * Scale; } NoteStartX = x; base.DoLayout(); NoteHeadOffset = NoteStartX + (Width - NoteStartX) / 2; if (_showParenthesis) { _postNoteParenthesis.X = Width + ElementPadding * Scale; _postNoteParenthesis.Renderer = Renderer; _postNoteParenthesis.DoLayout(); Width += _postNoteParenthesis.Width + ElementPadding * Scale; } }