source file of the GNU LilyPond music typesetter
- (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 2000--2001 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "engraver.hh"
Arpeggio_engraver ();
protected:
- virtual void acknowledge_element (Score_element_info);
- virtual void process_acknowledged ();
- virtual void do_pre_move_processing ();
- virtual bool do_try_music (Music *);
+ virtual void acknowledge_grob (Grob_info);
+ virtual void create_grobs ();
+ virtual void stop_translation_timestep ();
+ virtual bool try_music (Music *);
private:
Item* arpeggio_;
Arpeggio_req *arpeggio_req_;
- Link_array <Score_element> stems_;
- Link_array<Score_element> supports_;
+ Link_array <Grob> stems_;
+ Link_array<Grob> supports_;
};
Arpeggio_engraver::Arpeggio_engraver ()
}
bool
-Arpeggio_engraver::do_try_music (Music* m)
+Arpeggio_engraver::try_music (Music* m)
{
if (!arpeggio_req_)
{
}
void
-Arpeggio_engraver::acknowledge_element (Score_element_info info)
+Arpeggio_engraver::acknowledge_grob (Grob_info info)
{
if (arpeggio_req_)
{
stems_.push (info.elem_l_);
}
- else
-
- /*
- We can't catch local key items from Voice context, but let's leave
- it here in case someone moves this stuff around. */
- if (Rhythmic_head::has_interface (info.elem_l_)
- || Local_key_item::has_interface (info.elem_l_))
+ /*
+ We can't catch local key items (accidentals) from Voice context,
+ see Local_key_engraver
+ */
+ else if (Rhythmic_head::has_interface (info.elem_l_))
{
supports_.push (info.elem_l_);
}
}
void
-Arpeggio_engraver::process_acknowledged ()
+Arpeggio_engraver::create_grobs ()
{
if (!arpeggio_ && !stems_.empty ())
{
arpeggio_ = new Item (get_property ("Arpeggio"));
arpeggio_->set_parent (stems_[0], Y_AXIS);
- // Staff_symbol_referencer::set_interface (arpeggio_);
-
for (int i = 0; i < stems_.size (); i++)
{
Pointer_group_interface::add_element (arpeggio_, "stems", stems_[i]);
- //Side_position::add_support (arpeggio_, stems_[i]);
}
for (int i = 0; i < supports_.size (); i++)
{
- ;//Side_position::add_support (arpeggio_, supports_[i]);
+ Side_position_interface::add_support (arpeggio_, supports_[i]);
}
- announce_element (arpeggio_, arpeggio_req_);
+ announce_grob (arpeggio_, arpeggio_req_);
}
}
void
-Arpeggio_engraver::do_pre_move_processing ()
+Arpeggio_engraver::stop_translation_timestep ()
{
if (arpeggio_)
{
- typeset_element (arpeggio_);
+ typeset_grob (arpeggio_);
arpeggio_ = 0;
}
arpeggio_req_ = 0;