[ << Scheme-Tutorium ] | [Top][Contents][Index] | [ Schnittstellen für Programmierer >> ] |
[ < Objekteigenschaften ] | [ Up : Scheme in LilyPond ] | [ Interne musikalische Repräsentation > ] |
1.2.6 Zusammengesetzte LilyPond-Variablen
Abstände (offset)
Zweidimensionale Abstände (X- und Y-Koordinaten) werden
als pairs (Paare) gespeichert. Der car
-Wert des
Abstands ist die X-Koordinate und der cdr
-Wert die
Y-Koordinate.
\override TextScript.extra-offset = #'(1 . 2)
Hierdurch wird das Paar (1 . 2)
mit der Eigenschaft extra-offset
des TextScript-Objektes verknüpft. Diese Zahlen werden in
Systembreiten gemessen, so dass der Befehl das Objekt eine Systembreite
nach rechts verschiebt und zwei Breiten nach oben.
Prozeduren, um mit Abständen zu arbeiten, finden sich in scm/lily-library.scm.
Brüche (fractions)
Brüche, wie sie LilyPond benutzt, werden wiederum als Paare gespeichert,
dieses Mal als unbezeichnete ganze Zahlen. Während Scheme rationale Zahlen
als einen negativen Typ darstellen kann, sind musikalische gesehen
‘2/4’ und ‘1/2’ nicht das selbe, sodass man zwischen beiden unterscheiden
können muss. Ähnlich gibt es auch keine negativen Brüche in LilyPonds Sinn.
Somit bedeutet 2/4
in LilyPond (2 . 4)
in Scheme, und #2/4
in
LilyPond bedeutet 1/2
in Scheme.
Bereiche (extend)
Paare werden auch benutzt, um Intervalle zu speichern, die einen Zahlenbereich
vom Minimum (dem car
) bis zum Maximum (dem cdr
) darstellen.
Intervalle werden benutzt, um die X- und Y-Ausdehnung von druckbaren
Objekten zu speichern. Bei X-Ausdehnungen ist car
die linke
X-Koordinate und cdr
die rechte X-Koordinate. Für Y-Ausdehnungen
ist car
die untere Koordinate und cdr
die obere Koordinate.
Prozeduren, um mit Intervallen zu arbeiten, finden sich in scm/lily-library.scm. Diese Prozeduren sollten benutzt, wenn es möglich ist, um den Code konsistent zu halten.
Eigenschafts-Alisten (property alist)
Eine Eigenschafts-Aliste ist eine LilyPond-Datenstruktur, die eine Aliste darstellt, deren Schlüssel Eigenschaften sind und deren Werte Scheme-Ausdrücke sind, die den erwünschen Wert der Eigenschaft ausgeben.
LilyPond-Eigenschaften sind Scheme-Symbole, wie etwa 'thickness
(Dicke).
Alisten-Ketten (alist chains)
Eine Alisten-Kette ist eine Liste, die Eigenschafts-Alisten enthält.
Die Menge aller Eigenschaften, die sich auf einen Grob auswirken, wird typischerweise in einer Alisten-Kette gespeichert. Um den Wert einer bestimmten Eigenschaft zu finden, die ein Grob haben soll, wird jede Liste in der Kette nach einander durchsucht, wobei nach einem Eintrag geschaut wird, der den Eigenschaftsschlüssel enthält. Der erste gefundene Alisten-Eintrag wird benutzt und dessen Wert ist der Wert der Eigenschaft.
Die Scheme-Prozedur chain-assoc-get
wird normalerweise benutzt,
um Grob-Eigenschaftenwerte zu erhalten.
[ << Scheme-Tutorium ] | [Top][Contents][Index] | [ Schnittstellen für Programmierer >> ] |
[ < Objekteigenschaften ] | [ Up : Scheme in LilyPond ] | [ Interne musikalische Repräsentation > ] |