-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;
-
-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)
-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)
-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;
-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;
-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;