\header {
- texidoc = "Rests under beams are only moved if necessary."
-}
-
-\layout {
- ragged-right = ##t
-}
-\version "2.10.0"
+ texidoc = "Rests under beams are shifted upon
+collision."
-fig = \relative c' {
- <a c e>8[ r <c e a> r <e a c> r <a c e>]
- r |
}
-
+\version "2.10.7"
+\paper {
+ ragged-right = ##t
+}
-
- \relative c' \new Staff {
- \fig
- \transpose c c, \fig
- \new Voice { \stemUp \transpose c f \fig }
- <<
- \\
- \transpose f c \fig
- >>
-
- <<
- { \transpose c c' \fig }
- \\
- {}
- >>
-
- << \transpose c c' \fig \\
- \transpose f c \fig
- >>
- }
-
-
-
+\relative c''' {
+ \stemDown b8[ r b]
+ \stemUp b,,8[ r b]
+}
|| !Beam::visible_stem_count (beam))
return scm_from_double (0.0);
- Drul_array<Real> pos (0, 0);
- SCM s = beam->get_property ("positions");
- if (scm_is_pair (s) && scm_is_number (scm_car (s)))
- pos = ly_scm2interval (s);
- else
- programming_error ("positions property should always be pair of numbers.");
+ Drul_array<Real> pos (robust_scm2drul (beam->get_property ("positions"),
+ Drul_array<Real> (0,0)));
Real staff_space = Staff_symbol_referencer::staff_space (rest);
Real beam_y = stem_y - d * height_of_my_beams;
Grob *common_y = rest->common_refpoint (beam, Y_AXIS);
+
+ /*
+ TODO: this is dubious, because this call needs the info we're
+ computing right now.
+ */
Interval rest_extent = rest->extent (common_y, Y_AXIS);
rest_extent.translate (offset);
= staff_space * (robust_scm2double (stem->get_property ("stemlet-length"), 0.0)
+ robust_scm2double (rest->get_property ("minimum-distance"), 0.0));
- Real shift = d * min (((beam_y - d * minimum_distance) - rest_dim) * d, 0.0);
+ Real shift = d * min (d * (beam_y - d * minimum_distance - rest_dim), 0.0);
shift /= staff_space;
Real rad = Staff_symbol_referencer::line_count (rest) * staff_space / 2;
< rad)
shift = ceil (fabs (shift)) * sign (shift);
- return scm_from_double (staff_space * shift);
+ return scm_from_double (offset + staff_space * shift);
}
bool