- Real x0 = stems[0]->hpos_f ();
- Real dy = 0;
-
- Real interline_f = paper ()->interline_f ();
- Real internote_f = interline_f / 2;
- Real staffline_thickness = paper ()->rule_thickness ();
- Real beam_thickness = 0.48 * (interline_f - staffline_thickness);
- Real xspan_f = stems.top ()->hpos_f () - stems[0]->hpos_f ();
- /*
- ugh, y values are in "internote" dimension
- */
- Real yspan_f = xspan_f * abs (slope_f * internote_f);
- int yspan_i = (int)(yspan_f / interline_f);
-
- Pos left_pos = NONE;
-
- if (yspan_f < staffline_thickness / 2)
- left_pos = (Pos)(STRADDLE | SIT | HANG);
- else
- left_pos = (Pos) (sign (slope_f) > 0 ? STRADDLE | HANG
- : SIT | STRADDLE);
-
- /*
- ugh, slope currently mangled by availability mf chars...
- be more generous regarding beam position between stafflines
- */
- Real q = (yspan_f / interline_f - yspan_i) * interline_f;
- if (q < interline_f / 3 - beam_thickness / 2)
- left_pos = (Pos) (left_pos | INTER);