36.9 Alignement des objets

Tous les objets graphiques ont un point de référence ; en matière de coordonnées, ce point de référence est réputé être à la position (0,0).

Tous les objets graphiques ont aussi une étendue horizontale et une étendue verticale. L’étendue horizontale est représentée par une paire de nombres indiquant l’écart entre le point de référence et les bords gauche et droit – l’écart à gauche étant négatif. L’étendue verticale est représentée par une paire de nombres indiquant l’écart entre le point de référence et les bords inférieur et supérieur – l’écart vers le bas étant négatif. Dans l’image suivante, le point en coordonnée 0 est le point de référence ; l’étendue horizontale est #'(-9 . 26), et l’étendue verticale est #'(-10 . 29).

[image of music]

Voir Le modèle de boîte de LilyPond pour plus de détails sur l’étendue des glyphes musicaux.

Les objets graphiques ont aussi des points d’alignement, qui ne sont pas nécessairement le même que leur point de référence. Un point d’alignement est un point relatif à un objet que LilyPond utilise pour aligner cet objet avec d’autres objets. Les points de self-alignment sont relatifs à l’objet lui-même ; les points de parent-alignment sont relatifs à l’objet parent si tant est qu’il y en ait un.

La plupart des objets graphiques ont des parents qui influencent leur positionnement. Pour ces objets, LilyPond bouge l’objet de telle sorte que son point d’alignement soit à la même position que le point d’alignement de son parent. Par exemple, TextScript.parent-alignment-X est la propriété d’un objet TextScript qui spécifie le point d’alignement sur l’axe des abscisses (coordonnée X) relativement au parent de cet objet TextScript (son objet NoteColumn associé) sur lequel LilyPond alignera cet objet TextScript. Lorsque l’on place horizontalement un objet TextScript, LilyPond aligne le point de self-alignment de l’objet sur un point de parent-alignment relatif à l’objet NoteColumn qui est parent du TextScript. Si l’objet NoteColumn a plusieurs enfants, ces objets enfants peuvent avoir des points de parent-alignment différents. See Utilisation de self-alignment-interface pour plus d’information.

La position d’un objet sur la portée est donnée par la valeur des propriétés X-offset et Y-offset. La valeur de X-offset indique l’écart en abscisse (coordonnée X) par rapport au point de référence de l’objet parent ; la valeur de Y-offset indique l’écart par rapport à la ligne médiane de la portée.13 Les valeurs de X-offset et Y-offset peuvent être fournies arbitrairement, ou bien être calculé par des procédures spécifiques qui détermineront l’alignement par rapport à l’objet parent.

Note : Nombre d’objets sont affectés par des considérations spécifiques en matière de positionnement ; jouer sur les valeurs de X-offset ou Y-offset se révélera inefficace en pareil cas, même si l’objet dispose de la self-alignment-interface. Fixer arbitrairement les propriétés X-offset ou Y-offset annihilera alors les effets de la propriété self-alignment correspondante.

Par exemple, une altération peut se repositionner verticalement grâce à son Y-offset ; toute modification de son X-offset restera par contre sans effet.

De nombreux objets peuvent s’aligner antérieurement placés à l’aide de la self-alignment-interface et/ou la side-position-interface. La liste des objets concernée est disponible aux rubriques self-alignment-interface et side-position-interface.

Les indications de repère s’alignent sur des objets de rupture – tels les barres de mesure, clefs, métriques et armures. Certaines propriétés spécifiques – dépendant de la break-aligned-interface – permettent de gérer le positionnement des indications de repère sur ces objets.

Voir aussi

Manuel de notation : Utilisation de break-aligned-interface.

Manuel d’extension : Fonctions de rappel.


Footnotes

(13)

Pour les objets non directement associés à une portée, d’autres conventions peuvent s’appliquer. Par exemple, les valeurs d’un Y-offset des objets InstrumentName sont mesurés à partir du haut de la portée supérieure du système.


GNU LilyPond – Manuel de notation v2.27.4 (development-branch).