;;;;
;;;; source file of the GNU LilyPond music typesetter
;;;;
-;;;; (c) 1998--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
(define (define-grob-property symbol type? description)
`(
(X-offset ,number? "The horizontal amount that this object is moved relative to its X-parent")
(Y-offset ,number? "The vertical amount that this object is moved
-relative to its X-parent")
- (self-X-offset ,number? "")
- (self-Y-offset ,number? "")
+relative to its Y-parent")
(accidentals ,list? "List of alteration numbers")
+ (after-line-breaking ,boolean? "Dummy property, used to trigger callback for after-line-breaking")
(alteration-alist ,list? "List of @code{(@var{pitch}
. @var{accidental})} pairs for key signature.")
(add-stem-support ,boolean? "If set, the Stem object is included in this script's support")
(arpeggio-direction ,ly:dir? "If set, put an
arrow on the arpeggio squiggly line.")
+
+ (arrow ,boolean? "Add an arrow to the line.")
+ (arrow-length ,number? "Arrow length.")
+ (arrow-width ,number? "Arrow width.")
+
(auto-knee-gap ,ly:dimension? "If a gap is found between note heads
where a horizontal beam fits that is larger than this number, make a kneed beam.")
(average-spacing-wishes ,boolean? "If set, the spacing wishes are averaged over staves.")
"Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.")
(baseline-skip ,ly:dimension? "Distance between base lines of
multiple lines of text.")
- (beam-thickness ,ly:dimension? "thickness, measured in staffspace.")
+ (beam-thickness ,ly:dimension? "thickness, measured in staff-space.")
(beam-width ,ly:dimension? "width of the tremolo sign.")
(beamed-stem-shorten ,list? "How much to shorten beamed stems,
when their direction is forced. It is a list, since the value is different
(break-visibility ,vector? "A vector of 3 booleans, #(end-of-line unbroken begin-of-line).
#t means visible, #f means killed.")
- (breakable ,boolean? "Can this object appear at a line break,
-like clefs and bar lines?")
(c0-position ,integer? "An integer indicating the position of
middle C.")
(cautionary-style ,symbol? "How to print cautionary
(color ,color? "The color of this grob.")
- ;;DOCME
- (control-points ,list? "List of 4 offsets (number-pairs) that form control points for the tie/slur shape.")
+ (control-points ,list? "List of offsets (number-pairs) that form
+control points for the tie/slur/bracket shape. For beziers, this
+should list the control points of a 3rd order bezier curve." )
+ (connect-to-neighbor ,pair? "Pair of booleans, indicating whether this
+grob looks as a continued break.")
(damping ,number? "Amount of beam slope damping. 0: no, 1: yes,
100000: horizontal beams.")
(dash-period ,number? "the length of one dash + white space. If
(dash-fraction ,number? "Size of the dashes, relative to
dash-period. Should be between 0.0 (no line) and 1.0 (continuous
line).")
-
- (arrow ,boolean? "Add an arrow to the line.")
- (arrow-length ,number? "Arrow length.")
- (arrow-width ,number? "Arrow width.")
-
- (direction ,ly:dir? "Up or down, left or right?")
+ (default-direction ,ly:dir? "Direction determined by note head positions.")
+ (direction ,ly:dir? "#UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)")
+
(dot-color ,symbol? "Color of dots. Options include
@code{black} and @code{white}.")
(dot-radius ,number? "Radius of dots.")
;; remove me?
(extra-X-extent ,number-pair? "A grob is enlarged in X dimension
by this much.")
- (extra-Y-extent ,number-pair? "See @code{extra-Y-extent}.")
+ (extra-Y-extent ,number-pair? "See @code{extra-X-extent}.")
(X-extent ,number-pair? "Hard coded extent in X direction. ")
(Y-extent ,number-pair? "See @code{X-extent}.")
(grow-direction ,ly:dir? "Crescendo or decrescendo?")
(hair-thickness ,number? "Thickness of the thin line in a bar line.")
- (height ,ly:dimension? "Height of an object in staffspace.")
+ (head-direction ,ly:dir? "Are the note heads left or right in a semitie?")
+ (height ,ly:dimension? "Height of an object in staff-space.")
(height-limit ,ly:dimension? "Maximum slur height: the longer the
slur, the closer it is to this height.")
(line-break-system-details ,list?
"Alist of properties to use when this
column is the start of a system.")
-
+
(line-count ,integer? "The number of staff lines.")
+ (line-positions ,list? "Vertical positions of staff lines.")
+ (line-thickness ,number? "The thickness of the tie/slur contour.")
+ (long-text ,markup? "Text markup. See @usermanref{Text markup}.")
(measure-length ,ly:moment? "Length of a
measure. Used in some spacing situations.")
and notes or beam.")
(minimum-X-extent ,number-pair? "Minimum size of an object in X
dimension, measured in staff space.")
- (minimum-Y-extent ,number-pair? "See @code{minimum-Y-extent}.")
+ (minimum-Y-extent ,number-pair? "See @code{minimum-X-extent}.")
(minimum-length ,ly:dimension? "Try to make a spanner at least
this long. This requires an appropriate callback for the
@code{springs-and-rods} property.")
spacing constraints.")
(no-stem-extend ,boolean? "If set, notes with ledger lines do not
get stems extending to the middle staff line.")
+ (non-musical ,boolean? "True if the grob belongs in a NonMusicalPaperColumn.")
(number-type ,symbol? "Type of numbers to use in label. Choices
include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.")
- (number-visibility ,boolean-or-symbol? "Like
-@code{bracket-visibility}, but for the number.")
-
-
-
(packed-spacing ,boolean? "If set, the notes are spaced as
tightly as possible.")
(padding ,ly:dimension? "Add this much extra space between
objects that are next to each other.")
- (page-penalty ,number? "Penalty for page break at
-this column. 10000 or more means forbid linebreak, -10000 or less
-means force page break. Other values influence page breaking decisions
-as a real penalty.")
- (penalty ,number? "Penalty for line break at
-this column. 10000 or more means forbid line break, -10000 or less
-means force line break. Other values influence line breaking decisions
-as a real penalty.")
-
+ (page-break-permission ,symbol? "Instructs the page breaker on whether to
+put a page break at this column. Can be 'force, or 'allow.")
+ (page-turn-permission ,symbol? "Instructs the page breaker on whether to
+put a page turn at this column. Can be 'force, or 'allow.")
+ (line-break-permission ,symbol? "Instructs the line breaker on whether to
+put a line break at this column. Can be 'force, or 'allow.")
+ (page-break-penalty ,number? "Penalty for page break at
+this column. This affects the choices of the page breaker; it will avoid a page
+break at a column with a positive penalty and prefer a page break at a column
+with a negative penalty.")
+ (page-turn-penalty ,number? "Penalty for a page turn at this column.
+This affects the choices of the page breaker; it will avoid a page
+turn at a column with a positive penalty and prefer a page turn at a column
+with a negative penalty.")
+ (line-break-penalty ,number? "Penalty for a line break at this column.
+This affects the choices of the line breaker; it will avoid a line
+break at a column with a positive penalty and prefer a line break at a column
+with a negative penalty.")
(positions ,pair?
"Pair of staff coordinates @code{(@var{left}
. @var{right})}, where both @var{left} and @var{right} are in the
(remove-first ,boolean? "Remove the first staff of a orchestral score?")
(right-padding ,ly:dimension? "Space to insert between note and
accidentals.")
+ (rotation ,list? "Number of degrees to rotate this object, and what point
+to rotate around. #'(45 0 0) means rotate 45 degrees around the center of this object.")
(same-direction-correction ,number? "Optical correction amount
for stems that are placed in tight configurations. This amount is used
for stems with the same direction to compensate for note-head to stem distance.")
(size ,number? "Size of object, relative to standard size.")
(slope ,number? "The slope of this object.")
(slur-padding ,number? "Extra distance between slur and script.")
- (slur-details ,list?
- "An alist of scoring parameters for slur formatting")
(space-alist ,list? "A table that specifies distances between
prefatory items, like clef and time-signature. The format is an alist
of spacing tuples: @code{(@var{break-align-symbol} @var{type}
(springs-and-rods ,boolean? "Dummy variable for triggering spacing routines.")
(stacking-dir ,ly:dir? "Stack objects in which direction?")
(staff-space ,ly:dimension? "Amount of space between staff lines,
-expressed in global staffspace.")
+expressed in global staff-space.")
(staff-position ,number? "Vertical position, measured in half
staff spaces, counted from the middle line.")
(style ,symbol? "This setting determines in what style a grob is
typeset. Valid choices depend on the @code{stencil} callback reading
this property.")
- (styles ,list? "A list of style symbols.")
(text ,markup? "Text markup. See @usermanref{Text markup}.")
;;FIXME -- Should both be the same?
(text-direction ,ly:dir? "This controls the ordering of the
words. The default RIGHT is for roman text. Arabic or hebrew should
use LEFT.")
(thick-thickness ,number? "Bar line thickness, measured in
-@code{linethickness}.")
+@code{line-thickness}.")
(thickness ,number? "Bar line thickness, measured in
-@code{linethickness}.")
+@code{line-thickness}.")
(thin-kern ,number? "The space after a hair-line in a bar line.")
(threshold ,number-pair? "(@var{min} . @var{max}), where
@var{min} and @var{max} are dimensions in staff space.")
(tie-configuration ,list? "List of (@var{position} . @var{dir})
-pairs, indicating the desired tie configuration.")
+pairs, indicating the desired tie configuration. A non-pair entry in
+the list will cause said tie to be formatted automatically. ")
(transparent ,boolean? "This makes the grob invisible.")
(uniform-stretching ,boolean? "If set, items stretch proportional
to their durations. This looks better in complex polyphonic patterns")
happen?")
(word-space ,ly:dimension? "space to insert between words in texts.")
(width ,ly:dimension? "The width of a grob measured in staff space.")
- (x-gap ,ly:dimension? "The horizontal gap between note head and tie.")
(zigzag-length ,ly:dimension? "The length of the lines of a
zigzag, relative to @code{zigzag-width}. A value of 1 gives 60-degree
zigzags.")
(axis-group-parent-Y ,ly:grob? "Containing Y axis group")
(accidental-grobs ,list? "Alist with (NOTENAME . GROBLIST) entries")
(adjacent-hairpins ,ly:grob-array? "List of directly neighboring hairpins")
- (after-line-breaking ,boolean? "Dummy property, used to trigger callback for after-line-breaking")
(all-elements ,ly:grob-array? "list of all grobs in this line. Its
function is to protect objects from being garbage collected.")
(arpeggio ,ly:grob? "pointer to arpeggio object.")
(beam ,ly:grob? "pointer to the beam, if applicable.")
+ (bracket ,ly:grob? "the bracket for a number.")
(direction-source ,ly:grob? "in case side-relative-direction is
set, which grob to get the direction from .")
(dot ,ly:grob? "reference to Dots object.")
+ (dots ,ly:grob-array? "multiple Dots objects.")
(figures ,ly:grob-array? "Figured bass objects for continuation line.")
(glyph-name ,string? "a name of character within font.")
(pedal-text ,ly:grob? "Pointer to the text of a mixed-style piano pedal.")
(bounded-by-me ,ly:grob-array? "list of spanners that have this
column as start/begin point. Only columns that have grobs or act as
bounds are spaced.")
+ (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del niente)")
(columns ,ly:grob-array? "list of grobs, typically containing
paper-columns or note-column objects.")
(conditional-elements ,ly:grob-array? "Internal use only")
(heads ,ly:grob-array? "List of note heads.")
(items-worth-living ,ly:grob-array? "A list of interesting items. If
empty in a particular staff, then that staff is erased.")
- (details ,list? "alist of parameters for detailed grob behavior.")
+ (details ,list? "alist of parameters for detailed grob behavior.
+
+more information on the allowed parameters can be found by inspecting
+lily/slur-scoring.cc, lily/beam-quanting.cc, and
+lily/tie-formatting-problem.cc. Setting @code{debug-tie-scoring},
+@code{debug-beam-scoring} or @code{debug-slur-scoring} also provides
+useful clues.
+
+")
(note-heads ,ly:grob-array? "List of note head grobs")
(note-head ,ly:grob? "A single note head")
(side-support-elements ,ly:grob-array? "the support, a list of grobs.")
(spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing objects.")
(stems ,ly:grob-array? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
(tuplets ,ly:grob-array? "list of smaller tuplet brackets")
+ (tuplet-number ,ly:grob? "the number for a bracket.")
(left-neighbors ,ly:grob-array? " List of
spacing-wish grobs that are close to the current column.
;; TODO: use interface for this!
(quantized-positions ,number-pair? "Beam positions after quanting.")
- (chord-tremolo ,boolean? "if set, this beam is a tremolo. ")
(begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.")
(quantize-position ,boolean? "If set, a vertical alignment is aligned to be within staff spaces.")
(stem-info ,pair? "caching of stem parameters")
(note-columns ,pair? "list of NoteColumn grobs.")
-;;; add-join would be enough if in Mensural_ligature::brew_ligature_primitive
+;;; add-join would be enough if in ly:mensural-ligature::brew-ligature-primitive
;;; the next note could be seen
(join-right-amount ,number? "")
(shorten ,ly:dimension? "The amount of space that a
stem. Internally used to distribute beam shortening over stems. ")
(slur ,ly:grob? "A pointer to a slur object")
- (staff-hierarchy ,pair? "A nested list of staff symbol grobs.")
(use-breve-rest ,boolean? "Use breve rests for measures longer
than a whole rest.")