X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=5acb4fc1c6bd3972ce69681f0d43abb0d52720c1;hb=e3bd073b603167e110d3ecac4bfa3e1ca75e0106;hp=7aad372102825fbbe3882e3a7d255cfc7b6cfed1;hpb=3ee5a5b2e566aa1638b4cb2d883e8e2b99c3fce5;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 7aad372102..5acb4fc1c6 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -20,28 +20,42 @@ (Accidental . ( (avoid-slur . inside) - (cautionary-style . parentheses) + (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)))))) + (AccidentalCautionary + . ( + (avoid-slur . inside) + (parenthesized . #t) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (alteration . ,accidental-interface::calc-alteration) + (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) + (meta . ((class . Item) + (interfaces . (accidental-interface + font-interface)))))) + (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)) ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self))))) (self-alignment-X . ,CENTER) - (cautionary . #t) - (cautionary-style . smaller) + (font-size . -2) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (alteration . ,accidental-interface::calc-alteration) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (cautionary-style . parentheses) (direction . ,UP) (staff-padding . 0.25) + (outside-staff-priority . 0) (script-priority . 0) (side-axis . ,X) (meta . ((class . Item) @@ -104,12 +118,12 @@ (padding . 0.5) (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) - (cautionary-style . parentheses) (stencil . ,ly:accidental-interface::print) - (after-line-breaking . ,ly:accidental-interface::after-line-breaking) + (Y-extent . ,ly:accidental-interface::height) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) (side-axis . ,X) (meta . ((class . Item) - (interfaces . (item-interface + (interfaces . ( accidental-interface break-aligned-interface side-position-interface @@ -161,7 +175,6 @@ (layer . 0) (break-visibility . ,all-visible) (non-musical . #t) - (stencil . ,ly:bar-line::print) (glyph-name . ,bar-line::calc-glyph-name) (bar-size . ,ly:bar-line::calc-bar-size) @@ -173,7 +186,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)))) ;; @@ -201,6 +214,7 @@ (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 @@ -238,6 +252,7 @@ (positioning-done . ,ly:align-interface::calc-positioning-done) (Y-extent . ,ly:axis-group-interface::height) (stacking-dir . -1) + (padding . 0.2) (meta . ((class . Spanner) (interfaces . (align-interface bass-figure-alignment-interface @@ -275,6 +290,7 @@ . ( (axes . (,Y)) (Y-extent . ,ly:axis-group-interface::height) + (skylines . ,ly:axis-group-interface::calc-skylines) (meta . ((class . Spanner) (interfaces . (axis-group-interface )))))) @@ -303,7 +319,9 @@ (beaming . ,ly:beam::calc-beaming) (stencil . ,ly:beam::print) (clip-edges . #t) - + (cross-staff . ,ly:beam::cross-staff) + + (details . ((hint-direction-penalty . 20))) ;; TODO: should be in SLT. (thickness . 0.48) ; in staff-space (neutral-direction . ,DOWN) @@ -329,7 +347,9 @@ ;; only for debugging. (font-family . roman) (meta . ((class . Spanner) + (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) (interfaces . (staff-symbol-referencer-interface + unbreakable-spanner-interface beam-interface)))))) (BendAfter @@ -445,7 +465,8 @@ . ( (Y-extent . ,ly:cluster-beacon::height) (meta . ((class . Item) - (interfaces . (cluster-beacon-interface)))))) + (interfaces . (rhythmic-grob-interface + cluster-beacon-interface)))))) (ClusterSpanner . ( @@ -469,12 +490,12 @@ rhythmic-grob-interface text-interface chord-name-interface - item-interface)))))) + )))))) (CombineTextScript . ( (stencil . ,ly:text-interface::print) - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (Y-offset . ,ly:side-position-interface::y-aligned-side) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (direction . ,UP) @@ -525,6 +546,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 @@ -570,7 +592,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) @@ -599,9 +620,7 @@ (font-series . bold) (font-encoding . fetaDynamic) (font-shape . italic) - (avoid-slur . around) - (no-spacing-rods . #t) - (script-priority . 100) + (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 250) (meta . ((class . Item) (interfaces . (font-interface @@ -612,22 +631,44 @@ (DynamicTextSpanner . ( - (stencil . ,ly:dynamic-text-spanner::print) - ;; rather ugh with NCSB ;; (font-series . bold) (font-shape . italic) (style . dashed-line) + (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) + + ;; make sure the - - - stays at reasonable + ;; distance from staff. + (text . " ") + )) + )) + (stencil . ,ly:new-line-spanner::print) + (left-bound-info . ,ly:new-line-spanner::calc-left-bound-info-and-text) + (right-bound-info . ,ly:new-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 + new-line-spanner-interface + line-interface dynamic-interface dynamic-text-spanner-interface spanner-interface)))))) @@ -645,7 +686,6 @@ (self-alignment-X . 0) (self-alignment-Y . 0) (script-priority . 100) - (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) (text . ,fingering::calc-text) @@ -658,7 +698,7 @@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (FretBoard . ((stencil . ,fret-board::calc-stencil) (finger-code . below-string) @@ -674,11 +714,20 @@ (zigzag-width . 0.75) (X-extent . #f) (Y-extent . #f) - (stencil . ,ly:line-spanner::print) - (after-line-breaking . ,ly:line-spanner::after-line-breaking) + (bound-details . ((right . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + (left . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + )) + (stencil . ,ly:new-line-spanner::print) + (left-bound-info . ,ly:new-line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:new-line-spanner::calc-right-bound-info) (meta . ((class . Spanner) (interfaces . (line-interface - line-spanner-interface)))))) + unbreakable-spanner-interface + new-line-spanner-interface)))))) (GraceSpacing . ( @@ -687,7 +736,7 @@ (shortest-duration-space . 1.6) (meta . ((class . Spanner) (interfaces . (grace-spacing-interface - spacing-interface + spacing-options-interface spanner-interface)))))) (GridPoint @@ -778,6 +827,7 @@ (KeyCancellation . ( (stencil . ,ly:key-signature-interface::print) + (glyph-name-alist . ,cancellation-glyph-name-alist) (space-alist . ( (time-signature . (extra-space . 1.25)) (staff-bar . (extra-space . 0.6)) @@ -789,13 +839,15 @@ (break-visibility . ,begin-of-line-invisible) (non-musical . #t) (meta . ((class . Item) - (interfaces . (key-signature-interface + (interfaces . (key-cancellation-interface + key-signature-interface font-interface break-aligned-interface)))))) (KeySignature . ( (stencil . ,ly:key-signature-interface::print) (avoid-slur . inside) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) (space-alist . ( (time-signature . (extra-space . 1.15)) (staff-bar . (extra-space . 1.1)) @@ -925,7 +977,7 @@ (X-extent . #f) (meta . ((class . Spanner) (interfaces . (spanner-interface - lyric-hyphen-interface spacing-interface)) + lyric-hyphen-interface )) )) )) @@ -964,7 +1016,7 @@ . ( (neutral-direction . ,DOWN) (meta . ((class . Item) - (interfaces . (melody-spanner-interface spacing-interface)))))) + (interfaces . (melody-spanner-interface )))))) (MensuralLigature . ( (thickness . 1.4) @@ -981,6 +1033,7 @@ (direction . ,UP) (padding . 0.8) (side-axis . ,Y) + (outside-staff-priority . 1000) (meta . ((class . Item) (interfaces . (text-interface side-position-interface @@ -1111,7 +1164,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 @@ -1132,11 +1185,7 @@ (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)) (font-shape . italic) - (padding . 0.6) (staff-padding . 0.2) (font-size . -4) (meta . ((class . Item) @@ -1209,6 +1258,7 @@ (minimum-length . 1.5) (height-limit . 2.0) (ratio . 0.333) + (cross-staff . ,ly:slur::cross-staff) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1278,9 +1328,9 @@ (font-size . 2) (baseline-skip . 2) (break-visibility . ,end-of-line-invisible) - (break-align-symbol . staff-bar) + (break-align-symbol . clef) (padding . 0.8) - (outside-staff-priority . 1000) + (outside-staff-priority . 1500) (meta . ((class . Item) (interfaces . (text-interface side-position-interface @@ -1295,7 +1345,8 @@ (thickness . 0.48) (slope . 1.7) (meta . ((class . Item) - (interfaces . (percent-repeat-item-interface)))))) + (interfaces . (rhythmic-grob-interface + percent-repeat-item-interface)))))) (RepeatTie . ( @@ -1352,7 +1403,6 @@ ;; padding set in script definitions. (staff-padding . 0.25) - ;; (script-priority . 0) priorities for scripts, see script.scm (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) @@ -1383,7 +1433,7 @@ (Y-extent . ,ly:axis-group-interface::height) (skylines . ,ly:separation-item::calc-skylines) (meta . ((class . Item) - (interfaces . (spacing-interface + (interfaces . ( separation-item-interface)))))) (SeparatingGroupSpanner @@ -1391,7 +1441,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 @@ -1407,6 +1457,7 @@ (height-limit . 2.0) (ratio . 0.25) (avoid-slur . inside) + (cross-staff . ,ly:slur::cross-staff) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1415,7 +1466,7 @@ (stencil . ,ly:text-interface::print) (direction . ,RIGHT) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner (font-shape . italic) (self-alignment-X . 0) @@ -1449,7 +1500,7 @@ (base-shortest-duration . ,(ly:make-moment 3 16)) (meta . ((class . Spanner) - (interfaces . (spacing-interface + (interfaces . ( spacing-options-interface spacing-spanner-interface)))))) @@ -1499,8 +1550,7 @@ (non-musical . #t) (stem-spacing-correction . 0.4) (meta . ((class . Item) - (interfaces . (spacing-interface - staff-spacing-interface)))))) + (interfaces . (staff-spacing-interface)))))) (StaffSymbol @@ -1528,6 +1578,7 @@ (Y-extent . ,ly:stem::height) (length . ,ly:stem::calc-length) (thickness . 1.3) + (cross-staff . ,ly:stem::cross-staff) (details . ( ;; 3.5 (or 3 measured from note head) is standard length @@ -1595,7 +1646,7 @@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (StrokeFinger . ( @@ -1616,12 +1667,12 @@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (SustainPedal . ( - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (stencil . ,ly:sustain-pedal::print) (self-alignment-X . 0) (direction . ,RIGHT) @@ -1656,7 +1707,8 @@ (axes . (0 1)) (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) - (skyline-spacing . #t) + (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 @@ -1739,7 +1791,7 @@ (TextScript . ( - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) @@ -1798,14 +1850,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) @@ -1842,9 +1897,21 @@ (TrillSpanner . ( - (stencil . ,ly:dynamic-text-spanner::print) - (edge-text . ,(cons (make-musicglyph-markup "scripts.trill") - "")) + (left-bound-info . ,ly:new-line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:new-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:new-line-spanner::print) + (style . trill) (staff-padding . 1.0) (padding . 0.5) @@ -1854,7 +1921,7 @@ (outside-staff-priority . 50) (meta . ((class . Spanner) (interfaces . (text-spanner-interface - line-spanner-interface + new-line-spanner-interface side-position-interface font-interface)))))) @@ -1865,9 +1932,11 @@ (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 . (item-interface - trill-pitch-accidental-interface + (interfaces . (trill-pitch-accidental-interface + accidental-interface side-position-interface font-interface)))))) @@ -1882,10 +1951,10 @@ (padding . 0.3) (meta . ((class . Item) (interfaces . (side-position-interface + parentheses-interface note-head-interface rhythmic-head-interface font-interface - accidental-interface axis-group-interface)))))) (TrillPitchHead @@ -1895,8 +1964,7 @@ (Y-offset . ,ly:staff-symbol-referencer::callback) (font-size . -4) (meta . ((class . Item) - (interfaces . (item-interface - rhythmic-head-interface + (interfaces . (rhythmic-head-interface font-interface pitched-trill-interface ledgered-interface @@ -1934,7 +2002,7 @@ . ( (stencil . ,ly:text-interface::print) (font-shape . italic) - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (self-alignment-X . 0) (direction . ,RIGHT) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner @@ -1977,8 +2045,11 @@ (Y-extent . ,ly:axis-group-interface::height) (X-extent . ,ly:axis-group-interface::width) (stacking-dir . -1) - (padding . 0.1) + (padding . 0.5) + (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 axis-group-interface)))))) (VerticalAxisGroup @@ -1987,8 +2058,10 @@ (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) - (skyline-spacing . #t) + (skylines . ,ly:axis-group-interface::calc-skylines) + (max-stretch . ,ly:axis-group-interface::calc-max-stretch) (meta . ((class . Spanner) + (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common))) (interfaces . (axis-group-interface hara-kiri-group-spanner-interface vertically-spaceable-interface)))))) @@ -2024,10 +2097,18 @@ (non-musical . #t) (X-extent . #f) (Y-extent . #f) - (stencil . ,ly:line-spanner::print) - (after-line-breaking . ,ly:line-spanner::after-line-breaking) + (bound-details . ((right . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + (left . ((attach-dir . ,CENTER) + (padding . 1.5) + )) + )) + (stencil . ,ly:new-line-spanner::print) + (left-bound-info . ,ly:new-line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:new-line-spanner::calc-right-bound-info) (meta . ((class . Spanner) - (interfaces . (line-spanner-interface + (interfaces . (new-line-spanner-interface line-interface)))) )) @@ -2058,6 +2139,8 @@ (cons 'spanner-interface ifaces-entry)))) (else (ly:warning "Unknown class ~a" class))) + + (set! ifaces-entry (uniq-list (sort ifaces-entry symbol