2 ligature-engraver.hh -- declare Ligature_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2002--2005 Juergen Reuter <reuter@ipd.uka.de>
8 #ifndef LIGATURE_ENGRAVER_HH
9 #define LIGATURE_ENGRAVER_HH
11 #include "engraver.hh"
14 class Ligature_engraver : public Engraver
18 void stop_translation_timestep ();
19 virtual void finalize ();
21 DECLARE_ACKNOWLEDGER (rest);
22 DECLARE_ACKNOWLEDGER (note_head);
23 virtual bool try_music (Music *);
24 void process_music ();
25 virtual Spanner *create_ligature_spanner () = 0;
26 virtual void typeset_ligature (Spanner *ligature,
27 Array<Grob_info> primitives) = 0;
28 virtual Spanner *current_ligature ();
29 SCM brew_ligature_primitive_proc;
32 // no TRANSLATOR_DECLARATIONS (Ligature_engraver) needed since this
36 Drul_array<Music *> events_drul_;
39 Array<Grob_info> primitives_;
41 Spanner *finished_ligature_;
42 Array<Grob_info> finished_primitives_;
44 Music *prev_start_event_;
46 // moment where ligature started.
47 Moment ligature_start_mom_;
51 void override_stencil_callback ();
52 void revert_stencil_callback ();
55 #endif // LIGATURE_ENGRAVER_HH