HorizontalBracket grobs are created by: Horizontal_bracket_engraver
Other grobs have a shape that depends on the horizontal spacing. For
example, slur, beam, tie, etc. These grobs form a subtype called
Spanner
. All spanners have two span-points (these must be
Item
s), one on the left and one on the right. The left bound is
also the X-reference point of the spanner.
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Position a victim object (this one) next to other objects (the support). In this case, the property direction
signifies where to put the victim object relative to the support (left or right, up or down?)
direction
(direction)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.2
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A horizontal bracket encompassing notes.
columns
(list of grobs)
direction
(direction)
-1
thickness
(number)
1.0
In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.
All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.
Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.
A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.
X-extent
(pair of numbers)
X-extent-callback
(procedure)
The size of a grob are determined through callbacks, settable with
grob properties X-extent-callback
and Y-extent-callback
.
There can be only one extent-callback for each axis. No callback
(Scheme value #f
) means: `empty in this direction'. If you fill
in a pair of numbers, that pair hard-codes the extent in that
coordinate.
Default value: (unset)
X-offset-callbacks
(list)
Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.
Offset callbacks can be stacked, i.e.
property .... override #'Y-offset-callbacks = #(list callback1 callback2 callback3)
The callbacks will be executed in the order callback3 callback2
callback1
. This is used for quantized positioning: the staccato dot is
above or below a note head, and it must not be on a staff-line. To
achieve this, the staccato dot has two callbacks: one that positions the
grob above or below the note head, and one that rounds the Y-position of
the grob to the nearest open space.
Default value: (unset)
Y-extent
(pair of numbers)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
The alist contains the following entries: name, interfaces.
Default value: '((name . HorizontalBracket) (interfaces grob-interface horizontal-bracket-interface side-position-interface spanner-interface))
minimum-X-extent
(pair of numbers)
minimum-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
All visible, i.e. non-transparent, grobs have a callback to create a
Molecule. The callback should be a Scheme function taking one argument
(the grob) and returning a Molecule. Most molecule callbacks are
written in C++, but you can also write them in Scheme. An example is
provided in input/regression/molecule-hacking.ly
.
Default value: Horizontal_bracket::brew_molecule
spacing-procedure
(procedure)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
This page is for LilyPond-2.0.1 (stable-branch).