- case MLP_NONE:
- return Molecule();
- case MLP_BB:
- out = brew_flexa (me, delta_pitch, false,
- flexa_width, thickness, true, DOWN);
- break;
- case MLP_sc:
- out = Font_interface::get_default_font (me)->find_by_name ("noteheads--2mensural");
- break;
- case MLP_ss:
- out = Font_interface::get_default_font (me)->find_by_name ("noteheads--1mensural");
- break;
- case MLP_cs:
- out = Font_interface::get_default_font (me)->find_by_name ("noteheads-lmensural");
- break;
- case MLP_SS:
- out = brew_flexa (me, delta_pitch, false,
- flexa_width, thickness, true, UP);
- break;
- case MLP_LB:
- out = brew_flexa (me, delta_pitch, false,
- flexa_width, thickness, false, CENTER);
- break;
- default:
- programming_error (_f ("Mensural_ligature:"
- "unexpected case fall-through"));
- return Molecule ();
+ // assume MLP_UP
+ Real y_bottom = 0.0, y_top = stem_length;
+
+ if (primitive & MLP_DOWN)
+ {
+ y_bottom = -y_top;
+ y_top = 0.0;
+ }
+
+ Interval x_extent (0, thickness);
+ Interval y_extent (y_bottom, y_top);
+ Box join_box (x_extent, y_extent);
+
+ Stencil join = Lookup::round_filled_box (join_box, blotdiameter);
+ out.add_stencil (join);