X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fligature-engraver.cc;h=5e2f63ff0ae5250a7c782d32c7333486502121e2;hb=69dd6f7e540258550b68fcbc952ac523fd4c6939;hp=f071cb568c204496fbcd16c41b34b8d10eb19b15;hpb=7e72a1e50e94a7f9738d62599de79fe7745f600c;p=lilypond.git diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc index f071cb568c..5e2f63ff0a 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; } @@ -99,46 +100,46 @@ Ligature_engraver::create_ligature_spanner () * This method should do something that comes close to the following * .ly snippet: * - * \property Voice.NoteHead \override #'molecule-callback = + * \property Voice.NoteHead \override #'print-function = * < value of #'ligature-primitive-callback of Voice.NoteHead > * * TODO: What we are doing here on the c++ level, should actually be * performed on the SCM level. However, I do not know how to teach - * lilypond to apply an \override and \revert on #'molecule-callback, + * lilypond to apply an \override and \revert on #'print-function, * whenever lily encounters a \[ and \] in an .ly file, respectively. * Also encounter, that lily should not crash if a user erronously * nests \[ and \]. */ void -Ligature_engraver::override_molecule_callback () +Ligature_engraver::override_stencil_callback () { - SCM symbol = ly_symbol2scm ("NoteHead"); - SCM target_callback = ly_symbol2scm ("molecule-callback"); + SCM target_callback = ly_symbol2scm ("print-function"); SCM source_callback = ly_symbol2scm ("ligature-primitive-callback"); - SCM noteHeadProperties = daddy_trans_->get_property ("NoteHead"); + SCM noteHeadProperties = updated_grob_properties (daddy_context_, ly_symbol2scm ("NoteHead")); SCM value = ly_cdr (scm_sloppy_assq (source_callback, noteHeadProperties)); - daddy_trans_->execute_pushpop_property (symbol, target_callback, value); + execute_pushpop_property (daddy_context_, ly_symbol2scm ("NoteHead"), + target_callback, value); } /* * This method should do something that comes close to the following * .ly snippet: * - * \property Voice.NoteHead \revert #'molecule-callback + * \property Voice.NoteHead \revert #'print-function * * TODO: What we are doing here on the c++ level, should actually be * performed on the SCM level. However, I do not know how to teach - * lilypond to apply an \override and \revert on #'molecule-callback, + * lilypond to apply an \override and \revert on #'print-function, * whenever lily encounters a \[ and \] in an .ly file, respectively. * Also encounter, that lily should not crash if a user erronously * nests \[ and \]. */ void -Ligature_engraver::revert_molecule_callback () +Ligature_engraver::revert_stencil_callback () { SCM symbol = ly_symbol2scm ("NoteHead"); - SCM key = ly_symbol2scm ("molecule-callback"); - daddy_trans_->execute_pushpop_property (symbol, key, SCM_UNDEFINED); + SCM key = ly_symbol2scm ("print-function"); + execute_pushpop_property (daddy_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"); @@ -206,7 +207,7 @@ Ligature_engraver::process_music () ligature_start_mom_ = now_mom (); announce_grob(ligature_, reqs_drul_[START]->self_scm()); - override_molecule_callback (); + override_stencil_callback (); } } @@ -270,7 +271,7 @@ Ligature_engraver::acknowledge_grob (Grob_info info) if (Note_head::has_interface (info.grob_)) { primitives_.push (info); - info.grob_->set_grob_property ("molecule-callback", + info.grob_->set_property ("print-function", brew_ligature_primitive_proc); } if (Rest::has_interface (info.grob_))