]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-sleur.mf
patch::: 0.1.27: isi
[lilypond.git] / mf / feta-sleur.mf
1 % feta-sleur.mf 
2 mode_setup;
3 thin:=.2pt;
4 thick:=5thin;
5 ybow:=.2;
6 abow:=1.5;
7
8 def draw_slur(expr a,b,d) =
9         beginchar(0,0,0,0) "Embedded mf";
10                 % huh, factor 8?
11                 z1=8a;
12                 z2=8b;
13                 save alpha; alpha=angle(z2-z1);
14                 save len; len=length(z2-z1);
15                 z3=(0,0);
16                 z4=(len/2,len*ybow*d);
17                 z5=(len,0);
18                 save beta; beta=abow*angle(z4-z3);
19                 penpos3(thin,90+beta);
20                 penpos4(thick,90);
21                 penpos5(thin,90-beta);
22                 pickup pencircle;
23                 path boogje;
24                 boogje = z3l{dir(beta)}..z4l{right}..z5l{dir(-beta)}
25                         ..z5r{dir(180-beta)}..z4r{left}
26                         ..z3r{dir(180+beta)}..cycle;
27                 penlabels(1,2,3,4,5);
28                 boogje := boogje rotated alpha;
29                 % silly mo*tex convenction
30 %               boogje := boogje shifted ((x1-x2)/2,0);
31                 fill boogje;
32                 endchar;
33         enddef;
34
35 def sign(expr a) =
36         ((abs(a))/(a))
37         enddef;
38
39 def xdraw_slur(expr a,b,d) =
40         beginchar(0,0,0,0) "Embedded mf";
41                 % huh, factor 8?
42                 z1=8a;
43                 z3=8b;
44                 save alpha; alpha=angle(z3-z1);
45                 z2=(1/2[x1,x3],1/2[y1,y3])+d*ybow*(x3-x1)*dir(alpha+90);
46                 save beta; beta=d*sign(y3-y1)*abow*angle(z2-z1)-alpha;
47 %               message "d: "&decimal d;
48 %               message "dy: "& decimal sign(y3-y1);
49 %               message "alpha: "&decimal alpha;
50 %               message "beta: "&decimal beta;
51                 penpos1(thin,alpha+beta+90);
52                 penpos2(thick,alpha+90);
53                 penpos3(thin,alpha-beta+90);
54                 pickup pencircle;
55                 fill z1l{dir(alpha+beta)}..z2l{dir(alpha)}
56                         ..z3l{dir(alpha-beta)}..z3r{dir(180+alpha-beta)}
57                         ..z2r{dir(180+alpha)}..z1r{dir(180+alpha+beta)}
58                         ..cycle;
59                 penlabels(1,2,3);
60                 endchar;
61         enddef;