(AccidentalPlacement
. (
(direction . ,LEFT)
- (left-padding . 0.2)
(positioning-done . ,ly:accidental-placement::calc-positioning-done)
;; this is quite small, but it is very ugly to have
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (ambitus-interface
axis-group-interface
break-aligned-interface))))))
(stacking-dir . ,DOWN)
(Y-extent . ,ly:axis-group-interface::height)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (align-interface
axis-group-interface
bass-figure-alignment-interface))))))
(Y-extent . ,ly:axis-group-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
side-position-interface))))))
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(Y-extent . ,ly:axis-group-interface::height)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface))))))
(next-note . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
+ (extra-spacing-height . (-0.5 . 0.5))
(Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
(dot-count . ,dots::calc-dot-count)
(staff-position . ,dots::calc-staff-position)
(stencil . ,ly:dots::print)
+ (extra-spacing-height . (-0.5 . 0.5))
(meta . ((class . Item)
(interfaces . (dots-interface
font-interface
(Y-extent . ,ly:axis-group-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
dynamic-interface
dynamic-line-spanner-interface
(head-direction . ,LEFT)
(stencil . ,laissez-vibrer::print)
(thickness . 1.0)
+ (extra-spacing-height . (-0.5 . 0.5))
(meta . ((class . Item)
(interfaces . (semi-tie-interface))))))
(side-axis . ,Y)
(stencil . ,ly:text-interface::print)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (X-offset . ,(ly:make-simple-closure
+ `(,+
+ ,(ly:make-simple-closure
+ (list ly:break-alignable-interface::self-align-callback))
+ ,(ly:make-simple-closure
+ (list ly:self-alignment-interface::x-aligned-on-self)))))
+ (self-alignment-X . -1)
+ (break-align-symbol . time-signature)
+ (break-align-symbols . (time-signature))
(meta . ((class . Item)
(interfaces . (font-interface
metronome-mark-interface
side-position-interface
+ break-alignable-interface
text-interface))))))
(MultiMeasureRest
(expand-limit . 10)
(hair-thickness . 2.0)
(padding . 1)
+ (spacing-pair . (break-alignment . staff-bar))
(springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
(staff-position . 0)
(stencil . ,ly:multi-measure-rest::print)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Paper_column)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
font-interface
paper-column-interface
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
note-collision-interface))))))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
note-column-interface
separation-item-interface))))))
(NoteHead
. (
(duration-log . ,note-head::calc-duration-log)
+ (extra-spacing-height . ,ly:note-head::include-ledger-line-height)
(glyph-name . ,note-head::calc-glyph-name)
(stem-attachment . ,ly:note-head::calc-stem-attachment)
(stencil . ,ly:note-head::print)
;; debugging
;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
(meta . ((class . Paper_column)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
font-interface
paper-column-interface
(dot-negative-kern . 0.75)
(font-encoding . fetaMusic)
(slope . 1.0)
+ (spacing-pair . (break-alignment . staff-bar))
(springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
(stencil . ,ly:multi-measure-rest::percent)
(thickness . 0.48)
(head-direction . ,RIGHT)
(stencil . ,ly:tie::print)
(thickness . 1.0)
+ (extra-spacing-height . (-0.5 . 0.5))
(meta . ((class . Item)
(interfaces . (semi-tie-interface))))))
(Script
. (
+ (add-stem-support . #t)
(cross-staff . ,ly:script-interface::calc-cross-staff)
(direction . ,ly:script-interface::calc-direction)
(font-encoding . fetaMusic)
(Y-extent . ,ly:axis-group-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
piano-pedal-interface
side-position-interface))))))
(X-extent . ,ly:span-bar::width)
(Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (bar-line-interface
font-interface
span-bar-interface))))))
(Y-extent . ,ly:axis-group-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
piano-pedal-interface
side-position-interface))))))
(System
. (
+ (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,X ,Y))
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(X-extent . ,ly:axis-group-interface::width)
- (Y-extent . ,ly:axis-group-interface::height)
+ (Y-extent . ,ly:system::height)
(meta . ((class . System)
+ (object-callbacks . ((pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)
+ (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)))
(interfaces . (axis-group-interface
system-interface))))))
(break-align-anchor
. ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-align-symbol . time-signature)
+ (break-align-anchor-alignment . ,LEFT)
(break-visibility . ,all-visible)
(extra-spacing-height . (-1.0 . 1.0))
(non-musical . #t)
(Y-extent . ,ly:axis-group-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
piano-pedal-interface
side-position-interface))))))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Spanner)
- (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common)))
+ (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)
+ (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)))
(interfaces . (align-interface
axis-group-interface))))))
(Y-extent . ,ly:hara-kiri-group-spanner::y-extent)
(Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback)
(meta . ((class . Spanner)
- (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common)))
+ (object-callbacks . (
+ (X-common . ,ly:axis-group-interface::calc-x-common)
+ (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+
(interfaces . (axis-group-interface
- hara-kiri-group-spanner-interface
- vertically-spaceable-interface))))))
+ hara-kiri-group-spanner-interface))))))
(VoiceFollower
. (
(Y-extent . ,ly:axis-group-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(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)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
side-position-interface
volta-interface))))))
ly:note-head::print
ly:dots::print
ly:clef::print
+ ly:percent-repeat-item-interface::beat-slash
ly:text-interface::print
- ly:script-interface::print))
+ ly:script-interface::print
+ ly:sustain-pedal::print))
;; Sometimes we have grobs with (Y-extent . ,ly:grob::stencil-height)
;; and the print function is not pure, but there is a easy way to
(else
'(0 . 0)))))
+;; Sometimes, a pure callback will be chained to a non-pure callback via
+;; chain_offset_callback, in which case this provides a default by simply
+;; passing through the value from the pure callback.
+(define (pure-chain-offset-callback grob start end prev-offset) prev-offset)
+
(define pure-conversions-alist
`(
(,ly:accidental-interface::height . ,ly:accidental-interface::pure-height)
(,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height)
(,ly:grob::stencil-height . ,pure-stencil-height)
(,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height)
+ (,ly:rest-collision::force-shift-callback-rest . ,pure-chain-offset-callback)
(,ly:rest::height . ,ly:rest::pure-height)
(,ly:self-alignment-interface::y-aligned-on-self . ,ly:self-alignment-interface::pure-y-aligned-on-self)
(,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
- (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
(,ly:slur::height . ,ly:slur::pure-height)
(,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
- (,ly:stem::height . ,ly:stem::pure-height)))
+ (,ly:stem::height . ,ly:stem::pure-height)
+ (,ly:system::height . ,ly:system::calc-pure-height)))
(define pure-functions
(list