- Item *col = dynamic_cast<Item *> (g)->get_column ();
- Real left_stickout_correction = max (0., (- g->extent (col, X_AXIS)[LEFT]));
-
- /* staff space -> positions */
- bar_size *= 2;
-
- /*
- Duh. If this gets out of hand, we should invent something more generic.
- */
- Grob *accs = Note_column::accidentals (g);
- if (accs)
- {
- Interval v;
- if (Accidental_placement::has_interface (accs))
- v = Accidental_placement::get_relevant_accidental_extent (accs, col, me);
- else
- v = accs->extent (col, X_AXIS);
-
- left_stickout_correction = max (left_stickout_correction, (- v[LEFT]));
- }
- Grob *arpeggio = unsmob_grob (g->get_object ("arpeggio"));
- if (arpeggio)
- left_stickout_correction = max (left_stickout_correction, - arpeggio->extent (col, X_AXIS)[LEFT]);
-
-
- /*
- Let's decrease the space a little if the problem is not located
- after a barline.
- */
- if (bar_size.is_empty ())
- left_stickout_correction *= 0.75;
-
- /*
- We want 0.3 ss before the sticking-out object.
-
- current_fixed/2 is our guess at (right side of left object + 0.3)
- */
- left_stickout_correction += current_fixed/2 - current_space;
- left_stickout_correction = max (left_stickout_correction, 0.0);
-
-
- Real optical_corr = 0.0;