X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstanza-number-align-engraver.cc;h=2b98915a21579831046c748f2768f3d1a997595a;hb=75eebcb49e52d296b1da3e1074e0825d2c780db4;hp=3115ac3012568462b92726fbddf2c6b42f828783;hpb=e231725ba25a62aa43c4bfb15ba7652e7dfba1ad;p=lilypond.git diff --git a/lily/stanza-number-align-engraver.cc b/lily/stanza-number-align-engraver.cc index 3115ac3012..2b98915a21 100644 --- a/lily/stanza-number-align-engraver.cc +++ b/lily/stanza-number-align-engraver.cc @@ -1,68 +1,69 @@ +/* + stanza-number-align-engraver.cc -- implement Stanza_number_align_engraver -/* -stanza-number-align-engraver.cc -- implement - -source file of the GNU LilyPond music typesetter - -(c) 2004 Han-Wen Nienhuys - - */ + source file of the GNU LilyPond music typesetter + (c) 2004--2006 Han-Wen Nienhuys +*/ #include "context.hh" #include "engraver.hh" #include "note-head.hh" #include "lyric-extender.hh" -#include "item.hh" -#include "group-interface.hh" +#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); +public: + TRANSLATOR_DECLARATIONS (Stanza_number_align_engraver); -protected: +protected: Link_array lyrics_; Link_array stanza_numbers_; - virtual void acknowledge_grob (Grob_info); - virtual void stop_translation_timestep (); + + DECLARE_ACKNOWLEDGER (lyric_syllable); + DECLARE_ACKNOWLEDGER (stanza_number); + void stop_translation_timestep (); }; 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 (h); +} + +void +Stanza_number_align_engraver::acknowledge_stanza_number (Grob_info gi) { - Grob *h = gi.grob_; - - 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); + Grob *h = gi.grob (); + stanza_numbers_.push (h); } void Stanza_number_align_engraver::stop_translation_timestep () { - for (int i= lyrics_.size(); i--;) + for (int i = lyrics_.size (); i--;) for (int j = stanza_numbers_.size (); j--;) Side_position_interface::add_support (stanza_numbers_[j], lyrics_[i]); - + stanza_numbers_.clear (); lyrics_.clear (); } - -ENTER_DESCRIPTION(Stanza_number_align_engraver, - "This engraver ensures that stanza numbers are neatly aligned. ", - "", - "", - "stanza-number-interface lyric-syllable-interface ", - "", - ""); +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. ", + "", + "", + " ", + "");