2 rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "rhythmic-column-engraver.hh"
10 #include "note-head.hh"
12 #include "note-column.hh"
14 #include "dot-column.hh"
16 Rhythmic_column_engraver::Rhythmic_column_engraver()
25 Rhythmic_column_engraver::process_acknowledged ()
27 if (rhead_l_arr_.size ())
31 ncol_p_ = new Note_column;
32 announce_element (Score_element_info (ncol_p_, 0));
35 for (int i=0; i < rhead_l_arr_.size (); i++)
37 ncol_p_->add_head (rhead_l_arr_[i]);
39 rhead_l_arr_.set_size (0);
47 ncol_p_->set_dotcol (dotcol_l_);
52 ncol_p_->set_stem (stem_l_);
56 for (int i=0; i < script_l_arr_.size(); i++)
59 ncol_p_->add_script (script_l_arr_[i]);
62 script_l_arr_.clear();
67 Rhythmic_column_engraver::acknowledge_element (Score_element_info i)
69 Item * item = i.elem_l_->access_Item ();
72 if (item->is_type_b (Script::static_name ())
74 && i.req_l_->access_Musical_req ())
76 script_l_arr_.push ((Script*)item);
78 else if (item->is_type_b (Stem::static_name()))
80 stem_l_ = (Stem*) item;
82 else if (item->is_type_b (Rhythmic_head::static_name ()))
84 rhead_l_arr_.push ((Rhythmic_head*)item);
86 else if (item->is_type_b (Dot_column::static_name ()))
88 dotcol_l_ = (Dot_column*) item;
93 Rhythmic_column_engraver::do_pre_move_processing()
97 if (! ncol_p_->h_shift_b_)
99 ncol_p_->h_shift_b_ = get_property ("hshift").operator bool ();
101 ncol_p_->dir_ =(Direction) int(get_property ("ydirection"));
103 typeset_element (ncol_p_);
109 Rhythmic_column_engraver::do_post_move_processing()
111 script_l_arr_.clear();
119 IMPLEMENT_IS_TYPE_B1(Rhythmic_column_engraver,Engraver);
120 ADD_THIS_TRANSLATOR(Rhythmic_column_engraver);