]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/ligature-engraver.hh
Run `make grand-replace'.
[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--2008 Juergen Reuter <reuter@ipd.uka.de>
7 */
8
9 #ifndef LIGATURE_ENGRAVER_HH
10 #define LIGATURE_ENGRAVER_HH
11
12 #include "engraver.hh"
13 #include "moment.hh"
14
15 class Ligature_engraver : public Engraver
16 {
17 protected:
18   Ligature_engraver ();
19   void stop_translation_timestep ();
20   virtual void finalize ();
21
22   DECLARE_ACKNOWLEDGER (rest);
23   DECLARE_ACKNOWLEDGER (note_head);
24   virtual void listen_ligature (Stream_event *ev);
25   void process_music ();
26   virtual Spanner *create_ligature_spanner () = 0;
27   virtual void typeset_ligature (Spanner *ligature,
28                                  vector<Grob_info> primitives) = 0;
29   virtual Spanner *current_ligature ();
30   SCM brew_ligature_primitive_proc;
31
32 public:
33   // no TRANSLATOR_DECLARATIONS (Ligature_engraver) needed since this
34   // class is abstract
35
36 private:
37   Drul_array<Stream_event *> events_drul_;
38
39   Spanner *ligature_;
40   vector<Grob_info> primitives_;
41
42   Spanner *finished_ligature_;
43   vector<Grob_info> finished_primitives_;
44
45   Stream_event *prev_start_event_;
46
47   // moment where ligature started.
48   Moment ligature_start_mom_;
49
50   Grob *last_bound_;
51 };
52
53 #endif // LIGATURE_ENGRAVER_HH