]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/parmesan-flags.mf
Merge with master
[lilypond.git] / mf / parmesan-flags.mf
index bdfd5aac0910c2b0cc975be04ca04de7fcc0baab..2ee63a0e930a3fa0170caa65835f20230d3da2ed 100644 (file)
@@ -1,13 +1,22 @@
-% -*-Fundamental-*-
+% -%-Fundamental-%- -*-Metafont-*-
 % parmesan-flags.mf -- implement ancient flags
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2001--2002 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 fet_begingroup ("flags")
 
+save between_staff_lines, on_staff_line, anywhere;
+between_staff_lines = 0;
+on_staff_line = 1;
+anywhere = 2;
+
+save dir_up, dir_down;
+dir_up = 1;
+dir_down = -1;
+
 
 %%%%%%%%
 %
@@ -18,11 +27,11 @@ fet_begingroup ("flags")
 %
 %
 
-def draw_mensural_outermost_flag_i =
-       define_pixels(stafflinethickness, staff_space)
+def draw_mensural_outermost_flare (expr staffline_adjustment) =
+       define_pixels(linethickness, staff_space)
 
        pickup pencircle
-               xscaled 1.00 stafflinethickness
+               xscaled 1.00 linethickness
                yscaled 0.22 staff_space
                rotated -35;
 
@@ -31,38 +40,29 @@ def draw_mensural_outermost_flag_i =
 
        za = (+0.00 staff_space, -0.00 staff_space);
        zb = (+0.15 staff_space, -0.00 staff_space);
-       zc = (+0.45 staff_space, -0.35 staff_space);
-       zd = (+0.45 staff_space, -0.85 staff_space);
-       ze = (+0.00 staff_space, -2.00 staff_space);
-
-       draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_outermost_flag_ii =
-       define_pixels(stafflinethickness, staff_space)
-
-       pickup pencircle
-               xscaled 1.00 stafflinethickness
-               yscaled 0.22 staff_space
-               rotated -35;
-
-       save za, zb, zc, zd, ze;
-       pair za, zb, zc, zd, ze;
 
-       za = (+0.00 staff_space, -0.00 staff_space);
-       zb = (+0.15 staff_space, -0.00 staff_space);
-       zc = (+0.20 staff_space, -0.05 staff_space);
-       zd = (+0.20 staff_space, -1.15 staff_space);
-       ze = (+0.00 staff_space, -1.40 staff_space);
+       if staffline_adjustment = between_staff_lines:
+               zc = (+0.45 staff_space, -0.35 staff_space);
+               zd = (+0.45 staff_space, -0.85 staff_space);
+               ze = (+0.00 staff_space, -2.00 staff_space);
+       elseif staffline_adjustment = on_staff_line:
+               zc = (+0.20 staff_space, -0.05 staff_space);
+               zd = (+0.20 staff_space, -1.15 staff_space);
+               ze = (+0.00 staff_space, -1.40 staff_space);
+       else: % staffline_adjustment = anywhere
+               zc = (+0.33 staff_space, -0.20 staff_space);
+               zd = (+0.33 staff_space, -1.00 staff_space);
+               ze = (+0.00 staff_space, -1.70 staff_space);
+       fi;
 
        draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
 enddef;
 
-def draw_mensural_inner_flag(expr il_shift) =
-       define_pixels(stafflinethickness, staff_space)
+def draw_mensural_inner_flare(expr il_shift) =
+       define_pixels(linethickness, staff_space)
 
        pickup pencircle
-               xscaled 1.00 stafflinethickness
+               xscaled 1.00 linethickness
                yscaled 0.22 staff_space
                rotated -35;
 
@@ -78,297 +78,156 @@ def draw_mensural_inner_flag(expr il_shift) =
        draw za{2,1} .. zb .. zc .. {-2,-1}zd;
 enddef;
 
-fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
-       set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-fet_endchar;
-
-fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
-       set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-fet_endchar;
-
-fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
-       set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#)
-       draw_mensural_outermost_flag_i
-       currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
-       set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#)
-       draw_mensural_outermost_flag_ii
-       currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
+def draw_mensural_flag (expr staffline_adjustment, flares, direction) =
+       save char_box_adjust, flare_shift;
+       if staffline_adjustment = between_staff_lines:
+               flare_shift = 0.5;
+       elseif staffline_adjustment = on_staff_line:
+               flare_shift = 0.0;
+       else: % staffline_adjustment = anywhere
+               flare_shift = 0.25;
+       fi;
+       char_box_adjust = flare_shift+0.5;
+       if direction = dir_up:
+               set_char_box(0,
+                            0.60 staff_space#,
+                            (flares+char_box_adjust)*staff_space#,
+                            0.10 staff_space#)
+       else: % direction = dir_down
+               set_char_box(0.60 staff_space#,
+                            0,
+                            0.10 staff_space#,
+                            (flares+char_box_adjust)*staff_space#)
+       fi;
+       draw_mensural_outermost_flare (staffline_adjustment)
+       for flare_count := 2 step 1 until 4:
+               if flares >= flare_count:
+                       draw_mensural_inner_flare(flare_shift+flare_count-0.5)
+               fi;
+       endfor;
+       if direction = dir_down:
+               currentpicture := currentpicture xscaled -1 yscaled -1;
+       fi;
+enddef;
 
-fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-       draw_mensural_inner_flag(3.0)
+% 8th mensural flag, upwards, between staff lines
+fet_beginchar("8th Mensural Flag (up)", "mensuralu03")
+       draw_mensural_flag (between_staff_lines, 1, dir_up)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
+% 8th mensural flag, upwards, on staff line
+fet_beginchar("8th Mensural Flag (up)", "mensuralu13")
+       draw_mensural_flag (on_staff_line, 1, dir_up)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-       draw_mensural_inner_flag(3.0)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 8th mensural flag, upwards, anywhere
+fet_beginchar("8th Mensural Flag (up)", "mensuralu23")
+       draw_mensural_flag (anywhere, 1, dir_up)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 8th mensural flag, downwards, between staff lines
+fet_beginchar("8th Mensural Flag (down)", "mensurald03")
+       draw_mensural_flag (between_staff_lines, 1, dir_down)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
-       draw_mensural_inner_flag(3.5)
+% 8th mensural flag, downwards, on staff line
+fet_beginchar("8th Mensural Flag (down)", "mensurald13")
+       draw_mensural_flag (on_staff_line, 1, dir_down)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.17)
-       draw_mensural_inner_flag(2.08)
-       draw_mensural_inner_flag(3.00)
+% 8th mensural flag, downwards, anywhere
+fet_beginchar("8th Mensural Flag (down)", "mensurald23")
+       draw_mensural_flag (anywhere, 1, dir_down)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
-       draw_mensural_inner_flag(3.5)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 16th mensural flag, upwards, between staff lines
+fet_beginchar("16th Mensural Flag (up)", "mensuralu04")
+       draw_mensural_flag (between_staff_lines, 2, dir_up)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.17)
-       draw_mensural_inner_flag(2.08)
-       draw_mensural_inner_flag(3.00)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 16th mensural flag, upwards, on staff line
+fet_beginchar("16th Mensural Flag (up)", "mensuralu14")
+       draw_mensural_flag (on_staff_line, 2, dir_up)
 fet_endchar;
 
-%%%%%%%%
-%
-%
-%
-% Mensural Notation
-%
-%
-%
-
-def draw_mensural_outermost_flag_i =
-       define_pixels(stafflinethickness, staff_space)
-
-       pickup pencircle
-               xscaled 1.00 stafflinethickness
-               yscaled 0.22 staff_space
-               rotated -35;
-
-       save za, zb, zc, zd, ze;
-       pair za, zb, zc, zd, ze;
-
-       za = (+0.00 staff_space, -0.00 staff_space);
-       zb = (+0.15 staff_space, -0.00 staff_space);
-       zc = (+0.45 staff_space, -0.35 staff_space);
-       zd = (+0.45 staff_space, -0.85 staff_space);
-       ze = (+0.00 staff_space, -2.00 staff_space);
-
-       draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_outermost_flag_ii =
-       define_pixels(stafflinethickness, staff_space)
-
-       pickup pencircle
-               xscaled 1.00 stafflinethickness
-               yscaled 0.22 staff_space
-               rotated -35;
-
-       save za, zb, zc, zd, ze;
-       pair za, zb, zc, zd, ze;
-
-       za = (+0.00 staff_space, -0.00 staff_space);
-       zb = (+0.15 staff_space, -0.00 staff_space);
-       zc = (+0.20 staff_space, -0.05 staff_space);
-       zd = (+0.20 staff_space, -1.15 staff_space);
-       ze = (+0.00 staff_space, -1.40 staff_space);
-
-       draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_inner_flag(expr il_shift) =
-       define_pixels(stafflinethickness, staff_space)
-
-       pickup pencircle
-               xscaled 1.00 stafflinethickness
-               yscaled 0.22 staff_space
-               rotated -35;
-
-       save zs, za, zb, zc, zd;
-       pair zs, za, zb, zc, zd;
-
-       zs = (0, -il_shift * staff_space);
-       za = zs + (+0.00 staff_space, -0.10 staff_space);
-       zb = zs + (+0.33 staff_space, -0.30 staff_space);
-       zc = zs + (+0.33 staff_space, -0.70 staff_space);
-       zd = zs + (+0.00 staff_space, -0.90 staff_space);
-
-       draw za{2,1} .. zb .. zc .. {-2,-1}zd;
-enddef;
-
-fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
-       set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
+% 16th mensural flag, upwards, anywhere
+fet_beginchar("16th Mensural Flag (up)", "mensuralu24")
+       draw_mensural_flag (anywhere, 2, dir_up)
 fet_endchar;
 
-fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
-       set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
+% 16th mensural flag, downwards, between staff lines
+fet_beginchar("16th Mensural Flag (down)", "mensurald04")
+       draw_mensural_flag (between_staff_lines, 2, dir_down)
 fet_endchar;
 
-fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
-       set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#)
-       draw_mensural_outermost_flag_i
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 16th mensural flag, downwards, on staff line
+fet_beginchar("16th Mensural Flag (down)", "mensurald14")
+       draw_mensural_flag (on_staff_line, 2, dir_down)
 fet_endchar;
 
-fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
-       set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#)
-       draw_mensural_outermost_flag_ii
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 16th mensural flag, downwards, anywhere
+fet_beginchar("16th Mensural Flag (down)", "mensurald24")
+       draw_mensural_flag (anywhere, 2, dir_down)
 fet_endchar;
 
-fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
+% 32th mensural flag, upwards, between staff lines
+fet_beginchar("32th Mensural Flag (up)", "mensuralu05")
+       draw_mensural_flag (between_staff_lines, 3, dir_up)
 fet_endchar;
 
-fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
+% 32th mensural flag, upwards, on staff line
+fet_beginchar("32th Mensural Flag (up)", "mensuralu15")
+       draw_mensural_flag (on_staff_line, 3, dir_up)
 fet_endchar;
 
-fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 32th mensural flag, upwards, anywhere
+fet_beginchar("32th Mensural Flag (up)", "mensuralu25")
+       draw_mensural_flag (anywhere, 3, dir_up)
 fet_endchar;
 
-fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 32th mensural flag, downwards, between staff lines
+fet_beginchar("32th Mensural Flag (down)", "mensurald05")
+       draw_mensural_flag (between_staff_lines, 3, dir_down)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-       draw_mensural_inner_flag(3.0)
+% 32th mensural flag, downwards, on staff line
+fet_beginchar("32th Mensural Flag (down)", "mensurald15")
+       draw_mensural_flag (on_staff_line, 3, dir_down)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
+% 32th mensural flag, downwards, anywhere
+fet_beginchar("32th Mensural Flag (down)", "mensurald25")
+       draw_mensural_flag (anywhere, 3, dir_down)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(2.0)
-       draw_mensural_inner_flag(3.0)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 64th mensural flag, upwards, between staff lines
+fet_beginchar("64th Mensural Flag (up)", "mensuralu06")
+       draw_mensural_flag (between_staff_lines, 4, dir_up)
 fet_endchar;
 
-fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 64th mensural flag, upwards, on staff line
+fet_beginchar("64th Mensural Flag (up)", "mensuralu16")
+       draw_mensural_flag (on_staff_line, 4, dir_up)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
-       draw_mensural_inner_flag(3.5)
+% 64th mensural flag, upwards, anywhere
+fet_beginchar("64th Mensural Flag (up)", "mensuralu26")
+       draw_mensural_flag (anywhere, 4, dir_up)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.17)
-       draw_mensural_inner_flag(2.08)
-       draw_mensural_inner_flag(3.00)
+% 64th mensural flag, downwards, between staff lines
+fet_beginchar("64th Mensural Flag (down)", "mensurald06")
+       draw_mensural_flag (between_staff_lines, 4, dir_down)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_i
-       draw_mensural_inner_flag(1.5)
-       draw_mensural_inner_flag(2.5)
-       draw_mensural_inner_flag(3.5)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 64th mensural flag, downwards, on staff line
+fet_beginchar("64th Mensural Flag (down)", "mensurald16")
+       draw_mensural_flag (on_staff_line, 4, dir_down)
 fet_endchar;
 
-fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
-       set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
-       draw_mensural_outermost_flag_ii
-       draw_mensural_inner_flag(1.17)
-       draw_mensural_inner_flag(2.08)
-       draw_mensural_inner_flag(3.00)
-       currentpicture := currentpicture xscaled -1 yscaled -1;
+% 64th mensural flag, downwards, anywhere
+fet_beginchar("64th Mensural Flag (down)", "mensurald26")
+       draw_mensural_flag (anywhere, 4, dir_down)
 fet_endchar;
 
 fet_endgroup ("flags")