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
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
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 }