2 tie-reg.cc -- implement Tie_register
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
11 #include "notehead.hh"
12 #include "musical-request.hh"
13 #include "voice-element.hh"
15 Tie_register::Tie_register()
23 end_melodic_req_l_ =0;
27 Tie_register::sync_features()
29 dir_i_ = get_feature("vdir");
34 Tie_register::post_move_processing()
36 if (tie_p_ && get_staff_info().when() == end_mom_) {
39 end_melodic_req_l_ = melodic_req_l_;
47 Tie_register::acceptable_request_b(Request*r)
49 return r->musical() && r->musical()->tie();
53 Tie_register::try_request(Request*r)
55 if(!acceptable_request_b(r))
60 req_l_ = r->musical()->tie();
61 end_mom_ = r->elt_l_->duration_ + get_staff_info().when();
66 Tie_register::process_requests()
68 if (req_l_ && ! tie_p_) {
74 Tie_register::acknowledge_element(Staff_elem_info i)
76 if (i.elem_l_->name() == Notehead::static_name()) {
78 tie_p_->set_head(-1, (Notehead*)i.elem_l_);
79 melodic_req_l_ = i.req_l_->musical()->melodic();
83 end_tie_p_->set_head(1, (Notehead*)i.elem_l_);
84 if (!Melodic_req::compare ( *end_melodic_req_l_, *melodic_req_l_))
85 end_tie_p_->same_pitch_b_ = true;
86 announce_element(Staff_elem_info(end_tie_p_,end_req_l_));
92 Tie_register::pre_move_processing()
96 end_tie_p_->dir_i_ = dir_i_;
98 typeset_element(end_tie_p_);
105 Tie_register::~Tie_register()
108 req_l_->warning("unended Tie");
114 Tie_register::set_feature(Feature f)
116 if (f.type_ == "vdir")
120 IMPLEMENT_STATIC_NAME(Tie_register);
121 ADD_THIS_REGISTER(Tie_register);