X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fstanza-number-align-engraver.cc;h=9aa4e623ae6286426c94b85e139f3238b9ac017c;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=5024f3423b53971d676cb59de0438cfba4a0a000;hpb=a7f82e4dc22fc6219a9fe0f6874f8c91e3f31f24;p=lilypond.git diff --git a/lily/stanza-number-align-engraver.cc b/lily/stanza-number-align-engraver.cc index 5024f3423b..9aa4e623ae 100644 --- a/lily/stanza-number-align-engraver.cc +++ b/lily/stanza-number-align-engraver.cc @@ -1,10 +1,9 @@ - /* - stanza-number-align-engraver.cc -- implement + stanza-number-align-engraver.cc -- implement Stanza_number_align_engraver source file of the GNU LilyPond music typesetter - (c) 2004--2005 Han-Wen Nienhuys + (c) 2004--2008 Han-Wen Nienhuys */ #include "context.hh" @@ -14,16 +13,20 @@ #include "pointer-group-interface.hh" #include "side-position-interface.hh" +#include "translator.icc" + class Stanza_number_align_engraver : public Engraver { public: TRANSLATOR_DECLARATIONS (Stanza_number_align_engraver); protected: - Link_array lyrics_; - Link_array stanza_numbers_; - virtual void acknowledge_grob (Grob_info); - PRECOMPUTED_VIRTUAL void stop_translation_timestep (); + vector lyrics_; + vector stanza_numbers_; + + DECLARE_ACKNOWLEDGER (lyric_syllable); + DECLARE_ACKNOWLEDGER (stanza_number); + void stop_translation_timestep (); }; Stanza_number_align_engraver::Stanza_number_align_engraver () @@ -31,34 +34,44 @@ Stanza_number_align_engraver::Stanza_number_align_engraver () } void -Stanza_number_align_engraver::acknowledge_grob (Grob_info gi) +Stanza_number_align_engraver::acknowledge_lyric_syllable (Grob_info gi) { Grob *h = gi.grob (); + lyrics_.push_back (h); +} - if (h->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface"))) - lyrics_.push (h); - else if (h->internal_has_interface (ly_symbol2scm ("stanza-number-interface"))) - stanza_numbers_.push (h); +void +Stanza_number_align_engraver::acknowledge_stanza_number (Grob_info gi) +{ + Grob *h = gi.grob (); + stanza_numbers_.push_back (h); } void Stanza_number_align_engraver::stop_translation_timestep () { - for (int i = lyrics_.size (); i--;) - for (int j = stanza_numbers_.size (); j--;) + for (vsize i = lyrics_.size (); i--;) + for (vsize j = stanza_numbers_.size (); j--;) Side_position_interface::add_support (stanza_numbers_[j], lyrics_[i]); stanza_numbers_.clear (); lyrics_.clear (); } -#include "translator.icc" +ADD_ACKNOWLEDGER (Stanza_number_align_engraver, lyric_syllable); +ADD_ACKNOWLEDGER (Stanza_number_align_engraver, stanza_number); ADD_TRANSLATOR (Stanza_number_align_engraver, - "This engraver ensures that stanza numbers are neatly aligned. ", - "", + /* doc */ + "This engraver ensures that stanza numbers are neatly" + " aligned.", + + /* create */ "", - "stanza-number-interface lyric-syllable-interface ", + + /* read */ "", + + /* write */ "");