public GrandStaffLedgerLines ComputeLedgerLines(StaffPosition notePosition) { if (notePosition == null) { return(GrandStaffLedgerLines.Absent); } var offset = notePosition.VerticalOffset; var lines = (offset.Abs() / 2 - 2).LimitFromBottom(0); var ledgerLines = LedgerLines.CreateSingle(lines, top: offset > 0); return(GrandStaffLedgerLines.CreateSingle(ledgerLines, treeble: notePosition.Clef == Clef.Treeble)); }
GrandStaffLedgerLines Combine(GrandStaffLedgerLines ledgerLines, StaffPosition position) { var otherLedgerLines = ComputeLedgerLines(position); return(ledgerLines.Combine(otherLedgerLines)); }