- Accidental_placement_entry *head_ape = new Accidental_placement_entry;
-
- vector<Box> head_extents;
- for (vsize i = heads_and_stems.size (); i--;)
- head_extents.push_back (Box (heads_and_stems[i]->extent (common[X_AXIS], X_AXIS),
- heads_and_stems[i]->pure_height (common[Y_AXIS], 0, INT_MAX)));
-
- head_ape->left_skyline_ = Skyline (head_extents, 0, Y_AXIS, LEFT);
- head_ape->offset_ = 0.0;
-
- Real padding = robust_scm2double (me->get_property ("padding"), 0.2);
-
- Skyline left_skyline = head_ape->left_skyline_;
- left_skyline.raise (-robust_scm2double (me->get_property ("right-padding"), 0));
-
- /*
- Add accs entries right-to-left.
- */
- for (vsize i = apes.size (); i-- > 0;)
- {
- Real offset = -apes[i]->right_skyline_.distance (left_skyline);
- if (isinf (offset))
- offset = (i + 1 < apes.size ()) ? apes[i + 1]->offset_ : 0.0;
- else
- offset -= padding;
-
- apes[i]->offset_ = offset;
-
- Skyline new_left_skyline = apes[i]->left_skyline_;
- new_left_skyline.raise (apes[i]->offset_);
- new_left_skyline.merge (left_skyline);
- left_skyline = new_left_skyline;
- }
-
- for (vsize i = apes.size (); i--;)
- {
- Accidental_placement_entry *ape = apes[i];
- for (vsize j = ape->grobs_.size (); j--;)
- ape->grobs_[j]->translate_axis (ape->offset_, X_AXIS);
- }
-
- Interval left_extent, right_extent;
- Accidental_placement_entry *ape = apes[0];
-
- for (vsize i = ape->extents_.size (); i--;)
- left_extent.unite (ape->offset_ + ape->extents_[i][X_AXIS]);
-
- ape = apes.back ();
- for (vsize i = ape->extents_.size (); i--;)
- right_extent.unite (ape->offset_ + ape->extents_[i][X_AXIS]);
-
- left_extent[LEFT] -= robust_scm2double (me->get_property ("left-padding"), 0);
- Interval width (left_extent[LEFT], right_extent[RIGHT]);
-
- SCM scm_width = ly_interval2scm (width);