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