X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fextender-engraver.hh;h=1b6335bb5125d4329d901c860b1e71d2ef330ce8;hb=25c92bfff1189d93b80cdef0da0d570d14834c8d;hp=c49043a8c2fa65003d99d1f4501feaa0f9da415a;hpb=1f72695816f79df61958fc3649591fbf6b95a05a;p=lilypond.git diff --git a/lily/include/extender-engraver.hh b/lily/include/extender-engraver.hh index c49043a8c2..1b6335bb51 100644 --- a/lily/include/extender-engraver.hh +++ b/lily/include/extender-engraver.hh @@ -12,13 +12,45 @@ #include "engraver.hh" #include "drul-array.hh" #include "extender-spanner.hh" +#include "pqueue.hh" + +struct Text_lyric_tuple { + Rhythmic_req *req_l_ ; + G_text_item *text_l_; + Moment end_; + + Text_lyric_tuple (); + Text_lyric_tuple (G_text_item*, Rhythmic_req*, Moment); + static int time_compare (Text_lyric_tuple const &, Text_lyric_tuple const &); +}; + +inline int compare (Text_lyric_tuple const &a, Text_lyric_tuple const &b) +{ + return Text_lyric_tuple::time_compare (a,b); +} + + + /** - Generate an extender. - Should make an Extender_spanner that typesets a nice extender line. - */ + Generate an extender. Should make an Extender_spanner that typesets + a nice extender line. + + We remember all G_text_items that come across, and store their + termination times. When we get a request, we create the spanner, and + attach the left point to the finished lyrics, and the right point to + any lyrics we receive by then. +*/ class Extender_engraver : public Engraver { + PQueue past_lyrics_pq_; + Array now_lyrics_; + Array stopped_lyrics_; + + Extender_req* req_l_; + Extender_spanner* extender_spanner_p_; + + public: Extender_engraver (); VIRTUAL_COPY_CONS (Translator); @@ -29,11 +61,9 @@ protected: virtual void do_process_requests(); virtual bool do_try_music (Music*); virtual void do_pre_move_processing(); - + virtual void do_post_move_processing (); private: - Drul_array span_reqs_drul_; - Drul_array span_mom_drul_; - Extender_spanner* extender_spanner_p_; + }; #endif // EXTENDER_ENGRAVER_HH