]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-grobs.scm
Fix 1896: chord names can have instrument names.
[lilypond.git] / scm / define-grobs.scm
index 1591d108bbc813dbc488d6f08e3146d736084572..c8764e15e07be47c8677dcdf6e98036fc94dd7c7 100644 (file)
 
        (break-visibility . ,begin-of-line-visible)
        (direction . ,UP)
+       (extra-spacing-width . (+inf.0 . -inf.0))
        (font-family . roman)
        (font-size . -2)
        (non-musical . #t)
                        (key-signature . (extra-space . 0.5))
                        (cue-clef . (extra-space . 0.5))
                        (right-edge . (extra-space . 0.5))
-                       (first-note . (semi-fixed-space . 2.5))))
+                       (first-note . (fixed-space . 2.5))))
        (stencil . ,ly:key-signature-interface::print)
-       (extra-spacing-width . (0.0 . 0.5))
+       (extra-spacing-width . (0.0 . 1.0))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Item)
                 (interfaces . (break-aligned-interface
                        (staff-bar . (extra-space . 1.1))
                        (cue-clef . (extra-space . 0.5))
                        (right-edge . (extra-space . 0.5))
-                       (first-note . (semi-fixed-space . 2.5))))
+                       (first-note . (fixed-space . 2.5))))
        (stencil . ,ly:key-signature-interface::print)
-       (extra-spacing-width . (0.0 . 0.5))
+       (extra-spacing-width . (0.0 . 1.0))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Item)
                 (interfaces . (break-aligned-interface
     (MensuralLigature
      . (
        (stencil . ,ly:mensural-ligature::print)
-       (thickness . 1.4)
+       (thickness . 1.3)
        (meta . ((class . Spanner)
                 (interfaces . (font-interface
                                mensural-ligature-interface))))))
 
        (direction . ,ly:stem::calc-direction)
        (duration-log . ,stem::calc-duration-log)
+        (length . ,stem::length)
        (neutral-direction . ,DOWN)
        (positioning-done . ,ly:stem::calc-positioning-done)
        (stem-info . ,ly:stem::calc-stem-info)
+       (stem-begin-position . ,ly:stem::calc-stem-begin-position)
        (stencil . ,ly:stem::print)
        (thickness . 1.3)
        (X-extent . ,ly:stem::width)
        (break-align-anchor-alignment . ,LEFT)
        (break-visibility . ,all-visible)
        (extra-spacing-height . (-1.0 . 1.0))
+       (extra-spacing-width . (0.0 . 0.8))
        (non-musical . #t)
        (space-alist . (
                        (cue-clef . (extra-space . 1.5))
-                       (first-note . (semi-fixed-space . 2.0))
+                       (first-note . (fixed-space . 2.0))
                        (right-edge . (extra-space . 0.5))
                        (staff-bar . (minimum-space . 2.0))))
        (stencil . ,ly:time-signature::print)
     (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
     (,ly:slur::height . ,ly:slur::pure-height)
     (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
+    (,ly:stem::calc-stem-begin-position . ,ly:stem::pure-calc-stem-begin-position)
     (,ly:stem::calc-stem-end-position . ,ly:stem::pure-calc-stem-end-position)
+    (,stem::length . ,stem::pure-length)
     (,ly:stem::height . ,ly:stem::pure-height)
     (,ly:stem-tremolo::calc-y-offset . ,ly:stem-tremolo::pure-calc-y-offset)
     (,ly:system::height . ,ly:system::calc-pure-height)))
   (let ((extent-callback (ly:grob-property-data grob 'Y-extent)))
     (not (eq? #f
              (or
+               (ly:unpure-pure-container? extent-callback)
               (pair? extent-callback)
               (memq extent-callback pure-functions)
               (and
                   (assq stencil pure-print-to-height-conversions)
                   (ly:stencil? stencil)))))))))
 
+;; hideous code dup below - to be cleaned up when call pure functino
+;; is eliminated and lilypond works entirely from unpure-pure-containers
+
 (define-public (call-pure-function unpure args start end)
-  (if (ly:simple-closure? unpure)
-      (ly:eval-simple-closure (car args) unpure start end)
-      (if (not (procedure? unpure))
-         unpure
-         (if (memq unpure pure-functions)
-             (apply unpure args)
-             (let ((pure (assq unpure pure-conversions-alist)))
-               (if pure
-                   (apply (cdr pure)
-                          (append
-                           (list (car args) start end)
-                           (cdr args)))))))))
+  (if (ly:unpure-pure-container? unpure)
+      (let ((unpure (ly:unpure-pure-container-pure-part unpure)))
+        (if (ly:simple-closure? unpure)
+          (ly:eval-simple-closure (car args) unpure start end)
+          (if (not (procedure? unpure))
+              unpure
+              (apply (cdr pure)
+                     (append
+                       (list (car args) start end)
+                       (cdr args))))))
+      (if (ly:simple-closure? unpure)
+          (ly:eval-simple-closure (car args) unpure start end)
+          (if (not (procedure? unpure))
+              unpure
+              (if (memq unpure pure-functions)
+                  (apply unpure args)
+                  (let ((pure (assq unpure pure-conversions-alist)))
+                    (if pure
+                        (apply (cdr pure)
+                               (append
+                                (list (car args) start end)
+                                (cdr args))))))))))