[ << Tutorial de Scheme ] | [Arriba][Índice general][Índice] | [ Interfaces para programadores >> ] |
[ < Propiedades de los objetos ] | [ Subir : Scheme dentro de LilyPond ] | [ Desplazamientos > ] |
A.2.6 Variables de LilyPond compuestas
Desplazamientos | ||
Fracciones | ||
Dimensiones | ||
Listas-A de propiedades | ||
Cadenas de listas-A |
[ << Tutorial de Scheme ] | [Arriba][Índice general][Índice] | [ Interfaces para programadores >> ] |
[ < Variables de LilyPond compuestas ] | [ Subir : Variables de LilyPond compuestas ] | [ Fracciones > ] |
Desplazamientos
Los desplazamientos bidimensionales (coordenadas X e Y) se
almacenan como parejas. El car
del desplazamiento
es la coordenada X, y el cdr
es la coordenada Y.
\override TextScript.extra-offset = #'(1 . 2)
Esto asigna la pareja (1 . 2)
a la propiedad
extra-offset
del objeto TextScript. Estos números se miden
en espacios de pentagrama, y así esta instrucción mueve el objeto
un espacio de pentagrama a la derecha, y dos espacios hacia
arriba.
Los procedimientos para trabajar con desplazamientos están en ‘scm/lily-library.scm’.
[ << Tutorial de Scheme ] | [Arriba][Índice general][Índice] | [ Interfaces para programadores >> ] |
[ < Desplazamientos ] | [ Subir : Variables de LilyPond compuestas ] | [ Dimensiones > ] |
Fracciones
Fractions
Las fracciones tal y como se utilizan por parte de LilyPond se
almacenan, de nuevo, como parejas, esta vez de enteros sin
signo. Mientras que Scheme es capaz de representar números
racionaes como un tipo nativo, musicalmente ‘2/4’ y
‘1/2’ no son lo mismo, y necesitamos poder distinguir entre
ellos. De igual forma, no existe el concepto de ‘fracciones’
negativas en LilyPond. Así pues, 2/4
en LilyPond significa
(2 . 4)
en Scheme, y #2/4
en LilyPond significa
1/2
en Scheme.
[ << Tutorial de Scheme ] | [Arriba][Índice general][Índice] | [ Interfaces para programadores >> ] |
[ < Fracciones ] | [ Subir : Variables de LilyPond compuestas ] | [ Listas-A de propiedades > ] |
Dimensiones
Las parejas se usan también para almacenar intervalos, que
representan un rango de números desde el mínimo (el car
)
hasta el máximo (el cdr
). Los intervalos se usan para
almacenar las dimensiones en X y en Y de los objetos imprimibles.
Para dimensiones en X, el car
es la coordenada X de la
parte izquierda, y el cdr
es la coordenada X de la parte
derecha. Para las dimensiones en Y, el car
es la
coordenada inferior, y el cdr
es la coordenada superior.
Los procedimientos para trabajar con intervalos están en ‘scm/lily-library.scm’. Se deben usar estos procedimientos siempre que sea posible, para asegurar la consistencia del código.
[ << Tutorial de Scheme ] | [Arriba][Índice general][Índice] | [ Interfaces para programadores >> ] |
[ < Dimensiones ] | [ Subir : Variables de LilyPond compuestas ] | [ Cadenas de listas-A > ] |
Listas-A de propiedades
Una lista-A de propiedades es una estructura de datos de LilyPond que es una lista-A cuyas claves son propiedades y cuyos valores son expresiones de Scheme que dan el valor deseado de la propiedad.
Las propiedades de LilyPond son símbolos de Scheme, como por
ejemplo 'thickness
.
Cadenas de listas-A
Una cadena de listas-A es una lista que contiene listas-A de propiedades.
El conjunto de todas las propiedades que se aplican a un grob se almacena por lo general como una cadena de listas-A. Para poder encontrar el valor de una propiedad determinada que debería tener un grob, se busca por todas las listas-A de la cadena, una a una, tratando de encontrar una entrada que contenga la clave de la propiedad. Se devuelve la primera entrada de lista-A que se encuentre, y el valor es el valor de la propiedad.
El procedimiento de Scheme chain-assoc-get
se usa
normalmente para obtener los valores de propiedades.