X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=c3315a3b42c77d830d9b858ca5a1d0f21f35688f;hb=9cfb34deec4b1cdfa4d147846f38b72c562be3d9;hp=7163fae6047df633de2b62dcc1030d039122d338;hpb=438ec886f8df43733cc28075ffe7582c9d7dedf8;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 7163fae604..c3315a3b42 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -23,8 +23,7 @@ (glyph-name-alist . ,standard-alteration-glyph-name-alist) (alteration . ,accidental-interface::calc-alteration) (stencil . ,ly:accidental-interface::print) - (after-line-breaking - . ,ly:accidental-interface::after-line-breaking) + (Y-extent . ,ly:accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface font-interface)))))) @@ -35,8 +34,7 @@ (glyph-name-alist . ,standard-alteration-glyph-name-alist) (alteration . ,accidental-interface::calc-alteration) (stencil . ,ly:accidental-interface::print) - (after-line-breaking - . ,ly:accidental-interface::after-line-breaking) + (Y-extent . ,ly:accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface font-interface)))))) @@ -45,6 +43,7 @@ (AccidentalSuggestion . ( (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent)) @@ -120,8 +119,8 @@ (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) (glyph-name-alist . ,standard-alteration-glyph-name-alist) - (after-line-breaking . ,ly:accidental-interface::after-line-breaking) (side-axis . ,X) (meta . ((class . Item) (interfaces . ( @@ -154,6 +153,7 @@ (script-priority . 0) (side-axis . ,X) (staff-position . 0.0) + (Y-extent . ,ly:arpeggio::height) (meta . ((class . Item) (interfaces . (arpeggio-interface staff-symbol-referencer-interface @@ -171,13 +171,12 @@ (BarLine . ( (break-align-symbol . staff-bar) + (break-align-anchor . ,ly:bar-line::calc-anchor) (glyph . "|") (gap . 0.4) (layer . 0) - (break-visibility . ,all-visible) + (break-visibility . ,bar-line::calc-break-visibility) (non-musical . #t) - (extra-spacing-width . (-0.3 . 0.3)) - (stencil . ,ly:bar-line::print) (glyph-name . ,bar-line::calc-glyph-name) (bar-size . ,ly:bar-line::calc-bar-size) @@ -189,7 +188,7 @@ (key-signature . (extra-space . 1.0)) (key-cancellation . (extra-space . 1.0)) (first-note . (fixed-space . 1.3)) - (next-note . (semi-fixed-space . 1.3)) + (next-note . (semi-fixed-space . 0.9)) (right-edge . (extra-space . 0.0)))) ;; @@ -217,7 +216,6 @@ (font-size . -2) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) - (outside-staff-priority . 100) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure @@ -228,7 +226,7 @@ (self-alignment-X . 1) ;; want the bar number before the clef at line start. - (break-align-symbol . left-edge) + (break-align-symbols . (left-edge staff-bar)) (meta . ((class . Item) (interfaces . (side-position-interface @@ -293,7 +291,8 @@ . ( (axes . (,Y)) (Y-extent . ,ly:axis-group-interface::height) - (skylines . ,ly:axis-group-interface::calc-skylines) + (vertical-skylines . ,ly:axis-group-interface::calc-skylines) + (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) (meta . ((class . Spanner) (interfaces . (axis-group-interface )))))) @@ -322,6 +321,7 @@ (beaming . ,ly:beam::calc-beaming) (stencil . ,ly:beam::print) (clip-edges . #t) + (cross-staff . ,ly:beam::calc-cross-staff) (details . ((hint-direction-penalty . 20))) ;; TODO: should be in SLT. @@ -351,6 +351,7 @@ (meta . ((class . Spanner) (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) (interfaces . (staff-symbol-referencer-interface + unbreakable-spanner-interface beam-interface)))))) (BendAfter @@ -411,6 +412,8 @@ . ( (axes . (0)) (X-extent . ,ly:axis-group-interface::width) + (break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor) + (break-visibility . ,ly:break-aligned-interface::calc-break-visibility) (meta . ((class . Item) (interfaces . (break-aligned-interface axis-group-interface)))))) @@ -446,6 +449,7 @@ (avoid-slur . inside) (font-family . music) (break-align-symbol . clef) + (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-visibility . ,begin-of-line-visible) (space-alist . ((ambitus . (extra-space . 2.0)) (staff-bar . (extra-space . 0.7)) @@ -538,7 +542,6 @@ (direction . ,RIGHT) (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)))))) @@ -547,6 +550,7 @@ . ( (stencil . ,ly:dots::print) (dot-count . ,dots::calc-dot-count) + (staff-position . ,dots::calc-staff-position) (meta . ((class . Item) (interfaces . (font-interface staff-symbol-referencer-interface @@ -592,7 +596,6 @@ (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 . ,DOWN) @@ -613,6 +616,7 @@ (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) + (positioning-done . ,ly:script-interface::calc-positioning-done) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (self-alignment-X . 0) @@ -621,7 +625,6 @@ (font-series . bold) (font-encoding . fetaDynamic) (font-shape . italic) - (avoid-slur . around) (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 250) (meta . ((class . Item) @@ -633,22 +636,42 @@ (DynamicTextSpanner . ( - (stencil . ,ly:dynamic-text-spanner::print) - ;; rather ugh with NCSB ;; (font-series . bold) (font-shape . italic) (style . dashed-line) + ;; make sure the spanner doesn't get too close to notes + (minimum-Y-extent . (-1 . 1)) + (bound-details . ((right . ((attach-dir . ,LEFT) + (Y . 0) + (padding . 0.75) + )) + (right-broken . ((attach-dir . ,RIGHT) + (padding . 0.0) + )) + + (left . ((attach-dir . ,LEFT) + (Y . 0) + (stencil-offset . (0 . -0.5)) + (padding . 0.5) + )) + (left-broken . ((attach-dir . ,RIGHT) + )) + )) + (stencil . ,ly:line-spanner::print) + (left-bound-info . ,ly:line-spanner::calc-left-bound-info-and-text) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) + ;; need to blend with dynamic texts. (font-size . 1) - (bound-padding . 0.75) (dash-fraction . 0.2) (dash-period . 3.0) (meta . ((class . Spanner) (interfaces . (font-interface text-interface line-spanner-interface + line-interface dynamic-interface dynamic-text-spanner-interface spanner-interface)))))) @@ -668,6 +691,8 @@ (script-priority . 100) (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) + (positioning-done . ,ly:script-interface::calc-positioning-done) + (text . ,fingering::calc-text) (font-encoding . fetaNumber) (font-size . -5) ; don't overlap when next to heads. @@ -694,8 +719,16 @@ (zigzag-width . 0.75) (X-extent . #f) (Y-extent . #f) + (bound-details . ((right . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + (left . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + )) (stencil . ,ly:line-spanner::print) - (after-line-breaking . ,ly:line-spanner::after-line-breaking) + (left-bound-info . ,ly:line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) (meta . ((class . Spanner) (interfaces . (line-interface unbreakable-spanner-interface @@ -708,7 +741,7 @@ (shortest-duration-space . 1.6) (meta . ((class . Spanner) (interfaces . (grace-spacing-interface - spacing-interface + spacing-options-interface spanner-interface)))))) (GridPoint @@ -827,6 +860,7 @@ (first-note . (fixed-space . 2.5)))) (Y-offset . ,ly:staff-symbol-referencer::callback) (break-align-symbol . key-signature) + (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-visibility . ,begin-of-line-visible) (non-musical . #t) (meta . ((class . Item) @@ -875,6 +909,7 @@ (LeftEdge . ( (break-align-symbol . left-edge) + (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (X-extent . (0 . 0)) (non-musical . #t) (break-visibility . ,center-invisible) @@ -949,7 +984,7 @@ (X-extent . #f) (meta . ((class . Spanner) (interfaces . (spanner-interface - lyric-hyphen-interface spacing-interface)) + lyric-hyphen-interface )) )) )) @@ -988,7 +1023,7 @@ . ( (neutral-direction . ,DOWN) (meta . ((class . Item) - (interfaces . (melody-spanner-interface spacing-interface)))))) + (interfaces . (melody-spanner-interface )))))) (MensuralLigature . ( (thickness . 1.4) @@ -1136,7 +1171,7 @@ ;; If you ever change this back, please document! --hwn (knee-spacing-correction . 1.0) (meta . ((class . Item) - (interfaces . (spacing-interface + (interfaces . ( note-spacing-interface)))))) (NoteName @@ -1230,6 +1265,7 @@ (minimum-length . 1.5) (height-limit . 2.0) (ratio . 0.333) + (cross-staff . ,ly:slur::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1299,7 +1335,7 @@ (font-size . 2) (baseline-skip . 2) (break-visibility . ,end-of-line-invisible) - (break-align-symbol . clef) + (break-align-symbols . (staff-bar clef)) (padding . 0.8) (outside-staff-priority . 1500) (meta . ((class . Item) @@ -1338,7 +1374,7 @@ (X-extent . #f) (Y-extent . #f) (direction . ,ly:tie::calc-direction) - (head-direction . ,RIGHT) + (head-direction . ,ly:semi-tie-column::calc-head-direction) (positioning-done . ,ly:semi-tie-column::calc-positioning-done) (meta . ((class . Item) @@ -1374,13 +1410,15 @@ ;; padding set in script definitions. (staff-padding . 0.25) - (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) + (X-offset . ,script-interface::calc-x-offset) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) (stencil . ,ly:script-interface::print) (direction . ,ly:script-interface::calc-direction) + (positioning-done . ,ly:script-interface::calc-positioning-done) (font-encoding . fetaMusic) + (cross-staff . ,ly:script-interface::calc-cross-staff) (meta . ((class . Item) (interfaces . (script-interface side-position-interface @@ -1402,9 +1440,10 @@ (avoid-slur . inside) (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) - (skylines . ,ly:separation-item::calc-skylines) + (horizontal-skylines . ,ly:separation-item::calc-skylines) + (stencil . ,ly:separation-item::print) (meta . ((class . Item) - (interfaces . (spacing-interface + (interfaces . ( separation-item-interface)))))) (SeparatingGroupSpanner @@ -1412,7 +1451,7 @@ (springs-and-rods . ,ly:separating-group-spanner::set-spacing-rods) (meta . ((class . Spanner) (interfaces . (only-prebreak-interface - spacing-interface + separating-group-spanner-interface)))))) (Slur @@ -1428,6 +1467,7 @@ (height-limit . 2.0) (ratio . 0.25) (avoid-slur . inside) + (cross-staff . ,ly:slur::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1470,7 +1510,7 @@ (base-shortest-duration . ,(ly:make-moment 3 16)) (meta . ((class . Spanner) - (interfaces . (spacing-interface + (interfaces . ( spacing-options-interface spacing-spanner-interface)))))) @@ -1520,8 +1560,7 @@ (non-musical . #t) (stem-spacing-correction . 0.4) (meta . ((class . Item) - (interfaces . (spacing-interface - staff-spacing-interface)))))) + (interfaces . (staff-spacing-interface)))))) (StaffSymbol @@ -1549,6 +1588,7 @@ (Y-extent . ,ly:stem::height) (length . ,ly:stem::calc-length) (thickness . 1.3) + (cross-staff . ,ly:stem::calc-cross-staff) (details . ( ;; 3.5 (or 3 measured from note head) is standard length @@ -1589,8 +1629,8 @@ (StemTremolo . ( (Y-extent . ,ly:stem-tremolo::height) + (X-extent . ,ly:stem-tremolo::width) (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) @@ -1650,8 +1690,6 @@ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) (interfaces . (piano-pedal-interface - text-spanner-interface - line-spanner-interface text-interface self-alignment-interface piano-pedal-script-interface @@ -1677,7 +1715,8 @@ (axes . (0 1)) (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) - (skylines . ,ly:axis-group-interface::calc-skylines) + (vertical-skylines . ,ly:axis-group-interface::calc-skylines) + (max-stretch . ,ly:axis-group-interface::calc-max-stretch) (skyline-horizontal-padding . 1.0) (meta . ((class . System) (interfaces . (system-interface @@ -1772,6 +1811,7 @@ (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) + (positioning-done . ,ly:script-interface::calc-positioning-done) (outside-staff-priority . 450) (avoid-slur . around) @@ -1786,7 +1826,6 @@ (TextSpanner . ( - (stencil . ,ly:text-spanner::print) (Y-offset . ,ly:side-position-interface::y-aligned-side) (font-shape . italic) (style . dashed-line) @@ -1796,9 +1835,21 @@ (side-axis . ,Y) (direction . ,UP) (outside-staff-priority . 350) + + (left-bound-info . ,ly:line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) + (bound-details . ((left . ((Y . 0) + (padding . 0.25) + (attach-dir . ,LEFT) + )) + (right . ((Y . 0) + (padding . 0.25) + )) + )) + (stencil . ,ly:line-spanner::print) + (meta . ((class . Spanner) - (interfaces . (text-spanner-interface - line-spanner-interface + (interfaces . (line-spanner-interface side-position-interface font-interface)))))) @@ -1819,14 +1870,17 @@ (stem-gap . 0.35) (height-limit . 1.0) (horizontal-distance-penalty-factor . 10) - (min-length-penalty-factor . 20) + (same-dir-as-stem-penalty . 8) + (min-length-penalty-factor . 26) (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) + (vertical-distance-penalty-factor . 7) (outer-tie-vertical-gap . 0.25) (multi-tie-region-size . 1) + (single-tie-region-size . 4) (between-length-limit . 1.0))) (thickness . 1.2) @@ -1848,6 +1902,7 @@ . ( (stencil . ,ly:time-signature::print) (break-align-symbol . time-signature) + (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-visibility . ,all-visible) (avoid-slur . inside) (space-alist . ( @@ -1863,9 +1918,21 @@ (TrillSpanner . ( - (stencil . ,ly:dynamic-text-spanner::print) - (edge-text . ,(cons (make-musicglyph-markup "scripts.trill") - "")) + (left-bound-info . ,ly:line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) + + (bound-details . ((left . ((text . ,(make-translate-scaled-markup + '(0.5 . -0.6) + (make-musicglyph-markup "scripts.trill"))) + (Y . 0) + (padding . 0.25) + (attach-dir . ,LEFT) + )) + (right . ((Y . 0))) + )) + + (stencil . ,ly:line-spanner::print) + (style . trill) (staff-padding . 1.0) (padding . 0.5) @@ -1874,8 +1941,9 @@ (side-axis . ,Y) (outside-staff-priority . 50) (meta . ((class . Spanner) - (interfaces . (text-spanner-interface - line-spanner-interface + (interfaces . (line-spanner-interface + line-interface + trill-spanner-interface side-position-interface font-interface)))))) @@ -1886,6 +1954,7 @@ (font-size . -4) (side-axis . ,X) (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) (glyph-name-alist . ,standard-alteration-glyph-name-alist) (meta . ((class . Item) (interfaces . (trill-pitch-accidental-interface @@ -1935,6 +2004,7 @@ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) (control-points . ,ly:tuplet-bracket::calc-control-points) (stencil . ,ly:tuplet-bracket::print) + (cross-staff . ,ly:tuplet-bracket::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (line-interface @@ -1947,6 +2017,7 @@ (font-shape . italic) (font-size . -2) (avoid-slur . inside) + (cross-staff . ,ly:tuplet-number::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (text-interface tuplet-number-interface font-interface)))))) @@ -1999,7 +2070,8 @@ (X-extent . ,ly:axis-group-interface::width) (stacking-dir . -1) (padding . 0.5) - (skylines . ,ly:axis-group-interface::combine-skylines) + (vertical-skylines . ,ly:axis-group-interface::combine-skylines) + (max-stretch . ,ly:align-interface::calc-max-stretch) (meta . ((class . Spanner) (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common))) (interfaces . (align-interface @@ -2010,9 +2082,12 @@ (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) - (skylines . ,ly:axis-group-interface::calc-skylines); + (vertical-skylines . ,ly:hara-kiri-group-spanner::calc-skylines) + (max-stretch . ,ly:axis-group-interface::calc-max-stretch) + (stencil . ,ly:axis-group-interface::print) + (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) (meta . ((class . Spanner) - (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common))) + (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common))) (interfaces . (axis-group-interface hara-kiri-group-spanner-interface vertically-spaceable-interface)))))) @@ -2024,6 +2099,7 @@ (direction . ,UP) (padding . 1) (font-encoding . fetaNumber) + (minimum-Y-extent . (0 . 2)) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) (thickness . 1.6) ;; line-thickness @@ -2048,8 +2124,16 @@ (non-musical . #t) (X-extent . #f) (Y-extent . #f) + (bound-details . ((right . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + (left . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + )) (stencil . ,ly:line-spanner::print) - (after-line-breaking . ,ly:line-spanner::after-line-breaking) + (left-bound-info . ,ly:line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) (meta . ((class . Spanner) (interfaces . (line-spanner-interface line-interface)))) @@ -2109,9 +2193,12 @@ (define pure-print-callbacks (list + print-circled-text-callback + lyric-text::print + ly:arpeggio::print + ly:arpeggio::brew-chord-bracket ly:bar-line::print ly:note-head::print - ly:accidental-interface::print ly:dots::print ly:clef::print ly:text-interface::print @@ -2127,16 +2214,18 @@ '(0 . 0)))) (define pure-conversions-alist - (list - `(,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback) - `(,ly:stem::height . ,ly:stem::pure-height) - `(,ly:rest::height . ,ly:rest::pure-height) - `(,ly:grob::stencil-height . ,pure-stencil-height) - `(,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side) - `(,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height) - `(,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height) - `(,ly:slur::height . ,ly:slur::pure-height) - `(,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side))) + `( + (,ly:accidental-interface::height . ,ly:accidental-interface::pure-height) + (,ly:arpeggio::height . ,ly:arpeggio::pure-height) + (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback) + (,ly:stem::height . ,ly:stem::pure-height) + (,ly:rest::height . ,ly:rest::pure-height) + (,ly:grob::stencil-height . ,pure-stencil-height) + (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side) + (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height) + (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height) + (,ly:slur::height . ,ly:slur::pure-height) + (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side))) (define pure-functions (list