#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
{
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;
}
* 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);
}
/*
* 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
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])
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");
}
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 ();
}
}
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?