Subject: Règler les propriétés de «whiteout»

From: Bernard Meylan <[email-masked]>
Date: Thu, 18 Mar 2021 04:11:16 -0700 (MST)

Bonjour à toute l'équipe!

J'ai activé l'option \override DynamicText #'whiteout = ##t  pour les
indications de nuances dans une partition de piano. J'aimerai pouvoir gérer
la taille de ce «carré blanc» qui entoure la nuance, que ce soit en largeur
comme en hauteur, afin d'«aérer» quelque peu le «forte» ou «piano» qui sont
à l'intérieur. Avez-vous une solution?

-----
Cordialement

Bernard
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: martial <[email-masked]>
Date: Thu, 18 Mar 2021 06:09:35 -0700 (MST)

Bonjour, 

sauf erreur

   \override DynamicText.Y-extent = #'(-y . y)
   \override DynamicText.X-extent = #'(-x . x)
%-------------
\relative  {
   \override DynamicText.whiteout = ##t
   c'\f c 
   \override DynamicText.Y-extent = #'(-10 . 10)
   \override DynamicText.X-extent = #'(-20 . 10)
   c c\f
}
%-------------

-----
♫artial♪

---

From: Xavier Scheuer <[email-masked]>
Date: Thu, 18 Mar 2021 15:14:40 +0100

Bonjour,

Il suffit de mettre un nombre plutôt qu'un booléen.
\override DynamicText.whiteout = #10
Voir aussi whiteout-style pour la forme du whiteout.

Cf. la documentation de la propriété whiteout
IR 3.2.48 grob-interface > whiteout
https://lilypond.org/doc/v2.23/Documentation/internals/grob_002dinterface

Cordialement,
Xavier

-- 
Xavier Scheuer <[email-masked]>

---

From: Bernard Meylan <[email-masked]>
Date: Thu, 18 Mar 2021 07:20:50 -0700 (MST)

Merci pour ta réponse… mais \override DynamicText.Y-extent = #'(-10 . 10)
fait bouger la nuance et n'a aucune influence sur le fait qu'elle puisse
«effacer» -c-à-d se positionner au dessus- une barre de mesure et la
«recouvrir». Mais j'ai trouvé un début de solution avec ceci:

\override DynamicText.whiteout = 5

qui marche très bien. Voulant donner à ce «recouvrement» une forme
spécifique, j'ai tenté un

\override DynamicText.whiteout = #'(5 . 7) pour lui donner une forme
rectangulaire. Et là, ça coince avec un message dont j'essaie de trouver la
signification: 

 Avertissement : la vérification du type de « whiteout » a échoué ; 
  la valeur « (5 . 7) » doit être du type « boolean-or-number »

et là, je sèche… J'ai fait une erreur de syntaxe, ça me paraît clair, mais
laquelle?

-----
Cordialement

Bernard

---

From: Bernard Meylan <[email-masked]>
Date: Thu, 18 Mar 2021 07:28:45 -0700 (MST)

Xavier m'a précédé de qqs secondes…

Xavier Scheuer wrote
> https://lilypond.org/doc/v2.23/Documentation/internals/grob_002dinterface

J'ai bien vu la page que à laquelle tu te réfères, mais je n'y vois aucun
exemple pour mettre ce qui est écrit en pratique… Cela est sans doute clair
pour toi, mais en ce qui me concerne, je n'y comprend rien…

-----
Cordialement

Bernard

---

From: martial <[email-masked]>
Date: Thu, 18 Mar 2021 10:35:48 -0700 (MST)

Bon j'avais faux, Merci Xavier
voici la solution 
%-------------
\relative  {
   \override DynamicText.whiteout = #10
   c'\f c
   \override DynamicText.Y-offset = #-2
   c c\f
}
%------------- 

-----
♫artial♪

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 18 Mar 2021 22:07:13 +0100

Bonjour,

La propriété whiteout-style que signalait Xavier permet de contrôler
la méthode par laquelle l'objet est blanchi. Il existe trois possibilités
pour

   \override DynamicText.whiteout-style = #'le-style

et elles sont décrites de manière sûrement plus compréhensible dans la
documentation des commandes pour \markup, à l'entrée \whiteout :

https://lilypond.org/doc/v2.22/Documentation/notation/other

En revanche, il n'existe pas à l'heure actuelle d'option tout prête
pour régler les rembourrages vertical et horizontal séparément. Il
faut mettre la main à la pâte.

\version "2.23.1"

#(set-object-property! 'whiteout-extra 'backend-type? number-pair?)

#(define (add-whiteout-callback grob stencil)
    (if (ly:stencil? stencil)
        (let* ((x-extent (ly:stencil-extent stencil X))
               (y-extent (ly:stencil-extent stencil Y))
               (user-extra (ly:grob-property grob 'whiteout-extra))
               (extra (if (pair? user-extra)
                          user-extra
                         '(0 . 0)))
               (x-extra (car extra))
               (y-extra (cdr extra)))
          (ly:stencil-outline
            (ly:stencil-add
              (stencil-with-color
                (ly:round-filled-box
                  (interval-widen x-extent x-extra)
                  (interval-widen y-extent y-extra)
                  0)
               white)
              stencil)
            stencil))))

whiteoutGrob =
#(define-music-function (grob-path) (symbol-list-or-symbol?)
    #{
      \override #grob-path . after-line-breaking =
        #(grob-transformer 'after-line-breaking
           (lambda (grob dummy)
             (ly:grob-chain-callback grob
                                     add-whiteout-callback
                                     'stencil)))
    #})

% Exemple.

\layout {
   \context {
     \Voice
     \whiteoutGrob DynamicText
     \override DynamicText.whiteout-extra = #'(2 . 0)
   }
}

{
   s1*2\tweak extra-offset #'(4 . 4) \fffff
}

Cordialement,
Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 18 Mar 2021 22:30:46 +0100

Le 18/03/2021 à 22:07, Jean Abou Samra a écrit :
> [...]

Pardon, je me suis mélangé les pinceaux entre deux versions de
mon code. Pourquoi faire simple quand on peut faire compliqué...

\version "2.22.0"

whiteoutGrob =
#(define-music-function (grob-path) (symbol-list-or-symbol?)
    #{
       \override #grob-path . stencil =
         #(grob-transformer 'stencil
            (lambda (grob stencil)
              (if (ly:stencil? stencil)
                  (let* ((x-extent (ly:stencil-extent stencil X))
                         (y-extent (ly:stencil-extent stencil Y))
                         (user-extra (ly:grob-property grob 
'whiteout-extra))
                         (extra (if (pair? user-extra)
                                    user-extra
                                   '(0 . 0)))
                         (x-extra (car extra))
                         (y-extra (cdr extra)))
                    (ly:stencil-outline
                      (ly:stencil-add
                        (stencil-with-color
                          (ly:round-filled-box
                            (interval-widen x-extent x-extra)
                            (interval-widen y-extent y-extra)
                            0)
                         white)
                        stencil)
                      stencil)))))
    #})

% Exemple.

\layout {
   \context {
     \Voice

{

---

From: Bernard Meylan <[email-masked]>
Date: Fri, 19 Mar 2021 15:45:45 -0700 (MST)

Magnifique… merci, Jean Abou!

-----
Cordialement

Bernard

---

From: martial <[email-masked]>
Date: Sat, 20 Mar 2021 06:32:05 -0700 (MST)

Merci, 
j'étais complètement  bémolisé  à l'ouest ... 

-----
♫artial♪