]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-grobs.scm
Better shape control of arpeggio brackets.
[lilypond.git] / scm / define-grobs.scm
index effaf131faa22f1dce75d52d8738b4c4eeb71ae7..b89fc14757cde390830f60033eb8210f01e74dab 100644 (file)
        (direction . ,LEFT)
        (padding . 0.5)
        (positions . ,ly:arpeggio::calc-positions)
+       (protrusion . 0.4)
        (script-priority . 0)
        (side-axis . ,X)
        (staff-position . 0.0)
        (padding . 0.2)
        (positioning-done . ,ly:align-interface::align-to-minimum-distances)
        (stacking-dir . ,DOWN)
+       (X-extent . ,ly:axis-group-interface::width)
        (Y-extent . ,axis-group-interface::height)
        (meta . ((class . Spanner)
                 (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
        (padding . 0.5)
        (side-axis . ,Y)
        (staff-padding . 1.0)
+       (X-extent . ,ly:axis-group-interface::width)
        (Y-extent . ,axis-group-interface::height)
        (Y-offset . ,side-position-interface::y-aligned-side)
        (meta . ((class . Spanner)
        (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
        (axes . (,Y))
        (vertical-skylines . ,ly:axis-group-interface::calc-skylines)
+       (X-extent . ,ly:axis-group-interface::width)
        (Y-extent . ,axis-group-interface::height)
        (meta . ((class . Spanner)
                 (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
        (clip-edges . #t)
        (collision-interfaces . (beam-interface
                                 clef-interface
+                                clef-modifier-interface
                                 flag-interface
                                 inline-accidental-interface
                                 key-signature-interface
                                 note-head-interface
-                                octavate-eight-interface
                                 stem-interface
                                 time-signature-interface))
        (cross-staff . ,ly:beam::calc-cross-staff)
                               clef
                               key-cancellation
                               key-signature
-                              staff-bar
                               time-signature
+                              staff-bar
                               cue-clef
                               custos)))
        (non-musical . #t)
      . (
        (avoid-slur . inside)
        (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
+       (break-align-anchor-alignment . ,RIGHT)
        (break-align-symbol . clef)
        (break-visibility . ,begin-of-line-visible)
        (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height-at-beginning-of-line)
                                pure-from-neighbor-interface
                                staff-symbol-referencer-interface))))))
 
+    (ClefModifier
+     . (
+       (break-visibility . ,(grob::inherit-parent-property
+                              X 'break-visibility))
+       (font-shape . italic)
+       (font-size . -4)
+       (self-alignment-X . ,CENTER)
+       (staff-padding . 0.2)
+       (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)))))
+       (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
+                               self-alignment-interface
+                               side-position-interface
+                               text-interface))))))
+
     (ClusterSpanner
      . (
        (cross-staff . ,ly:cluster::calc-cross-staff)
     (DotColumn
      . (
        (axes . (,X))
-       (chord-dots . #t)
        (direction . ,RIGHT)
        (positioning-done . ,ly:dot-column::calc-positioning-done)
        (X-extent . ,ly:axis-group-interface::width)
      . (
        (padding . 0.2)
        (positioning-done . ,ly:fingering-column::calc-positioning-done)
+       (snap-radius . 0.3)
        (meta . ((class . Item)
                 (interfaces . (fingering-column-interface))))))
 
        (annotation-balloon . #f)
        (annotation-line . #t)
        (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
-       (break-visibility . ,inherit-y-parent-visibility)
+       (break-visibility . ,(grob::inherit-parent-property
+                              X 'break-visibility))
        (footnote . #t)
        (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
        (stencil . ,ly:balloon-interface::print)
      . (
        (avoid-slur . inside)
        (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
+       (break-align-anchor-alignment . ,RIGHT)
        (break-align-symbol . key-signature)
        (break-visibility . ,begin-of-line-visible)
        (glyph-name-alist . ,standard-alteration-glyph-name-alist)
    (LaissezVibrerTie
      . (
        (control-points . ,ly:semi-tie::calc-control-points)
+       (cross-staff . ,semi-tie::calc-cross-staff)
        (details . ((ratio . 0.333)
                    (height-limit . 1.0)))
        (direction . ,ly:tie::calc-direction)
        (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-horizontal-padding . 0.12)
        (outside-staff-priority . 1000)
-       (padding . 0.8)
+       (outside-staff-padding . 0.5)
        (side-axis . ,Y)
+       (skyline-horizontal-padding . 0.2)
        (stencil . ,ly:text-interface::print)
        (vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
-       (Y-offset . ,side-position-interface::y-aligned-side)
+       (Y-offset . ,(ly:make-unpure-pure-container
+                       side-position-interface::y-aligned-side
+                       outside-staff::pure-Y-offset))
        (X-offset . ,(ly:make-simple-closure
                      `(,+
                        ,(ly:make-simple-closure
                          (list ly:self-alignment-interface::x-aligned-on-self)))))
        (self-alignment-X . ,LEFT)
        (break-align-symbols . (time-signature))
-       (non-break-align-symbols . (multi-measure-rest-interface))
+       (non-break-align-symbols . (paper-column-interface))
        (Y-extent . ,grob::always-Y-extent-from-stencil)
        (meta . ((class . Item)
                 (interfaces . (break-alignable-interface
                 (interfaces . (note-spacing-interface
                                spacing-interface))))))
 
-
-    (OctavateEight
-     . (
-       (break-visibility . ,inherit-x-parent-visibility)
-       (font-shape . italic)
-       (font-size . -4)
-       (self-alignment-X . ,CENTER)
-       (staff-padding . 0.2)
-       (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)))))
-       (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 . (font-interface
-                               octavate-eight-interface
-                               self-alignment-interface
-                               side-position-interface
-                               text-interface))))))
-
     (OttavaBracket
      . (
        (dash-fraction . 0.3)
      . (
        (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
        (baseline-skip . 2)
-       (break-align-symbols . (staff-bar clef))
+       (break-align-symbols . (staff-bar key-signature clef))
        (break-visibility . ,end-of-line-invisible)
        (direction . ,UP)
-       (extra-spacing-width . (+inf.0 . -inf.0))
        (font-size . 2)
        (non-musical . #t)
        (outside-staff-horizontal-padding . 0.12)
        (outside-staff-priority . 1500)
-       (padding . 0.8)
+       (outside-staff-padding . 0.5)
        (self-alignment-X . ,CENTER)
        (stencil . ,ly:text-interface::print)
        (vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
                          (list ly:break-alignable-interface::self-align-callback))
                        ,(ly:make-simple-closure
                          (list ly:self-alignment-interface::x-aligned-on-self)))))
-       (Y-offset . ,side-position-interface::y-aligned-side)
+       (Y-offset . ,(ly:make-unpure-pure-container
+                       side-position-interface::y-aligned-side
+                       outside-staff::pure-Y-offset))
        (Y-extent . ,grob::always-Y-extent-from-stencil)
        (meta . ((class . Item)
                 (interfaces . (break-alignable-interface
 
     (RepeatTie
      . (
+       (cross-staff . ,semi-tie::calc-cross-staff)
        (control-points . ,ly:semi-tie::calc-control-points)
        (details . ((ratio . 0.333)
                    (height-limit . 1.0)))
 
     (SpanBarStub
      . (
-        (X-extent . ,grob::x-parent-width)
+        (X-extent . ,(grob::inherit-parent-property
+                      X 'X-extent))
        (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height)
        ; we want this to be ignored, so empty, but the extra spacing height
        ; should preserve the span bar's presence for horizontal spacing
-       (Y-extent . ,pure-from-neighbor-interface::unobtrusive-height)
+       (Y-extent . ,pure-from-neighbor-interface::height-if-pure)
        (meta . ((class . Item)
                 (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                      (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
        (collapse-height . 5.0)
        (direction . ,LEFT)
 
+       (cross-staff . #t)
        ;; ugh--hardcoded.
        (padding . -0.1)  ;; bar must cover rounded ending of staff line.
        (stencil . ,ly:system-start-delimiter::print)
        (collapse-height . 5.0)
        (direction . ,LEFT)
        (font-encoding . fetaBraces)
+       (cross-staff . #t)
        (padding . 0.3)
        (stencil . ,ly:system-start-delimiter::print)
        (style . brace)
      . (
        (collapse-height . 5.0)
        (direction . ,LEFT)
+       (cross-staff . #t)
        (padding . 0.8)
        (stencil . ,ly:system-start-delimiter::print)
        (style . bracket)
     (SystemStartSquare
      . (
        (direction . ,LEFT)
+       (cross-staff . #t)
        (stencil . ,ly:system-start-delimiter::print)
        (style . line-bracket)
        (thickness . 1.0)
                        (cue-clef . (extra-space . 1.5))
                        (first-note . (fixed-space . 2.0))
                        (right-edge . (extra-space . 0.5))
-                       (staff-bar . (minimum-space . 2.0))))
+                       (staff-bar . (extra-space . 1.0))))
        (stencil . ,ly:time-signature::print)
        (Y-extent . ,grob::always-Y-extent-from-stencil)
        (style . C)