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