X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=blobdiff_plain;f=lily%2Frest.cc;h=b3e5668d35c303f28e7f8e1829cc46cf18d50178;hb=df4a7c4a55148e065d878dcc2f7e09ac27ea9c32;hp=a6a945cd78c21013745e009a2a5ab0abad68208e;hpb=3c5ca37ea37ea91dfc9fcc303cf6d68446e87291;p=lilypond.git diff --git a/lily/rest.cc b/lily/rest.cc index a6a945cd78..b3e5668d35 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -19,17 +19,17 @@ MAKE_SCHEME_CALLBACK(Rest,after_line_breaking,1); SCM Rest::after_line_breaking (SCM smob) { - Score_element *me = unsmob_element (smob); - int bt = gh_scm2int (me->get_elt_property ("duration-log")); + Grob *me = unsmob_element (smob); + int bt = gh_scm2int (me->get_grob_property ("duration-log")); if (bt == 0) { me->translate_axis (Staff_symbol_referencer::staff_space (me) , Y_AXIS); } - Score_element * d = unsmob_element (me->get_elt_property ("dot")); + Grob * d = unsmob_element (me->get_grob_property ("dot")); if (d && bt > 4) // UGH. { - d->set_elt_property ("staff-position", + d->set_grob_property ("staff-position", gh_int2scm ((bt == 7) ? 4 : 3)); } @@ -37,15 +37,16 @@ Rest::after_line_breaking (SCM smob) } -MAKE_SCHEME_CALLBACK(Rest,brew_molecule,1) -SCM -Rest::brew_molecule (SCM smob) +MAKE_SCHEME_CALLBACK(Rest,brew_molecule,1); + +SCM +Rest::brew_internal_molecule (SCM smob) { - Score_element* me = unsmob_element (smob); + Grob* me = unsmob_element (smob); bool ledger_b =false; - SCM balltype = me->get_elt_property ("duration-log"); + SCM balltype = me->get_grob_property ("duration-log"); if (balltype == gh_int2scm (0) || balltype == gh_int2scm (1)) { @@ -55,10 +56,10 @@ Rest::brew_molecule (SCM smob) } String style; - SCM style_sym =me->get_elt_property ("style"); - if (gh_scm2int (balltype) >= 2 && gh_string_p (style_sym)) + SCM style_sym =me->get_grob_property ("style"); + if (gh_scm2int (balltype) >= 2 && gh_symbol_p (style_sym)) { - style = ly_scm2string (style_sym); + style = ly_scm2string (scm_symbol_to_string (style_sym)); } String idx = ("rests-") + to_str (gh_scm2int (balltype)) @@ -67,9 +68,25 @@ Rest::brew_molecule (SCM smob) return Font_interface::get_default_font (me)->find_by_name (idx).smobbed_copy(); } +SCM +Rest::brew_molecule (SCM smob) +{ + return brew_internal_molecule (smob); +} +MAKE_SCHEME_CALLBACK(Rest,extent_callback,2); +/* + We need the callback. The real molecule has ledgers depending on + Y-position. The Y-position is known only after line breaking. */ +SCM +Rest::extent_callback (SCM smob, SCM ax) +{ + Axis a = (Axis) gh_scm2int (ax); + SCM m = brew_internal_molecule (smob); + return ly_interval2scm (unsmob_molecule (m)->extent (a)); +} bool -Rest::has_interface (Score_element*m) +Rest::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("rest-interface")); }