]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/snippets/center-text-below-hairpin-dynamics.ly
Merge branch 'master' of /home/jcharles/GIT/Lily/. into translation
[lilypond.git] / Documentation / snippets / center-text-below-hairpin-dynamics.ly
index 6dd44c7e04216753f7c54f8679355c500db84094..2403958853e027b55bdbbaa4afa46f9a9abe854a 100644 (file)
@@ -1,24 +1,20 @@
-%% Do not edit this file; it is automatically
+%% DO NOT EDIT this file manually; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% generated from LSR http://lsr.dsi.unimi.it
+%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
+%% and then run scripts/auxiliar/makelsr.py
+%%
 %% This file is in the public domain.
 %% This file is in the public domain.
-\version "2.13.20"
+\version "2.17.11"
 
 \header {
 
 \header {
-  lsrtags = "expressive-marks, text"
-
-%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
-  texidoces = "
-Este ejemplo proporciona una función para tipografiar un regulador con
-texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
-también cómo modificar la manera en que se imprime normalmente un
-objeto, utilizando código de Scheme.
-
-"
-  doctitlees = "Centrar texto debajo de un regulador"
+  lsrtags = "expressive-marks, really-cool, scheme-language, text"
 
   texidoc = "
 This example provides a function to typeset a hairpin (de)crescendo
 with some additional text below it, such as @qq{molto} or @qq{poco}.
 
   texidoc = "
 This example provides a function to typeset a hairpin (de)crescendo
 with some additional text below it, such as @qq{molto} or @qq{poco}.
+The added text will change the direction according to the direction of
+the hairpin. The Hairpin is aligned to DynamicText.
+
 The example also illustrates how to modify the way an object is
 normally printed, using some Scheme code.
 
 The example also illustrates how to modify the way an object is
 normally printed, using some Scheme code.
 
@@ -29,17 +25,46 @@ normally printed, using some Scheme code.
 hairpinWithCenteredText =
 #(define-music-function (parser location text) (markup?)
 #{
 hairpinWithCenteredText =
 #(define-music-function (parser location text) (markup?)
 #{
-  \override Voice.Hairpin #'stencil = #(lambda (grob)
-    (ly:stencil-aligned-to
-     (ly:stencil-combine-at-edge
-      (ly:stencil-aligned-to (ly:hairpin::print grob) X CENTER)
-      Y DOWN
-      (ly:stencil-aligned-to (grob-interpret-markup grob $text) X CENTER))
-     X LEFT))
+  \once \override Voice.Hairpin.after-line-breaking =
+    #(lambda (grob)
+      (let* ((stencil (ly:hairpin::print grob))
+             (par-y (ly:grob-parent grob Y))
+             (dir (ly:grob-property par-y 'direction))
+             (new-stencil (ly:stencil-aligned-to
+               (ly:stencil-combine-at-edge
+                 (ly:stencil-aligned-to stencil X CENTER)
+                 Y dir
+                 (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER))
+               X LEFT))
+             (staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space))
+             (staff-line-thickness
+               (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness))
+             (grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name)))
+             (par-x (ly:grob-parent grob X))
+             (dyn-text (eq? (grob-name par-x) 'DynamicText ))
+             (dyn-text-stencil-x-length
+               (if dyn-text
+                 (interval-length
+                   (ly:stencil-extent (ly:grob-property par-x 'stencil) X))
+                 0))
+             (x-shift
+               (if dyn-text
+                 (-
+                   (+ staff-space dyn-text-stencil-x-length)
+                   (* 0.5 staff-line-thickness)) 0)))
+
+      (ly:grob-set-property! grob 'Y-offset 0)
+      (ly:grob-set-property! grob 'stencil
+         (ly:stencil-translate-axis
+          new-stencil
+          x-shift X))))
 #})
 
 #})
 
-hairpinMolto = \hairpinWithCenteredText \markup { \italic molto }
-hairpinMore = \hairpinWithCenteredText \markup { \larger moltissimo }
+hairpinMolto =
+\hairpinWithCenteredText \markup { \italic molto }
+
+hairpinMore =
+\hairpinWithCenteredText \markup { \larger moltissimo }
 
 \layout { ragged-right = ##f }
 
 
 \layout { ragged-right = ##f }
 
@@ -47,5 +72,10 @@ hairpinMore = \hairpinWithCenteredText \markup { \larger moltissimo }
   \hairpinMolto
   c2\< c\f
   \hairpinMore
   \hairpinMolto
   c2\< c\f
   \hairpinMore
-  c2\< c\f
+  c2\ppppp\< c\f
+  \break
+  \hairpinMolto
+  c2^\< c\f
+  \hairpinMore
+  c2\ppppp\< c\f
 }
 }