X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fbar-line.cc;h=a0fa5587b410ef0fb22b2ea16c8f61e56249c1f3;hb=526bdfea303c7fe33e016932f1dd19389b8c334f;hp=48b9c4715da6e4e09631bb7b873812b82e123ddc;hpb=35ea18b384897ed01c327359bf3c304a007e8416;p=lilypond.git diff --git a/lily/bar-line.cc b/lily/bar-line.cc index 48b9c4715d..a0fa5587b4 100644 --- a/lily/bar-line.cc +++ b/lily/bar-line.cc @@ -16,6 +16,31 @@ #include "staff-symbol-referencer.hh" #include "line-interface.hh" +MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_extent, 1) +SCM +Bar_line::calc_bar_extent (SCM smob) +{ + Grob *me = unsmob_grob (smob); + + SCM size = me->get_property ("bar-size"); + + if (!scm_is_number (size) + || !Staff_symbol_referencer::get_staff_symbol (me)) + return ly_interval2scm (Interval ()); + + Real h = scm_to_double (size); + return ly_interval2scm (Interval (-h/2, h/2)); +} + +Interval +Bar_line::bar_y_extent (Grob *me, Grob *refpoint) +{ + Interval iv = robust_scm2interval (me->get_property ("bar-extent"), Interval ()); + + iv.translate (me->relative_coordinate (refpoint, Y_AXIS)); + return iv; +} + MAKE_SCHEME_CALLBACK (Bar_line, print, 1); SCM Bar_line::print (SCM smob) @@ -292,6 +317,7 @@ ADD_INTERFACE (Bar_line, /* properties */ + "allow-span-bar " "gap " "kern " "thin-kern " @@ -300,6 +326,7 @@ ADD_INTERFACE (Bar_line, "glyph " "glyph-name " "bar-size " + "bar-extent " );