X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstem.cc;h=05fc5e7417cfac2d95256cabd85a350ff5bd3522;hb=920dccaf627f00ec2d5bbd49ffeb9ad01236da3b;hp=a25c37f777211d6a77936decee08787fb8cf1016;hpb=7693db10b018da89a3123cb4c9e21e3956638c56;p=lilypond.git diff --git a/lily/stem.cc b/lily/stem.cc index a25c37f777..05fc5e7417 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -225,6 +225,28 @@ Stem::is_invisible (Grob *me) && scm_to_int (me->get_property ("duration-log")) >= 1); } +MAKE_SCHEME_CALLBACK (Stem, pure_height, 3) +SCM +Stem::pure_height (SCM smob, SCM start, SCM end) +{ + Grob *me = unsmob_grob (smob); + Real ss = Staff_symbol_referencer::staff_space (me); + Real len = scm_to_double (calc_length (smob)) * ss / 2; + Direction dir = get_grob_direction (me); + + Interval iv; + Interval hp = head_positions (me); + if (dir == UP) + iv = Interval (0, len); + else + iv = Interval (-len, 0); + + if (!hp.is_empty ()) + iv.translate (hp[dir] * ss / 2); + + return ly_interval2scm (iv); +} + MAKE_SCHEME_CALLBACK (Stem, calc_stem_end_position, 1) SCM Stem::calc_stem_end_position (SCM smob)