]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/ligature-engraver.hh
2003 -> 2004
[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--2004 Juergen Reuter <reuter@ipd.uka.de>
7   
8  */
9 #ifndef LIGATURE_ENGRAVER_HH
10 #define LIGATURE_ENGRAVER_HH
11
12 #include "engraver.hh"
13
14 class Ligature_engraver : public Engraver
15 {
16 protected:
17   virtual void stop_translation_timestep ();
18   virtual void finalize ();
19
20   virtual void acknowledge_grob (Grob_info);
21   virtual bool try_music (Music*);
22   virtual void process_music ();
23   virtual Spanner *create_ligature_spanner (); /* abstract method */
24   virtual void typeset_ligature (Spanner *ligature,
25                                  Array<Grob_info> primitives); /* abstract method */
26   virtual Spanner *current_ligature ();
27   SCM brew_ligature_primitive_proc;
28
29 public:
30   TRANSLATOR_DECLARATIONS(Ligature_engraver);
31
32 private:
33   Drul_array<Music*> reqs_drul_;
34   
35   Spanner *ligature_;
36   Array<Grob_info> primitives_;
37
38   Spanner *finished_ligature_;
39   Array<Grob_info> finished_primitives_;
40
41   Music *prev_start_req_;
42
43   // moment where ligature started.
44   Moment ligature_start_mom_;
45
46   Grob *last_bound_;
47
48   void override_molecule_callback ();
49   void revert_molecule_callback ();
50 };
51
52 #endif // LIGATURE_ENGRAVER_HH