]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-grob-interfaces.scm
Merge remote branch 'origin/release/unstable' into HEAD
[lilypond.git] / scm / define-grob-interfaces.scm
1 ;;;; This file is part of LilyPond, the GNU music typesetter.
2 ;;;;
3 ;;;; Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
4 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
5 ;;;;
6 ;;;; LilyPond is free software: you can redistribute it and/or modify
7 ;;;; it under the terms of the GNU General Public License as published by
8 ;;;; the Free Software Foundation, either version 3 of the License, or
9 ;;;; (at your option) any later version.
10 ;;;;
11 ;;;; LilyPond is distributed in the hope that it will be useful,
12 ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 ;;;; GNU General Public License for more details.
15 ;;;;
16 ;;;; You should have received a copy of the GNU General Public License
17 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
18
19
20 ;; The interfaces defined here generally have no code (e.g.,
21 ;; dynamic-interface), or have callbacks defined entirely in
22 ;; scheme.  Others interfaces are defined in lily/*.cc with the
23 ;; ADD_INTERFACE function.
24
25 ;; should include default value?
26
27
28 (ly:add-interface
29  'accidental-suggestion-interface
30  "An accidental, printed as a suggestion (typically: vertically over a
31 note)."
32  '())
33
34 (ly:add-interface
35  'ambitus-interface
36  "The line between note heads for a pitch range."
37  '(gap note-heads thickness))
38
39 (ly:add-interface
40  'bar-line-interface
41  "Print a special bar symbol.  It replaces the regular bar
42 symbol with a special symbol.  The argument @var{bartype}
43 is a string which specifies the kind of bar line to print.
44 Options are @code{|}, @code{:|}, @code{|:}, @code{:|:}, @code{:|.|:},
45 @code{:|.:}, @code{.}, @code{||}, @code{|.}, @code{.|}, @code{.|.},
46 @code{|.|}, @code{:}, @code{dashed}, @code{'} and @code{S}.
47
48 These produce, respectively, a normal bar line, a right repeat, a left repeat,
49 a thick double repeat, a thin-thick-thin double repeat,
50 a thin-thick double repeat, a thick bar, a double bar, a start bar,
51 an end bar, a thick double bar, a thin-thick-thin bar,
52 a dotted bar, a dashed bar, a tick as bar line and a segno bar.
53
54 In addition, there is an option
55 @code{||:} which is equivalent to @code{|:} except at line
56 breaks, where it produces a double bar (@code{||}) at the
57 end of the line and a repeat sign (@code{|:}) at the
58 beginning of the new line.
59
60 For segno, @code{S} produces a segno sign except at line breaks,
61 where it produces a double bar (@code{||}) at the
62 end of the line and a segno sign at the beginning of the new line.
63 @code{|S} is equivalent to @code{S} but produces a simple bar line
64 (@code{|}) instead of a double bar line (@code{||}) at line breaks.
65 @code{S|} produces the segno sign at line breaks and starts the following
66 line without special bar lines.
67
68 @code{S|:} and @code{:|S} are used for repeat/segno combinations that are
69 separated at line breaks.  Alternatively, @code{.S|:} and @code{:|S.}
70 may be used which combine repeat signs and segno at the same line in
71 case of a line break.  @code{:|S|:} is a combination of a left repeat
72 (@code{:|}), a segno (@code{S}) and a right repeat @code{|:} which
73 splits before the segno at line breaks; @code{:|S.|:} splits after
74 the segno sign.
75
76 If @var{bartype} is set to @code{empty} then nothing is
77 printed, but a line break is allowed at that spot.
78
79 @code{gap} is used for the gaps in dashed bar lines."
80  '(allow-span-bar bar-extent gap glyph glyph-name has-span-bar
81    hair-thickness kern thin-kern thick-thickness))
82
83 (ly:add-interface
84  'bass-figure-interface
85  "A bass figure text."
86  '(implicit))
87
88 (ly:add-interface
89  'bass-figure-alignment-interface
90  "Align a bass figure."
91  '())
92
93 (ly:add-interface
94  'bend-after-interface
95  "A doit or drop."
96  '(thickness delta-position))
97
98 (ly:add-interface
99  'dynamic-interface
100  "Any kind of loudness sign."
101  '())
102
103 (ly:add-interface
104  'dynamic-line-spanner-interface
105  "Dynamic line spanner."
106  '(avoid-slur))
107
108 (ly:add-interface
109  'dynamic-text-interface
110  "An absolute text dynamic."
111  '(right-padding))
112
113 (ly:add-interface
114  'dynamic-text-spanner-interface
115  "Dynamic text spanner."
116  '(text))
117
118 (ly:add-interface
119  'episema-interface
120  "An episema line."
121  '())
122
123 (ly:add-interface
124  'finger-interface
125  "A fingering instruction."
126  '())
127
128 (ly:add-interface
129  'footnote-interface
130  "Make a footnote."
131  '(automatically-numbered
132    footnote
133    footnote-text
134    numbering-assertion-function))
135
136 (ly:add-interface
137  'footnote-spanner-interface
138  "Make a footnote spanner."
139  '(footnote-text spanner-placement))
140
141 (ly:add-interface
142  'fret-diagram-interface
143  "A fret diagram"
144  '(align-dir fret-diagram-details size dot-placement-list
145    thickness))
146
147 (ly:add-interface
148   'glissando-interface
149   "A glissando."
150   '(glissando-index))
151
152 (ly:add-interface
153  'grace-spacing-interface
154  "Keep track of durations in a run of grace notes."
155  '(columns common-shortest-duration))
156
157 (ly:add-interface
158  'inline-accidental-interface
159  "An inlined accidental (i.e. normal accidentals, cautionary
160 accidentals)."
161  '())
162
163 (ly:add-interface
164  'instrument-specific-markup-interface
165  "Instrument-specific markup (like fret boards or harp pedal diagrams)."
166  '(fret-diagram-details graphical harp-pedal-details size thickness))
167
168 (ly:add-interface
169  'key-cancellation-interface
170  "A key cancellation."
171  '())
172
173 (ly:add-interface
174  'ligature-head-interface
175  "A note head that can become part of a ligature."
176  '())
177
178 (ly:add-interface
179  'ligature-bracket-interface
180  "A bracket indicating a ligature in the original edition."
181  '(width thickness height))
182
183 (ly:add-interface
184  'ligature-interface
185  "A ligature."
186  '())
187
188 (ly:add-interface
189  'lyric-interface
190  "Any object that is related to lyrics."
191  '())
192
193 (ly:add-interface
194  'lyric-syllable-interface
195  "A single piece of lyrics."
196  '())
197
198 (ly:add-interface
199  'mark-interface
200  "A rehearsal mark."
201  '())
202
203 (ly:add-interface
204  'metronome-mark-interface
205  "A metronome mark."
206  '())
207
208 (ly:add-interface
209  'multi-measure-interface
210  "Multi measure rest, and the text or number that is printed over it."
211  '(bound-padding))
212
213 (ly:add-interface
214  'note-name-interface
215  "Note names."
216  '())
217
218 (ly:add-interface
219  'octavate-eight-interface
220   "Interface that permits the nominal identification of the octavian
221 annotation that multiplies by two the freqency of the pitches present
222 in a given staff were they played on a clef that lacked said octavian
223 annotation."
224   '())
225
226 (ly:add-interface
227  'only-prebreak-interface
228  "Kill this grob after the line breaking process."
229  '())
230
231 (ly:add-interface
232  'parentheses-interface
233  "Parentheses for other objects."
234  '(padding stencils))
235
236 (ly:add-interface
237  'percent-repeat-interface
238  "Beat, Double and single measure repeats."
239  '(dot-negative-kern slash-negative-kern slope thickness))
240
241 (ly:add-interface
242  'piano-pedal-interface
243  "A piano pedal sign."
244  '())
245
246 (ly:add-interface
247  'piano-pedal-script-interface
248  "A piano pedal sign, fixed size."
249  '())
250
251 (ly:add-interface
252  'pitched-trill-interface
253  "A note head to indicate trill pitches."
254  '(accidental-grob))
255
256 (ly:add-interface
257  'rhythmic-grob-interface
258  "Any object with a duration.  Used to determine which grobs are
259 interesting enough to maintain a hara-kiri staff."
260  '())
261
262 (ly:add-interface
263  'spacing-options-interface
264  "Supports setting of spacing variables."
265  '(spacing-increment shortest-duration-space))
266
267 (ly:add-interface
268  'span-bar-interface
269  "A bar line that is spanned between other barlines.
270   This interface is used for bar lines that connect different
271   staves."
272  '(glyph-name elements pure-Y-common pure-relevant-grobs
273    pure-relevant-items pure-relevant-spanners))
274
275 (ly:add-interface
276  'stanza-number-interface
277  "A stanza number, to be put in from of a lyrics line."
278  '())
279
280 (ly:add-interface
281  'string-number-interface
282  "A string number instruction."
283  '())
284
285 (ly:add-interface
286  'stroke-finger-interface
287  "A right hand finger instruction."
288  '(digit-names))
289
290 (ly:add-interface
291  'system-start-text-interface
292  "Text in front of the system."
293  '(long-text self-alignment-X self-alignment-Y text))
294
295 (ly:add-interface
296  'tab-note-head-interface
297  "A note head in tablature."
298  '(details display-cautionary span-start))
299
300 (ly:add-interface
301  'trill-spanner-interface
302  "A trill spanner."
303  '())
304
305 (ly:add-interface
306  'trill-pitch-accidental-interface
307  "An accidental for trill pitch."
308  '())
309
310 (ly:add-interface
311  'unbreakable-spanner-interface
312  "A spanner that should not be broken across line breaks.  Override
313 with @code{breakable=##t}."
314  '(breakable))
315
316 (ly:add-interface
317  'volta-interface
318  "A volta repeat."
319  '())