X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fligature-engraver.cc;h=0e221aa38d86911a27de38af9e9a0c122ec29f6a;hb=98ca84585c45f75503adff82fc0a8cec2a105769;hp=d2b2885ed47d453d6d2bea43851db1681bd7f734;hpb=05fabaaf86fd44f9bd903f282bb98d343a991e40;p=lilypond.git diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc index d2b2885ed4..0e221aa38d 100644 --- a/lily/ligature-engraver.cc +++ b/lily/ligature-engraver.cc @@ -12,7 +12,8 @@ #include "note-head.hh" #include "rest.hh" #include "warn.hh" -#include "translator-group.hh" +#include "context.hh" + /* * This abstract class provides the general framework for ligatures of @@ -79,7 +80,7 @@ Ligature_engraver::try_music (Music *m) { if (m->is_mus_type ("ligature-event")) { - Direction d = to_dir (m->get_mus_property ("span-direction")); + Direction d = to_dir (m->get_property ("span-direction")); reqs_drul_[d] = m; return true; } @@ -110,14 +111,14 @@ Ligature_engraver::create_ligature_spanner () * nests \[ and \]. */ void -Ligature_engraver::override_molecule_callback () +Ligature_engraver::override_stencil_callback () { SCM target_callback = ly_symbol2scm ("print-function"); SCM source_callback = ly_symbol2scm ("ligature-primitive-callback"); - SCM noteHeadProperties = updated_grob_properties (daddy_trans_, ly_symbol2scm ("NoteHead")); + SCM noteHeadProperties = updated_grob_properties (context (), ly_symbol2scm ("NoteHead")); SCM value = ly_cdr (scm_sloppy_assq (source_callback, noteHeadProperties)); - execute_pushpop_property (daddy_trans_, ly_symbol2scm ("NoteHead"), - atarget_callback, value); + execute_pushpop_property (context (), ly_symbol2scm ("NoteHead"), + target_callback, value); } /* @@ -134,11 +135,11 @@ Ligature_engraver::override_molecule_callback () * nests \[ and \]. */ void -Ligature_engraver::revert_molecule_callback () +Ligature_engraver::revert_stencil_callback () { SCM symbol = ly_symbol2scm ("NoteHead"); SCM key = ly_symbol2scm ("print-function"); - execute_pushpop_property (daddy_trans_, symbol, key, SCM_UNDEFINED); + execute_pushpop_property (context (), symbol, key, SCM_UNDEFINED); } void @@ -166,14 +167,14 @@ Ligature_engraver::process_music () finished_ligature_ = ligature_; primitives_.clear (); ligature_ = 0; - revert_molecule_callback (); + revert_stencil_callback (); } last_bound_ = unsmob_grob (get_property ("currentMusicalColumn")); if (ligature_) { // TODO: maybe forbid breaks only if not transcribing - top_engraver ()->forbid_breaks (); + get_score_engraver ()->forbid_breaks (); } if (reqs_drul_[START]) @@ -187,7 +188,7 @@ Ligature_engraver::process_music () prev_start_req_ = reqs_drul_[START]; ligature_ = create_ligature_spanner (); brew_ligature_primitive_proc = - ligature_->get_grob_property ("ligature-primitive-callback"); + ligature_->get_property ("ligature-primitive-callback"); if (brew_ligature_primitive_proc == SCM_EOL) { warning ("Ligature_engraver: ligature-primitive-callback undefined"); @@ -204,9 +205,10 @@ Ligature_engraver::process_music () } ligature_start_mom_ = now_mom (); - - announce_grob(ligature_, reqs_drul_[START]->self_scm()); - override_molecule_callback (); + + // TODO: dump cause into make_item/spanner. + // announce_grob (ligature_, reqs_drul_[START]->self_scm ()); + override_stencil_callback (); } } @@ -270,12 +272,12 @@ Ligature_engraver::acknowledge_grob (Grob_info info) if (Note_head::has_interface (info.grob_)) { primitives_.push (info); - info.grob_->set_grob_property ("print-function", + info.grob_->set_property ("print-function", brew_ligature_primitive_proc); } if (Rest::has_interface (info.grob_)) { - info.music_cause ()->origin ()->warning (_ ("ligature may not contain rest; ignoring rest")); + info.music_cause ()->origin ()->warning (_ ("ignoring rest: ligature may not contain rest")); prev_start_req_->origin ()->warning (_ ("ligature was started here")); // TODO: maybe better should stop ligature here rather than // ignoring the rest?