summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
2a3f532)
When a property exists in an interface, the property should make sense for
a sensible of grobs that implement that interface. Otherwise, the property
should be part of a separate interface that applies to a sensibly-sized
group of grobs.
Various properties having to do with outside-staff calculations belong to
grob-interface. This does not make sense for many grobs (StaffSpacing,
NoteSpacing, SpacingSpanner, StaffSymbol just to name a few). There is a
limited collection of grobs for which outside-staff properties make sense.
The outside-staff-interface provides a separate interface to be implemented
by these grobs.
The same is true for axis groups that place outside-staff grobs, which form
a limited subset of grobs implementing the axis-group-interface. Rather than
putting the relevant properties in the axis-group-interface, we move
them to an outside-staff-axis-group-interface.
(interfaces . (font-interface
line-interface
line-spanner-interface
(interfaces . (font-interface
line-interface
line-spanner-interface
+ outside-staff-interface
side-position-interface))))))
#(define scheme-event-spanner-types
side-position-interface))))))
#(define scheme-event-spanner-types
"nonstaff-nonstaff-spacing "
"nonstaff-relatedstaff-spacing "
"nonstaff-unrelatedstaff-spacing "
"nonstaff-nonstaff-spacing "
"nonstaff-relatedstaff-spacing "
"nonstaff-unrelatedstaff-spacing "
- "outside-staff-placement-directive "
"pure-relevant-grobs "
"pure-relevant-items "
"pure-relevant-spanners "
"pure-relevant-grobs "
"pure-relevant-items "
"pure-relevant-spanners "
"staff-grouper "
"staff-staff-spacing "
"system-Y-offset "
"staff-grouper "
"staff-staff-spacing "
"system-Y-offset "
- "vertical-skyline-elements "
"X-common "
"Y-common "
);
"X-common "
"Y-common "
);
"meta "
"minimum-X-extent "
"minimum-Y-extent "
"meta "
"minimum-X-extent "
"minimum-Y-extent "
- "outside-staff-horizontal-padding "
- "outside-staff-padding "
- "outside-staff-priority "
"pure-Y-offset-in-progress "
"rotation "
"skyline-horizontal-padding "
"pure-Y-offset-in-progress "
"rotation "
"skyline-horizontal-padding "
"Kill this grob after the line breaking process."
'())
"Kill this grob after the line breaking process."
'())
+(ly:add-interface
+ 'outside-staff-axis-group-interface
+ "A vertical axis group on which outside-staff skyline calculations are done."
+ '(outside-staff-placement-directive vertical-skyline-elements))
+
+(ly:add-interface
+ 'outside-staff-interface
+ "A grob that could be placed outside staff."
+ '(outside-staff-horizontal-padding outside-staff-padding outside-staff-priority))
+
(ly:add-interface
'parentheses-interface
"Parentheses for other objects."
(ly:add-interface
'parentheses-interface
"Parentheses for other objects."
(interfaces . (accidental-interface
accidental-suggestion-interface
font-interface
(interfaces . (accidental-interface
accidental-suggestion-interface
font-interface
+ outside-staff-interface
script-interface
self-alignment-interface
side-position-interface))))))
script-interface
self-alignment-interface
side-position-interface))))))
- (cross-staff . ,ly:arpeggio::calc-cross-staff)
+ (cross-staff . ,ly:arpeggio::calc-cross-staff)
(direction . ,LEFT)
(padding . 0.5)
(positions . ,ly:arpeggio::calc-positions)
(direction . ,LEFT)
(padding . 0.5)
(positions . ,ly:arpeggio::calc-positions)
((class . Item)
(interfaces . (break-alignable-interface
font-interface
((class . Item)
(interfaces . (break-alignable-interface
font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
side-position-interface))))))
(BassFigureBracket
side-position-interface))))))
(BassFigureBracket
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(meta . ((class . Spanner)
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
- (interfaces . (axis-group-interface))))))
+ (interfaces . (axis-group-interface
+ outside-staff-axis-group-interface))))))
(interfaces . (break-aligned-interface
breathing-sign-interface
font-interface
(interfaces . (break-aligned-interface
breathing-sign-interface
font-interface
+ outside-staff-interface
text-interface))))))
(ChordName
text-interface))))))
(ChordName
(meta . ((class . Item)
(interfaces . (chord-name-interface
font-interface
(meta . ((class . Item)
(interfaces . (chord-name-interface
font-interface
+ outside-staff-interface
rhythmic-grob-interface
text-interface))))))
rhythmic-grob-interface
text-interface))))))
(meta . ((class . Item)
(interfaces . (clef-modifier-interface
font-interface
(meta . ((class . Item)
(interfaces . (clef-modifier-interface
font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
side-position-interface
text-interface
text-script-interface))))))
side-position-interface
text-interface
text-script-interface))))))
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
percent-repeat-interface
percent-repeat-item-interface
self-alignment-interface
percent-repeat-interface
percent-repeat-item-interface
self-alignment-interface
(thickness . 0.48)
(meta . ((class . Item)
(interfaces . (font-interface
(thickness . 0.48)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
percent-repeat-interface
percent-repeat-item-interface
rhythmic-grob-interface))))))
percent-repeat-interface
percent-repeat-item-interface
rhythmic-grob-interface))))))
(interfaces . (axis-group-interface
dynamic-interface
dynamic-line-spanner-interface
(interfaces . (axis-group-interface
dynamic-interface
dynamic-line-spanner-interface
+ outside-staff-interface
side-position-interface))))))
(DynamicText
side-position-interface))))))
(DynamicText
(interfaces . (dynamic-interface
dynamic-text-interface
font-interface
(interfaces . (dynamic-interface
dynamic-text-interface
font-interface
+ outside-staff-interface
script-interface
self-alignment-interface
text-interface))))))
script-interface
self-alignment-interface
text-interface))))))
font-interface
line-interface
line-spanner-interface
font-interface
line-interface
line-spanner-interface
+ ;for now, LilyPond never will typeset
+ ;these without a DynamicLineSpanner
+ ;as their controlling element
+ ;so, they do not need the
+ ;outside-staff-interface
spanner-interface
text-interface))))))
spanner-interface
text-interface))))))
(meta . ((class . Item)
(interfaces . (finger-interface
font-interface
(meta . ((class . Item)
(interfaces . (finger-interface
font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
self-alignment-interface
side-position-interface
text-interface
(interfaces . (chord-name-interface
font-interface
fret-diagram-interface
(interfaces . (chord-name-interface
font-interface
fret-diagram-interface
+ outside-staff-interface
rhythmic-grob-interface))))))
rhythmic-grob-interface))))))
(interfaces . (dynamic-interface
hairpin-interface
line-interface
(interfaces . (dynamic-interface
hairpin-interface
line-interface
+ outside-staff-interface
self-alignment-interface
spanner-interface))))))
self-alignment-interface
spanner-interface))))))
(meta . ((class . Spanner)
(interfaces . (horizontal-bracket-interface
line-interface
(meta . ((class . Spanner)
(interfaces . (horizontal-bracket-interface
line-interface
+ outside-staff-interface
side-position-interface
spanner-interface))))))
side-position-interface
spanner-interface))))))
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(meta . ((class . Spanner)
(interfaces . (font-interface
measure-counter-interface
(meta . ((class . Spanner)
(interfaces . (font-interface
measure-counter-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (measure-grouping-interface
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (measure-grouping-interface
+ outside-staff-interface
side-position-interface))))))
(MelodyItem
side-position-interface))))))
(MelodyItem
(interfaces . (break-alignable-interface
font-interface
metronome-mark-interface
(interfaces . (break-alignable-interface
font-interface
metronome-mark-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
+ outside-staff-interface
multi-measure-rest-interface
rest-interface
staff-symbol-referencer-interface))))))
multi-measure-rest-interface
rest-interface
staff-symbol-referencer-interface))))))
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
(meta . ((class . Spanner)
(interfaces . (font-interface
multi-measure-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(interfaces . (font-interface
horizontal-bracket-interface
line-interface
(interfaces . (font-interface
horizontal-bracket-interface
line-interface
+ outside-staff-interface
ottava-bracket-interface
side-position-interface
text-interface))))))
ottava-bracket-interface
side-position-interface
text-interface))))))
(meta . ((class . Spanner)
(interfaces . (font-interface
percent-repeat-interface
(meta . ((class . Spanner)
(interfaces . (font-interface
percent-repeat-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
- (interfaces . (slur-interface))))))
+ (interfaces . (outside-staff-interface
+ slur-interface))))))
;; an example of a text spanner
(PianoPedalBracket
;; an example of a text spanner
(PianoPedalBracket
(interfaces . (break-alignable-interface
font-interface
mark-interface
(interfaces . (break-alignable-interface
font-interface
mark-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface))))))
self-alignment-interface
side-position-interface
text-interface))))))
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
(Y-offset . ,side-position-interface::y-aligned-side)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
script-interface
side-position-interface))))))
script-interface
side-position-interface))))))
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
(vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
(Y-extent . ,slur::height)
(meta . ((class . Spanner)
- (interfaces . (slur-interface))))))
+ (interfaces . (outside-staff-interface
+ slur-interface))))))
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
piano-pedal-interface
side-position-interface))))))
piano-pedal-interface
side-position-interface))))))
(meta . ((class . Item)
(interfaces . (font-interface
self-alignment-interface
(meta . ((class . Item)
(interfaces . (font-interface
self-alignment-interface
+ outside-staff-interface
side-position-interface
string-number-interface
text-interface
side-position-interface
string-number-interface
text-interface
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
(Y-extent . ,grob::always-Y-extent-from-stencil)
(meta . ((class . Item)
(interfaces . (font-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
stroke-finger-interface
self-alignment-interface
side-position-interface
stroke-finger-interface
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
piano-pedal-interface
side-position-interface))))))
piano-pedal-interface
side-position-interface))))))
(vertical-skyline-elements . ,ly:system::vertical-skyline-elements)
(vertical-alignment . ,ly:system::get-vertical-alignment)))
(interfaces . (axis-group-interface
(vertical-skyline-elements . ,ly:system::vertical-skyline-elements)
(vertical-alignment . ,ly:system::get-vertical-alignment)))
(interfaces . (axis-group-interface
+ system-interface
+ outside-staff-axis-group-interface))))))
(meta . ((class . Item)
(interfaces . (font-interface
instrument-specific-markup-interface
(meta . ((class . Item)
(interfaces . (font-interface
instrument-specific-markup-interface
+ outside-staff-interface
self-alignment-interface
side-position-interface
text-interface
self-alignment-interface
side-position-interface
text-interface
(interfaces . (font-interface
line-interface
line-spanner-interface
(interfaces . (font-interface
line-interface
line-spanner-interface
+ outside-staff-interface
side-position-interface))))))
(Tie
side-position-interface))))))
(Tie
(interfaces . (font-interface
line-interface
line-spanner-interface
(interfaces . (font-interface
line-interface
line-spanner-interface
+ outside-staff-interface
side-position-interface
trill-spanner-interface))))))
side-position-interface
trill-spanner-interface))))))
(meta . ((class . Spanner)
(interfaces . (line-interface
(meta . ((class . Spanner)
(interfaces . (line-interface
+ outside-staff-interface
tuplet-bracket-interface))))))
(TupletNumber
tuplet-bracket-interface))))))
(TupletNumber
(Y-offset . ,ly:tuplet-number::calc-y-offset)
(meta . ((class . Spanner)
(interfaces . (font-interface
(Y-offset . ,ly:tuplet-number::calc-y-offset)
(meta . ((class . Spanner)
(interfaces . (font-interface
+ outside-staff-interface
text-interface
tuplet-number-interface))))))
text-interface
tuplet-number-interface))))))
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
piano-pedal-interface
side-position-interface))))))
piano-pedal-interface
side-position-interface))))))
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
- hara-kiri-group-spanner-interface))))))
+ hara-kiri-group-spanner-interface
+ outside-staff-axis-group-interface))))))
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
(object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
(pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
(interfaces . (axis-group-interface
+ outside-staff-interface
side-position-interface
volta-interface))))))
side-position-interface
volta-interface))))))