36.7.3 Pintar los objetos de blanco
Todo objeto de presentación tiene una propiedad de color que de
forma predeterminada está establecida a black (negro). Si
se sobreescribe a white (blanco) el objeto será
indistinguible del fondo blanco. Sin embargo, si el objeto cruza
a otros objetos, el color de los puntos de cruce queda determinado
por el orden en que se dibujan estos objetos, lo que puede dejar
una imagen fantasma del objeto blanco, como puede verse aquí:
\override Staff.Clef.color = #white a'1![]()
Se puede evitar esto cambiando el orden de impresión de los
objetos. Todos los objetos de presentación tienen una propiedad
layer (capa) que se debe establecer a un valor entero. Los
objetos con el valor de layer más bajo se dibujan primero,
después se dibujan los objetos con valores progresivamente
mayores, y así los objetos con valores más altos se dibujan encima
de los que tienen valores más bajos. De forma predeterminada,
casi todos los objetos tienen asignado un valor layer de
1, aunque algunos objetos, entre ellos el pentagrama y las
líneas divisorias, StaffSymbol y BarLine, tienen
asignado un calor de 0. El orden de impresión de los
objetos con el mismo valor de layer es indeterminado.
En el ejemplo de arriba, la clave blanca, con un valor
layer predeterminado de 1, se dibuja después de las
líneas del pentagrama (valor layer predeterminado de
0), sobreimpresionándolas. Para cambiarlo, se debe dar al
objeto Clef un valor de layer más bajo, digamos
-1, para que se dibuje antes:
\override Staff.Clef.color = #white \override Staff.Clef.layer = -1 a'1![]()
Fragmentos de código seleccionados
Uso de la propiedad whiteout
Se puede imprimir cualquier objeto gráfico sobre un fondo blanco
para enmascarar parte de los objetos que están por debajo. Esto
puede ser útil para mejorar el aspecto de las colisiones en
situaciones complejas cuando no es práctico reposicionar los
objetos. Es necesario establecer explícitamente la propiedad de
capa (layer) para controlar qué objetos resultan
enmascarados por el fondo blanco.
En este ejemplo, la colisión de la ligadura de unión con la
indicación de compás resulta mejorada enmascarando la parte de la
ligadura que cruza a la indicación de compás estableciendo la
propiedad whiteout de TimeSignature. Para hacer
esto, se mueve TimeSignature a una capa por encima de
Tie, que se deja en la capa predeterminada 1, y
StaffSymbol se mueve a una capa por encima de
TimeSignature de manera que no resulte enmascarada.
{ \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]](../56/lily-81216919.png)
![[image of music]](../36/lily-4fc1a81f.png)
![[image of music]](../a3/lily-08bce0a7.png)