]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-grob-interfaces.scm
*** empty log message ***
[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 (ly:add-interface
12 'note-name-interface
13  "Note name"
14  '(style))
15
16
17 (ly:add-interface
18  'cluster-beacon-interface
19
20  "A place holder for the cluster spanner to determine the vertical
21 extents of a cluster spanner at this X position.
22
23  "
24  '(positions)
25  )
26
27 (ly:add-interface
28  'dynamic-interface
29    "Any kind of loudness sign"
30    '()
31     )
32
33 (ly:add-interface
34  'finger-interface
35  "A fingering instruction"
36  '()
37  )
38
39 (ly:add-interface
40  'ligature-interface
41  "A ligature"
42  '()
43  )
44
45 (ly:add-interface
46  'ligature-bracket-interface
47  "A bracket indicating a ligature in the original edition"
48  '(width thickness height ligature-primitive-callback))
49
50 (ly:add-interface
51  'mark-interface
52  "a rehearsal mark"
53  '(
54    ))
55
56 (ly:add-interface
57  'metronome-mark-interface
58  "a rehearsal mark"
59  '(
60    ))
61
62 (ly:add-interface
63  'rhythmic-grob-interface
64  "Any object with a rhythmic basis. Used to determine which grobs 
65 are interesting enough to maintain a hara-kiri staff."
66  '()
67  )
68 ;;; todo: this is not typesetting info. Move to interpretation.
69 (ly:add-interface
70  'tablature-interface
71  "tablature notes"
72  '())
73
74
75
76 ;; todo: figure out where  to put this doco:
77
78 "
79 Grob properties form a name space where you can set variables per
80 object.  Each object however, may have multiple functions. For
81 example, consider a dynamic symbol, such @code{\ff} (fortissimo). It
82 is printed above or below the staff, it is a dynamic sign, and it is a
83 kind of text.
84
85 To reflect this different functions of a grob, procedures and variables
86 are grouped into so-called interfaces.  The dynamic text for example
87 supports the  following interfaces:
88 @table @code 
89 @item font-interface
90   The glyph is built from characters from a font, hence the
91 @code{font-interface}. For objects supporting @code{font-interface}, you
92 can select alternate fonts by setting @code{font-style},
93 @code{font-point-size}, etc.
94
95 @item dynamic-interface
96   Dynamic interface is not associated with any variable or function in
97 particular, but this makes it possible to distinguish this grob from
98 other similar grobs (like @code{TextScript}), that have no meaning of
99 dynamics.
100
101 @item text-interface
102   This interface is for texts that are to be set using special routines
103 to stack text into lines, using kerning, etc.
104
105 @item general-grob-interface
106   This interface is supported by all grob types.
107 @end table
108 "