6 #include "complexwalker.hh"
8 #include "complexstaff.hh"
9 #include "textspanner.hh"
11 Stem_beam_register::Stem_beam_register(Complex_walker*w)
14 do_post_move_process();
20 Stem_beam_register::try_request(Request*req_l)
22 if ( req_l->beam() ) {
23 if (bool(beam_p_ ) == bool(req_l->beam()->spantype == Span_req::START))
26 if (beam_req_l_ && Beam_req::compare(*beam_req_l_ , *req_l->beam()))
29 beam_req_l_ = req_l->beam();
33 if ( req_l->stem() ) {
34 if (current_grouping && !current_grouping->child_fit_query(
35 walk_l_->col()->tdescription_->whole_in_measure))
38 if (stem_req_l_ && Stem_req::compare(*stem_req_l_, *req_l->stem()))
41 stem_req_l_ = req_l->stem();
48 Stem_beam_register::process_request()
51 if (beam_req_l_->spantype == Span_req::STOP)
55 // walk_l_->announce_element(Staff_elem_info(beam_p_, ))
56 current_grouping = new Rhythmic_grouping;
57 if (beam_req_l_->nplet) {
58 Text_spanner* t = new Text_spanner();
59 t->set_support(beam_p_);
61 t->spec.text_str_ = beam_req_l_->nplet;
62 walk_l_->typeset_element(t);
69 stem_p_ = new Stem(4);
71 current_grouping->add_child(
72 walk_l_->col()->tdescription_->whole_in_measure,
73 stem_req_l_->duration());
75 stem_p_->flag = stem_req_l_->balltype;
78 beam_p_->add(stem_p_);
79 stem_p_->print_flag = false;
81 stem_p_->print_flag = true;
84 walk_l_->announce_element(Staff_elem_info(stem_p_,
90 Stem_beam_register::acknowledge_element(Staff_elem_info info)
95 if (info.elem_p_->name() == String("Notehead") &&
96 stem_req_l_->duration() == info.req_l_->rhythmic()->duration())
98 stem_p_->add((Notehead*)info.elem_p_);
102 Stem_beam_register::do_pre_move_process()
105 walk_l_->typeset_element(stem_p_);
108 if (beam_p_ && end_beam_b_) {
109 walk_l_->default_grouping.extend(current_grouping->interval());
110 beam_p_->set_grouping(walk_l_->default_grouping, *current_grouping);
111 walk_l_->typeset_element(beam_p_);
112 delete current_grouping;
113 current_grouping = 0;
119 Stem_beam_register::do_post_move_process()
127 Stem_beam_register::~Stem_beam_register()
130 error("unterminated beam");