texidoc = "cross staff beams work with collisions."
}
-\version "2.13.55"
+\version "2.13.61"
-<<
+<<
\new Staff = "PianoRH" s4.
\new Staff = "PianoLH" {
d''8 [b''! \change Staff = "PianoRH" d'' ]
}
>>
+
+<<
+ \new Staff = up \relative c' {
+ c8 c c c
+ c c c c
+ b' b b b
+ }
+ \new Staff = down \relative c' {
+ s8 c c \change Staff = up c
+ \change Staff = down c [ c s16 \change Staff = up a'16 s16 a16 ]
+ \stemUp
+ \change Staff = down b8 b b b \change Staff = up
+ }
+>>
for (vsize i = 0; i < beams_.size (); i++)
{
Grob *beam_grob = beams_[i].grob ();
- if (Beam::is_cross_staff (beam_grob))
- continue;
Context *beam_context = beams_[i].context ();
#include "beam.hh"
+#include "align-interface.hh"
#include "beam-scoring-problem.hh"
#include "beaming-pattern.hh"
#include "directional-element-interface.hh"
{
if (!covered[i]->is_live())
continue;
-
+
+ // TODO - use this logic in is_cross_staff.
+ if (is_cross_staff (me)
+ && Align_interface::has_interface (common_refpoint_of_array (stems, me, Y_AXIS)))
+ continue;
+
+ if (Beam::has_interface (covered[i]) && is_cross_staff (covered[i]))
+ continue;
+
Box b;
for (Axis a = X_AXIS; a < NO_AXES; incr (a))
b[a] = covered[i]->extent (common[a], a);