X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Flyric-engraver.cc;h=64a306b3ed427a2ad07e3c92c9e6c63a83a6f922;hb=c52973e438ce3490d688860bb71849a7b3c26fef;hp=515bc7abe5a10afe673cc5f9c6d2206dde3a6bc3;hpb=a2896b23ce12cc61e9cd4495324c9ca5551cb947;p=lilypond.git diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index 515bc7abe5..64a306b3ed 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -3,52 +3,66 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--2000 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include "lyric-engraver.hh" #include "musical-request.hh" -#include "text-item.hh" +#include "item.hh" #include "paper-def.hh" #include "lookup.hh" +ADD_THIS_TRANSLATOR (Lyric_engraver); + + Lyric_engraver::Lyric_engraver() { + text_p_ =0; + req_l_ =0; } bool -Lyric_engraver::do_try_request(Request*r) +Lyric_engraver::do_try_music (Music*r) { - Musical_req * m =r->musical(); - if (!m || ! m->lreq_l()) + if (Lyric_req* l = dynamic_cast (r)) + { + if (req_l_) return false; - lreq_arr_.push(m->lreq_l()); + req_l_ =l; + return true; + } + return false; +} - return true; +void +Lyric_engraver::do_process_music() +{ + if (req_l_) + { + text_p_= new Item (get_property ("basicLyricTextProperties")); + + text_p_->set_elt_property ("text", + ly_str02scm ((req_l_->text_str_ + " ").ch_C ())); + + announce_element (Score_element_info (text_p_, req_l_)); + } } void -Lyric_engraver::do_process_requests() +Lyric_engraver::do_pre_move_processing() { - Text_item * last_item_l =0; - for (int i=0; i < lreq_arr_.size(); i++) { - Text_item *lp = new Text_item(lreq_arr_[i]->tdef_p_ ); - lp->dir_i_ = -1; - lp->fat_b_ = true; - if (last_item_l) - lp->add_support(last_item_l); - last_item_l = lp; - typeset_element(lp); + if (text_p_) + { + typeset_element (text_p_); + text_p_ =0; } } void -Lyric_engraver::do_post_move_processing() +Lyric_engraver::do_post_move_processing () { - lreq_arr_.set_size(0); + req_l_ =0; } -IMPLEMENT_STATIC_NAME(Lyric_engraver); -IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Request_engraver); -ADD_THIS_ENGRAVER(Lyric_engraver);