X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=2a3faa3491df8ef2baf9c8b9932eac5c3f299bc5;hb=1d765020f867995879c761f2c9351c9dc74f1df8;hp=9838d2deeb87baa985b5a3f5d72a0fc422ee1a81;hpb=2c0f56cc2c2b7e6d3a5f7792c006e55675c9e0d7;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 9838d2deeb..2a3faa3491 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -85,18 +85,14 @@ (staff-padding . 0.25) (stencil . ,ly:accidental-interface::print) (X-extent . ,ly:accidental-interface::width) - (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))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,accidental-interface::height) (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Item) (interfaces . (accidental-interface accidental-suggestion-interface font-interface + outside-staff-interface script-interface self-alignment-interface side-position-interface)))))) @@ -168,7 +164,7 @@ (Arpeggio . ( - (cross-staff . ,ly:arpeggio::calc-cross-staff) + (cross-staff . ,ly:arpeggio::calc-cross-staff) (direction . ,LEFT) (padding . 0.5) (positions . ,ly:arpeggio::calc-positions) @@ -278,6 +274,7 @@ ((class . Item) (interfaces . (break-alignable-interface font-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -321,6 +318,7 @@ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface + outside-staff-interface side-position-interface)))))) (BassFigureBracket @@ -348,7 +346,8 @@ (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))) - (interfaces . (axis-group-interface)))))) + (interfaces . (axis-group-interface + outside-staff-axis-group-interface)))))) (Beam @@ -408,11 +407,9 @@ ;; only for debugging. (font-family . roman) - (beam-gap . ,ly:beam::calc-beam-gap) - (minimum-length . ,ly:beam::calc-minimum-length) + (gap . 0.8) (neutral-direction . ,DOWN) (positions . ,beam::place-broken-parts-individually) - (springs-and-rods . ,ly:beam::calc-springs-and-rods) (X-positions . ,ly:beam::calc-x-positions) (transparent . ,(grob::inherit-parent-property X 'transparent)) @@ -525,6 +522,7 @@ (interfaces . (break-aligned-interface breathing-sign-interface font-interface + outside-staff-interface text-interface)))))) (ChordName @@ -540,6 +538,7 @@ (meta . ((class . Item) (interfaces . (chord-name-interface font-interface + outside-staff-interface rhythmic-grob-interface text-interface)))))) @@ -587,18 +586,14 @@ (self-alignment-X . ,CENTER) (staff-padding . 0.7) (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::centered-on-x-parent))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (clef-modifier-interface font-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -640,6 +635,7 @@ (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (font-interface + outside-staff-interface side-position-interface text-interface text-script-interface)))))) @@ -729,6 +725,7 @@ (DotColumn . ( (axes . (,X)) + (chord-dots-limit . 3) (direction . ,RIGHT) (positioning-done . ,ly:dot-column::calc-positioning-done) (X-extent . ,ly:axis-group-interface::width) @@ -777,16 +774,12 @@ (side-axis . ,Y) (staff-padding . 0.25) (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))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (font-interface + outside-staff-interface percent-repeat-interface percent-repeat-item-interface self-alignment-interface @@ -804,6 +797,7 @@ (thickness . 0.48) (meta . ((class . Item) (interfaces . (font-interface + outside-staff-interface percent-repeat-interface percent-repeat-item-interface rhythmic-grob-interface)))))) @@ -829,6 +823,7 @@ (interfaces . (axis-group-interface dynamic-interface dynamic-line-spanner-interface + outside-staff-interface side-position-interface)))))) (DynamicText @@ -836,8 +831,6 @@ ;; todo. - (collision-bias . -2.0) - (collision-padding . 0.5) (direction . ,ly:script-interface::calc-direction) (extra-spacing-width . (+inf.0 . -inf.0)) (font-encoding . fetaText) @@ -846,16 +839,16 @@ (positioning-done . ,ly:script-interface::calc-positioning-done) (right-padding . 0.5) (self-alignment-X . ,CENTER) - (self-alignment-Y . ,CENTER) (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) - (Y-offset . ,self-alignment-interface::y-aligned-on-self) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) + (Y-offset . ,(scale-by-font-size -0.6)) ; center on an 'm' (meta . ((class . Item) (interfaces . (dynamic-interface dynamic-text-interface font-interface + outside-staff-interface script-interface self-alignment-interface text-interface)))))) @@ -907,6 +900,11 @@ font-interface line-interface line-spanner-interface + ;for now, LilyPond never will typeset + ;these without a DynamicLineSpanner + ;as their controlling element + ;so, they do not need the + ;outside-staff-interface spanner-interface text-interface)))))) @@ -961,6 +959,7 @@ (meta . ((class . Item) (interfaces . (finger-interface font-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface @@ -1045,6 +1044,7 @@ (interfaces . (chord-name-interface font-interface fret-diagram-interface + outside-staff-interface rhythmic-grob-interface)))))) @@ -1092,13 +1092,8 @@ (layer . 0) (self-alignment-X . ,CENTER) (stencil . ,ly:grid-line-interface::print) - (X-extent . ,ly:grid-line-interface::width) - (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))))) + (X-extent . ,ly:grid-line-interface::width) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (meta . ((class . Item) (interfaces . (grid-line-interface self-alignment-interface)))))) @@ -1132,6 +1127,7 @@ (interfaces . (dynamic-interface hairpin-interface line-interface + outside-staff-interface self-alignment-interface spanner-interface)))))) @@ -1149,6 +1145,7 @@ (meta . ((class . Spanner) (interfaces . (horizontal-bracket-interface line-interface + outside-staff-interface side-position-interface spanner-interface)))))) @@ -1183,6 +1180,7 @@ (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Item) (interfaces . (font-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1302,9 +1300,8 @@ . ( (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-align-symbol . left-edge) - (break-visibility . ,center-invisible) + (break-visibility . ,begin-of-line-visible) (non-musical . #t) - (extra-spacing-height . (+inf.0 . -inf.0)) (space-alist . ( (ambitus . (extra-space . 2.0)) (breathing-sign . (minimum-space . 0.0)) @@ -1320,6 +1317,7 @@ (right-edge . (extra-space . 0.0)) )) (X-extent . (0 . 0)) + (Y-extent . (0 . 0)) (meta . ((class . Item) (interfaces . (break-aligned-interface)))))) @@ -1422,6 +1420,7 @@ (meta . ((class . Spanner) (interfaces . (font-interface measure-counter-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1438,6 +1437,7 @@ (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Spanner) (interfaces . (measure-grouping-interface + outside-staff-interface side-position-interface)))))) (MelodyItem @@ -1461,6 +1461,7 @@ (break-visibility . ,end-of-line-invisible) (direction . ,UP) (extra-spacing-width . (+inf.0 . -inf.0)) + (flag-style . default) (outside-staff-horizontal-padding . 0.2) (outside-staff-priority . 1000) (padding . 0.8) @@ -1482,6 +1483,7 @@ (interfaces . (break-alignable-interface font-interface metronome-mark-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1503,6 +1505,7 @@ (meta . ((class . Spanner) (interfaces . (font-interface multi-measure-interface + outside-staff-interface multi-measure-rest-interface rest-interface staff-symbol-referencer-interface)))))) @@ -1518,18 +1521,14 @@ (springs-and-rods . ,ly:multi-measure-rest::set-text-rods) (staff-padding . 0.4) (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))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Spanner) (interfaces . (font-interface multi-measure-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1543,18 +1542,14 @@ (skyline-horizontal-padding . 0.2) (staff-padding . 0.25) (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))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Spanner) (interfaces . (font-interface multi-measure-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1566,18 +1561,18 @@ (axes . (,X)) (before-line-breaking . ,ly:paper-column::before-line-breaking) (bound-alignment-interfaces . (break-alignment-interface)) + ;; used by Paper_column::print when debugging columns: + (font-size . -7.5) (full-measure-extra-space . 1.0) (horizontal-skylines . ,ly:separation-item::calc-skylines) ;; (stencil . ,ly:paper-column::print) (keep-inside-line . #t) + ;; used by Paper_column::print when debugging columns: + (layer . 1000) (line-break-permission . allow) (non-musical . #t) (page-break-permission . allow) - - ;; debugging stuff: print column number. - ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) - (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Paper_column) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) @@ -1680,6 +1675,7 @@ (interfaces . (font-interface horizontal-bracket-interface line-interface + outside-staff-interface ottava-bracket-interface side-position-interface text-interface)))))) @@ -1691,16 +1687,17 @@ (axes . (,X)) (before-line-breaking . ,ly:paper-column::before-line-breaking) (bound-alignment-interfaces . (note-column-interface)) + ;; used by Paper_column::print when debugging columns: + (font-size . -7.5) (horizontal-skylines . ,ly:separation-item::calc-skylines) (keep-inside-line . #t) + ;; used by Paper_column::print when debugging columns: + (layer . 1000) ;; 0.08 comes from spacing-horizontal-skyline.ly ;; allows double flat of F to be nestled over dots of C (skyline-vertical-padding . 0.08) ;; (stencil . ,ly:paper-column::print) (X-extent . ,ly:axis-group-interface::width) - - ;; 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))) @@ -1747,17 +1744,13 @@ (self-alignment-X . ,CENTER) (staff-padding . 0.25) (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))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Spanner) (interfaces . (font-interface percent-repeat-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1778,7 +1771,8 @@ (vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents)) (Y-extent . ,slur::height) (meta . ((class . Spanner) - (interfaces . (slur-interface)))))) + (interfaces . (outside-staff-interface + slur-interface)))))) ;; an example of a text spanner (PianoPedalBracket @@ -1826,6 +1820,7 @@ (interfaces . (break-alignable-interface font-interface mark-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface)))))) @@ -1899,6 +1894,7 @@ (cross-staff . ,ly:script-interface::calc-cross-staff) (direction . ,ly:script-interface::calc-direction) (font-encoding . fetaMusic) + (horizon-padding . 0.1) ; to avoid interleaving with accidentals (positioning-done . ,ly:script-interface::calc-positioning-done) (side-axis . ,Y) @@ -1913,6 +1909,7 @@ (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Item) (interfaces . (font-interface + outside-staff-interface script-interface side-position-interface)))))) @@ -1946,7 +1943,8 @@ (vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents)) (Y-extent . ,slur::height) (meta . ((class . Spanner) - (interfaces . (slur-interface)))))) + (interfaces . (outside-staff-interface + slur-interface)))))) (SostenutoPedal . ( @@ -1982,6 +1980,7 @@ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface + outside-staff-interface piano-pedal-interface side-position-interface)))))) @@ -2145,12 +2144,7 @@ (style . ,ly:stem-tremolo::calc-style) (X-extent . ,ly:stem-tremolo::width) (Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:stem-tremolo::pure-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))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,(ly:make-unpure-pure-container ly:stem-tremolo::calc-y-offset ly:stem-tremolo::pure-calc-y-offset)) (meta . ((class . Item) (interfaces . (self-alignment-interface @@ -2173,6 +2167,7 @@ (meta . ((class . Item) (interfaces . (font-interface self-alignment-interface + outside-staff-interface side-position-interface string-number-interface text-interface @@ -2193,6 +2188,7 @@ (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (font-interface + outside-staff-interface self-alignment-interface side-position-interface stroke-finger-interface @@ -2201,7 +2197,6 @@ (SustainPedal . ( - (direction . ,RIGHT) (extra-spacing-width . (+inf.0 . -inf.0)) (padding . 0.0) ;; padding relative to SustainPedalLineSpanner (self-alignment-X . ,CENTER) @@ -2233,6 +2228,7 @@ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface + outside-staff-interface piano-pedal-interface side-position-interface)))))) @@ -2253,7 +2249,8 @@ (vertical-skyline-elements . ,ly:system::vertical-skyline-elements) (vertical-alignment . ,ly:system::get-vertical-alignment))) (interfaces . (axis-group-interface - system-interface)))))) + system-interface + outside-staff-axis-group-interface)))))) (SystemStartBar . ( @@ -2373,6 +2370,7 @@ (meta . ((class . Item) (interfaces . (font-interface instrument-specific-markup-interface + outside-staff-interface self-alignment-interface side-position-interface text-interface @@ -2406,6 +2404,7 @@ (interfaces . (font-interface line-interface line-spanner-interface + outside-staff-interface side-position-interface)))))) (Tie @@ -2503,13 +2502,14 @@ (axes . (,X)) (direction . ,RIGHT) (font-size . -4) + ;; minimum shift to the right, in case the parent note has no stem + (minimum-space . 2.5) + (horizon-padding . 0.1) ; to avoid interleaving with augmentation dots (padding . 0.3) (side-axis . ,X) (stencil . ,parenthesize-elements) (stencils . ,parentheses-item::calc-parenthesis-stencils) - ;; offset a bit to the right, further if needed to clear the main note - (X-offset . ,(lambda (grob) - (ly:side-position-interface::x-aligned-side grob 2.5))) + (X-offset . ,ly:side-position-interface::x-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (axis-group-interface @@ -2558,6 +2558,7 @@ (interfaces . (font-interface line-interface line-spanner-interface + outside-staff-interface side-position-interface trill-spanner-interface)))))) @@ -2580,6 +2581,7 @@ (meta . ((class . Spanner) (interfaces . (line-interface + outside-staff-interface tuplet-bracket-interface)))))) (TupletNumber @@ -2589,12 +2591,14 @@ (direction . ,tuplet-number::calc-direction) (font-shape . italic) (font-size . -2) + (knee-to-beam . #t) (stencil . ,ly:tuplet-number::print) (text . ,tuplet-number::calc-denominator-text) (X-offset . ,ly:tuplet-number::calc-x-offset) (Y-offset . ,ly:tuplet-number::calc-y-offset) (meta . ((class . Spanner) (interfaces . (font-interface + outside-staff-interface text-interface tuplet-number-interface)))))) @@ -2633,6 +2637,7 @@ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface + outside-staff-interface piano-pedal-interface side-position-interface)))))) @@ -2684,7 +2689,8 @@ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface - hara-kiri-group-spanner-interface)))))) + hara-kiri-group-spanner-interface + outside-staff-axis-group-interface)))))) (VoiceFollower . ( @@ -2711,6 +2717,7 @@ (VoltaBracket . ( + (baseline-skip . 1.7) (direction . ,UP) (edge-height . (2.0 . 2.0)) ;; staff-space; (font-encoding . fetaText) @@ -2747,6 +2754,7 @@ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface + outside-staff-interface side-position-interface volta-interface)))))) @@ -2793,11 +2801,11 @@ ;; make sure that \property Foo.Bar =\turnOff doesn't complain -(map (lambda (x) - ;; (display (car x)) (newline) +(for-each (lambda (x) + ;; (display (car x)) (newline) - (set-object-property! (car x) 'translation-type? list?) - (set-object-property! (car x) 'is-grob? #t)) - all-grob-descriptions) + (set-object-property! (car x) 'translation-type? list?) + (set-object-property! (car x) 'is-grob? #t)) + all-grob-descriptions) (set! all-grob-descriptions (sort all-grob-descriptions alist