X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=0414fabb1d83ee729372c51459fb38d7970d4cbc;hb=bb282e14277b2454ee6746e957e0eb553c2ae8c1;hp=b01bb0a91a13c5f21cc930a90d4274e4e2e12d75;hpb=4e4a7b852eada5ba5dd4f98da72c25b19c3cfcc3;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index b01bb0a91a..0414fabb1d 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -2,11 +2,11 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 1998--2005 Han-Wen Nienhuys +;;;; (c) 1998--2006 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen -;;;; distances are given in linethickness (thicknesses) and -;;;; staffspace (distances) +;;;; distances are given in line-thickness (thicknesses) and +;;;; staff-space (distances) ;;;; WARNING: the meta field should be the last one. ;;;; WARNING: don't use anonymous functions for initialization. @@ -19,26 +19,31 @@ `( (Accidental . ( - (print-function . ,Accidental_interface::print) (avoid-slur . inside) (cautionary-style . parentheses) - (after-line-breaking-callback . ,Accidental_interface::after_line_breaking) + (stencil . ,ly:accidental-interface::print) + (after-line-breaking + . ,ly:accidental-interface::after-line-breaking) (meta . ((class . Item) (interfaces . (accidental-interface font-interface)))))) - + (AccidentalSuggestion - . ((print-function . ,Accidental_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent - ,Self_alignment_interface::aligned_on_self)) + . ( + (stencil . ,ly:accidental-interface::print) + (X-offset . ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent)) + ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) (self-alignment-X . ,CENTER) (cautionary . #t) (cautionary-style . smaller) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (cautionary-style . parentheses) (direction . ,UP) (staff-padding . 0.25) (script-priority . 0) + (side-axis . ,X) (meta . ((class . Item) (interfaces . (side-position-interface script-interface @@ -47,9 +52,12 @@ self-alignment-interface font-interface)))))) (AccidentalPlacement - . ((X-extent-callback . ,Axis_group_interface::group_extent_callback) + . ( (left-padding . 0.2) + (positioning-done . ,ly:accidental-placement::calc-positioning-done) + (X-extent . ,ly:axis-group-interface::width) + ;; this is quite small, but it is very ugly to have ;; accs closer to the previous note than to the next one. (right-padding . 0.15) @@ -58,8 +66,8 @@ (Ambitus . ( (axes . (0 1)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) + (X-extent . ,ly:axis-group-interface::width) + (X-extent . ,ly:axis-group-interface::height) (space-alist . ( (clef . (extra-space . 0.5)) (key-signature . (extra-space . 0.0)) @@ -76,24 +84,24 @@ (AmbitusLine . ( - (print-function . ,Ambitus::print) + (stencil . ,ly:ambitus::print) (join-heads . #t) (thickness . 2) - (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent)) - + (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) (meta . ((class . Item) (interfaces . (ambitus-interface staff-symbol-referencer-interface font-interface)))))) (AmbitusAccidental . ( - (print-function . ,Accidental_interface::print) (font-family . music) (padding . 0.5) - (X-offset-callbacks . (,Side_position_interface::aligned_side)) - (direction . -1) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) (cautionary-style . parentheses) - (after-line-breaking-callback . ,Accidental_interface::after_line_breaking) + (stencil . ,ly:accidental-interface::print) + (after-line-breaking . ,ly:accidental-interface::after-line-breaking) + (side-axis . ,X) (meta . ((class . Item) (interfaces . (item-interface accidental-interface @@ -104,9 +112,9 @@ (AmbitusNoteHead . ( (duration-log . 2) - (print-function . ,Note_head::print) - (glyph-name-procedure . ,find-notehead-symbol) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (stencil . ,ly:note-head::print) + (glyph-name . ,note-head::calc-glyph-name) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) (interfaces . (font-interface note-head-interface @@ -116,13 +124,13 @@ ledgered-interface)))))) (Arpeggio - . ( - (X-extent-callback . ,Arpeggio::width_callback) - (print-function . ,Arpeggio::print) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (X-offset-callbacks . (,Side_position_interface::aligned_side)) - (direction . -1) + . ((X-extent . ,ly:arpeggio::width) + (stencil . ,ly:arpeggio::print) + (Y-offset . ,ly:staff-symbol-referencer::callback) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) (padding . 0.5) + (side-axis . ,X) (staff-position . 0.0) (meta . ((class . Item) (interfaces . (arpeggio-interface @@ -134,13 +142,14 @@ . ( (break-align-symbol . staff-bar) (glyph . "|") - (break-glyph-function . ,default-break-barline) (layer . 0) - (bar-size-procedure . ,Bar_line::get_staff_bar_size) - (print-function . ,Bar_line::print) (break-visibility . ,all-visible) (breakable . #t) - (before-line-breaking-callback . ,Bar_line::before_line_breaking) + + (stencil . ,ly:bar-line::print) + (glyph-name . ,bar-line::calc-glyph-name) + (bar-size . ,ly:bar-line::calc-bar-size) + (space-alist . ( (time-signature . (extra-space . 0.75)) (custos . (minimum-space . 2.0)) @@ -155,7 +164,7 @@ ;; Ross. page 151 lists other values, we opt for a leaner look ;; ;; TODO: - ;; kern should scale with linethickness too. + ;; kern should scale with line-thickness too. (kern . 3.0) (thin-kern . 3.0) (hair-thickness . 1.9) @@ -167,66 +176,106 @@ (BarNumber . ( - (print-function . ,Text_interface::print) + (stencil . ,ly:text-interface::print) (breakable . #t) (break-visibility . ,begin-of-line-visible) (padding . 1.0) - (direction . 1) + (direction . ,UP) (font-family . roman) (font-size . -2) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (self-alignment-X . 1) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) + (X-offset . ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:break-alignment-align-interface::self-align-callback)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) + (self-alignment-X . 1) + (break-align-symbol . left-edge) (meta . ((class . Item) (interfaces . (side-position-interface text-interface + break-alignment-align-interface self-alignment-interface font-interface - break-aligned-interface)))) + )))) )) (BassFigure . ( - (print-function . ,Text_interface::print) - (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (direction . 1) - (font-family . number) - - ;; We must do this, other BFs in - ;; layout16 become too small. - (font-size . -4) - (kern . 0.2) + (stencil . ,ly:text-interface::print) (meta . ((class . Item) (interfaces . (text-interface rhythmic-grob-interface bass-figure-interface - self-alignment-interface font-interface)))))) + (BassFigureBracket + . ( + (stencil . ,ly:enclosing-bracket::print) + (X-extent . ,ly:enclosing-bracket::width) + (edge-height . (0.2 . 0.2)) + (meta . ((class . Item) + (interfaces . (enclosing-bracket-interface)) )) + )) + (BassFigureContinuation + . ( + (stencil . ,ly:figured-bass-continuation::print) + (Y-offset . ,ly:figured-bass-continuation::center-on-figures) + (meta . ((class . Spanner) + (interfaces . (figured-bass-continuation-interface)) + )))) + (BassFigureLine + . ( + (axes . (,Y)) + (Y-extent . ,ly:axis-group-interface::height) + (meta . ((class . Spanner) + (interfaces . (axis-group-interface + )))))) + + (BassFigureAlignment + . ( + (axes . (,Y)) + (threshold . (2 . 1000)) + (positioning-done . ,ly:align-interface::calc-positioning-done) + (Y-extent . ,ly:axis-group-interface::height) + (stacking-dir . -1) + (meta . ((class . Spanner) + (interfaces . (align-interface + axis-group-interface)))))) + (Beam . ( ;; todo: clean this up a bit: the list is getting ;; rather long. - (print-function . ,Beam::print) (gap . 0.8) - (positions . (#f . #f)) - (position-callbacks . (,Beam::least_squares - ,Beam::check_concave - ,Beam::slope_damping - ,Beam::shift_region_to_valid - ,Beam::quanting)) + (positions . ,(ly:make-simple-closure + (ly:make-simple-closure + (list chain-grob-member-functions + `(,cons 0 0) + ly:beam::calc-least-squares-positions + ly:beam::slope-damping + ly:beam::shift-region-to-valid + ly:beam::quanting + )))) + + ;; this is a hack to set stem lengths, if positions is set. + (quantized-positions . ,ly:beam::set-stem-lengths) + (concaveness . ,ly:beam::calc-concaveness) + (direction . ,ly:beam::calc-direction) + (shorten . ,ly:beam::calc-stem-shorten) + (beaming . ,ly:beam::calc-beaming) + (stencil . ,ly:beam::print) ;; TODO: should be in SLT. (thickness . 0.48) ; in staff-space - (before-line-breaking-callback . ,Beam::before_line_breaking) - (after-line-breaking-callback . ,Beam::after_line_breaking) - (neutral-direction . -1) - (dir-function . ,beam-dir-majority-median) + (neutral-direction . ,DOWN) ;; Whe have some unreferenced problems here. ;; - ;; If we shorten beamed stems less than normal stems (1 staffspace), + ;; If we shorten beamed stems less than normal stems (1 staff-space), ;; or high order less than 8th beams, patterns like ;; c''4 [c''8 c''] c''4 [c''16 c] ;; are ugly (different stem lengths). @@ -239,15 +288,11 @@ ;; isolated shortened beams look nice and a bit shortened, ;; sadly possibly breaking patterns with high order beams. (beamed-stem-shorten . (1.0 0.5 0.25)) - - (flag-width-function . ,beam-flag-width-function) (damping . 1) (auto-knee-gap . 5.5) ;; only for debugging. (font-family . roman) - - (space-function . ,Beam::space_function) (meta . ((class . Spanner) (interfaces . (staff-symbol-referencer-interface beam-interface)))))) @@ -256,8 +301,10 @@ . ( (breakable . #t) (stacking-dir . 1) + (positioning-done . ,ly:break-align-interface::calc-positioning-done) + (X-extent . ,ly:axis-group-interface::width) (break-align-orders . ;; end of line - #((instrument-name + #(( left-edge ambitus breathing-sign @@ -269,7 +316,7 @@ custos) ;; unbroken - (instrument-name + ( left-edge ambitus breathing-sign @@ -279,9 +326,9 @@ key-signature staff time-signature custos) - + ;; begin of line - (instrument-name + ( left-edge ambitus breathing-sign @@ -292,7 +339,6 @@ time-signature custos))) (axes . (0)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) (meta . ((class . Item) (interfaces . (break-alignment-interface axis-group-interface)))))) @@ -300,8 +346,7 @@ (BreakAlignGroup . ( (axes . (0)) - (X-offset-callbacks . (,Break_align_interface::alignment_callback)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) + (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Item) (interfaces . (break-aligned-interface axis-group-interface)))))) @@ -314,13 +359,14 @@ (ambitus . (extra-space . 2.0)) (custos . (minimum-space . 1.0)) (key-signature . (minimum-space . 1.5)) + (time-signature . (minimum-space . 1.5)) (staff-bar . (minimum-space . 1.5)) (clef . (minimum-space . 2.0)) (first-note . (fixed-space . 1.0)) ;huh? (right-edge . (extra-space . 0.1)))) - (print-function . ,Text_interface::print) + (stencil . ,ly:text-interface::print) (text . ,(make-musicglyph-markup "scripts.rcomma")) - (Y-offset-callbacks . (,Breathing_sign::offset_callback)) + (Y-offset . ,ly:breathing-sign::offset-callback) (break-visibility . ,begin-of-line-invisible) (meta . ((class . Item) (interfaces . (break-aligned-interface @@ -330,21 +376,21 @@ (Clef . ( - (print-function . ,Clef::print) - (before-line-breaking-callback . ,Clef::before_line_breaking) + (stencil . ,ly:clef::print) + (glyph-name . ,ly:clef::calc-glyph-name) (breakable . #t) (font-family . music) (break-align-symbol . clef) (break-visibility . ,begin-of-line-visible) (space-alist . ((ambitus . (extra-space . 2.0)) (staff-bar . (extra-space . 0.7)) - (key-cancellation . (minimum-space . 4.0)) - (key-signature . (minimum-space . 4.0)) + (key-cancellation . (minimum-space . 3.5)) + (key-signature . (minimum-space . 3.5)) (time-signature . (minimum-space . 4.2)) (first-note . (minimum-fixed-space . 5.0)) (next-note . (extra-space . 0.5)) (right-edge . (extra-space . 0.5)))) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) (interfaces . (clef-interface staff-symbol-referencer-interface @@ -353,15 +399,14 @@ (ClusterSpannerBeacon . ( - (print-function . #f) - (Y-extent-callback . ,Cluster_beacon::height) + (Y-extent . ,ly:cluster-beacon::height) (meta . ((class . Item) (interfaces . (cluster-beacon-interface)))))) (ClusterSpanner . ( - (print-function . ,Cluster::print) - (spacing-procedure . ,Spanner::set_spacing_rods) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (stencil . ,ly:cluster::print) (minimum-length . 0.0) (padding . 0.25) (style . ramp) @@ -370,8 +415,8 @@ (ChordName . ( - (print-function . ,Text_interface::print) - (after-line-breaking-callback . ,Chord_name::after_line_breaking) + (stencil . ,ly:text-interface::print) + (after-line-breaking . ,ly:chord-name::after-line-breaking) (word-space . 0.0) (font-family . sans) (font-size . 1.5) @@ -384,16 +429,17 @@ (CombineTextScript . ( - (print-function . ,Text_interface::print) + (stencil . ,ly:text-interface::print) (no-spacing-rods . #t) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (direction . 1) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (direction . ,UP) (padding . 0.5) (staff-padding . 0.5) (script-priority . 200) ;; todo: add X self alignment? (baseline-skip . 2) + (side-axis . ,Y) (font-series . bold) (meta . ((class . Item) (interfaces . (text-script-interface @@ -405,11 +451,11 @@ . ( (break-align-symbol . custos) (breakable . #t) - (print-function . ,Custos::print) + (stencil . ,ly:custos::print) (break-visibility . ,end-of-line-visible) (style . vaticana) - (neutral-direction . -1) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (neutral-direction . ,DOWN) + (Y-offset . ,ly:staff-symbol-referencer::callback) (space-alist . ( (first-note . (minimum-fixed-space . 0.0)) (right-edge . (extra-space . 0.1)))) @@ -424,15 +470,16 @@ . ( (axes . (0)) (direction . ,RIGHT) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (X-offset-callbacks . (,Dot_column::side_position)) + (positioning-done . ,ly:dot-column::calc-positioning-done) + (X-extent . ,ly:axis-group-interface::width) + (X-offset . ,ly:dot-column::side-position) (meta . ((class . Item) (interfaces . (dot-column-interface axis-group-interface)))))) (Dots . ( - (print-function . ,Dots::print) + (stencil . ,ly:dots::print) (dot-count . 1) (meta . ((class . Item) (interfaces . (font-interface @@ -441,7 +488,7 @@ (DoublePercentRepeat . ( - (print-function . ,Percent_repeat_item_interface::double_percent) + (stencil . ,ly:percent-repeat-item-interface::double-percent) (breakable . #t) (slope . 1.0) (font-encoding . fetaMusic) @@ -455,16 +502,18 @@ percent-repeat-interface)))))) (DoublePercentRepeatCounter - . ((print-function . ,Text_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Self_alignment_interface::centered_on_other_axis_parent)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + . ( + (stencil . ,ly:text-interface::print) + (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-y-parent)) + ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (font-encoding . fetaNumber) (self-alignment-X . 0) (font-size . -2) - (direction . 1) + (direction . ,UP) (padding . 0.2) (staff-padding . 0.25) + (side-axis . ,Y) (meta . ((class . Item) (interfaces . (side-position-interface self-alignment-interface @@ -474,15 +523,16 @@ (DynamicLineSpanner . ( (axes . (1)) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (staff-padding . 0.1) (padding . 0.6) (avoid-slur . outside) (slur-padding . 0.3) (minimum-space . 1.2) - (direction . -1) - + (direction . ,DOWN) + (side-axis . ,Y) + (Y-extent . ,ly:axis-group-interface::height) + (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Spanner) (interfaces . (axis-group-interface dynamic-interface @@ -491,15 +541,20 @@ (DynamicText . ( - (print-function . ,Text_interface::print) - (before-line-breaking-callback . ,Script_interface::before_line_breaking) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + + ;; todo. + + (stencil . ,ly:text-interface::print) + (direction . ,ly:script-interface::calc-direction) + + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (self-alignment-X . 0) - (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self) (self-alignment-Y . 0) (font-series . bold) (font-encoding . fetaDynamic) (font-shape . italic) + (avoid-slur . around) (no-spacing-rods . #t) (script-priority . 100) (meta . ((class . Item) @@ -510,7 +565,8 @@ script-interface)))))) (DynamicTextSpanner - . ((print-function . ,Dynamic_text_spanner::print) + . ( + (stencil . ,ly:dynamic-text-spanner::print) ;; rather ugh with NCSB ;; (font-series . bold) @@ -531,7 +587,6 @@ (Fingering . ( - (print-function . ,Text_interface::print) ;; sync with TextScript (?) @@ -542,7 +597,10 @@ (self-alignment-X . 0) (self-alignment-Y . 0) (script-priority . 100) - (before-line-breaking-callback . ,Script_interface::before_line_breaking) + + (stencil . ,ly:text-interface::print) + (direction . ,ly:script-interface::calc-direction) + (font-encoding . fetaNumber) (font-size . -5) ; don't overlap when next to heads. (meta . ((class . Item) @@ -559,10 +617,10 @@ (gap . 0.5) (zigzag-width . 0.75) (breakable . #t) - (X-extent-callback . #f) - (Y-extent-callback . #f) - (after-line-breaking-callback . ,Line_spanner::after_line_breaking) - (print-function . ,Line_spanner::print) + (X-extent . #f) + (Y-extent . #f) + (stencil . ,ly:line-spanner::print) + (after-line-breaking . ,ly:line-spanner::after-line-breaking) (meta . ((class . Spanner) (interfaces . (line-interface line-spanner-interface)))))) @@ -576,11 +634,14 @@ (GridLine . ( - (print-function . ,Grid_line_interface::print) - (X-extent-callback . ,Grid_line_interface::width_callback) + (X-extent . ,ly:grid-line-interface::width) + (stencil . ,ly:grid-line-interface::print) (self-alignment-X . ,CENTER) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Self_alignment_interface::centered_on_parent)) + (X-offset . ,(ly:make-simple-closure + `(,+ ,(ly:make-simple-closure + (list ly:self-alignment-interface::centered-on-x-parent)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) (layer . 0) (meta . ((class . Item) (interfaces . (self-alignment-interface @@ -588,15 +649,16 @@ (Hairpin . ( - (print-function . ,Hairpin::print) - (after-line-breaking-callback . ,Hairpin::after_line_breaking) + (stencil . ,ly:hairpin::print) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (after-line-breaking . ,ly:hairpin::after-line-breaking) + (circled-tip . #f) (thickness . 1.0) (height . 0.6666) - (spacing-procedure . ,Spanner::set_spacing_rods) (minimum-length . 2.0) (bound-padding . 1.0) (self-alignment-Y . 0) - (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self) (meta . ((class . Spanner) (interfaces . (hairpin-interface line-interface @@ -607,11 +669,12 @@ (HorizontalBracket . ( (thickness . 1.0) - (print-function . ,Horizontal_bracket::print) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (stencil . ,ly:horizontal-bracket::print) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (padding . 0.2) (staff-padding . 0.2) - (direction . -1) + (direction . ,DOWN) + (side-axis . ,Y) (bracket-flare . (0.5 . 0.5)) (meta . ((class . Spanner) (interfaces . (horizontal-bracket-interface @@ -620,71 +683,83 @@ spanner-interface)))))) (InstrumentName . ( - (breakable . #t) - (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Side_position_interface::aligned_on_support_refpoints)) - ;; This direction is for aligned_on_support_refpoints - ;; (?) --hwn - (direction . 0) - (space-alist . ( - (left-edge . (extra-space . 1.0)))) - - (self-alignment-Y . 0) - (print-function . ,Text_interface::print) - (break-align-symbol . instrument-name) - (break-visibility . ,begin-of-line-visible) - (baseline-skip . 2) - (meta . ((class . Item) - (interfaces . (font-interface - self-alignment-interface + (padding . 0.3) + (stencil . ,ly:system-start-text::print) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) + (self-alignment-Y . ,CENTER) + (meta . ((class . Spanner) + (interfaces . (system-start-text-interface side-position-interface - text-interface - break-aligned-interface)))))) + font-interface)))))) (KeyCancellation . ( - (print-function . ,Key_signature_interface::print) + (stencil . ,ly:key-signature-interface::print) (space-alist . ( (time-signature . (extra-space . 1.25)) (staff-bar . (extra-space . 0.6)) (key-signature . (extra-space . 0.5)) (right-edge . (extra-space . 0.5)) (first-note . (fixed-space . 2.5)))) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (Y-offset . ,ly:staff-symbol-referencer::callback) (break-align-symbol . key-cancellation) (break-visibility . ,begin-of-line-invisible) (breakable . #t) - (meta . ((class . Item) (interfaces . (key-signature-interface font-interface break-aligned-interface)))))) (KeySignature . ( - (print-function . ,Key_signature_interface::print) + (stencil . ,ly:key-signature-interface::print) (space-alist . ( - (time-signature . (extra-space . 1.25)) + (time-signature . (extra-space . 1.15)) (staff-bar . (extra-space . 1.1)) (right-edge . (extra-space . 0.5)) (first-note . (fixed-space . 2.5)))) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (Y-offset . ,ly:staff-symbol-referencer::callback) (break-align-symbol . key-signature) (break-visibility . ,begin-of-line-visible) (breakable . #t) - (meta . ((class . Item) (interfaces . (key-signature-interface font-interface break-aligned-interface)))))) + + + (LaissezVibrerTie + . ( + (stencil . ,ly:tie::print) + (control-points . ,ly:semi-tie::calc-control-points) + (direction . ,ly:semi-tie::calc-direction) + (details . ((ratio . 0.333) + (height-limit . 1.0))) + (thickness . 1.0) + (meta . ((class . Item) + (interfaces . (semi-tie-interface)) + )) + )) + + (LaissezVibrerTieColumn + . ( + (X-extent . #f) + (Y-extent . #f) + (head-direction . ,LEFT) + (positioning-done . ,ly:semi-tie-column::calc-positioning-done) + (meta . ((class . Item) + (interfaces . (semi-tie-column-interface)) + )) + )) + (LedgerLineSpanner . ( - (print-function . ,Ledger_line_spanner::print) - (X-extent-callback . #f) - (Y-extent-callback . #f) + (springs-and-rods . ,ly:ledger-line-spanner::set-spacing-rods) + (stencil . ,ly:ledger-line-spanner::print) + (X-extent . #f) + (Y-extent . #f) (minimum-length-fraction . 0.25) (length-fraction . 0.25) - (spacing-procedure . ,Ledger_line_spanner::set_spacing_rods) - (print-function . ,Ledger_line_spanner::print) (layer . 0) (meta . ((class . Spanner) (interfaces . (ledger-line-interface)))))) @@ -712,19 +787,33 @@ (LigatureBracket . ( - (ligature-primitive-callback . ,Note_head::print) - (direction . 1) - (gap . 0.0) + ;; ugh. A ligature bracket is totally different from + ;; a tuplet bracket. + (padding . 2.0) (thickness . 1.6) (edge-height . (0.7 . 0.7)) (shorten-pair . (-0.2 . -0.2)) - (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking) - (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking) - (print-function . ,Tuplet_bracket::print) + (direction . ,UP) + (positions . ,ly:tuplet-bracket::calc-positions) + (stencil . ,ly:tuplet-bracket::print) + (staff-padding . 0.25) + (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) + (control-points . ,ly:tuplet-bracket::calc-control-points) + (meta . ((class . Spanner) + (interfaces . (line-interface + tuplet-bracket-interface)))))) + + + (LyricExtender + . ( + (stencil . ,ly:lyric-extender::print) + (thickness . 0.8) ; line-thickness + (minimum-length . 1.5) + (Y-extent . (0 . 0)) (meta . ((class . Spanner) - (interfaces . (tuplet-bracket-interface - line-interface)))))) + (interfaces . (lyric-interface + lyric-extender-interface)))))) (LyricHyphen . ( @@ -733,28 +822,32 @@ (dash-period . 10.0) (length . 0.66) (minimum-length . 0.3) + (minimum-distance . 0.1) (padding . 0.07) - ; (spacing-procedure . ,Hyphen_spanner::set_spacing_rods) - (print-function . ,Hyphen_spanner::print) + (springs-and-rods . ,ly:hyphen-spanner::set-spacing-rods) + (stencil . ,ly:hyphen-spanner::print) (Y-extent . (0 . 0)) (meta . ((class . Spanner) (interfaces . (lyric-interface + font-interface lyric-hyphen-interface spanner-interface)))))) - (LyricExtender - . ( - (print-function . ,Lyric_extender::print) - (thickness . 0.8) ; linethickness - (minimum-length . 1.5) - (Y-extent . (0 . 0)) + (LyricSpace + . ((minimum-distance . 0.45) + (springs-and-rods . ,ly:hyphen-spanner::set-spacing-rods) + (padding . 0.0) + (Y-extent . #f) + (X-extent . #f) (meta . ((class . Spanner) - (interfaces . (lyric-interface - lyric-extender-interface)))))) - + (interfaces . (spanner-interface + lyric-hyphen-interface spacing-interface)) + )) + )) (LyricText - . ((print-function . ,Text_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_parent)) + . ( + (stencil . ,ly:text-interface::print) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (self-alignment-X . 0) (word-space . 0.6) (font-series . bold-narrow) @@ -766,44 +859,54 @@ text-interface font-interface)))))) + + (MeasureGrouping + . ( + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) + (stencil . ,ly:measure-grouping::print) + (padding . 2) + (direction . ,UP) + (thickness . 1) + (height . 2.0) + (staff-padding . 3) + (meta . ((class . Spanner) + (interfaces . (side-position-interface + measure-grouping-interface)))))) + + (MelodyItem + . ( + (neutral-direction . ,DOWN) + (meta . ((class . Item) + (interfaces . (melody-spanner-interface spacing-interface)))))) (MensuralLigature . ( (thickness . 1.4) (flexa-width . 2.0) - (ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive) - (print-function . ,Mensural_ligature::print) + (stencil . ,ly:mensural-ligature::print) (meta . ((class . Spanner) (interfaces . (mensural-ligature-interface font-interface)))))) (MetronomeMark . ( - (print-function . ,Text_interface::print) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (direction . 1) + (stencil . ,ly:text-interface::print) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (direction . ,UP) (padding . 0.8) + (side-axis . ,Y) (meta . ((class . Item) (interfaces . (text-interface side-position-interface font-interface metronome-mark-interface)))))) - (MeasureGrouping - . ( - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (print-function . ,Measure_grouping::print) - (padding . 2) - (direction . 1) - (thickness . 1) - (height . 2.0) - (staff-padding . 3) - (meta . ((class . Spanner) - (interfaces . (side-position-interface - measure-grouping-interface)))))) + + (MultiMeasureRest . ( - (spacing-procedure . ,Multi_measure_rest::set_spacing_rods) - (print-function . ,Multi_measure_rest::print) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (stencil . ,ly:multi-measure-rest::print) + (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) + (Y-offset . ,ly:staff-symbol-referencer::callback) (staff-position . 0) (expand-limit . 10) (thick-thickness . 6.6) @@ -816,14 +919,19 @@ font-interface staff-symbol-referencer-interface)))))) + (MultiMeasureRestNumber . ( - (print-function . ,Text_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Self_alignment_interface::centered_on_other_axis_parent)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (bound-padding . 2.0) + (springs-and-rods . ,ly:multi-measure-rest::set-text-rods) + (stencil . ,ly:text-interface::print) + (X-offset . ,(ly:make-simple-closure + `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self)) + ,(ly:make-simple-closure (list ly:self-alignment-interface::x-centered-on-y-parent))))) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) (self-alignment-X . 0) - (direction . 1) + (direction . ,UP) (padding . 0.4) (staff-padding . 0.4) (font-encoding . fetaNumber) @@ -832,15 +940,19 @@ multi-measure-interface self-alignment-interface font-interface - text-interface)))))) + text-interface)))) + )) + (MultiMeasureRestText . ( - (print-function . ,Text_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Self_alignment_interface::centered_on_other_axis_parent)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (stencil . ,ly:text-interface::print) + (X-offset . ,(ly:make-simple-closure + `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-centered-on-y-parent)) + ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) + + (Y-offset . ,ly:side-position-interface::y-aligned-side) (self-alignment-X . 0) - (direction . 1) + (direction . ,UP) (padding . 0.2) (staff-padding . 0.25) (meta . ((class . Spanner) @@ -853,8 +965,9 @@ (NoteCollision . ( (axes . (0 1)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) + (positioning-done . ,ly:note-collision-interface::calc-positioning-done) (meta . ((class . Item) (interfaces . (note-collision-interface axis-group-interface)))))) @@ -862,19 +975,19 @@ (NoteColumn . ( (axes . (0 1)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) (interfaces . (axis-group-interface note-column-interface)))))) (NoteHead . ( - (print-function . ,Note_head::print) - (ligature-primitive-callback . ,Note_head::print) - (glyph-name-procedure . ,find-notehead-symbol) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (stem-attachment-function . ,note-head-style->attachment-coordinates) + (stencil . ,ly:note-head::print) + (stem-attachment . ,ly:note-head::calc-stem-attachment) + (glyph-name . ,note-head::calc-glyph-name) + (Y-offset . ,ly:staff-symbol-referencer::callback) + (X-offset . ,ly:note-head::stem-x-shift) (meta . ((class . Item) (interfaces . (rhythmic-grob-interface rhythmic-head-interface @@ -890,14 +1003,13 @@ ;; Changed this from 0.75. ;; If you ever change this back, please document! --hwn (knee-spacing-correction . 1.0) - (meta . ((class . Item) (interfaces . (spacing-interface note-spacing-interface)))))) (NoteName . ( - (print-function . ,Text_interface::print) + (stencil . ,ly:text-interface::print) (meta . ((class . Item) (interfaces . (note-name-interface text-interface @@ -907,9 +1019,12 @@ . ( (self-alignment-X . 0) (break-visibility . ,begin-of-line-visible) - (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent ,Self_alignment_interface::aligned_on_self)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (print-function . ,Text_interface::print) + (X-offset . ,(ly:make-simple-closure + `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self)) + ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent))))) + + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (stencil . ,ly:text-interface::print) ;; no Y dimensions, because of lyrics under tenor clef. (Y-extent . (0 . 0)) @@ -925,8 +1040,8 @@ (OttavaBracket . ( - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (print-function . ,Ottava_bracket::print) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (stencil . ,ly:ottava-bracket::print) (font-shape . italic) (shorten-pair . (0.0 . -0.6)) (staff-padding . 1.0) @@ -934,9 +1049,10 @@ (minimum-length . 1.0) (dash-fraction . 0.3) (edge-height . (0 . 1.2)) - (direction . 1) + (direction . ,UP) (meta . ((class . Spanner) (interfaces . (ottava-bracket-interface + horizontal-bracket-interface line-interface side-position-interface font-interface @@ -945,24 +1061,34 @@ (PaperColumn . ( (axes . (0)) - (before-line-breaking-callback . ,Paper_column::before_line_breaking) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - + (before-line-breaking . ,ly:paper-column::before-line-breaking) + ;; (stencil . ,ly:paper-column::print) + (X-extent . ,ly:axis-group-interface::width) + ;; debugging -;; (print-function . ,Paper_column::print) (font-size . -6) (font-name . "sans") (Y-extent-callback . #f) + ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) (interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface)))))) + (ParenthesesItem + . ((stencil . ,parentheses-item::print) + (font-size . -6) + (padding . 0.2) + (meta . ((class . Item) + (interfaces . (parentheses-interface font-interface)))) + )) + (PhrasingSlur - . ((slur-details . ,default-slur-details) - (print-function . ,Slur::print) + . ((details . ,default-slur-details) + (control-points . ,ly:slur::calc-control-points) + (direction . ,ly:slur::calc-direction) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (Y-extent . ,ly:slur::height) + (stencil . ,ly:slur::print) (thickness . 1.1) - (spacing-procedure . ,Spanner::set_spacing_rods) (minimum-length . 1.5) - (after-line-breaking-callback . ,Slur::after_line_breaking) - (Y-extent-callback . ,Slur::height) (height-limit . 2.0) (ratio . 0.333) (meta . ((class . Spanner) @@ -971,12 +1097,14 @@ (NonMusicalPaperColumn . ( (axes . (0)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (before-line-breaking-callback . ,Paper_column::before_line_breaking) + (before-line-breaking . ,ly:paper-column::before-line-breaking) + (X-extent . ,ly:axis-group-interface::width) + ;; (stencil . ,ly:paper-column::print) + (breakable . #t) ;; debugging stuff: print column number. -;; (print-function . ,Paper_column::print) (font-size . -6) (font-name . "sans") (Y-extent-callback . #f) + ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) (interfaces . (paper-column-interface @@ -985,8 +1113,8 @@ (PercentRepeat . ( - (spacing-procedure . ,Multi_measure_rest::set_spacing_rods) - (print-function . ,Multi_measure_rest::percent) + (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) + (stencil . ,ly:multi-measure-rest::percent) (slope . 1.0) (thickness . 0.48) (font-encoding . fetaMusic) @@ -995,12 +1123,14 @@ font-interface percent-repeat-interface)))))) (PercentRepeatCounter - . ((print-function . ,Text_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self - ,Self_alignment_interface::centered_on_other_axis_parent)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + . ( + (stencil . ,ly:text-interface::print) + (X-offset . ,(ly:make-simple-closure + `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::x-centered-on-y-parent)) + ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (self-alignment-X . 0) - (direction . 1) + (direction . ,UP) (padding . 0.2) (staff-padding . 0.25) (font-size . -2) @@ -1015,10 +1145,10 @@ ;; an example of a text spanner (PianoPedalBracket . ( - (print-function . ,Piano_pedal_bracket::print) + (stencil . ,ly:piano-pedal-bracket::print) (style . line) (bound-padding . 1.0) - (direction . -1) + (direction . ,DOWN) (bracket-flare . (0.5 . 0.5)) (edge-height . (1.0 . 1.0)) (shorten-pair . (0.0 . 0.0)) @@ -1030,50 +1160,69 @@ (RehearsalMark . ( - (print-function . ,Text_interface::print) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (after-line-breaking-callback . ,shift-right-at-line-begin) + (stencil . ,ly:text-interface::print) + (X-offset . ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:break-alignment-align-interface::self-align-callback)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) + + (Y-offset . ,ly:side-position-interface::y-aligned-side) (self-alignment-X . 0) - (direction . 1) + (direction . ,UP) (breakable . #t) (font-size . 2) (baseline-skip . 2) (break-visibility . ,end-of-line-invisible) + (break-align-symbol . staff-bar) (padding . 0.8) (meta . ((class . Item) (interfaces . (text-interface side-position-interface + break-alignment-align-interface font-interface mark-interface self-alignment-interface)))))) - (RemoveEmptyVerticalGroup - . ( - (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback)) - (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent) - (axes . (1)) - (meta . ((class . Spanner) - (interfaces . (axis-group-interface - vertically-spaceable-interface - hara-kiri-group-interface - spanner-interface)))))) (RepeatSlash . ( - (print-function . ,Percent_repeat_item_interface::beat_slash) + (stencil . ,ly:percent-repeat-item-interface::beat-slash) (thickness . 0.48) (slope . 1.7) (meta . ((class . Item) (interfaces . (percent-repeat-interface)))))) + (RepeatTie + . ( + (stencil . ,ly:tie::print) + (control-points . ,ly:semi-tie::calc-control-points) + (direction . ,ly:semi-tie::calc-direction) + (details . ((ratio . 0.333) + (height-limit . 1.0))) + (thickness . 1.0) + (meta . ((class . Item) + (interfaces . (semi-tie-interface)) + )) + )) + + (RepeatTieColumn + . ( + (X-extent . #f) + (Y-extent . #f) + (head-direction . ,RIGHT) + (positioning-done . ,ly:semi-tie-column::calc-positioning-done) + (meta . ((class . Item) + (interfaces . (semi-tie-column-interface)) + )) + )) + (Rest . ( - (after-line-breaking-callback . ,Rest::after_line_breaking) - (X-extent-callback . ,Rest::extent_callback) - (Y-extent-callback . ,Rest::extent_callback) - (print-function . ,Rest::print) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback - ,Rest::polyphonic_offset_callback)) + (stencil . ,ly:rest::print) + (X-extent . ,ly:rest::width) + (Y-extent . ,ly:rest::height) + (Y-offset . ,ly:rest::y-offset-callback) (minimum-distance . 0.25) (meta . ((class . Item) (interfaces . (font-interface @@ -1085,21 +1234,24 @@ (RestCollision . ( (minimum-distance . 0.75) + (positioning-done . ,ly:rest-collision::calc-positioning-done) (meta . ((class . Item) (interfaces . (rest-collision-interface)))))) (Script . ( ;; don't set direction here: it breaks staccato. - (print-function . ,Script_interface::print) ;; This value is sensitive: if too large, staccato dots will move a ;; space a away. (padding . 0.20) (staff-padding . 0.25) ;; (script-priority . 0) priorities for scripts, see script.scm - (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent)) - (before-line-breaking-callback . ,Script_interface::before_line_breaking) + (X-offset . , ly:self-alignment-interface::centered-on-x-parent) + + + (stencil . ,ly:script-interface::print) + (direction . ,ly:script-interface::calc-direction) (font-encoding . fetaMusic) (meta . ((class . Item) (interfaces . (script-interface @@ -1108,43 +1260,74 @@ (ScriptColumn . ( - (before-line-breaking-callback . ,Script_column::before_line_breaking) + (before-line-breaking . ,ly:script-column::before-line-breaking) (meta . ((class . Item) (interfaces . (script-column-interface)))))) (SeparationItem . ( - (X-extent-callback . #f) - (Y-extent-callback . #f) + (X-extent . #f) + (Y-extent . #f) (meta . ((class . Item) (interfaces . (spacing-interface separation-item-interface)))))) (SeparatingGroupSpanner . ( - (spacing-procedure . ,Separating_group_spanner::set_spacing_rods) + (springs-and-rods . ,ly:separating-group-spanner::set-spacing-rods) (meta . ((class . Spanner) (interfaces . (only-prebreak-interface spacing-interface separation-spanner-interface)))))) (Slur - . ((slur-details . ,default-slur-details) - (print-function . ,Slur::print) - (thickness . 1.0) - (spacing-procedure . ,Spanner::set_spacing_rods) + . ((details . ,default-slur-details) + (control-points . ,ly:slur::calc-control-points) + (direction . ,ly:slur::calc-direction) + (springs-and-rods . ,ly:spanner::set-spacing-rods) + (Y-extent . ,ly:slur::height) + (stencil . ,ly:slur::print) + (thickness . 1.2) + (line-thickness . 0.8) (minimum-length . 1.5) - (after-line-breaking-callback . ,Slur::after_line_breaking) - (Y-extent-callback . ,Slur::height) - ; Slur::height) (height-limit . 2.0) (ratio . 0.25) + (avoid-slur . inside) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) + (SostenutoPedal + . ( + (stencil . ,ly:text-interface::print) + (direction . ,RIGHT) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (no-spacing-rods . #t) + (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner + (font-shape . italic) + (self-alignment-X . 0) + (meta . ((class . Item) + (interfaces . (text-interface + self-alignment-interface + font-interface)))))) + + (SostenutoPedalLineSpanner + . ( + (axes . (1)) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) + (staff-padding . 1.0) + (padding . 1.2) + (minimum-space . 1.0) + (direction . ,DOWN) + (meta . ((class . Spanner) + (interfaces . (piano-pedal-interface + axis-group-interface + side-position-interface)))))) (SpacingSpanner . ( - (spacing-procedure . ,Spacing_spanner::set_springs) + (springs-and-rods . ,ly:spacing-spanner::set-springs) + (average-spacing-wishes . #t) (grace-space-factor . 0.6) (shortest-duration-space . 2.0) (spacing-increment . 1.2) @@ -1156,13 +1339,15 @@ (SpanBar . ( (break-align-symbol . staff-bar) - (bar-size-procedure . ,Span_bar::get_bar_size) - (print-function . ,Span_bar::print) - (X-extent-callback . ,Span_bar::width_callback) - (Y-extent-callback . ()) + (Y-extent . ()) (layer . 0) (breakable . #t) - (before-line-breaking-callback . ,Span_bar::before_line_breaking) + (stencil . ,ly:span-bar::print) + (bar-size . ,ly:span-bar::calc-bar-size) + (X-extent . ,ly:span-bar::width) + (glyph-name . ,ly:span-bar::calc-glyph-name) + (before-line-breaking . ,ly:span-bar::before-line-breaking) + ;; ugh duplication! ;; @@ -1178,10 +1363,12 @@ bar-line-interface)))))) (StanzaNumber - . ((print-function . ,Text_interface::print) + . ( + (stencil . ,ly:text-interface::print) (font-series . bold) (padding . 1.0) - (X-offset-callbacks . (,Side_position_interface::aligned_side)) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (side-axis . ,X) (direction . ,LEFT) (meta . ((class . Item) (interfaces . (side-position-interface @@ -1189,65 +1376,20 @@ text-interface font-interface)))))) - (StringNumber - . ( - (print-function . ,print-circled-text-callback) - (padding . 0.5) - (staff-padding . 0.5) - (self-alignment-X . 0) - (self-alignment-Y . 0) - (script-priority . 100) - (font-encoding . fetaNumber) - (font-size . -5) ; don't overlap when next to heads. - (meta . ((class . Item) - (interfaces . (string-number-interface - font-interface - text-script-interface - text-interface - side-position-interface - self-alignment-interface - item-interface)))))) (StaffSpacing . ( (breakable . #t) (stem-spacing-correction . 0.4) - (meta . ((class . Item) (interfaces . (spacing-interface staff-spacing-interface)))))) - (SostenutoPedal - . ( - (print-function . ,Text_interface::print) - (direction . 1) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (no-spacing-rods . #t) - (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner - (font-shape . italic) - (self-alignment-X . 0) - (meta . ((class . Item) - (interfaces . (text-interface - self-alignment-interface - font-interface)))))) - - (SostenutoPedalLineSpanner - . ( - (axes . (1)) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - - (padding . 1.2) - (minimum-space . 1.0) - (direction . -1) - (meta . ((class . Spanner) - (interfaces . (piano-pedal-interface - axis-group-interface - side-position-interface)))))) - + (StaffSymbol . ( - (print-function . ,Staff_symbol::print) + (Y-extent . ,ly:staff-symbol::height) + (stencil . ,ly:staff-symbol::print) (line-count . 5) (ledger-line-thickness . (1.0 . 0.1)) (layer . 0) @@ -1256,69 +1398,93 @@ (Stem . ( - ;; this list is rather long. Trim --hwn - (before-line-breaking-callback . ,Stem::before_line_breaking) - (print-function . ,Stem::print) + (direction . ,ly:stem::calc-direction) + (default-direction . ,ly:stem::calc-default-direction) + (stem-end-position . ,ly:stem::calc-stem-end-position) + (neutral-direction . ,DOWN) + (stem-info . ,ly:stem::calc-stem-info) + (positioning-done . ,ly:stem::calc-positioning-done) + (stencil . ,ly:stem::print) + (X-extent . ,ly:stem::width) + (Y-extent . ,ly:stem::height) + (length . ,ly:stem::calc-length) (thickness . 1.3) + (details + . ( + ;; 3.5 (or 3 measured from note head) is standard length + ;; 32nd, 64th flagged stems should be longer + (lengths . (3.5 3.5 3.5 4.5 5.0)) + + ;; FIXME. 3.5 yields too long beams (according to Ross and + ;; looking at Baerenreiter examples) for a number of common + ;; boundary cases. Subtracting half a beam thickness fixes + ;; this, but the bug may well be somewhere else. + + ;; FIXME this should come from 'lengths + (beamed-lengths . (3.26 3.5 3.6)) + + ;; The 'normal' minima + (beamed-minimum-free-lengths . (1.83 1.5 1.25)) + ;(beamed-minimum-free-lengths . (2.0 1.83 1.25)) - ;; 3.5 (or 3 measured from note head) is standard length - ;; 32nd, 64th flagged stems should be longer - (lengths . (3.5 3.5 3.5 4.5 5.0)) - - ;; Stems in unnatural (forced) direction should be shortened by - ;; one staff space, according to [Roush & Gourlay]. - ;; Flagged stems we shorten only half a staff space. - (stem-shorten . (1.0 0.5)) - - ;; default stem direction for note on middle line - (neutral-direction . -1) - - ;; FIXME. 3.5 yields too long beams (according to Ross and - ;; looking at Baerenreiter examples) for a number of common - ;; boundary cases. Subtracting half a beam thickness fixes - ;; this, but the bug may well be somewhere else. + ;; The 'extreme case' minima + (beamed-extreme-minimum-free-lengths . (2.0 1.25)) - ;; FIXME this should come from 'lengths + ;; Stems in unnatural (forced) direction should be shortened by + ;; one staff space, according to [Roush & Gourlay]. + ;; Flagged stems we shorten only half a staff space. + (stem-shorten . (1.0 0.5)) - (beamed-lengths . (3.26 3.5 3.6)) + )) ;; We use the normal minima as minimum for the ideal lengths, ;; and the extreme minima as abolute minimum length. - ;; The 'normal' minima - (beamed-minimum-free-lengths . (1.83 1.5 1.25)) - ;(beamed-minimum-free-lengths . (2.0 1.83 1.25)) - - ;; The 'extreme case' minima - (beamed-extreme-minimum-free-lengths . (2.0 1.25)) - - (X-offset-callbacks . (,Stem::offset_callback)) - (X-extent-callback . ,Stem::width_callback) - (Y-extent-callback . ,Stem::height) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (X-offset . ,ly:stem::offset-callback) + (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) (interfaces . (stem-interface font-interface)))))) (StemTremolo . ( - (print-function . ,Stem_tremolo::print) - (Y-extent-callback . ,Stem_tremolo::height) - (X-extent-callback . #f) - - (beam-width . 1.6) ; staff-space + (Y-extent . ,ly:stem-tremolo::height) + (stencil . ,ly:stem-tremolo::print) + (X-extent . #f) + (slope . ,ly:stem-tremolo::calc-slope) + (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space + (style . ,ly:stem-tremolo::calc-style) (beam-thickness . 0.48) ; staff-space (meta . ((class . Item) (interfaces . (stem-tremolo-interface)))))) + (StringNumber + . ( + (stencil . ,print-circled-text-callback) + (padding . 0.5) + (staff-padding . 0.5) + (self-alignment-X . 0) + (self-alignment-Y . 0) + (script-priority . 100) + (font-encoding . fetaNumber) + (font-size . -5) ; don't overlap when next to heads. + (meta . ((class . Item) + (interfaces . (string-number-interface + font-interface + text-script-interface + text-interface + side-position-interface + self-alignment-interface + item-interface)))))) + (SustainPedal . ( (no-spacing-rods . #t) - (print-function . ,Sustain_pedal::print) + (stencil . ,ly:sustain-pedal::print) (self-alignment-X . 0) - (direction . 1) + (direction . ,RIGHT) (padding . 0.0) ;; padding relative to SustainPedalLineSpanner - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) (interfaces . (piano-pedal-interface text-spanner-interface @@ -1329,13 +1495,13 @@ (SustainPedalLineSpanner . ( (axes . (1)) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) (padding . 1.2) (staff-padding . 1.2) (minimum-space . 1.0) - (direction . -1) + (direction . ,DOWN) (meta . ((class . Spanner) (interfaces . (piano-pedal-interface axis-group-interface @@ -1344,71 +1510,99 @@ (System . ( (axes . (0 1)) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) + (X-extent . ,ly:axis-group-interface::width) + (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . System) (interfaces . (system-interface axis-group-interface)))))) (SystemStartBrace . ( - (glyph . "brace") - (print-function . ,System_start_delimiter::print) + (style . brace) + (padding . 0.3) + (stencil . ,ly:system-start-delimiter::print) (collapse-height . 5.0) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) (font-encoding . fetaBraces) - (Y-extent-callback . #f) + (Y-extent . #f) (meta . ((class . Spanner) (interfaces . (system-start-delimiter-interface + side-position-interface font-interface)))))) + + (SystemStartSquare + . ( + (Y-extent . #f) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) + (stencil . ,ly:system-start-delimiter::print) + (style . line-bracket) + (thickness . 1.0) + (meta . ((class . Spanner) + (interfaces . (font-interface + side-position-interface + system-start-delimiter-interface)))))) (SystemStartBracket . ( - (Y-extent-callback . #f) - (X-offset-callbacks . (,(lambda (g a) -0.8))) - (print-function . ,System_start_delimiter::print) - (glyph . "bracket") - (collapse-height . 1) + (Y-extent . #f) + (padding . 0.8) + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) + (stencil . ,ly:system-start-delimiter::print) + (style . bracket) + (collapse-height . 5.0) (thickness . 0.45) (meta . ((class . Spanner) (interfaces . (font-interface + side-position-interface system-start-delimiter-interface)))))) (SystemStartBar . ( - (Y-extent-callback . #f) - (print-function . ,System_start_delimiter::print) - (glyph . "bar-line") + (Y-extent . #f) + + ;; ugh--hardcoded. + (padding . -0.1) ;; bar must cover rounded ending of staff line. + (X-offset . ,ly:side-position-interface::x-aligned-side) + (direction . ,LEFT) + (style . bar-line) (thickness . 1.6) - (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking) + (stencil . ,ly:system-start-delimiter::print) (meta . ((class . Spanner) - (interfaces . (system-start-delimiter-interface)))))) + (interfaces . (side-position-interface + system-start-delimiter-interface)))))) + (TabNoteHead . ( - (print-function . ,Text_interface::print) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (stencil . ,ly:text-interface::print) + (Y-offset . ,ly:staff-symbol-referencer::callback) (font-size . -2) - (stem-attachment-function . ,tablature-stem-attachment-function) + (stem-attachment . (0.0 . 1.35)) (font-series . bold) (meta . ((class . Item) (interfaces . (rhythmic-head-interface - font-interface + font-interface rhythmic-grob-interface note-head-interface staff-symbol-referencer-interface text-interface)))))) (TextScript . ( - (print-function . ,Text_interface::print) (no-spacing-rods . #t) - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) - (direction . -1) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (direction . ,DOWN) ;; sync with Fingering ? (padding . 0.5) (staff-padding . 0.5) - (before-line-breaking-callback . ,Script_interface::before_line_breaking) + + (stencil . ,ly:text-interface::print) + (direction . ,ly:script-interface::calc-direction) + (avoid-slur . around) (slur-padding . 0.5) (script-priority . 200) @@ -1421,13 +1615,15 @@ (TextSpanner . ( - (print-function . ,Text_spanner::print) + (stencil . ,ly:text-spanner::print) + (Y-offset . ,ly:side-position-interface::y-aligned-side) (font-shape . italic) (style . dashed-line) (staff-padding . 0.8) (dash-fraction . 0.2) (dash-period . 3.0) - (direction . 1) + (side-axis . ,Y) + (direction . ,UP) (meta . ((class . Spanner) (interfaces . (text-spanner-interface side-position-interface @@ -1435,24 +1631,47 @@ (Tie . ( - (print-function . ,Tie::print) - (details . ((ratio . 0.333) (height-limit . 1.0))) - (thickness . 1.0) + (control-points . ,ly:tie::calc-control-points) + (avoid-slur . inside) + (direction . ,ly:tie::calc-direction) + (stencil . ,ly:tie::print) + (font-size . -6) + (details . ( + ;; for a full list, see tie-helper.cc + (ratio . 0.333) + (center-staff-line-clearance . 0.6) + (tip-staff-line-clearance . 0.45) + (note-head-gap . 0.2) + (stem-gap . 0.35) + (height-limit . 1.0) + (horizontal-distance-penalty-factor . 10) + (min-length-penalty-factor . 20) + (tie-tie-collision-distance . 0.45) + (tie-tie-collision-penalty . 25.0) + (intra-space-threshold . 1.25) + (outer-tie-vertical-distance-symmetry-penalty-factor . 10) + (outer-tie-length-symmetry-penalty-factor . 10) + (outer-tie-vertical-gap . 0.25) + (multi-tie-region-size . 1) + (between-length-limit . 1.0))) + (thickness . 1.2) + (line-thickness . 0.8) (meta . ((class . Spanner) - (interfaces . (tie-interface)))))) + (interfaces . (tie-interface)))) + )) (TieColumn . ( - (after-line-breaking-callback . ,Tie_column::after_line_breaking) - (before-line-breaking-callback . ,Tie_column::before_line_breaking) - (X-extent-callback . #f) - (Y-extent-callback . #f) + (positioning-done . ,ly:tie-column::calc-positioning-done) + (before-line-breaking . ,ly:tie-column::before-line-breaking) + (X-extent . #f) + (Y-extent . #f) (meta . ((class . Spanner) (interfaces . (tie-column-interface)))))) (TimeSignature . ( - (print-function . ,Time_signature::print) + (stencil . ,ly:time-signature::print) (break-align-symbol . time-signature) (break-visibility . ,all-visible) (space-alist . ( @@ -1468,25 +1687,27 @@ (TrillSpanner . ( - (print-function . ,Dynamic_text_spanner::print) + (stencil . ,ly:dynamic-text-spanner::print) (edge-text . ,(cons (make-musicglyph-markup "scripts.trill") "")) (style . trill) (staff-padding . 1.0) (padding . 0.5) - (direction . 1) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (direction . ,UP) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) (meta . ((class . Spanner) (interfaces . (text-spanner-interface side-position-interface font-interface)))))) (TrillPitchAccidental - . ((X-offset-callbacks . (,Side_position_interface::aligned_side)) + . ((X-offset . ,ly:side-position-interface::x-aligned-side) (padding . 0.2) (direction . ,LEFT) (font-size . -4) - (print-function . ,Accidental_interface::print) + (side-axis . ,X) + (stencil . ,ly:accidental-interface::print) (meta . ((class . Item) (interfaces . (item-interface accidental-interface @@ -1494,11 +1715,12 @@ font-interface)))))) (TrillPitchGroup - . ((X-offset-callbacks . (,Side_position_interface::aligned_side)) + . ((X-offset . ,ly:side-position-interface::x-aligned-side) (axes . (,X)) (font-size . -4) - (print-function . ,parenthesize-elements) + (stencil . ,parenthesize-elements) (direction . ,RIGHT) + (side-axis . ,X) (padding . 0.3) (meta . ((class . Item) (interfaces . (side-position-interface @@ -1509,9 +1731,10 @@ axis-group-interface)))))) (TrillPitchHead - . ((print-function . ,Note_head::print) + . ( + (stencil . ,ly:note-head::print) (duration-log . 2) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) + (Y-offset . ,ly:staff-symbol-referencer::callback) (font-size . -4) (meta . ((class . Item) (interfaces . (item-interface @@ -1527,27 +1750,37 @@ (thickness . 1.6) (edge-height . (0.7 . 0.7)) (shorten-pair . (-0.2 . -0.2)) - (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking) - (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking) - (print-function . ,Tuplet_bracket::print) - (font-shape . italic) + (staff-padding . 0.25) + + (direction . ,ly:tuplet-bracket::calc-direction) + (positions . ,ly:tuplet-bracket::calc-positions) + (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) + (control-points . ,ly:tuplet-bracket::calc-control-points) + (stencil . ,ly:tuplet-bracket::print) + + (meta . ((class . Spanner) + (interfaces . (line-interface + tuplet-bracket-interface)))))) + (TupletNumber + . ( + (stencil . ,ly:tuplet-number::print) + (font-shape . italic) (font-size . -2) + (avoid-slur . inside) (meta . ((class . Spanner) - (interfaces . (text-interface - line-interface - tuplet-bracket-interface + (interfaces . (text-interface tuplet-number-interface font-interface)))))) - + (UnaCordaPedal . ( - (print-function . ,Text_interface::print) + (stencil . ,ly:text-interface::print) (font-shape . italic) (no-spacing-rods . #t) (self-alignment-X . 0) - (direction . 1) + (direction . ,RIGHT) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner - (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self)) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) (interfaces . (text-interface self-alignment-interface @@ -1556,12 +1789,13 @@ (UnaCordaPedalLineSpanner . ( (axes . (1)) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) + (Y-extent . ,ly:axis-group-interface::height) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) (padding . 1.2) (staff-padding . 1.2) (minimum-space . 1.0) - (direction . -1) + (direction . ,DOWN) (meta . ((class . Spanner) (interfaces . (piano-pedal-interface axis-group-interface @@ -1571,8 +1805,7 @@ . ( (thickness . 0.6) (flexa-width . 2.0) - (ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive) - (print-function . ,Vaticana_ligature::print) + (stencil . ,ly:vaticana-ligature::print) (meta . ((class . Spanner) (interfaces . (vaticana-ligature-interface font-interface)))))) @@ -1580,71 +1813,64 @@ (VerticalAlignment . ( (axes . (1)) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) + (positioning-done . ,ly:align-interface::calc-positioning-done) + (after-line-breaking . ,ly:align-interface::stretch-after-break) + (Y-extent . ,ly:axis-group-interface::height) + (X-extent . ,ly:axis-group-interface::width) (stacking-dir . -1) (meta . ((class . Spanner) (interfaces . (align-interface axis-group-interface)))))) - (VerticalAxisGroup . ( (axes . (1)) - (Y-extent-callback . ,Axis_group_interface::group_extent_callback) - (X-extent-callback . ,Axis_group_interface::group_extent_callback) + (Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback) + (Y-extent . ,ly:hara-kiri-group-spanner::y-extent) + (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Spanner) (interfaces . (axis-group-interface + hara-kiri-group-interface vertically-spaceable-interface)))))) - (VocalName - . ( - (breakable . #t) - (Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints)) - (direction . 0) - (space-alist . ((left-edge . (extra-space . 1.0)))) - (break-align-symbol . instrument-name) - (print-function . ,Text_interface::print) - (break-align-symbol . clef) - (break-visibility . ,begin-of-line-visible) - (baseline-skip . 2) - (meta . ((class . Item) - (interfaces . (font-interface - self-alignment-interface - side-position-interface - text-interface - break-aligned-interface)))))) (VoltaBracket . ( - (print-function . ,Volta_bracket_interface::print) - (direction . 1) + (stencil . ,ly:volta-bracket-interface::print) + (direction . ,UP) (padding . 1) (font-encoding . fetaNumber) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) - (thickness . 1.6) ;; linethickness - (height . 2.0) ;; staffspace; + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (side-axis . ,Y) + (thickness . 1.6) ;; line-thickness + (edge-height . (2.0 . 2.0)) ;; staff-space; (minimum-space . 5) (font-size . -4) (meta . ((class . Spanner) (interfaces . (volta-bracket-interface + horizontal-bracket-interface line-interface text-interface side-position-interface - font-interface)))))) + font-interface))) + ))) + (VoiceFollower . ( (style . line) (gap . 0.5) (breakable . #t) - (X-extent-callback . #f) - (Y-extent-callback . #f) - (print-function . ,Line_spanner::print) - (after-line-breaking-callback . ,Line_spanner::after_line_breaking) + (X-extent . #f) + (Y-extent . #f) + (stencil . ,ly:line-spanner::print) + (after-line-breaking . ,ly:line-spanner::after-line-breaking) (meta . ((class . Spanner) (interfaces . (line-spanner-interface - line-interface)))))))) + line-interface)))) + )) + +)) (define (completize-grob-entry x) "Transplant assoc key into 'name entry of 'meta of X. Set interfaces for Item, Spanner etc.