]> git.donarmstrong.com Git - lilypond.git/blob - ps/lily.ps
release: 1.1.28
[lilypond.git] / ps / lily.ps
1 %!PS-Adobe-1.0: lily.ps
2
3 % 2 setlanguagelevel %  hmm. auto_resize_dicts doesn't help either. 
4 % round cappings
5 1 setlinecap
6
7 /draw_beam % width slope thick
8 {
9         2 div /beam_thick exch def
10         /beam_slope exch def
11         /beam_wd exch def
12         beam_slope beam_wd mul /beam_ht exch def
13         0 beam_thick neg moveto 
14         beam_wd beam_ht rlineto 
15         0 beam_thick 2 mul rlineto
16         0 beam_thick lineto
17         closepath fill
18 } bind def
19
20 /draw_decrescendo % width height cons
21 {
22         stafflinethickness setlinewidth
23         /cresc_cont exch def
24         /cresc_ht exch def
25         /cresc_wd exch def
26
27         cresc_wd cresc_cont moveto
28         0 cresc_ht lineto
29         stroke
30         cresc_wd cresc_cont neg moveto
31         0 cresc_ht neg lineto
32         stroke
33 } bind def
34
35 /draw_crescendo % width height cons
36 {
37         stafflinethickness setlinewidth
38         /cresc_cont exch def
39         /cresc_ht exch def
40         /cresc_wd exch def
41
42         0 cresc_cont moveto
43         cresc_wd cresc_ht lineto
44         stroke
45         0 cresc_cont neg moveto
46         cresc_wd cresc_ht neg lineto
47         stroke
48 } bind def
49
50 /lily_distance 
51 {
52         1 copy mul exch 1 copy mul add sqrt
53 } bind def
54
55 /draw_tuplet % dx dy thick dir
56 {
57 % urg: the only Level-2 PS, check effect in print
58 %       true setstrokeadjust
59         /dir exch def
60         setlinewidth
61         1 setlinecap
62         1 setlinejoin
63         /tuplet_dy exch def
64         /tuplet_dx exch def
65         staffheight 2 div /tuplet_gapx exch def
66         tuplet_dy tuplet_dx div tuplet_gapx mul /tuplet_gapy exch def
67         staffheight 4 div dir mul /tuplet_h exch def
68
69         0 0 moveto
70         0 tuplet_h lineto 
71         tuplet_dx tuplet_gapx sub 2 div 
72                 tuplet_dy tuplet_gapy sub 2 div tuplet_h add lineto
73         tuplet_dx tuplet_gapx add 2 div 
74                 tuplet_dy tuplet_gapy add 2 div tuplet_h add moveto
75         tuplet_dx tuplet_dy tuplet_h add lineto
76         tuplet_dx tuplet_dy lineto
77         stroke
78 } bind def
79
80 /draw_volta % w thick last
81 {
82         /last exch def
83         setlinewidth
84         /volta_w exch def
85         staffheight 2 div /volta_h exch def
86 % urg: the only Level-2 PS, check effect in print
87 %       true setstrokeadjust
88         1 setlinecap
89         1 setlinejoin
90         0 0 moveto
91         0 volta_h lineto
92         volta_w volta_h lineto
93         last 0 eq {
94                 volta_w 0 lineto
95         } if
96         stroke
97 } bind def
98
99 % this is for drawing slurs.
100 /draw_bezier_sandwich 
101 {
102         stafflinethickness setlinewidth
103         moveto
104         curveto
105         lineto
106         curveto
107         gsave
108         fill
109         grestore
110         stroke
111 } bind def
112
113 /draw_dashed_slur
114 {
115         1 setlinecap
116         1 setlinejoin
117         setdash
118         setlinewidth
119         8 -2 roll
120         moveto
121         curveto
122         stroke
123 } bind def
124
125
126
127 /bracket_traject
128 {
129   /traject_ds exch def
130   /traject_alpha exch def
131   traject_ds traject_alpha sin mul add
132   exch
133   traject_ds traject_alpha cos mul add
134   exch
135 } bind def
136
137
138
139 /half_bracket
140 {
141 %6
142         0 0
143 %5a
144         bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
145         bracket_alpha bracket_v -0.15 mul bracket_traject
146 %5b
147         1 bracket_h
148         0 bracket_v 0.5 mul bracket_traject
149 %5c
150         0 bracket_h
151 %4a
152         bracket_b bracket_h bracket_t sub
153         0 bracket_v 0.4 mul bracket_traject
154 %4b
155         bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
156         bracket_alpha bracket_v -0.25 mul bracket_traject
157 %4c
158         bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
159 %3
160         bracket_b bracket_h bracket_t sub
161 %2
162         bracket_b 0
163 %1
164         0 0
165 } bind def
166
167 /draw_half_bracket {
168         moveto
169         lineto
170         lineto
171         curveto
172         curveto
173         lineto
174         gsave
175         fill
176         grestore
177 } bind def
178
179 /draw_bracket % height
180 {
181         2 div bracket_b add /bracket_h exch def
182         bracket_t setlinewidth
183 % urg: the only Level-2 PS, check effect in print
184 %       true setstrokeadjust
185         1 setlinecap
186         1 setlinejoin
187         half_bracket
188         20 copy
189         1 -1 scale
190         draw_half_bracket
191         stroke
192         1 -1 scale
193 % ugh, ugh:
194         0.05 0 translate
195         draw_half_bracket
196         stroke
197 } bind def
198