]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-sleur.mf
release: 0.1.41
[lilypond.git] / mf / feta-sleur.mf
1
2 % feta-sleur.mf --  implement runtime MF slurs
3
4 % source file of LilyPond's pretty-but-neat music font
5
6 % (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
7 % & Han-Wen Nienhuys <hanwen@stack.nl>
8
9
10 mode_setup;
11
12 % staffsize#=16pt#;
13
14 pi:=3.14159;
15
16 def atan(expr x) = 
17         (angle(1,x)*pi/180)
18         enddef;
19
20 %breapth, width, depth, height
21
22 % urgh
23 % having mf would be nice if only from a "use the source" point of view.
24 %
25 % getslurcontrol:
26 %        slurhtlimit 90 div /slur_alpha exch def
27 %        slurratio 60 div slur_alpha div  /slur_beta  exch def
28 %        slur_beta mul 1 atan slur_alpha mul
29 %
30 % draw_slur:
31 %        slur_b getslurcontrol 
32 %        slur_dir mul /slur_ht exch def
33 %        slur_b getslurcontrol /slur_indent exch def       
34 %
35
36 interline#:=staffsize#/4;
37 stafflinethickness#:=0.1interline#;
38 sleur_pen#:=stafflinethickness#;
39 slurheightlimit#:=staffsize#/2;
40 % staffrulethickness 1.5 mul  /slur_thick exch def
41 slurthick#:=3/2stafflinethickness#;
42
43 define_pixels(staffsize,interline,stafflinethickness);
44 define_pixels(sleur_pen,slurheightlimit,slurthick);
45
46 sluralpha:=slurheightlimit#*pi/2;
47 % slurratio:=1/3;
48 slurratio:=0.3333;
49 slurbeta:=3/4*pi*slurratio/sluralpha;
50
51 def drawslur(expr dxs,dys,d) =
52         beginchar(0,0,0,0) "Embedded mf";
53                 dx#:=dxs*1pt#;
54                 dy#:=dys*1pt#;
55                 define_pixels(dx,dy);
56                 b#:=length(dx#,dy#);
57 %               message "sluralpha: "&decimal (sluralpha);
58 %               message "slurbeta: "&decimal (slurbeta);
59 %               message "s*b: "&decimal (slurbeta*b#);
60 %               indent#:=sluralpha*atan(slurbeta*b#);
61                 % ugh: huh? 2/5
62                 indent#:=2/5*sluralpha*atan(slurbeta*b#);
63                 define_pixels(b,indent);
64                 height:=indent*d;
65                 z1=(0,0);
66                 z2=(b,0);
67                 z3=(indent,height);
68                 z4=(b-indent,height);
69                 z5=z4-(0,d*slurthick);
70                 z6=z3-(0,d*slurthick);
71                 path boogje;
72                 boogje=z1..controls z3 and z4..z2..controls z5 and z6..cycle;
73                 boogje:=boogje rotated angle(dxs,dys);
74                 pickup pencircle scaled sleur_pen;
75                 filldraw boogje;
76                 show z1;
77                 show z2;
78                 show z3;
79                 show z4;
80                 show z5;
81                 show z6;
82                 endchar;
83         enddef;
84
85 % draw_slur(10,10,1);