]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/grob-property-description.scm
patch::: 1.5.4.jcn4
[lilypond.git] / scm / grob-property-description.scm
index ce5875078973d0d8536fa5eb954dbc4ddb3e0bfb..ae582e5b886b1ec0c561bf12349dcf86dab571e7 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2000  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;;; (c) 1998--2001  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 (define all-backend-properties '())
 
 (define (grob-property-description symbol type? description)
+  (if (not (equal? (object-property symbol 'backend-doc) #f))
+      (begin
+       (ly-warn (string-append "Redefining " (symbol->string symbol) "\n"))
+       (exit 2)
+      ))
+  
   (set-object-property! symbol 'backend-type? type?)
   (set-object-property! symbol 'backend-doc description)
   (set! all-backend-properties (cons symbol all-backend-properties))
@@ -37,24 +43,24 @@ This procedure is called (using dependency resolution) after line breaking. Retu
 (grob-property-description 'arithmetic-multiplier number? "see @ref{spacing-spanner-interface}.")
 (grob-property-description 'attachment pair? "cons of symbols, '(LEFT-TYPE . RIGHT-TYPE), where both types may be alongside-stem, stem, head or loose-end.")
 
+(grob-property-description 'stem-attachment-function procedure? "Where
+does the stem attach to the notehead? Function takes a symbol argument
+being the style. It returns a (X . Y) pair, specifying location in
+terms of note head bounding box.")
 (grob-property-description 'attachment-offset pair? "cons of offsets,
 '(LEFT-offset . RIGHT-offset).  This offset is added to the
 attachments to prevent ugly slurs.  [fixme: we need more documentation here].
 .")
-(grob-property-description 'auto-interstaff-knee-gap number? ".")
-(grob-property-description 'auto-knee-gap number? ".")
-
+(grob-property-description 'auto-knee-gap number-or-boolean? "the minimal smallest gap between two adjacent beamed chords for which beam will create auto-knees.  Set to false for no auto knees." )
 (grob-property-description 'axes list? "list of axis numbers.
-
 In the case of alignment grobs, this should contain only one number.")
 (grob-property-description 'bar-size number? "size of a bar line.")
 (grob-property-description 'bars list? "list of barline pointers.")
-(grob-property-description 'barsize-procedure procedure? "Procedure that computes the size of a bar line.")
+(grob-property-description 'bar-size-procedure procedure? "Procedure that computes the size of a bar line.")
+(grob-property-description 'baseline-skip number? "Baseline skip to use for multiple lines of text.")
 (grob-property-description 'bass list? " musical-pitch, optional.")
 (grob-property-description 'beam ly-grob? "pointer to the beam, if applicable.")
 (grob-property-description 'beam-space-function procedure? "function returning space given multiplicity.")
-(grob-property-description 'beam-space-function procedure? "function returning space given multiplicity.")
-(grob-property-description 'beam-thickness number? "thickness, measured in staffspace.")
 (grob-property-description 'beam-thickness number? "thickness, measured in staffspace.")
 (grob-property-description 'beam-width number? "width of the tremolo sign.")
 (grob-property-description 'beamAuto boolean? "enable autobeaming?.")
@@ -83,11 +89,9 @@ column as start/begin point. Only columns that have grobs or act as bounds are s
 (grob-property-description 'center-element ly-grob? "grob which will
 be at the center of the group after aligning (when using
 Align_interface::center_on_element). .")
-(grob-property-description 'chordChanges boolean? "only show changes in chord scheme?.")
+(grob-property-description 'bar-line-collapse-height number? "Minimum height of system start delimiter bar-line glyphs.  If equal or smaller, the bar-line is removed.")
 (grob-property-description 'brace-collapse-height number? "Minimum height of system start delimiter brace glyphs.  If equal or smaller, the brace is removed.")
 (grob-property-description 'bracket-collapse-height number? "Minimum height of system start delimiter bracket glyphs.  If equal or smaller, the bracket is removed.")
-(grob-property-description 'bar-line-collapse-height number? "Minimum height of system start delimiter bar-line glyphs.  If equal or smaller, the bar-line is removed.")
-(grob-property-description 'brace-collapse-height number? "Minimum height of system start delimiter brace glyph.  If equal or smaller, the brace is removed.")
 (grob-property-description 'column-space-strength number? "relative strength of space following breakable columns (eg. prefatory matter).")
 (grob-property-description 'columns list? "list of grobs, typically containing paper-columns, list of note-columns.")
 (grob-property-description 'contains-grace boolean? "Used to widen entries for grace notes.")
@@ -97,27 +101,42 @@ Align_interface::center_on_element). .")
 (grob-property-description 'dash-period number? "the length of one dash + white space.")
 (grob-property-description 'dashed number? "[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.")
 (grob-property-description 'de-uglify-parameters list? "list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.")
-(grob-property-description 'default-neutral-direction dir? "Where to go if we're in the middle of the staff.")
+(grob-property-description 'neutral-direction dir? "Where to go if we're in the middle of the staff.")
 (grob-property-description 'delta-y number? "amount of ascension.")
 (grob-property-description 'dependencies list? "list of score-grob pointers that indicate who to compute first for certain global passes.")
-(grob-property-description 'details list? "alist of parameters for the curve shape.")
-(grob-property-description 'details list? "alist containing contaning a few magic constants.")
+(grob-property-description 'details list? "alist of parameters for detailed grob behavior.")
 (grob-property-description 'dir-forced boolean? "set if direction has been forced; read by Beam.")
-(grob-property-description 'dir-function procedure? "function of type (count total)->direction.  Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.")
+(grob-property-description 'dir-function procedure? "function of type (count total)->direction.  Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.
+
+The ways to calculate the direction of a beam work as follows:
+@table @code
+@item majority
+number count of up or down notes
+@item mean
+mean center distance of all notes
+@item median
+mean centre distance weighted per note
+@end table
+
+")
 (grob-property-description 'dir-list list? "list of stem directions, needed for optical spacing correction.")
 (grob-property-description 'direction dir? "up or down, left or right?.")
 (grob-property-description 'direction-source ly-grob? "in case side-relative-direction is set, which grob  to get the direction from .")
 (grob-property-description 'dot ly-grob? "reference to Dots object.")
 (grob-property-description 'dot-count integer? "number of dots.")
-(grob-property-description 'duration-log integer? "2-log of the notehead duration.")
-(grob-property-description 'duration-log integer? "log of the duration, ie. 0=whole note, 1 = half note, etc.")
+(grob-property-description 'duration-log integer? "2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc.")
+(grob-property-description 'dy number? "set by beam: vertical travel height")
 (grob-property-description 'edge-height pair? "a cons that specifies the heights of the vertical egdes '(LEFT-height . RIGHT-height).")
 (grob-property-description 'edge-text pair? "a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text).")
 (grob-property-description 'elements list? "list of grobs, type depending on the Grob where this is set in.")
 (grob-property-description 'expand-limit integer? "maximum number of measures expanded in church rests.")
 (grob-property-description 'extra-extent-X number-pair? "enlarge in X dimension by this much, measured in staff space.")
 (grob-property-description 'extra-extent-Y number-pair? "see @code{extra-extent-Y}.")
-(grob-property-description 'extra-offset number-pair? "pair of reals (a cons) forcing an extra offset   before outputting.")
+(grob-property-description 'extra-offset number-pair? "pair of reals
+(a cons) forcing an extra offset before outputting.
+@code{extra-offset} is added just before `printing' the grob, so the
+typesetting engine is completely oblivious to it.
+")
 (grob-property-description 'extra-space number-pair? "pair of distances (cons LEFT RIGHT).")
 (grob-property-description 'extremity-offset-alist list? "an alist (attachment stem-dir*dir slur-dir*dir) -> offset.  The offset adds to the centre of the notehead, or stem.")
 
@@ -131,7 +150,7 @@ procedure is tried.")
 definition: music roman braces dynamic math ...")
 (grob-property-description 'font-name symbol? "partial font definition:
 base name of font file FIXME: should override other partials.")
-(grob-property-description 'font-point-size number? "partial font definition: exact font size in points FIXME: should override font-relative-size.")
+(grob-property-description 'font-design-size number? "partial font definition: exact font size in points FIXME: should override font-relative-size.")
 (grob-property-description 'font-relative-size number? "partial font definition: the relative size compared the `normal' size.
  0 is style-sheet's normal size, -1 is smaller, +1 is bigger, -1 is smaller.")
 (grob-property-description 'font-series symbol? "partial font definition: medium, bold.")
@@ -160,8 +179,7 @@ is used by @ref{note-collision-interface}.")
 FIXME: in Tie this is a pair of grob pointers, pointing to the two heads of the  tie.
 
 .")
-(grob-property-description 'height number? "in staffspace .")
-(grob-property-description 'height-hs number? "in halfspace.  Only used by Beam.") ; Remove-me 
+(grob-property-description 'height number? "in staffspace.")
 (grob-property-description 'height-quants procedure? "function of type (beam staff-line-thickness) -> list of quants.  Default value: default-beam-dy-quants.
 .")
 (grob-property-description 'horizontal-shift integer? "integer that identifies ranking of note-column for horizontal shifting. This is used by @ref{note-collision-interface}.")
@@ -169,12 +187,14 @@ FIXME: in Tie this is a pair of grob pointers, pointing to the two heads of the
 (grob-property-description 'ideal-distances list? "(OBJ . (DIST . STRENGTH)) pairs.")
 (grob-property-description 'interfaces list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
 (grob-property-description 'inversion list? " musical-pitch, optional.")
+(grob-property-description 'invisible-staff boolean? "is staff invisible?")
 (grob-property-description 'items-worth-living list? "list of interesting items. If empty in a particular system, clear that system.")
 (grob-property-description 'kern number? "amount of extra white space to add.
 
 For text,  this is `relative'(?) to the current alignment.
 
 For barline, space after a thick line.")
+(grob-property-description 'layer number? "The output layer [0..2].  The default is 1.")
 (grob-property-description 'left-padding number? "space left of accs.")
 (grob-property-description 'length number? "Stem length for unbeamed stems, only for user override.")
 (grob-property-description 'lengths list? "Stem length given multiplicity of flag.")
@@ -183,6 +203,7 @@ For barline, space after a thick line.")
 (grob-property-description 'lookup symbol? "lookup method: 'value for plain text, 'name for character-name.")
 (grob-property-description 'magnify number? "the magnification factor.  FIXME: doesn't work for feta fonts.")
 (grob-property-description 'maximum-duration-for-spacing moment? "space as if a duration of this type is available in this measure.")
+(grob-property-description 'maximum-length number? "don't make Grob longer than this")
 (grob-property-description 'maximum-rest-count integer? "kill off rests so we don't more than this number left.")
 (grob-property-description 'merge-differently-dotted boolean? " Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by @ref{note-collision-interface} .")
 (grob-property-description 'minimum-distance number? "minimum distance between notes and rests.")
@@ -195,8 +216,11 @@ Grob at least this long.
 Also works as a scaling parameter for the length of hyphen. .")
 
 ;; FIXME.
-(grob-property-description 'minimum-space number-pair? "(cons LEFT RIGHT).")
-(grob-property-description 'minimum-space number? "minimum distance that the victim should move (after padding).")
+(grob-property-description 'minimum-space number? "minimum distance that the victim should move (after padding).
+
+FIXME: also pair? (cons LEFT RIGHT)
+
+")
 
 (grob-property-description 'minimum-width number? "minimum-width of rest symbol, in staffspace.")
 (grob-property-description 'molecule-callback procedure? "Function taking grob as argument, returning a Scheme encoded Molecule.")
@@ -204,6 +228,7 @@ Also works as a scaling parameter for the length of hyphen. .")
 (grob-property-description 'no-spacing-rods boolean? "read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).")
 (grob-property-description 'no-stem-extend boolean? "should stem not be extended to middle staff line?.")
 (grob-property-description 'non-default boolean? "not set because of existence of a bar?.")
+(grob-property-description 'note-character string? "character to print in a note head.")
 (grob-property-description 'note-width number? "unit for horizontal translation, measured in staff-space.")
 (grob-property-description 'number-gap number? "size of the gap for the number in a tuplet.")
 (grob-property-description 'old-accidentals list? "list of (pitch, accidental) pairs.")
@@ -231,7 +256,9 @@ reference point.
 (grob-property-description 'shortest-starter-duration moment? "duration of the shortest notes that starts exactly in this column.")
 (grob-property-description 'side-relative-direction dir? "if set: get the direction from a different object, and multiply by this.")
 (grob-property-description 'side-support list? "the support, a list of grobs.")
+(grob-property-description 'slope number? "some kind of slope")
 (grob-property-description 'slope-limit number? "set slope to zero if slope is running away steeper than this.")
+(grob-property-description 'space-alist list? "Alist of break align spacing tuples. See basic-property.scm")
 (grob-property-description 'space-function procedure? "function of type multiplicity -> real (in staffspace).")
 (grob-property-description 'spacing-procedure procedure? "procedure
 taking grob as argument. This is called after
@@ -240,13 +267,13 @@ itself.  Return value is ignored.")
 (grob-property-description 'stacking-dir dir? "stack contents of grobs in which direction ?.")
 (grob-property-description 'staff-space number? "Amount of line leading relative to global staffspace.")
 (grob-property-description 'staff-position number? "vertical position in staff spaces, counted from the middle line.")
+(grob-property-description 'staff-symbol boolean? "the staff symbol grob that we're in.")
 (grob-property-description 'staffline-clearance number? "don't get closer than this to stafflines.")
 (grob-property-description 'stem ly-grob? "pointer to Stem object.")
-(grob-property-description 'stem-centered boolean? "Center stems on note heads. Useful for mensural notation.")
 (grob-property-description 'stem-end-position number? "Where does the stem end (the end is opposite to the support-head.")
 (grob-property-description 'stem-length number? "length of stem.")
 (grob-property-description 'stem-shorten list? "shorten stems in forced directions given flag multiplicity.")
-(grob-property-description 'stem-spacing-correction number? "optical correction amount.")
+(grob-property-description 'stem-spacing-correction number? "optical correction amount.  [TODO: doco] ")
 (grob-property-description 'stems list? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
 (grob-property-description 'stretch-distance number-pair? "pair of distances.")
 (grob-property-description 'style symbol? "a string determining what style of  glyph is typeset. Valid choices depend on the function that is reading this property. .")
@@ -256,30 +283,25 @@ one end of the stem.")
 Scheme markup text.  It is defined as follows:
 
 @example
-
-TEXT : STRING | (MARKUP SENTENCE)
-MARKUP: PROPERTY | ABBREV
-SENTENCE: TEXT | SENTENCE TEXT
-PROPERTY: (key . value)
-ABBREV: rows lines roman music bold italic named super sub text, or any font-style
-
+text: string | (head? text+)
+head: markup | (markup+)
+markup-item: property | abbrev
+property: (@var{key} . @var{value})
+abbrev: @code{columns lines roman music bold italic named super sub overstrike text}
+        @code{finger volta timesig mmrest mark script large Large dynamic}
 @end example
 
-So, TEXT is either a string, or a list of which the CAR is a MARKUP.
-MARKUP is either a CONS: an grob property '(key . value) or a symbol:
-a predefined abbreviation for a list of grob properties.
-
 
 The following abbreviations are currently defined:
 @table @samp
-@item rows
-horizontal mode: set all text on one line (default)
+@item columns
+ horizontal mode: set all text on one line (default)
 @item lines
  vertical mode: set every text on new line
 @item roman
  select roman font
 @item music
- select feta font
+ select feta font, and lookup by character name
 @item bold
  select bold series
 @item italic
@@ -292,8 +314,26 @@ horizontal mode: set all text on one line (default)
  superscript
 @item sub
  subscript
-@item any font-style
- finger volta timesig mmrest mark script large Large dynamic
+@item overstrike
+ the next text or character overstrikes this one
+@item finger
+ select fingering number fontstyle
+@item volta
+ select volta number fontstyle
+@item timesig
+ select time signature number fontstyle
+@item mmrest
+ select multi measure rest number fontstyle
+@item mark
+ select mark number fontstyle
+@item script
+ select scriptsize roman fontstyle
+@item large
+ select large roman fontstyle
+@item Large
+ select Large roman fontstyle
+@item dynamic
+ select dynamics fontstyle
 @end table
 .")
 (grob-property-description 'thick number? "thickness, in stafflinethickness.")
@@ -322,5 +362,5 @@ function of type (beam multiplicity dy staff-line-thickness) -> real.  Default v
 (grob-property-description 'word-space number? "elongate left by this much (FIXME: cumbersome semantics).")
 (grob-property-description 'x-gap number? "horizontal gap between notehead and tie.")
 (grob-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems.")
-(grob-property-description 'y-position number? "position of left edge.")
-(grob-property-description 'y-position-hs number? "in half space, position of left edge.  Only used by @ref{Beam}.") ;FXIME
+(grob-property-description 'y-offset number? "extra vertical offset for ties away from the center line.")
+(grob-property-description 'y number? "set by beam: position of left edge.")