]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-grob-interfaces.scm
Add '-dcrop' option to ps and svg backends
[lilypond.git] / scm / define-grob-interfaces.scm
1 ;;;; This file is part of LilyPond, the GNU music typesetter.
2 ;;;;
3 ;;;; Copyright (C) 1998--2015  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
38    length-fraction
39    maximum-gap
40    note-heads
41    thickness))
42
43 (ly:add-interface
44  'bar-line-interface
45  "Print a special bar symbol.  It replaces the regular bar
46 symbol with a special symbol.  The argument @var{bartype}
47 is a string which specifies the kind of bar line to print.
48
49 The list of allowed glyphs and predefined bar lines can be
50 found in @file{scm/bar-line.scm}.
51
52 @code{gap} is used for the gaps in dashed bar lines."
53  '(allow-span-bar
54    bar-extent
55    gap
56    glyph
57    glyph-name
58    hair-thickness
59    has-span-bar
60    kern
61    rounded
62    segno-kern
63    thick-thickness))
64
65 (ly:add-interface
66  'bass-figure-interface
67  "A bass figure text."
68  '(implicit))
69
70 (ly:add-interface
71  'bass-figure-alignment-interface
72  "Align a bass figure."
73  '())
74
75 (ly:add-interface
76  'bend-after-interface
77  "A doit or drop."
78  '(delta-position
79    thickness))
80
81 (ly:add-interface
82  'clef-modifier-interface
83  "The number describing transposition of the clef, placed below
84 or above clef sign. Usually this is 8 (octave transposition)
85 or 15 (two octaves), but LilyPond allows any integer here."
86  '(clef-alignments))
87
88 (ly:add-interface
89  'dynamic-interface
90  "Any kind of loudness sign."
91  '())
92
93 (ly:add-interface
94  'dynamic-line-spanner-interface
95  "Dynamic line spanner."
96  '(avoid-slur))
97
98 (ly:add-interface
99  'dynamic-text-interface
100  "An absolute text dynamic."
101  '(right-padding))
102
103 (ly:add-interface
104  'dynamic-text-spanner-interface
105  "Dynamic text spanner."
106  '(text))
107
108 (ly:add-interface
109  'episema-interface
110  "An episema line."
111  '())
112
113 (ly:add-interface
114  'finger-interface
115  "A fingering instruction."
116  '())
117
118 (ly:add-interface
119  'footnote-interface
120  "Make a footnote."
121  '(automatically-numbered
122    footnote
123    footnote-text
124    numbering-assertion-function))
125
126 (ly:add-interface
127  'footnote-spanner-interface
128  "Make a footnote spanner."
129  '(footnote-text
130    spanner-placement))
131
132 (ly:add-interface
133  'fret-diagram-interface
134  "A fret diagram"
135  '(align-dir
136    dot-placement-list
137    fret-diagram-details
138    size
139    thickness))
140
141 (ly:add-interface
142  'glissando-interface
143  "A glissando."
144  '(glissando-index))
145
146 (ly:add-interface
147  'grace-spacing-interface
148  "Keep track of durations in a run of grace notes."
149  '(columns
150    common-shortest-duration))
151
152 (ly:add-interface
153  'horizontal-bracket-text-interface
154  "Label for an analysis bracket."
155  '(bracket columns))
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  'measure-counter-interface
205  "A counter for numbering measures."
206  '(columns
207    count-from
208    spacing-pair))
209
210 (ly:add-interface
211  'metronome-mark-interface
212  "A metronome mark."
213  '())
214
215 (ly:add-interface
216  'multi-measure-interface
217  "Multi measure rest, and the text or number that is printed over it."
218  '(bound-padding))
219
220 (ly:add-interface
221  'note-name-interface
222  "Note names."
223  '())
224
225 (ly:add-interface
226  'number-interface
227  "Numbers."
228  '(number-type))
229
230 (ly:add-interface
231  'only-prebreak-interface
232  "Kill this grob after the line breaking process."
233  '())
234
235 (ly:add-interface
236  'outside-staff-axis-group-interface
237  "A vertical axis group on which outside-staff skyline calculations are done."
238  '(outside-staff-placement-directive vertical-skyline-elements))
239
240 (ly:add-interface
241  'outside-staff-interface
242  "A grob that could be placed outside staff."
243  '(outside-staff-horizontal-padding outside-staff-padding outside-staff-priority))
244
245 (ly:add-interface
246  'parentheses-interface
247  "Parentheses for other objects."
248  '(padding
249    stencils))
250
251 (ly:add-interface
252  'percent-repeat-interface
253  "Beat, Double and single measure repeats."
254  '(dot-negative-kern
255    slash-negative-kern
256    slope
257    thickness))
258
259 (ly:add-interface
260  'piano-pedal-interface
261  "A piano pedal sign."
262  '())
263
264 (ly:add-interface
265  'piano-pedal-script-interface
266  "A piano pedal sign, fixed size."
267  '())
268
269 (ly:add-interface
270  'pitched-trill-interface
271  "A note head to indicate trill pitches."
272  '(accidental-grob))
273
274 (ly:add-interface
275  'rhythmic-grob-interface
276  "Any object with a duration.  Used to determine which grobs are
277 interesting enough to maintain a hara-kiri staff."
278  '())
279
280 (ly:add-interface
281  'spacing-options-interface
282  "Supports setting of spacing variables."
283  '(spacing-increment
284    shortest-duration-space))
285
286 (ly:add-interface
287  'span-bar-interface
288  "A bar line that is spanned between other barlines.
289   This interface is used for bar lines that connect different
290   staves."
291  '(glyph-name
292    elements
293    pure-Y-common
294    pure-relevant-grobs
295    pure-relevant-items
296    pure-relevant-spanners))
297
298 (ly:add-interface
299  'stanza-number-interface
300  "A stanza number, to be put in from of a lyrics line."
301  '())
302
303 (ly:add-interface
304  'string-number-interface
305  "A string number instruction."
306  '())
307
308 (ly:add-interface
309  'stroke-finger-interface
310  "A right hand finger instruction."
311  '(digit-names))
312
313 (ly:add-interface
314  'system-start-text-interface
315  "Text in front of the system."
316  '(long-text
317    self-alignment-X
318    self-alignment-Y
319    text))
320
321 (ly:add-interface
322  'tab-note-head-interface
323  "A note head in tablature."
324  '(details display-cautionary span-start))
325
326 (ly:add-interface
327  'time-signature-interface
328  "A time signature, in different styles.  The following values for @code{style} are are recognized:
329
330  @table @code
331  @item C
332  4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits. The value @code{default} is equivalent to @code{C}.
333  @item neomensural
334  2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are typeset with neo-mensural style mensuration marks.  All other time signatures are written with two digits.
335  @item mensural
336  2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are typeset with mensural style mensuration marks.  All other time signatures are written with two digits.
337  @item single-digit
338  All time signatures are typeset with a single digit, e.g., 3/2 is written as 3.
339  @item numbered
340  All time signatures are typeset with two digits.
341  @end table"
342  '(fraction style))
343
344 (ly:add-interface
345  'trill-spanner-interface
346  "A trill spanner."
347  '())
348
349 (ly:add-interface
350  'trill-pitch-accidental-interface
351  "An accidental for trill pitch."
352  '())
353
354 (ly:add-interface
355  'unbreakable-spanner-interface
356  "A spanner that should not be broken across line breaks.  Override
357 with @code{breakable=##t}."
358  '(breakable))
359
360 (ly:add-interface
361  'volta-interface
362  "A volta repeat."
363  '())