Dipingere gli oggetti di bianco

Tutti gli oggetti della formattazione hanno una proprietà del colore il cui valore predefinito è black (nero). Se questa viene sovrascritta con white (bianco) l’oggetto non sarà più distinguibile dallo sfondo. Tuttavia se l’oggetto attraversa altri oggetti, il colore dei punti di contatto saranno determinati dall’ordine in cui sono disegnati, e ciò potrebbe lasciare un’immagine “spettrale” dell’oggetto bianco, come mostrato qui:

\override Staff.Clef.color = #white
a'1

[image of music]

Ciò può essere evitato cambiando l’ordine di stampa degli oggetti. Tutti gli oggetti della formattazione hanno una proprietà layer (strato) che deve essere impostata su un numero intero. Gli oggetti col valore più basso di layer sono disegnati per primi, poi vengono disegnati quelli con valori via via più alti, dunque gli oggetti con valori più alti stanno sopra gli oggetti con valori più bassi. Per impostazione predefinita alla maggior parte degli oggetti viene assegnato un valore di layer pari a 1, sebbene ad alcuni oggetti, tra cui StaffSymbol e BarLine, sia assegnato un valore di 0. L’ordine con cui vengono stampati oggetti con lo stesso valore di layer è indeterminato.

Nell’esempio precedente la chiave bianca, con un valore predefinito di layer di 1, viene disegnato dopo le linee del rigo (il cui valore predefinito di layer è 0), dunque sta sopra di esse. Per cambiare tale comportamento, all’oggetto Clef deve essere assegnato un valore di layer inferiore, per esempio -1, in modo che venga disegnato prima:

\override Staff.Clef.color = #white
\override Staff.Clef.layer = #-1
a'1

[image of music]

Frammenti di codice selezionati

Uso della proprietà whiteout

Qualsiasi oggetto grafico può essere posizionato sopra uno sfondo bianco per mascherare parti degli oggetti che si trovano sotto. Ciò può essere utile per migliorare l’aspetto delle collisioni in situazioni complesse in cui il riposizionamento degli oggetti è troppo difficile. Bisogna impostare esplicitamente la proprietà layer (livello) per controllare quali oggetti debbano essere mascherati dallo sfondo bianco.

In questo esempio la collisione della legatura di valore con l’indicazione di tempo viene migliorata mascherando la parte della legatura che incrocia l’indicazione di tempo impostando la proprietà whiteout di TimeSignature. Per farlo si sposta TimeSignature su un livello superiore a Tie, che viene lasciato al livello predefinito 1; e StaffSymbol viene spostato su un livello superiore a TimeSignature in modo che non venga mascherato.

{
  \override Score.StaffSymbol.layer = 4
  \override Staff.TimeSignature.layer = 3
  b'2 b'~
  \once \override Staff.TimeSignature.whiteout = ##t
  \time 3/4
  b' r4
}

[image of music]


Guida alla Notazione di LilyPond v2.25.21 (ramo di sviluppo).