/*
TODO: This belongs to the old two-pass spacing. Delete me.
*/
-MAKE_SCHEME_CALLBACK(Align_interface, stretch_after_break, 1)
+MAKE_SCHEME_CALLBACK (Align_interface, stretch_after_break, 1)
SCM
Align_interface::stretch_after_break (SCM grob)
{
Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"),
DOWN);
- Real delta = extra_space / elems.size() * stacking_dir;
+ Real delta = extra_space / elems.size () * stacking_dir;
for (vsize i = 0; i < elems.size (); i++)
elems[i]->translate_axis (i * delta, Y_AXIS);
}
Real padding = robust_scm2double (me->get_property ("padding"), 0.0);
vector<Real> translates;
+ Skyline down_skyline (stacking_dir);
for (vsize j = 0; j < elems.size (); j++)
{
Real dy = 0;
if (j == 0)
dy = skylines[j][-stacking_dir].max_height ();
else
- dy = skylines[j-1][stacking_dir].distance (skylines[j][-stacking_dir]);
+ {
+ down_skyline.merge (skylines[j-1][stacking_dir]);
+ dy = down_skyline.distance (skylines[j][-stacking_dir]);
+ }
- where += stacking_dir * max (0.0, dy + padding + extra_space / elems.size ());
+ dy = max (0.0, dy + padding + extra_space / elems.size ());
+ down_skyline.raise (-stacking_dir * dy);
+ where += stacking_dir * dy;
translates.push_back (where);
}