X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Fparmesan-flags.mf;h=6b6343b42446be80404e7bab20611ff902635eaf;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=2ee63a0e930a3fa0170caa65835f20230d3da2ed;hpb=87eedcd59f4082cb0841528ad5bc82cb1d1191e3;p=lilypond.git diff --git a/mf/parmesan-flags.mf b/mf/parmesan-flags.mf index 2ee63a0e93..6b6343b424 100644 --- a/mf/parmesan-flags.mf +++ b/mf/parmesan-flags.mf @@ -3,19 +3,21 @@ % % source file of LilyPond's pretty-but-neat music font % -% (c) 2001--2006 Juergen Reuter +% (c) 2001--2008 Juergen Reuter % -fet_begingroup ("flags") +fet_begingroup ("flags"); save between_staff_lines, on_staff_line, anywhere; -between_staff_lines = 0; -on_staff_line = 1; -anywhere = 2; + +between_staff_lines := 0; +on_staff_line := 1; +anywhere := 2; save dir_up, dir_down; -dir_up = 1; -dir_down = -1; + +dir_up := 1; +dir_down := -1; %%%%%%%% @@ -27,207 +29,298 @@ dir_down = -1; % % -def draw_mensural_outermost_flare (expr staffline_adjustment) = - define_pixels(linethickness, staff_space) +def draw_mensural_outermost_flare (expr staffline_adjustment, d_) = + define_pixels (linethickness, staff_space); - pickup pencircle - xscaled 1.00 linethickness - yscaled 0.22 staff_space - rotated -35; + save ellipse, pat, T; + path ellipse, pat; + transform T; - save za, zb, zc, zd, ze; - pair za, zb, zc, zd, ze; + T := identity xscaled 1.00 linethickness + yscaled 0.22 staff_space + rotated -35; + pickup pencircle transformed T; + ellipse := fullcircle transformed T; - za = (+0.00 staff_space, -0.00 staff_space); - zb = (+0.15 staff_space, -0.00 staff_space); + z11 = (+0.00 staff_space, -0.00 staff_space); + z12 = (+0.15 staff_space, -0.00 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); + z13 = (+0.45 staff_space, -0.35 staff_space); + z14 = (+0.45 staff_space, -0.85 staff_space); + z15 = (+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); + z13 = (+0.20 staff_space, -0.05 staff_space); + z14 = (+0.20 staff_space, -1.15 staff_space); + z15 = (+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); + z13 = (+0.33 staff_space, -0.20 staff_space); + z14 = (+0.33 staff_space, -1.00 staff_space); + z15 = (+0.00 staff_space, -1.70 staff_space); fi; - draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; + pat := z13{z13 - z12} + .. {z15 - z14}z14; + + fill get_subpath (ellipse, z11 - z12, z12 - z11, z11) + -- get_subpoint (ellipse, z12 - z11, z12) + -- get_subpoint (ellipse, z13 - z12, z12) + -- get_subpoint (ellipse, direction 0 of pat, z13) + {direction 0 of pat} + .. {direction 1 of pat} + get_subpoint (ellipse, direction 1 of pat, z14) + -- get_subpath (ellipse, z15 - z14, z14 - z15, z15) + -- get_subpoint (ellipse, -direction 1 of pat, z14) + {-direction 1 of pat} + .. {-direction 0 of pat} + get_subpoint (ellipse, -direction 0 of pat, z13) + -- get_subpath (ellipse, z12 - z13, z11 - z12, z12) + -- cycle; + + if d_ = dir_up: + labels (11, 12, 13, 14, 15); + fi; enddef; -def draw_mensural_inner_flare(expr il_shift) = - define_pixels(linethickness, staff_space) - - pickup pencircle - xscaled 1.00 linethickness - 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; +def draw_mensural_inner_flare (expr il_shift, idx, d_) = + define_pixels (linethickness, staff_space); + + save ellipse, pat, T; + path ellipse, pat; + transform T; + + T := identity xscaled 1.00 linethickness + yscaled 0.22 staff_space + rotated -35; + pickup pencircle transformed T; + ellipse := fullcircle transformed T; + + save i; + numeric i[]; + + i0 := idx * 10; + i1 := idx * 10 + 1; + i2 := idx * 10 + 2; + i3 := idx * 10 + 3; + i4 := idx * 10 + 4; + + z[i0] = (0, -il_shift * staff_space); + z[i1] = z[i0] + (+0.00 staff_space, -0.10 staff_space); + z[i2] = z[i0] + (+0.33 staff_space, -0.30 staff_space); + z[i3] = z[i0] + (+0.33 staff_space, -0.70 staff_space); + z[i4] = z[i0] + (+0.00 staff_space, -0.90 staff_space); + + pat := z[i1]{2, 1} + .. z[i2] + .. z[i3] + .. {-2, -1}z[i4]; + + % we avoid cusps originally present in `draw pat' + fill get_subpath (ellipse, + -direction 0 of pat, direction 0 of pat, z[i1]) + .. get_subpoint (ellipse, direction 1 of pat, z[i2]) + {direction 1 of pat} + .. get_subpoint (ellipse, direction 2 of pat, z[i3]) + {direction 2 of pat} + .. get_subpath (ellipse, + direction 3 of pat, -direction 3 of pat, z[i4]) + .. get_subpoint (ellipse, -direction 2 of pat, z[i3]) + {-direction 2 of pat} + .. get_subpoint (ellipse, -direction 1 of pat, z[i2]) + {-direction 1 of pat} + .. cycle; + + if d_ = dir_up: + labels ([i0], [i1], [i2], [i3], [i4]); + fi; enddef; -def draw_mensural_flag (expr staffline_adjustment, flares, direction) = + +def draw_mensural_flag (expr staffline_adjustment, flares, d_) = save char_box_adjust, flare_shift; + if staffline_adjustment = between_staff_lines: - flare_shift = 0.5; + flare_shift := 0.5; elseif staffline_adjustment = on_staff_line: - flare_shift = 0.0; + flare_shift := 0.0; else: % staffline_adjustment = anywhere - flare_shift = 0.25; + 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#) + + char_box_adjust := flare_shift + 0.5; + + if d_ = dir_up: + set_char_box (0, + 0.60 staff_space#, + (flares + char_box_adjust) * staff_space#, + 0.10 staff_space#); + else: % d_ = 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) + + draw_mensural_outermost_flare (staffline_adjustment, d_); + for flare_count := 2 step 1 until 4: if flares >= flare_count: - draw_mensural_inner_flare(flare_shift+flare_count-0.5) + draw_mensural_inner_flare (flare_shift + + flare_count - 0.5, + flare_count, d_); fi; endfor; - if direction = dir_down: - currentpicture := currentpicture xscaled -1 yscaled -1; + + if d_ = dir_down: + currentpicture := currentpicture xscaled -1 + yscaled -1; fi; enddef; + % 8th mensural flag, upwards, between staff lines -fet_beginchar("8th Mensural Flag (up)", "mensuralu03") - draw_mensural_flag (between_staff_lines, 1, dir_up) +fet_beginchar ("8th Mensural Flag (up)", "mensuralu03"); + draw_mensural_flag (between_staff_lines, 1, dir_up); fet_endchar; + % 8th mensural flag, upwards, on staff line -fet_beginchar("8th Mensural Flag (up)", "mensuralu13") - draw_mensural_flag (on_staff_line, 1, dir_up) +fet_beginchar ("8th Mensural Flag (up)", "mensuralu13"); + draw_mensural_flag (on_staff_line, 1, dir_up); fet_endchar; + % 8th mensural flag, upwards, anywhere -fet_beginchar("8th Mensural Flag (up)", "mensuralu23") - draw_mensural_flag (anywhere, 1, dir_up) +fet_beginchar ("8th Mensural Flag (up)", "mensuralu23"); + draw_mensural_flag (anywhere, 1, dir_up); fet_endchar; + % 8th mensural flag, downwards, between staff lines -fet_beginchar("8th Mensural Flag (down)", "mensurald03") - draw_mensural_flag (between_staff_lines, 1, dir_down) +fet_beginchar ("8th Mensural Flag (down)", "mensurald03"); + draw_mensural_flag (between_staff_lines, 1, dir_down); fet_endchar; + % 8th mensural flag, downwards, on staff line -fet_beginchar("8th Mensural Flag (down)", "mensurald13") - draw_mensural_flag (on_staff_line, 1, dir_down) +fet_beginchar ("8th Mensural Flag (down)", "mensurald13"); + draw_mensural_flag (on_staff_line, 1, dir_down); fet_endchar; + % 8th mensural flag, downwards, anywhere -fet_beginchar("8th Mensural Flag (down)", "mensurald23") - draw_mensural_flag (anywhere, 1, dir_down) +fet_beginchar ("8th Mensural Flag (down)", "mensurald23"); + draw_mensural_flag (anywhere, 1, dir_down); fet_endchar; + % 16th mensural flag, upwards, between staff lines -fet_beginchar("16th Mensural Flag (up)", "mensuralu04") - draw_mensural_flag (between_staff_lines, 2, dir_up) +fet_beginchar ("16th Mensural Flag (up)", "mensuralu04"); + draw_mensural_flag (between_staff_lines, 2, dir_up); fet_endchar; + % 16th mensural flag, upwards, on staff line -fet_beginchar("16th Mensural Flag (up)", "mensuralu14") - draw_mensural_flag (on_staff_line, 2, dir_up) +fet_beginchar ("16th Mensural Flag (up)", "mensuralu14"); + draw_mensural_flag (on_staff_line, 2, dir_up); fet_endchar; + % 16th mensural flag, upwards, anywhere -fet_beginchar("16th Mensural Flag (up)", "mensuralu24") - draw_mensural_flag (anywhere, 2, dir_up) +fet_beginchar ("16th Mensural Flag (up)", "mensuralu24"); + draw_mensural_flag (anywhere, 2, dir_up); fet_endchar; + % 16th mensural flag, downwards, between staff lines -fet_beginchar("16th Mensural Flag (down)", "mensurald04") - draw_mensural_flag (between_staff_lines, 2, dir_down) +fet_beginchar ("16th Mensural Flag (down)", "mensurald04"); + draw_mensural_flag (between_staff_lines, 2, dir_down); fet_endchar; + % 16th mensural flag, downwards, on staff line -fet_beginchar("16th Mensural Flag (down)", "mensurald14") - draw_mensural_flag (on_staff_line, 2, dir_down) +fet_beginchar ("16th Mensural Flag (down)", "mensurald14"); + draw_mensural_flag (on_staff_line, 2, dir_down); fet_endchar; + % 16th mensural flag, downwards, anywhere -fet_beginchar("16th Mensural Flag (down)", "mensurald24") - draw_mensural_flag (anywhere, 2, dir_down) +fet_beginchar ("16th Mensural Flag (down)", "mensurald24"); + draw_mensural_flag (anywhere, 2, dir_down); fet_endchar; + % 32th mensural flag, upwards, between staff lines -fet_beginchar("32th Mensural Flag (up)", "mensuralu05") - draw_mensural_flag (between_staff_lines, 3, dir_up) +fet_beginchar ("32th Mensural Flag (up)", "mensuralu05"); + draw_mensural_flag (between_staff_lines, 3, dir_up); fet_endchar; + % 32th mensural flag, upwards, on staff line -fet_beginchar("32th Mensural Flag (up)", "mensuralu15") - draw_mensural_flag (on_staff_line, 3, dir_up) +fet_beginchar ("32th Mensural Flag (up)", "mensuralu15"); + draw_mensural_flag (on_staff_line, 3, dir_up); fet_endchar; + % 32th mensural flag, upwards, anywhere -fet_beginchar("32th Mensural Flag (up)", "mensuralu25") - draw_mensural_flag (anywhere, 3, dir_up) +fet_beginchar ("32th Mensural Flag (up)", "mensuralu25"); + draw_mensural_flag (anywhere, 3, dir_up); fet_endchar; + % 32th mensural flag, downwards, between staff lines -fet_beginchar("32th Mensural Flag (down)", "mensurald05") - draw_mensural_flag (between_staff_lines, 3, dir_down) +fet_beginchar ("32th Mensural Flag (down)", "mensurald05"); + draw_mensural_flag (between_staff_lines, 3, dir_down); fet_endchar; + % 32th mensural flag, downwards, on staff line -fet_beginchar("32th Mensural Flag (down)", "mensurald15") - draw_mensural_flag (on_staff_line, 3, dir_down) +fet_beginchar ("32th Mensural Flag (down)", "mensurald15"); + draw_mensural_flag (on_staff_line, 3, dir_down); fet_endchar; + % 32th mensural flag, downwards, anywhere -fet_beginchar("32th Mensural Flag (down)", "mensurald25") - draw_mensural_flag (anywhere, 3, dir_down) +fet_beginchar ("32th Mensural Flag (down)", "mensurald25"); + draw_mensural_flag (anywhere, 3, dir_down); fet_endchar; + % 64th mensural flag, upwards, between staff lines -fet_beginchar("64th Mensural Flag (up)", "mensuralu06") - draw_mensural_flag (between_staff_lines, 4, dir_up) +fet_beginchar ("64th Mensural Flag (up)", "mensuralu06"); + draw_mensural_flag (between_staff_lines, 4, dir_up); fet_endchar; + % 64th mensural flag, upwards, on staff line -fet_beginchar("64th Mensural Flag (up)", "mensuralu16") - draw_mensural_flag (on_staff_line, 4, dir_up) +fet_beginchar ("64th Mensural Flag (up)", "mensuralu16"); + draw_mensural_flag (on_staff_line, 4, dir_up); fet_endchar; + % 64th mensural flag, upwards, anywhere -fet_beginchar("64th Mensural Flag (up)", "mensuralu26") - draw_mensural_flag (anywhere, 4, dir_up) +fet_beginchar ("64th Mensural Flag (up)", "mensuralu26"); + draw_mensural_flag (anywhere, 4, dir_up); fet_endchar; + % 64th mensural flag, downwards, between staff lines -fet_beginchar("64th Mensural Flag (down)", "mensurald06") - draw_mensural_flag (between_staff_lines, 4, dir_down) +fet_beginchar ("64th Mensural Flag (down)", "mensurald06"); + draw_mensural_flag (between_staff_lines, 4, dir_down); fet_endchar; + % 64th mensural flag, downwards, on staff line -fet_beginchar("64th Mensural Flag (down)", "mensurald16") - draw_mensural_flag (on_staff_line, 4, dir_down) +fet_beginchar ("64th Mensural Flag (down)", "mensurald16"); + draw_mensural_flag (on_staff_line, 4, dir_down); fet_endchar; + % 64th mensural flag, downwards, anywhere -fet_beginchar("64th Mensural Flag (down)", "mensurald26") - draw_mensural_flag (anywhere, 4, dir_down) +fet_beginchar ("64th Mensural Flag (down)", "mensurald26"); + draw_mensural_flag (anywhere, 4, dir_down); fet_endchar; -fet_endgroup ("flags") + +fet_endgroup ("flags");