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