X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstem.cc;h=09786b750b5d205d4b7f834b6c6fa69fe507453b;hb=c5a3f0c024f4cb629811cff9eb04abff36e94138;hp=857dfb7d49fbbc37aceed0421697de11b9806566;hpb=ca2de5fb00b832f2875583734af4a74c70e192f6;p=lilypond.git diff --git a/lily/stem.cc b/lily/stem.cc index 857dfb7d49..09786b750b 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -239,6 +239,10 @@ Stem::pure_height (SCM smob, SCM start, SCM end) if (!is_normal_stem (me)) return ly_interval2scm (iv); + + /* if we are part of a cross-staff beam, return empty */ + if (get_beam (me) && Beam::is_cross_staff (get_beam (me))) + return ly_interval2scm (iv); Real ss = Staff_symbol_referencer::staff_space (me); Real len = scm_to_double (calc_length (smob)) * ss / 2; @@ -1001,6 +1005,20 @@ Stem::beam_multiplicity (Grob *stem) return le; } +bool +Stem::is_cross_staff (Grob *stem) +{ + Grob *beam = unsmob_grob (stem->get_object ("beam")); + return beam && Beam::is_cross_staff (beam); +} + +MAKE_SCHEME_CALLBACK (Stem, cross_staff, 1) +SCM +Stem::cross_staff (SCM smob) +{ + return scm_from_bool (is_cross_staff (unsmob_grob (smob))); +} + /* FIXME: Too many properties */ ADD_INTERFACE (Stem, "The stem represent the graphical stem. "