X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=scm%2Fdefine-grobs.scm;h=d4e3863c03692cdb9001d11759b90d96adb36b52;hb=113845a5b62c77f7ba2d035c15694287077f00ce;hp=efd310c1daaf6bf985e2b7dae363fd6a1822cd6a;hpb=f5bdd79efc48f52f3b1c86857f747afa3cb33dcf;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index efd310c1da..d4e3863c03 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -53,7 +53,6 @@ (AccidentalPlacement . ( (direction . ,LEFT) - (left-padding . 0.2) (positioning-done . ,ly:accidental-placement::calc-positioning-done) ;; this is quite small, but it is very ugly to have @@ -111,6 +110,10 @@ (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (ambitus-interface axis-group-interface break-aligned-interface)))))) @@ -270,6 +273,10 @@ (stacking-dir . ,DOWN) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (align-interface axis-group-interface bass-figure-alignment-interface)))))) @@ -284,6 +291,10 @@ (Y-extent . ,ly:axis-group-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface side-position-interface)))))) @@ -309,6 +320,10 @@ (vertical-skylines . ,ly:axis-group-interface::calc-skylines) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface)))))) @@ -501,6 +516,7 @@ (next-note . (extra-space . 0.5)) (right-edge . (extra-space . 0.5)))) (stencil . ,ly:clef::print) + (extra-spacing-height . (-0.5 . 0.5)) (Y-offset . ,ly:staff-symbol-referencer::callback) (meta . ((class . Item) (interfaces . (break-aligned-interface @@ -581,6 +597,7 @@ (dot-count . ,dots::calc-dot-count) (staff-position . ,dots::calc-staff-position) (stencil . ,ly:dots::print) + (extra-spacing-height . (-0.5 . 0.5)) (meta . ((class . Item) (interfaces . (dots-interface font-interface @@ -607,7 +624,7 @@ (DoublePercentRepeatCounter . ( (direction . ,UP) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -2) (padding . 0.2) (self-alignment-X . ,CENTER) @@ -644,6 +661,10 @@ (Y-extent . ,ly:axis-group-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface dynamic-interface dynamic-line-spanner-interface @@ -656,7 +677,7 @@ (direction . ,ly:script-interface::calc-direction) (extra-spacing-width . (+inf.0 . -inf.0)) - (font-encoding . fetaDynamic) + (font-encoding . fetaText) (font-series . bold) (font-shape . italic) (outside-staff-priority . 250) @@ -757,7 +778,7 @@ (avoid-slur . around) (cross-staff . ,ly:side-position-interface::calc-cross-staff) (direction . ,ly:script-interface::calc-direction) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (padding . 0.5) (positioning-done . ,ly:script-interface::calc-positioning-done) @@ -977,14 +998,15 @@ (height-limit . 1.0))) (direction . ,ly:tie::calc-direction) (head-direction . ,LEFT) - (stencil . ,ly:tie::print) + (stencil . ,laissez-vibrer::print) (thickness . 1.0) + (extra-spacing-height . (-0.5 . 0.5)) (meta . ((class . Item) (interfaces . (semi-tie-interface)))))) (LaissezVibrerTieColumn . ( - (head-direction . ,LEFT) + (head-direction . ,ly:semi-tie-column::calc-head-direction) (positioning-done . ,ly:semi-tie-column::calc-positioning-done) (X-extent . #f) (Y-extent . #f) @@ -1133,6 +1155,7 @@ (MetronomeMark . ( (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff) + (break-visibility . ,end-of-line-invisible) (direction . ,UP) (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 1000) @@ -1140,10 +1163,21 @@ (side-axis . ,Y) (stencil . ,ly:text-interface::print) (Y-offset . ,ly:side-position-interface::y-aligned-side) + (X-offset . ,(ly:make-simple-closure + `(,+ + ,(ly:make-simple-closure + (list ly:break-alignable-interface::self-align-callback)) + ,(ly:make-simple-closure + (list ly:self-alignment-interface::x-aligned-on-self))))) + (self-alignment-X . -1) + (break-align-symbol . time-signature) + (break-align-symbols . (time-signature)) + (non-break-align-symbols . (MultiMeasureRest)) (meta . ((class . Item) (interfaces . (font-interface metronome-mark-interface side-position-interface + break-alignable-interface text-interface)))))) (MultiMeasureRest @@ -1151,6 +1185,7 @@ (expand-limit . 10) (hair-thickness . 2.0) (padding . 1) + (spacing-pair . (break-alignment . staff-bar)) (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) (staff-position . 0) (stencil . ,ly:multi-measure-rest::print) @@ -1167,7 +1202,7 @@ . ( (bound-padding . 2.0) (direction . ,UP) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (padding . 0.4) (self-alignment-X . ,CENTER) (side-axis . ,Y) @@ -1229,6 +1264,10 @@ (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Paper_column) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface font-interface paper-column-interface @@ -1243,6 +1282,10 @@ (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface note-collision-interface)))))) @@ -1253,6 +1296,10 @@ (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface note-column-interface separation-item-interface)))))) @@ -1260,6 +1307,7 @@ (NoteHead . ( (duration-log . ,note-head::calc-duration-log) + (extra-spacing-height . ,ly:note-head::include-ledger-line-height) (glyph-name . ,note-head::calc-glyph-name) (stem-attachment . ,ly:note-head::calc-stem-attachment) (stencil . ,ly:note-head::print) @@ -1353,6 +1401,10 @@ ;; debugging ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface font-interface paper-column-interface @@ -1374,6 +1426,7 @@ (dot-negative-kern . 0.75) (font-encoding . fetaMusic) (slope . 1.0) + (spacing-pair . (break-alignment . staff-bar)) (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) (stencil . ,ly:multi-measure-rest::percent) (thickness . 0.48) @@ -1385,7 +1438,7 @@ (PercentRepeatCounter . ( (direction . ,UP) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -2) (padding . 0.2) (self-alignment-X . ,CENTER) @@ -1486,6 +1539,7 @@ (head-direction . ,RIGHT) (stencil . ,ly:tie::print) (thickness . 1.0) + (extra-spacing-height . (-0.5 . 0.5)) (meta . ((class . Item) (interfaces . (semi-tie-interface)))))) @@ -1525,6 +1579,7 @@ (Script . ( + (add-stem-support . #t) (cross-staff . ,ly:script-interface::calc-cross-staff) (direction . ,ly:script-interface::calc-direction) (font-encoding . fetaMusic) @@ -1554,16 +1609,6 @@ (meta . ((class . Item) (interfaces . (script-column-interface)))))) - (SeparationItem - . ( - (avoid-slur . inside) - (horizontal-skylines . ,ly:separation-item::calc-skylines) - (stencil . ,ly:separation-item::print) - (X-extent . ,ly:axis-group-interface::width) - (Y-extent . ,ly:axis-group-interface::height) - (meta . ((class . Item) - (interfaces . (separation-item-interface)))))) - (Slur . ( (avoid-slur . inside) @@ -1610,6 +1655,10 @@ (Y-extent . ,ly:axis-group-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface piano-pedal-interface side-position-interface)))))) @@ -1651,6 +1700,10 @@ (X-extent . ,ly:span-bar::width) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (bar-line-interface font-interface span-bar-interface)))))) @@ -1768,7 +1821,7 @@ (StringNumber . ( (avoid-slur . around) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (padding . 0.5) (script-priority . 100) @@ -1833,17 +1886,26 @@ (Y-extent . ,ly:axis-group-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface piano-pedal-interface side-position-interface)))))) (System . ( + (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) (axes . (,X ,Y)) (vertical-skylines . ,ly:axis-group-interface::calc-skylines) (X-extent . ,ly:axis-group-interface::width) - (Y-extent . ,ly:axis-group-interface::height) + (Y-extent . ,ly:system::height) (meta . ((class . System) + (object-callbacks . ((pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners) + (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) (interfaces . (axis-group-interface system-interface)))))) @@ -2041,6 +2103,7 @@ (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-align-symbol . time-signature) + (break-align-anchor-alignment . ,LEFT) (break-visibility . ,all-visible) (extra-spacing-height . (-1.0 . 1.0)) (non-musical . #t) @@ -2191,6 +2254,10 @@ (Y-extent . ,ly:axis-group-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface piano-pedal-interface side-position-interface)))))) @@ -2214,7 +2281,11 @@ (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) - (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common))) + (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners) + (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) (interfaces . (align-interface axis-group-interface)))))) @@ -2233,10 +2304,15 @@ (Y-extent . ,ly:hara-kiri-group-spanner::y-extent) (Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback) (meta . ((class . Spanner) - (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common))) + (object-callbacks . ( + (X-common . ,ly:axis-group-interface::calc-x-common) + (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (interfaces . (axis-group-interface - hara-kiri-group-spanner-interface - vertically-spaceable-interface)))))) + hara-kiri-group-spanner-interface)))))) (VoiceFollower . ( @@ -2264,7 +2340,7 @@ . ( (direction . ,UP) (edge-height . (2.0 . 2.0)) ;; staff-space; - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -4) (stencil . ,ly:volta-bracket-interface::print) (thickness . 1.6) ;; line-thickness @@ -2291,6 +2367,10 @@ (Y-extent . ,ly:axis-group-interface::height) (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) + (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) + (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) + (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) (interfaces . (axis-group-interface side-position-interface volta-interface)))))) @@ -2360,14 +2440,17 @@ fret-board::calc-stencil note-head::brew-ez-stencil print-circled-text-callback + laissez-vibrer::print lyric-text::print ly:bar-line::print ly:mensural-ligature::brew-ligature-primitive ly:note-head::print ly:dots::print ly:clef::print + ly:percent-repeat-item-interface::beat-slash ly:text-interface::print - ly:script-interface::print)) + ly:script-interface::print + ly:sustain-pedal::print)) ;; Sometimes we have grobs with (Y-extent . ,ly:grob::stencil-height) ;; and the print function is not pure, but there is a easy way to @@ -2392,23 +2475,31 @@ (else '(0 . 0))))) +;; Sometimes, a pure callback will be chained to a non-pure callback via +;; chain_offset_callback, in which case this provides a default by simply +;; passing through the value from the pure callback. +(define (pure-chain-offset-callback grob start end prev-offset) prev-offset) + (define pure-conversions-alist `( (,ly:accidental-interface::height . ,ly:accidental-interface::pure-height) - (,ly: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:axis-group-interface::calc-next-staff-spacing . ,ly:axis-group-interface::calc-pure-next-staff-spacing) + (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height) (,ly:grob::stencil-height . ,pure-stencil-height) + (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height) + (,ly:rest-collision::force-shift-callback-rest . ,pure-chain-offset-callback) + (,ly:rest::height . ,ly:rest::pure-height) (,ly:self-alignment-interface::y-aligned-on-self . ,ly:self-alignment-interface::pure-y-aligned-on-self) (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side) - (,ly: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:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback) + (,ly:stem::height . ,ly:stem::pure-height) + (,ly:system::height . ,ly:system::calc-pure-height))) (define pure-functions (list parenthesize-elements + laissez-vibrer::print ly:rest::y-offset-callback ly:staff-symbol-referencer::callback ly:staff-symbol::height))