]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/hyphen-engraver.hh
6ab2eb59bc5957bbdf27e6a2b41ff571cbc14879
[lilypond.git] / lily / include / hyphen-engraver.hh
1 /*
2   hyphen-engraver.hh -- declare Hyphen_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1999 Glen Prideaux <glenprideaux@iname.com>
7 */
8
9 #ifndef HYPHEN_ENGRAVER_HH
10 #define HYPHEN_ENGRAVER_HH
11
12 #include "engraver.hh"
13 #include "drul-array.hh"
14 #include "hyphen-spanner.hh"
15 #include "pqueue.hh"
16 #include "extender-engraver.hh"
17
18
19 /**
20   Generate an centred hyphen.  Should make a Hyphen_spanner that typesets
21   a nice centred hyphen of varying length depending on the gap between syllables.
22
23   We remember all Text_items that come across, and store their
24   termination times. When we get a request, we create the spanner, and
25   attach the left point to the finished lyrics, and the right point to
26   any lyrics we receive by then.
27 */
28 class Hyphen_engraver : public Engraver
29 {
30   PQueue<Text_lyric_tuple> past_lyrics_pq_;
31   Array<Text_lyric_tuple> now_lyrics_;
32   Array<Text_lyric_tuple> stopped_lyrics_;  
33   
34   Hyphen_req* req_l_;
35   Hyphen_spanner* hyphen_spanner_p_;
36
37   
38 public:
39   Hyphen_engraver ();
40   VIRTUAL_COPY_CONS (Translator);
41
42 protected:
43   virtual void acknowledge_element (Score_element_info);
44   virtual void do_removal_processing();
45   virtual void do_process_requests();
46   virtual bool do_try_music (Music*);
47   virtual void do_pre_move_processing();
48   virtual void do_post_move_processing ();
49 private:
50
51 };
52
53 #endif // HYPHEN_ENGRAVER_HH