/*
- staff-gravs.hh -- declare Staff_engravers
+ staff-gravs.hh -- declare Line_group_engraver
source file of the GNU LilyPond music typesetter
/**
Engravers which manage a Staff (one 5-line linestaff)
-
- */
-class Staff_engravers : public Engraver_group_engraver {
+ */
+class Line_group_engraver : public Engraver{
Line_of_staff *staffline_p_;
Link_array<Score_elem> staff_elem_l_arr_;
- void group_staff_elems();
protected:
- virtual void do_pre_move_processing();
virtual void do_creation_processing();
virtual void do_removal_processing();
- virtual void typeset_element(Score_elem*);
- virtual void typeset_breakable_item( Item * it_p);
+ virtual void acknowledge_element(Score_elem_info);
public:
-
NAME_MEMBERS();
- Staff_engravers();
+ Line_group_engraver();
};
#endif // STAFF_GRAVS_HH
/*
- staff-gravs.cc -- implement Staff_engravers
+ staff-gravs.cc -- implement Line_group_engraver
source file of the GNU LilyPond music typesetter
#include "staffline.hh"
-Staff_engravers::Staff_engravers()
+Line_group_engraver::Line_group_engraver()
{
staffline_p_ =0;
}
void
-Staff_engravers::typeset_element(Score_elem *elem_p)
+Line_group_engraver::acknowledge_element(Score_elem_info elem)
{
- staff_elem_l_arr_.push(elem_p);
- Engraver_group_engraver::typeset_element(elem_p);
+ staffline_p_->add_element(elem.elem_l_);
}
-void
-Staff_engravers::typeset_breakable_item( Item * nobreak_p)
-{
- staff_elem_l_arr_.push(nobreak_p);
- Engraver_group_engraver::typeset_breakable_item(nobreak_p);
-}
-
-void
-Staff_engravers::do_pre_move_processing()
-{
- Engraver_group_engraver::do_pre_move_processing();
- group_staff_elems();
-}
-
-void
-Staff_engravers::group_staff_elems()
-{
- for (int i=0; i <staff_elem_l_arr_.size(); i++)
- staffline_p_->add_element(staff_elem_l_arr_[i]);
- staff_elem_l_arr_.set_size(0);
-}
void
-Staff_engravers::do_removal_processing()
+Line_group_engraver::do_removal_processing()
{
- /* this is a "destructor type function", first do children, then self. */
- Engraver_group_engraver::do_removal_processing();
- group_staff_elems();
-
staffline_p_->right_col_l_ = get_staff_info().command_pcol_l();
- Engraver::typeset_element(staffline_p_);
+ typeset_element(staffline_p_);
staffline_p_ = 0;
}
void
-Staff_engravers::do_creation_processing()
+Line_group_engraver::do_creation_processing()
{
staffline_p_ = new Line_of_staff;
staffline_p_->left_col_l_ = get_staff_info().command_pcol_l();
// don't broadcast to self.
- Engraver::announce_element(Score_elem_info(staffline_p_,0));
- Engraver_group_engraver::do_creation_processing();
+ announce_element(Score_elem_info(staffline_p_,0));
}
-IMPLEMENT_STATIC_NAME(Staff_engravers);
-IMPLEMENT_IS_TYPE_B1(Staff_engravers,Engraver_group_engraver);
-ADD_THIS_ENGRAVER(Staff_engravers);
+IMPLEMENT_STATIC_NAME(Line_group_engraver);
+IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver);
+ADD_THIS_ENGRAVER(Line_group_engraver);