-Stencil
-Ledger_line_spanner::brew_ledger_lines (Grob *staff,
- int pos,
- Interval staff_extent,
- Real halfspace,
- Real ledgerlinethickness,
- Interval x_extent,
- Real left_shorten)
-{
- int line_count = (staff_extent.contains (pos)
- ? 0
- : sign (pos) * int (rint (pos - staff_extent[Direction (sign (pos))])) / 2);
- Stencil stencil;
- if (line_count)
- {
- Real blotdiameter = ledgerlinethickness;
- Interval y_extent
- = Interval (-0.5 * (ledgerlinethickness),
- +0.5 * (ledgerlinethickness));
- Stencil proto_ledger_line
- = Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter);
-
- x_extent[LEFT] += left_shorten;
- Stencil proto_first_line
- = Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter);
-
- Direction dir = (Direction)sign (pos);
- Real offs = (Staff_symbol_referencer::on_line (staff, pos))
- ? 0.0
- : -dir * halfspace;
-
- offs += pos * halfspace;
- for (int i = 0; i < line_count; i++)
- {
- Stencil ledger_line ((i == 0)
- ? proto_first_line
- : proto_ledger_line);
- ledger_line.translate_axis (-dir * halfspace * i * 2 + offs, Y_AXIS);
- stencil.add_stencil (ledger_line);
- }
- }
-
- return stencil;
-}
-