Generalize sticky grobs
Apologies for the large MR, but doing this piecemeal would leave things in bad half-baked intermediate states.
This is a refactoring intended at eliminating the pattern of having two identical or very similar grob definitions between which the main difference is that one is an Item
whereas the other is a Spanner
. Examples:
-
FootnoteItem
andFootnoteSpanner
, -
BalloonTextItem
andBalloonTextSpanner
, -
ControlPolygonItem
andControlPolygonSpanner
,ControlPointItem
andControlPointSpanner
.
The proposal is that the same grob definition can be used to create grobs of different classes. In this MR, the above types are unified into Footnote
, BalloonText
, ControlPolygon
and ControlPoint
. When the grob definition does not mandate a class, it is the job of engravers to choose whether to make the items or spanner version.
Possible follow-ups:
- Support parenthesizing spanners (#4565 (closed)),
- Reimplement whiteout with its own grob (#6031, #5411).
Edited by Jean Abou Samra