2 arpeggio-engraver.cc -- implement Arpeggio_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
10 #include "group-interface.hh"
12 #include "arpeggio.hh"
15 class Arpeggio_engraver : public Engraver
18 VIRTUAL_COPY_CONS (Translator);
22 virtual void acknowledge_element (Score_element_info);
23 virtual void process_acknowledged ();
24 virtual void do_pre_move_processing ();
28 Link_array <Score_element> stems_;
31 Arpeggio_engraver::Arpeggio_engraver ()
37 Arpeggio_engraver::acknowledge_element (Score_element_info info)
39 if (Stem::has_interface (info.elem_l_))
41 stems_.push (info.elem_l_);
46 Arpeggio_engraver::process_acknowledged ()
48 if (!arpeggio_ && !stems_.empty ())
50 arpeggio_ = new Item (get_property ("Arpeggio"));
51 Pointer_group_interface pgi (arpeggio_, "stems");
52 for (int i = 0; i < stems_.size (); i++)
54 pgi.add_element (stems_[i]);
55 arpeggio_->add_dependency (stems_[i]);
57 announce_element (arpeggio_, 0);
62 Arpeggio_engraver::do_pre_move_processing ()
66 typeset_element (arpeggio_);
73 ADD_THIS_TRANSLATOR (Arpeggio_engraver);