]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/ligature-engraver.hh
(parse_symbol_list): Bugfix.
[lilypond.git] / lily / include / ligature-engraver.hh
1 /*
2   ligature-engraver.hh -- declare Ligature_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2002--2005 Juergen Reuter <reuter@ipd.uka.de>
7 */
8 #ifndef LIGATURE_ENGRAVER_HH
9 #define LIGATURE_ENGRAVER_HH
10
11 #include "engraver.hh"
12 #include "moment.hh"
13
14 class Ligature_engraver : public Engraver
15 {
16 protected:
17   Ligature_engraver ();
18   void stop_translation_timestep ();
19   virtual void finalize ();
20
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;
30
31 public:
32   // no TRANSLATOR_DECLARATIONS (Ligature_engraver) needed since this
33   // class is abstract
34
35 private:
36   Drul_array<Music *> events_drul_;
37
38   Spanner *ligature_;
39   Array<Grob_info> primitives_;
40
41   Spanner *finished_ligature_;
42   Array<Grob_info> finished_primitives_;
43
44   Music *prev_start_event_;
45
46   // moment where ligature started.
47   Moment ligature_start_mom_;
48
49   Grob *last_bound_;
50
51   void override_stencil_callback ();
52   void revert_stencil_callback ();
53 };
54
55 #endif // LIGATURE_ENGRAVER_HH