2 clef.cc -- implement Clef_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>,
7 Mats Bengtsson <matsb@s3.kth.se>
11 #include "clef-grav.hh"
12 #include "clef-item.hh"
14 #include "command-request.hh"
15 #include "time-description.hh"
17 Clef_engraver::Clef_engraver()
26 Clef_engraver::set_type (String s)
29 if (clef_type_str_ == "violin")
33 else if (clef_type_str_ == "alto")
37 else if (clef_type_str_ == "tenor")
41 else if (clef_type_str_ == "bass")
52 Clef_engraver::fill_staff_info (Staff_info &i)
54 i.c0_position_i_l_ = &c0_position_i_;
58 Clef_engraver::read_req (Clef_change_req*c_l)
60 if (!set_type (c_l->clef_str_))
61 c_l->error ("unknown clef type ");
64 Clef_engraver::acknowledge_element (Score_elem_info info)
66 if (info.elem_l_->name() == Bar::static_name ())
70 clef_p_->default_b_ = true;
75 Clef_engraver::do_creation_processing()
78 clef_p_->default_b_ = false;
82 Clef_engraver::do_try_request (Request * r_l)
84 Command_req* creq_l= r_l->command();
85 if (!creq_l || !creq_l->clefchange())
88 clef_req_l_ = creq_l->clefchange();
90 read_req (clef_req_l_);
95 Clef_engraver::create_clef()
99 clef_p_ = new Clef_item;
100 announce_element (Score_elem_info (clef_p_,clef_req_l_));
102 clef_p_->read (*this);
106 Clef_engraver::do_process_requests()
111 clef_p_->default_b_ = false;
116 Clef_engraver::do_pre_move_processing()
120 typeset_element (clef_p_);
125 Clef_engraver::do_post_move_processing()
131 Clef_engraver::do_removal_processing()
138 IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver);
139 ADD_THIS_ENGRAVER(Clef_engraver);