/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
}
/*
- Maintain a minimum distance to the staff. This is similar to side
- position with padding, but it will put adjoining objects on a row if
+ Ensure 'staff-padding' from my refpoint to the staff. This is similar to
+ side-position with padding, but it will put adjoining objects on a row if
stuff sticks out of the staff a little.
*/
Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
}
else if (scm_is_number (me->get_maybe_pure_property ("staff-padding", pure, start, end)) && dir)
{
- Interval iv = me->maybe_pure_extent (me, a, pure, start, end);
-
Real staff_padding
= Staff_symbol_referencer::staff_space (me)
* scm_to_double (me->get_maybe_pure_property ("staff-padding", pure, start, end));
Real staff_position = staff->maybe_pure_coordinate (common, Y_AXIS, pure, start, end);
Interval staff_extent = staff->maybe_pure_extent (staff, a, pure, start, end);
Real diff = (dir * staff_extent[dir] + staff_padding
- - dir * (total_off + iv[-dir])
+ - dir * total_off
+ dir * (staff_position - parent_position));
total_off += dir * max (diff, 0.0);
}