- Grob *common = me;
-
- extract_grob_set (me, "stems", stems);
- for (vsize i = 0; i < stems.size (); i++)
- {
- Grob *stem = stems[i];
- common = common->common_refpoint (Staff_symbol_referencer::get_staff_symbol (stem),
- Y_AXIS);
- }
-
- Interval heads;
- Real my_y = me->relative_coordinate (common, Y_AXIS);
-
- for (vsize i = 0; i < stems.size (); i++)
- {
- Grob *stem = stems[i];
- Grob *ss = Staff_symbol_referencer::get_staff_symbol (stem);
- Interval iv = Stem::head_positions (stem);
- iv *= Staff_symbol::staff_space (ss) / 2.0;
- heads.unite (iv + ss->relative_coordinate (common, Y_AXIS) - my_y);
- }
+ Interval heads = robust_scm2interval (me->get_property ("positions"),
+ Interval())
+ * Staff_symbol_referencer::staff_space (me);