]> git.donarmstrong.com Git - lilypond.git/blob - ps/lily.ps
patch::: 1.1.2.jcn1: geile ps vixen enzode
[lilypond.git] / ps / lily.ps
1 %!PS-Adobe-1.0: lily.ps
2 %
3 staffrulethickness /stafflinethickness exch def
4 %
5 % round cappings
6 1 setlinecap
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_decresc
22 {
23         stafflinethickness 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_cresc
37 {
38         stafflinethickness 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 stafflinethickness 1.2 mul /plet_t exch def
57 /draw_plet
58 {
59         plet_t setlinewidth
60 % urg: the only Level-2 PS, check effect in print
61 %       true setstrokeadjust
62         1 setlinecap
63         1 setlinejoin
64         /dir exch def
65         /plet_dy exch def
66         /plet_dx exch def
67         staffheight 2 div /plet_gapx exch def
68         plet_dy plet_dx div plet_gapx mul /plet_gapy exch def
69         staffheight 4 div dir mul /plet_h exch def
70 %
71         0 0 moveto
72         0 plet_h lineto 
73         plet_dx plet_gapx sub 2 div 
74                 plet_dy plet_gapy sub 2 div plet_h add lineto
75         plet_dx plet_gapx add 2 div 
76                 plet_dy plet_gapy add 2 div plet_h add moveto
77         plet_dx plet_dy plet_h add lineto
78         plet_dx plet_dy lineto
79         stroke
80 } bind def
81 %
82 /draw_slur
83 {
84         stafflinethickness setlinewidth
85         moveto
86         curveto
87         lineto
88         curveto
89         gsave
90         fill
91         grestore
92         stroke
93 } bind def
94 %
95 /draw_dashed_slur
96 {
97         1 setlinecap
98         1 setlinejoin
99         setdash
100         setlinewidth
101         moveto
102         curveto
103         stroke
104 } bind def
105 %
106 staffheight 4 div /interline exch def
107 %
108 /bracket_traject
109 {
110   /traject_ds exch def
111   /traject_alpha exch def
112   traject_ds traject_alpha sin mul add
113   exch
114   traject_ds traject_alpha cos mul add
115   exch
116 } bind def
117 %
118 interline 3 div /bracket_b exch def
119 interline 2 mul /bracket_w exch def
120 stafflinethickness 2 mul /bracket_t exch def
121 interline 1.5 mul /bracket_v exch def
122 bracket_v /bracket_u exch def
123 50 /bracket_alpha exch def
124 %
125 /half_bracket
126 {
127 %6
128         0 0
129 %5a
130         bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
131         bracket_alpha bracket_v -0.15 mul bracket_traject
132 %5b
133         1 bracket_h
134         0 bracket_v 0.5 mul bracket_traject
135 %5c
136         0 bracket_h
137 %4a
138         bracket_b bracket_h bracket_t sub
139         0 bracket_v 0.4 mul bracket_traject
140 %4b
141         bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
142         bracket_alpha bracket_v -0.25 mul bracket_traject
143 %4c
144         bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
145 %3
146         bracket_b bracket_h bracket_t sub
147 %2
148         bracket_b 0
149 %1
150         0 0
151 } bind def
152 %
153 /draw_half_bracket {
154         moveto
155         lineto
156         lineto
157         curveto
158         curveto
159         lineto
160         gsave
161         fill
162         grestore
163 } bind def
164 %
165 /draw_bracket % height
166 {
167         2 div bracket_b add /bracket_h exch def
168         bracket_t setlinewidth
169 % urg: the only Level-2 PS, check effect in print
170 %       true setstrokeadjust
171         1 setlinecap
172         1 setlinejoin
173         half_bracket
174         20 copy
175         1 -1 scale
176         draw_half_bracket
177         stroke
178         1 -1 scale
179 % ugh, ugh:
180         0.05 0 translate
181         draw_half_bracket
182         stroke
183 } bind def
184 %