[ << Tutoriel Scheme ] | [Racine][Table des matières][Index] | [ Interfaces pour programmeurs >> ] |
[ < Propriétés des objets ] | [Plus haut: Scheme et LilyPond ] | [ Décalages (offsets) > ] |
1.2.7 Variables LilyPond composites
Décalages (offsets) | ||
Fractions | ||
Étendues (extents) | ||
Propriété en alist | ||
Chaînes d’alist |
[ << Tutoriel Scheme ] | [Racine][Table des matières][Index] | [ Interfaces pour programmeurs >> ] |
[ < Variables LilyPond composites ] | [Plus haut: Variables LilyPond composites ] | [ Fractions > ] |
Décalages (offsets)
Les décalages (offset) sur deux axes (coordonnées X et Y) sont
stockés sous forme de paires. Le car
de l’offset
correspond à l’abscisse (coordonnée X) et le cdr
à l’ordonnée
(coordonnée Y).
\override TextScript.extra-offset = #'(1 . 2)
Cette clause affecte la paire (1 . 2)
à la propriété
extra-offset
de l’objet TextScript
. Ces nombres sont
exprimés en espace de portée. La commande aura donc pour effet de
déplacer l’objet d’un espace de portée vers la droite, et de deux
espaces vers le haut.
Les procédures permettant de manipuler les offsets sont regroupées dans le fichier ‘scm/lily-library.scm’.
[ << Tutoriel Scheme ] | [Racine][Table des matières][Index] | [ Interfaces pour programmeurs >> ] |
[ < Décalages (offsets) ] | [Plus haut: Variables LilyPond composites ] | [ Étendues (extents) > ] |
Fractions
Les fractions, telles que LilyPond les utilise, sont aussi stockées sous
forme de paire. Alors que Scheme est tout à fait capable de
représenter des nombres rationnels, vous conviendrez que, musicalement
parlant, ‘2/4’ et ‘1/2’ ne se valent pas ; nous devrons
donc pouvoir les distinguer. Dans le même ordre d’idée, LilyPond ne
connaît pas les « fractions » négatives. Pour ces raisons, 2/4
en LilyPond correspond à (2 . 4)
en Scheme, et #2/4
en
LilyPond correspond à 1/2
en Scheme.
[ << Tutoriel Scheme ] | [Racine][Table des matières][Index] | [ Interfaces pour programmeurs >> ] |
[ < Fractions ] | [Plus haut: Variables LilyPond composites ] | [ Propriété en alist > ] |
Étendues (extents)
Les paires permettent aussi de stocker des intervalles qui représentent
un ensemble de nombres compris entre un minimum (le car
) et un
maximum (le cdr
). Ces intervalles stockent l’étendue, tant au
niveau horizontal (X) que vertical (Y) des objets imprimables. En
matière d’étendue sur les X, le car
correspond à la coordonnée de
l’extrémité gauche, et le cdr
à la coordonnée de l’extrémité
droite. En matière d’étendue sur les Y, le car
correspond à la
coordonnée de l’extrémité basse, et le cdr
à la coordonnée de
l’extrémité haute.
Les procédures permettant de manipuler les offsets sont regroupées dans le fichier ‘scm/lily-library.scm’. Nous vous recommandons l’utilisation de ces procédures dans toute la mesure du possible afin d’assurer la cohérence du code.
[ << Tutoriel Scheme ] | [Racine][Table des matières][Index] | [ Interfaces pour programmeurs >> ] |
[ < Étendues (extents) ] | [Plus haut: Variables LilyPond composites ] | [ Chaînes d'alist > ] |
Propriété en alist
Les propriétés en alist sont des structures de données particulières à LilyPond. Il s’agit de listes associatives dont les clés sont des propriétés et les valeurs des expressions Scheme fournissant la valeur requise pour cette propriété.
Les propriétés LilyPond sont des symboles Scheme, à l’instar de
'thickness
.
Chaînes d’alist
Une chaîne d’alist est une liste contenant les listes associatives d’une propriété.
L’intégralité du jeu de propriétés qui doivent s’appliquer à un objet graphique est en fait stocké en tant que chaîne d’alist. Afin d’obtenir la valeur d’une propriété particulière qu’un objet graphique devrait avoir, on examinera chacune des listes associatives de la chaîne, à la recherche d’une entrée contenant la clé de cette propriété. Est renvoyée la première entrée d’alist trouvée, sa valeur étant la valeur de la propriété.
L’obtention des valeurs de propriété des objets graphiques se réalise en
principe à l’aide de la procédure Scheme chain-assoc-get
.