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()
25 Tie_register::sync_features()
27 dir_i_ = get_feature("vdir");
32 Tie_register::post_move_processing()
34 if (tie_p_ && get_staff_info().when() == end_mom_) {
44 Tie_register::acceptable_request_b(Request*r)
46 return r->musical() && r->musical()->tie();
50 Tie_register::try_request(Request*r)
52 if(!acceptable_request_b(r))
57 req_l_ = r->musical()->tie();
58 end_mom_ = r->elt_l_->duration_ + get_staff_info().when();
63 Tie_register::process_requests()
65 if (req_l_ && ! tie_p_) {
71 Tie_register::acknowledge_element(Staff_elem_info i)
73 if (i.elem_l_->name() == Notehead::static_name()) {
75 tie_p_->set_head(-1, (Notehead*)i.elem_l_);
78 end_tie_p_->set_head(1, (Notehead*)i.elem_l_);
79 announce_element(Staff_elem_info(end_tie_p_,end_req_l_));
85 Tie_register::pre_move_processing()
89 end_tie_p_->dir_i_ = dir_i_;
91 typeset_element(end_tie_p_);
98 Tie_register::~Tie_register()
101 req_l_->warning("unended Tie");
107 Tie_register::set_feature(Feature f)
109 if (f.type_ == "vdir")
113 IMPLEMENT_STATIC_NAME(Tie_register);
114 ADD_THIS_REGISTER(Tie_register);