]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-grob-interfaces.scm
* lily/axis-group-engraver.cc (acknowledge_grob): also take
[lilypond.git] / scm / define-grob-interfaces.scm
1 ;;;; interface-description.scm -- part of generated backend documentation
2 ;;;;
3 ;;;;  source file of the GNU LilyPond music typesetter
4 ;;;; 
5 ;;;; (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
6 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
7
8
9 ; should include default value?
10
11
12 (ly:add-interface
13  'cluster-beacon-interface
14
15  "A place holder for the cluster spanner to determine the vertical
16 extents of a cluster spanner at this X position.
17
18  "
19  '(positions)
20  )
21
22 (ly:add-interface
23  'dynamic-interface
24    "Any kind of loudness sign"
25    '()
26     )
27
28 (ly:add-interface
29  'finger-interface
30  "A fingering instruction"
31  '()
32  )
33
34 (ly:add-interface
35  'ligature-interface
36  "A ligature"
37  '()
38  )
39
40 (ly:add-interface
41  'ligature-bracket-interface
42  "A bracket indicating a ligature in the original edition"
43  '(width thickness height ligature-primitive-callback))
44
45 (ly:add-interface
46  'lyric-syllable-interface
47  "a single piece of lyrics"
48  '())
49
50 (ly:add-interface
51  'lyric-interface
52  "Any object that is related to lyrics."
53  '())
54
55 (ly:add-interface
56  'mark-interface
57  "a rehearsal mark"
58  '())
59
60 (ly:add-interface
61  'metronome-mark-interface
62  "a rehearsal mark"
63  '(
64    ))
65
66
67 (ly:add-interface
68  'multi-measure-interface
69  "Multi measure rest, and friends (mmrest number, mmrest text)."
70  '())
71
72
73 (ly:add-interface
74 'note-name-interface
75  "Note name"
76  '(style))
77
78 (ly:add-interface
79  'only-prebreak-interface
80  "Kill this grob after the line breaking process."
81  '() )
82
83 (ly:add-interface
84  'piano-pedal-interface
85  "A piano pedal sign"
86  '())
87
88
89 (ly:add-interface
90  'rhythmic-grob-interface
91  "Any object with a rhythmic basis. Used to determine which grobs 
92 are interesting enough to maintain a hara-kiri staff."
93  '()
94  )
95
96 (ly:add-interface
97  'stanza-number-interface
98  ""
99  '()
100  )
101
102 ;;; todo: this is not typesetting info. Move to interpretation.
103 (ly:add-interface
104  'tablature-interface
105  "tablature notes"
106  '())
107
108
109 ;; todo: figure out where  to put this doco:
110
111 "
112 Grob properties form a name space where you can set variables per
113 object.  Each object however, may have multiple functions. For
114 example, consider a dynamic symbol, such @code{\ff} (fortissimo). It
115 is printed above or below the staff, it is a dynamic sign, and it is a
116 kind of text.
117
118 To reflect this different functions of a grob, procedures and variables
119 are grouped into so-called interfaces.  The dynamic text for example
120 supports the  following interfaces:
121 @table @code 
122 @item font-interface
123   The glyph is built from characters from a font, hence the
124 @code{font-interface}. For objects supporting @code{font-interface}, you
125 can select alternate fonts by setting @code{font-style},
126 @code{font-point-size}, etc.
127
128 @item dynamic-interface
129   Dynamic interface is not associated with any variable or function in
130 particular, but this makes it possible to distinguish this grob from
131 other similar grobs (like @code{TextScript}), that have no meaning of
132 dynamics.
133
134 @item text-interface
135   This interface is for texts that are to be set using special routines
136 to stack text into lines, using kerning, etc.
137
138 @item general-grob-interface
139   This interface is supported by all grob types.
140 @end table
141 "