static Real get_ledger_line_thickness (Grob *);
static vector<Real> line_positions (Grob *);
- static vector<Real> ledger_positions (Grob *me, int pos);
+ static vector<Real> ledger_positions (Grob *me, int pos, Item const *head = 0);
static int line_count (Grob *);
static bool on_line (Grob *me, int pos, bool allow_ledger = true);
static Interval line_span (Grob *);
for (vsize i = heads.size (); i--;)
{
Item *h = dynamic_cast<Item *> (heads[i]);
-
int pos = Staff_symbol_referencer::get_rounded_position (h);
vector<Real> ledger_positions =
- Staff_symbol::ledger_positions (staff, pos);
+ Staff_symbol::ledger_positions (staff, pos, h);
// We work with all notes that produce ledgers and any notes that
// fall outside the staff that do not produce ledgers, such as
"glyph-name "
"stem-attachment "
"style "
+ "ledger-positions "
);
}
vector<Real>
-Staff_symbol::ledger_positions (Grob *me, int pos)
+Staff_symbol::ledger_positions (Grob *me, int pos, Item const *head)
{
+ // allow the option to override ledger positions via note head grob
+ if (head)
+ {
+ SCM posns = head->get_property ("ledger-positions");
+ if (scm_is_pair (posns))
+ return ly_scm2floatvector (posns);
+ }
+
SCM ledger_positions = me->get_property ("ledger-positions");
Real ledger_extra = robust_scm2double (me->get_property ("ledger-extra"), 0);
vector<Real> line_positions = Staff_symbol::line_positions (me);
lines. It is the sum of 2@tie{}numbers: The first is the factor for
line thickness, and the second for staff space. Both contributions
are added.")
- (ledger-positions ,list? "Repeating pattern for the vertical positions
-of ledger lines. Bracketed groups are always shown together.")
+ (ledger-positions ,list? "Vertical positions of ledger lines.
+When set on a @code{StaffSymbol} grob it defines a repeating
+pattern of ledger lines and any parenthesized groups will always be
+shown together.")
(left-bound-info ,list? "An alist of properties for determining
attachments of spanners to edges.")
(left-padding ,ly:dimension? "The amount of space that is put