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 ();
22 DECLARE_ACKNOWLEDGER (rest);
23 DECLARE_ACKNOWLEDGER (note_head);
24 virtual bool try_music (Music *);
25 void process_music ();
26 virtual Spanner *create_ligature_spanner () = 0;
27 virtual void typeset_ligature (Spanner *ligature,
28 Array<Grob_info> primitives) = 0;
29 virtual Spanner *current_ligature ();
30 SCM brew_ligature_primitive_proc;
33 // no TRANSLATOR_DECLARATIONS (Ligature_engraver) needed since this
37 Drul_array<Music *> events_drul_;
40 Array<Grob_info> primitives_;
42 Spanner *finished_ligature_;
43 Array<Grob_info> finished_primitives_;
45 Music *prev_start_event_;
47 // moment where ligature started.
48 Moment ligature_start_mom_;
52 void override_stencil_callback ();
53 void revert_stencil_callback ();
56 #endif // LIGATURE_ENGRAVER_HH