Add ligature-head-interface, and assign to NoteHead.
Change acknowledger to acknowledge ligature-head instead of note-head
Also includes regression test.
--- /dev/null
+\version "2.14"
+
+\header {
+ texidoc = "
+A @code{\Voice} should be able to contain both an @code{Ambitus_engraver}
+and a @code{Mensural_ligature_engraver} without segfaulting.
+ "
+}
+
+\score{
+ {
+ \context Staff="default" {
+ \[ c'\longa c''\longa \]
+ }
+ }
+ \layout {
+ \context{
+ \Voice
+ \consists Ambitus_engraver
+ \consists Mensural_ligature_engraver
+ }
+ }
+}
virtual void finalize ();
DECLARE_ACKNOWLEDGER (rest);
- DECLARE_ACKNOWLEDGER (note_head);
+ DECLARE_ACKNOWLEDGER (ligature_head);
virtual void listen_ligature (Stream_event *ev);
void process_music ();
virtual Spanner *create_ligature_spanner () = 0;
ligature_start_mom_ = now_mom ();
- // TODO: dump cause into make_item/spanner.
+ // TODO: dump cause into make_item/spanner.
// announce_grob (ligature_, events_drul_[START]->self_scm ());
}
}
}
void
-Ligature_engraver::acknowledge_note_head (Grob_info info)
+Ligature_engraver::acknowledge_ligature_head (Grob_info info)
{
if (ligature_)
{
primitives_.push_back (info);
if (info.grob () && brew_ligature_primitive_proc != SCM_EOL)
- {
- info.grob ()->set_property ("stencil", brew_ligature_primitive_proc);
- }
+ info.grob ()->set_property ("stencil", brew_ligature_primitive_proc);
}
}
virtual Spanner *create_ligature_spanner ();
virtual void build_ligature (Spanner *ligature, vector<Grob_info> primitives);
DECLARE_TRANSLATOR_LISTENER (ligature);
-
+
public:
TRANSLATOR_DECLARATIONS (Mensural_ligature_engraver);
Mensural_ligature_engraver::Mensural_ligature_engraver ()
{
- brew_ligature_primitive_proc =
+ brew_ligature_primitive_proc =
Mensural_ligature::brew_ligature_primitive_proc;
}
}
ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Mensural_ligature_engraver, note_head);
+ADD_ACKNOWLEDGER (Mensural_ligature_engraver, ligature_head);
ADD_TRANSLATOR (Mensural_ligature_engraver,
/* doc */
Vaticana_ligature_engraver::Vaticana_ligature_engraver ()
{
- brew_ligature_primitive_proc =
+ brew_ligature_primitive_proc =
Vaticana_ligature::brew_ligature_primitive_proc;
augmented_primitives_.clear ();
}
}
ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, note_head);
+ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head);
ADD_TRANSLATOR (Vaticana_ligature_engraver,
/* doc */
"Handle ligatures by glueing special ligature heads"
"A key cancellation."
'())
+(ly:add-interface
+ 'ligature-head-interface
+ "A note head that can become part of a ligature."
+ '())
+
(ly:add-interface
'ligature-bracket-interface
"A bracket indicating a ligature in the original edition."
(interfaces . (font-interface
gregorian-ligature-interface
ledgered-interface
+ ligature-head-interface
mensural-ligature-interface
note-head-interface
rhythmic-grob-interface