summaryrefslogtreecommitdiff
path: root/ps/lily.ps
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