Siguiente: Usar código de Scheme en lugar de \tweak, Anterior: Contextos para programadores, Arriba: Interfaces para programadores
Las propiedades (como el grosor, la dirección, etc.) se pueden establecer a valores fijos con \override, p. ej.
\override Stem #'thickness = #2.0
Las propiedades pueden fijarse también a un procedimiento de scheme,
\override Stem #'thickness = #(lambda (grob) (if (= UP (ly:grob-property grob 'direction)) 2.0 7.0)) c b a g b a g b
En este caso, el procedimiento se ejecuta tan pronto como el valor de la propiedad se reclama durante el proceso de formateo.
Casi todo el motor de tipografiado está manejado por estos callbacks. Entre las propiedades que usan normalmente callbacks están
stencil
X-offset
X-extent
El procedimiento siempre toma un argumento único, que es el grob (el objeto gráfico).
Si se deben llamar rutinas con varios argumentos, el grob actual se
puede insertar con una cerradura de grob. He aquí un ajuste
procedente de AccidentalSuggestion
,
(X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent)) ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self)))))
En este ejemplo, tanto
ly:self-alignment-interface::x-aligned-on-self
como
ly:self-alignment-interface::centered-on-x-parent
se llaman con
el grob como argumento. El resultado se añade con la función
+
. Para asegurar que esta adición se ejecuta adecuadamente,
todo ello se encierra dentro de ly:make-simple-closure
.
De hecho, usar un solo procedimiento como valor de una propiedad equivale a
(ly:make-simple-closure (ly:make-simple-closure (list proc)))
El ly:make-simple-closure
interior aporta el grob como
argumento de proc, el exterior asegura que el resultado de la
función es lo que se devuelve, en lugar del objeto
simple-closure
.
Otros idiomas: English.