- fingerings[i]->translate_axis (-fingerings[i]->extent (common[Y_AXIS], Y_AXIS).length () / 2, Y_AXIS);
-
- for (vsize i = min (fingerings.size () - 1, fingerings.size () / 2 + 1); i >= 1; i--)
- for (vsize j = i; j--;)
- {
- Interval ex_i = fingerings[i]->extent (common[X_AXIS], X_AXIS);
- Interval ex_j = fingerings[j]->extent (common[X_AXIS], X_AXIS);
- Interval ey_i = fingerings[i]->extent (common[Y_AXIS], Y_AXIS);
- Interval ey_j = fingerings[j]->extent (common[Y_AXIS], Y_AXIS);
- Real tval = min (0.0, (ey_i[DOWN] - ey_j[UP] - padding) / 2);
- if (tval != 0.0 && !intersection (ex_i, ex_j).is_empty ())
- {
- if (shifted[fingerings[i]] || shifted[fingerings[j]])
- fingerings[j]->translate_axis (tval * 2, Y_AXIS);
- else
- {
- fingerings[i]->translate_axis (-tval, Y_AXIS);
- fingerings[j]->translate_axis (tval, Y_AXIS);
- }
- shifted[fingerings[i]] = true;
- shifted[fingerings[j]] = true;
- }
- }
-
- for (vsize i = fingerings.size () / 2 - 1; i < fingerings.size () - 1; i++)
- for (vsize j = i + 1; j < fingerings.size (); j++)
- {
- Interval ex_i = fingerings[i]->extent (common[X_AXIS], X_AXIS);
- Interval ex_j = fingerings[j]->extent (common[X_AXIS], X_AXIS);
- Interval ey_i = fingerings[i]->extent (common[Y_AXIS], Y_AXIS);
- Interval ey_j = fingerings[j]->extent (common[Y_AXIS], Y_AXIS);
- Real tval = max (0.0, (ey_i[UP] - ey_j[DOWN] + padding) / 2);
- if (tval != 0.0 && !intersection (ex_i, ex_j).is_empty ())
- {
- if (shifted[fingerings[i]] || shifted[fingerings[j]])
- fingerings[j]->translate_axis (tval * 2, Y_AXIS);
- else
- {
- fingerings[i]->translate_axis (-tval, Y_AXIS);
- fingerings[j]->translate_axis (tval, Y_AXIS);
- }
- shifted[fingerings[i]] = true;
- shifted[fingerings[j]] = true;
- }
- }